🌞   🌛

Teknik

  • Played with Wordpress full-site editing and it was the worst user experience I’ve had in a long time. I had to use a theme that didn’t support full-site editing to get anything done

  • Castro again

    Yet another post about Castro, last month I posted about how I was giving up on Castro because of crashes, freezes, etc. In addition there hadn’t been any updates for about a year. Since then I’ve been trying out other podcast player trying to find a replacement, but I haven’t managed to find one that could replace Castro.

    But happy days, a new version of Castro was released a couple days ago, and it’s not just a bug fix release. There are a number of new features, mostly related to making it easier to show/listen to subsets of the available podcasts. I haven’t really explored the new features but so far I’m very happy to see a new version.

  • I'm worried about Castro

    A few months back there was a post that questioned if Castro was being actively maintained anymore, and my comment was something along the line of “It works, so I don’t worry until it stops working”.

    Well, I’m now worrying. The last 2–3 months, I’ve seen an increase in number of crashes and freezes (Castro stops reacting to any input). To make things worse there appears to be no communication from the company, the last blog post was November 2020, the last tweet in March 2022, the last app update was a year ago, and support requests are seemingly slow or non-existent.

    However, I still wouldn’t worry if Castro had worked, but the crashes are too many, the freezes occur daily … so I see no choice but to cancel my Plus-subscription. And, I’m sorry to do so, Castro is in my opinion the best podcast player around, and I haven’t found a good replacement. If it comes to life again, I’ll be super happy to subscribe again, but for now … well, I’m going to look for a new podcast player.

  • My software advise

    I don’t feel like I’m qualified to give anyone advice on what software to use, there are a few reasons for this:

    • I’m me, no-one else is me. With this, I mean that I have numerous preferences, opinions, and idiosyncrasies + some work tasks, probably in a unique combination. No other person has this combination, so why should anyone listen to me.
    • I switch software once in a while, I can use some application for a couple of years, and then switch to another application—in other words, I’m jumping around between applications.

    Anyway, what I can tell you is that I have many tools I use to get my stuff done in a way I like, here goes.

    Text editor

    My work requires me to write a lot of email, text files, code, messages, etc. I’ve done this on various platform Unix, Linux, whatever the OS the computers by Norsk Data had, and various other platforms. But I’ve spent at least 30–35 years using Macs.

    I’ve used various text editors and word processors, for example vi, vim, emacs, ted, nano, word, word perfect, nisus, write now, claris works, etc. Once I got a Mac my main writing tool was nisus, but I stopped using word processors because I felt they were too fiddly, and I spent too much time trying to get a good-looking result. So, plain text files are my thing.

    And as I’ve hinted to above, I’ve tried many text editors, but to me, there is only one that works the way I like BBEdit. I’m not saying it’s perfect, it’s not, but it’s the best editor for me. And since I’ve been using it for close to 30 years, I feel confident to say that it’s very, very good. And rock solid, I’m happy when I manage to crash BBEdit because then I can write an email to BareBones Software and say “guess what I managed to do??”.

    I don’t know if it’s good or bad that I get to write these emails very, very rarely.

    Document format

    When I started to write stuff on a computer I used formatting languages like roff, troff, nroff, and a few others that I don’t remember the name of. I then used the formats offered by Word (bad idea since it happened that one version of Word couldn’t read the files of a previous version!!), WriteNow, Nisus, etc. As I mentioned above, Nisus became my write tool of choice and I had almost all of my documents in that format.

    However, I like text only, so when I started to write more serious stuff I switched to TeX and LaTex (and hated the way how you were supposed to change the layout). I kept using it for much of my text needs until Markdown was first released. Now my writing is almost exclusively in one or the other version of Markdown. Unless I need to write a serious article, then it’s LaTeX—it doesn’t happen that often anymore.

    Email

    I’ve only used my current mail client (MailMate) for 5–6 years, perhaps more. It’s good by my favourite was Mailsmith, originally by BareBones Software. It had an excellent text editor (no surprise since they make BBEdit), and the best filtering system I’ve used. Unfortunately, it is/was POP3 only, so when I needed to use IMAP I had to stop using it. I played around with all major clients, but ended up with MailMate.

    An essential part of email management is the handling of spam, and there is only one tool to care about SpamSieve. It’s one of those programs that you don’t notice until you don’t have it. It works with most email clients and … just buy it, it’s worth it!!

    Bibliographic references

    I’ve used EndNote, it’s crap. I’ve played with others like Zotero, Mandalay, Papers, etc. but they are not for me. Once again, I like plain text, so I use the BibTeX format. My research references are all in BibTeX format, and I use various command line tools (bibtools) and the macOS app BibDesk to manage them.

    Privately, more for fun, then I use Bookends, I’ve been using it now and then since it was a HyperCard stack.

    Programming

    Due to my work, computer science teacher at a university, I’ve tried a fair number of programming languages. I liked Modula-2 and ML, sometimes writing C code can be relaxing, Haskell is neat, Java … well, it used to be fun, etc. But the language I, personally, find most useful is Python—it’s certainly not the best language for all problems, but for me, it’s the most useful one.

    The short version of all this

    • Text editor—BBEdit, if I can’t use it, then it’s vim.
    • Text format—Markdown, until I need something complex or good-looking
    • Email—MailMate, however, at work I need to use Mail, so I can use the stupid Exchange stuff.
    • Spam management—SpamSieve, nothing more need to be said.
    • Reference management—data in BibTeX + a collection of suitable tools
    • Programming—Python

    I, of course, use a fairly large set of applications daily, but the stuff above is what I’ve been using for at least 5–10 years … and for some reason they get installed on every Mac I get my hands on.

  • I was tempted by the Ultra, it has a few features I find useful, but I couldn’t justify it. So I went with the regular series 8 (the battery life on my series 3/4?? is getting a bit too short for my taste).

  • Hmmm, TextExpander is apparently going to sunset their API and instead only going to support use via keyboard. I never became a “friend” of their keyboards, turned them off years ago. Feeling skeptical.

  • Intressant hur de försöker stoppa sajter med “Swish kopior”, är det inte ett problem med hela konceptet när det är så lätt att “överlista” alltihopa. Det känns ju som detta är något de borde kunna ha förutsett vid designen av hela Swish-systemet.

  • The problem with auto-correct isn’t so much that it “fixes” a few words here and there, it’s when it auto-correct in the wrong language.

  • I thought I would make another attempt to use mastodon and I’m wondering if there is any advantage to get a user on a “special interest” server? I currently have a mastodon.social account but would it be a better experience to have an account on another server?

  • Micro.blog to blot script

    Just so I remember this in case I ever need it again

    # This script assumes it's launched from inside the micro.blog export folder
    
    import frontmatter
    import os
    import re
    import shutil
    from dateutil import parser
    
    basedir = '/Users/jem/Desktop/TestOutput'
    imgpat = re.compile('')
    domainpat = re.compile('https:.*/uploads/')
    blothead = 'title: {}\ndate: {}\n\n'
    
    # I really dislike doing this but ...
    imgdata = {'destdir':'',}
    
    def copyimage(src,dest):
        shutil.copy(os.path.join('uploads',src), os.path.join(imgdata['destdir'],dest))
        
    def imgproc(m):
        orgpath = m.group(1)
        
        # Remove domain info
        p = domainpat.sub('',orgpath)
        n = '_'+os.path.basename(p)
        copyimage(p,n)
        return '![]('+n+')'
    
    def formatblotpost(post):
        # Update content and copy image files
        modifiedcontent = imgpat.sub(imgproc,post.content)
        if post.metadata['title'] == '':
            post.metadata['title'] = post.metadata['datetitle']
        return blothead.format(post.metadata['title'],post.metadata['date']) + modifiedcontent
            
    def create_destdir(newbase,curfilepath,poststamp):
        (odir,oname) = os.path.split(curfilepath)
        newdir = os.path.join(newbase,odir)
        # Check if the dest dir exists, this should be the year & month folder
        if not os.path.isdir(newdir):
            os.makedirs(newdir)
        postdir = os.path.join(newdir,poststamp)
        # This should not be possible but ...
        if os.path.isdir(postdir):
            raise Exception('Post dir already exists')
        else:
            os.mkdir(postdir)
        return postdir
    
    def handlepost( destdir, source ):
        print(source)
        
        try:
            postcontent = frontmatter.load(source)
            meta = postcontent.metadata
            pdate = parser.parse(meta['date'])
            pdir = create_destdir(destdir,source,pdate.strftime('%Y%m%d_%H%M%S'))
            postcontent['datetitle']= pdate.strftime('%Y-%m-%d %H:%M:%S')
            # Deep sigh
            imgdata['destdir'] = pdir
    
            # Create actual post
            of = open(os.path.join(pdir,'index.md'),'w')
            of.write(formatblotpost(postcontent))
            of.close()
        except FileNotFoundError as arg:
            print(arg)
    
    for root, dirs, files in os.walk('.'):
        if not 'uploads' in root:
            for f in files:
                if not '.DS_Store' in f:
                    handlepost(basedir,os.path.join(root,f))