Random ramblings about Mac, Python, TeX, programming, and more  |     |          |     |  


Beaker and PyCrypto (and web session)

April 23, 2024  |  crypto, web, python

In web development, I have started to use Beaker (documentation) to handle session data (e.g., current logged in user in a session). The data for a given session can be stored in files, in a database, in memory (does not work if many processes are serving the web page), or in cookies. For small-sized data, using cookies is a suitable option (in general, a cookie should be less than 4096 bytes). …


Programming fonts (and online preview)

March 8, 2024  |  tools, fonts, programming

In 2012, I wrote about coding fonts, and still, my preferred programming font is Source Code Pro. I have updated the post from 2012 a couple of times with new interesting fonts for coding, and I continue to look for new fonts that could be a replacement for my preferred programming font. Yesterday, via Charles Roper, I came over the font Intel One Mono designed by Frere-Jones Type for Intel. I th …


Emacs on macOS

December 29, 2023  |  tools, programming, macos

I do almost all my programming and scientific writing in Emacs, and I am a Mac user running a recent version of macOS (usually the latest release available). I try to install most of the third-party software I use with Homebrew. It makes it much easier to install the software I need (including Emacs, BSD make, OpenSSL, Python, and Qt) and keep the software updated (regularly running the command «b …


Mailspring and keyboard shortcuts

April 19, 2023  |  tools, macos

Mailspring is a free mail client for Mac, Linux and Windows (a paid Pro version is also available). Mailspring's user interface (UI) is open source (GPLv3). It is built on a plugin architecture and is designed to be easy to extend.

I have started using Mainspring on macOS recently, and since I find keyboard shortcuts important when using an email client efficiently, Mailscript's highly configurabl …


MetaPost figures (in LaTeX)

May 19, 2022  |  publ, latex

I prefer to produce documents using LaTeX (and other TeX friends), and draw figures using MetaPost. A long, long time ago (when I did my PhD), I even created a MetaPost package, aaobj (documentation).

Recently, I have moved towards using the Lua implementation of TeX (see also the LuaLaTeX documentation). I will not discuss why in detail here, but one of the reasons is that inline MetaPost in LaTe …


Qt for Python (on Mac)

December 13, 2021  |  programming, python

In November 2019, I wrote about this:

Qt for Python (and plotting with Matplotlib)

Since then, Qt 6 and PySide6 has been released (see Qt for Python 6 released). Currently, I install both Python and Qt on my Mac with Homebrew, making the steps much easier than described in the post from 2019:

brew install qt
brew install python

At the moment, Homebrew does not install Python 3.10, the latest a …


Add artwork and thumbnails to video files

October 22, 2021  |  tools, macos

I just converted a lot of home videos from VHS to MP4 files. I planned to upload and view the resulting files on my iPad. I used HandBrake to reduce the size of the files and WALTR PRO (remember to turn of Automatic Content Recognition in the Preferences) to transfer the videos to my iPad. But, before I transferred them to the iPad, I wanted to add a title and an artwork image to the metadata of e …


Server side IMAP rules

June 3, 2021  |  tools, python

I'm using several email services, but most of my private email is on an IMAP based service. A lot of the received emails should be automatically moved to a sub-folder on the server without my involvement. In most email clients you can easily create rules to do this. However, I would like to do this even when I have no email clients up and running. For my work email service (Outlook) this can be d …


Get the notes out of Apple Notes into OneNote (via Evernote) with AppleScript

April 9, 2021  |  tools, programming, macos

I have been using Apple Notes for all my note taking since 2016. For not so interesting reasons, I recently had to change to Microsoft OneNote. But I did not want to leave all my meeting notes behind. I had to find a solution to get all my notes out for Apple Notes. And as many times before, AppleScript (and Python) was part of the solution.

My first attempt was to search for possible tools or rec …


Differential Privacy (and Python)

March 1, 2021  |  security, programming, python

Differential privacy is an interesting tool when doing privacy aware analytics. This is a topic I have been working on for a while, and one of the great challenges is to implement generic tools for this. However, developers at Google are using this a lot internally, and they have also made their libraries available at GitHub. Since I often prefer Python, I am happy to find a Python wrapper for the …


Keysmith

January 28, 2021  |  tools, macos

In a previous posting, I explained how to use Apple Script to automate an action and connect it to a keyboard shortcut. Recently, I changed the approach for several such actions on my Macs. The new approaches are all based on Keysmith. My experience is that the resulting actions from Keysmith are executed much more efficiently than my previous solution.


Moved to a Linode-hosted blog platform

January 18, 2021  |  blog

Last January, I moved this blog to WordPress. The reason for the move was that MarsEdit stopped supporting Blogger (where my blog was hosted for years through Blogspot). I was never happy with the WordPress hosting, and this December, I decided to build my own blog platform hosted on a Linode server. I got it up and running before the annual WordPress bill was due December 31st. The goal was to cr …


MacOS automation with Python and AppleScript

February 21, 2020  |  programming, macos

I prefer to program in Python, but for automation on the Mac, AppleScript is still a great tool. Especially paired with a good AppleScript editor/debugger like Script Debugger. For many projects it would be nice to do most of the scripting in Python, and only do the interaction with the different programs (GUI) in AppleScript. The obvious solution is PyObjC and its ScriptingBridge framework (wrapp …


Microsoft Outlook: download pictures

February 12, 2020  |  tools, programming, macos

I am currently on my Mac using the Microsoft Outlook application for email. For a lot of reasons, I have turned off automatically download pictures from the Internet (see Preferences→Reading→Security). But sometimes, I want to see the pictures included in the email message I am reading. I can push the button Download pictures to see them. However, I prefer to use the keyboard. I have not found a …


How to create macOS Keyboard shortcuts to sub-menus

January 31, 2020  |  macos

In macOS, it is easy to create new keyboard shortcuts to a menu item. Just go to System Preferences → Keyboard → Shortcuts, select App Shortcuts, press the plus button, select application (or All Applications), type in the menu title of the menu item, and choose a keyboard shortcut:

macOs menu keyboard shortcuts

The menu title can be from a sub-menu item. However, if you have more than one sub-menu item with the same title, …


Including source code in this blog

January 31, 2020  |  publ, programming, macos, web

I write these blog posts with MarsEdit. And, while I am writing, I preview the blog post with Marked 2 (start Marked 2 and choose Preview → MarsEdit Preview from the menu). And since my writing usually is about programming, the blog posts might contain source code. My approach is similar to how I include source code in papers, and I was writing about it back in 2015. So this is an update on how I …


Including source code in papers (and exams)

November 17, 2019  |  publ, programming, python

In march 2015, I wrote about using Pygments when including source code in papers (and on the web). I still use Pygments, but I have never updated the description on how I do it now. In most cases, I use Pygments implicit without interacting with the program myself. I leave it to the LaTeX package minted. You still need to install Pygments, but you do not need to interact with it. The minted packag …


Qt for Python (and plotting with Matplotlib)

November 11, 2019  |  programming, python

To able to develop GUI-based Python programs using Qt you need to install Qt and PySide2 (Python mapping for Qt 5, see Qt for Python). A good place to start is the Qt for Python getting started document.

Install the software

I have Python 3.8 on my Mac. I have also installed numpy and matplotlib with pip (since I have many different Python installations on my Mac, including 2.7, 3.7 and 3.8, I wil …


Emacs on Mac

September 26, 2018  |  tools, os-x, programming

Until recently, I have been an Aquamacs user on the Mac. However, recently I have been switching back to a more standard Emacs distribution for Mac. After some time of research I ended up with the Emacs Mac Port. This distribution is easily installed and updated through Homebrew, and since I am already using Homebrew for other important software on my Mac (including bsdmake), this was an obvious c …


Using PlistBuddy when I want to open Emacs from a link in an HTML file on OS X

December 14, 2017  |  os-x, web, programming

Previously, I have discussed How to open Emacs from a link in an HTML file on Mac OS X. This post is just to give a complete overview of how this can be done without to many manual tasks. My complete AppleScript program and its Makefile is available for download. It should only be used with your own modification.  It includes the usage of cvs to commit the changes in the bib files to my local cvs- …


Run all Airmail rules

October 26, 2017  |  tools, os-x, programming

I currently use Airmail as my Mac (and iOS) mail client. With many email accounts I found that Airmail fits my needs OK. And I have created a large number of rules that is automatically performed on new emails in my inbox. However, for different reasons I would sometimes like to perform all my rules manually. As far as I know this is not possible in the Mac version of Airmail. So I had to implemen …


Open Emacs from a link in an HTML file on Mac OS X

December 14, 2015  |  os-x, web, programming

Since I do most of my writing in LaTeX, I have all my references (publications I cite when I write papers) in a series of bib-files (for BibTeX). To easier browse and search these references I have created a small Python script that generates a HTML document with all these references. Each reference also includes a link to the bib-file this reference was found in. In the link I include the key of …


Non breakable spaces in Word

September 22, 2015  |  publ

I prefer TeX and friends (LaTeX, MetaPost, BibTeX) when writing papers. But sometimes I have to use Microsoft Word. One annoyance I have observed in many documents written in Word is line breaks (word wrapping) on wrong places. Not all spaces are a correct place to break lines in a text. In TeX I would write the tilde (~) character instead of a space, and in HTML I would use the character entity   …


Cryptography with Python 3

May 15, 2015  |  tools, os-x, programming, python, crypto

In 2012 I posted a post on using PyCrypto with Python 3 and some AES and RSA examples. Now, I usually use the cryptography Python library (implemented for both Python 2 and 3). I have ported all my PyCrypto examples from 2012 (see the README file) to the cryptography library.

pycryptex.py / pycryptex-cbc.py

pycryptex.py [src] is a small example using AES to encrypt and decrypt a text:

> python3 pycry …

Run automator workflow with keyboard shortcuts

April 27, 2015  |  tools, os-x, programming

In the last post we demonstrated how to automate a task using AppleScript and the Fake scriptable web browser. Often, I use automator included on every Mac to perform such task. To activate them, we bind them to a keyboard shortcut in the given application. The example we will use today is to press the a keyboard shortcut to load the remote content of an email in Mail.app (you have of course turne …


Automate tasks with AppleScript, Fake, and the keychain

April 27, 2015  |  tools, os-x, web, programming

You can make life a lot easier on your Mac if you learn how to automate things. The standard approach to do this on Macs are to use Automator (see How to use Automator: What Automator is and how it works from Macworld UK). If you include AppleScript, Fake, and the keychain in your toolchain, you can achieve even more. As an example I will develop an automated task to create a new email alias usin …


Including source code in papers and on the web

March 20, 2015  |  tools, programming, python, publ, web

I've written many papers and a lot of web pages that includes source code. Since Python code was an important part of my Dr. thesis, I even wrote a tool to generate a pretty-printed Python code for LaTeX (this was written in 1997, but since I've been using it ever since it has had a few minor bug fixes since then; however, it needs Python 1.6 and it was the first Python program I ever wrote!). Jus …


The Swift (short) history

June 3, 2014  |  os-x, programming

The language announced at WWDC yesterday came as a big surprise to almost everyone. At Chris Lattner's Homepage you can find a short summary on the history of the Swift programming language. He started work on the language in July 2010, and it became a major focus for the Apple Developer Tools group 3 years later. Other people started to contribute to the project in late 2011. He mentions Objectiv …


A new language: Swift from Apple

June 3, 2014  |  os-x, programming, python

I've just developed my first application in Swift, the new language announced by Apple yesterday. I downloaded the Swift book on my iPad during the Keynote, and started programming immediately. When I got hold of Xcode beta 6 I got it running in seconds.

My first impression: Swift is a modern language. It is closely related to popular scripting languages, like Python and Ruby, but is is a compiled …


How to use Interface Builder to create OS X Cocoa applications with Python

April 20, 2014  |  os-x, programming, python

When programming Python I prefer to use native GUI on OS X. Very Simple OS X Cocoa Application using Python and Interface Builder is a good place to start. The example works with Python 3 on OS X 10.9.2 when PyObjC is installed following the instructions in one of my earlier posts: Python 3 and PyObjC.


Perl modules on Mac

April 20, 2014  |  os-x, programming

I needed a few Perl modules that weren't installed on the standard Perl installation on my Mac (OS X 10.9.2). In How to install Perl modules on Mac OS X in 4 easy steps I found all the details needed. I didn't need to do step 1 (and 1.5) since this is the first thing I do on every new Mac instance. To summarize what I did in 3 steps to install the two modules I needed:

sudo perl -MCPAN -e 'install …

A suggestion for backup on Mac

January 8, 2014  |  tools, os-x

A lot of options for backup on your Mac exists. I use Time MachineBackblaze, Crash PlanTransporterCarbon Copy Cloner, and other tools for different types of backup on different Macs. The challenging backup for me are my pictures. I want at least one backup not in my house. The size of this backup is large, and since I am using Aperture, the meta-data of the file-system has to be preserved. L …


PyGame for Python 3 on OS X Mountain Lion

May 8, 2013  |  os-x, programming, python

These are my steps to install PyGame for Python 3 on OS X Mountain lion:

  1. Download (and unpack) the following:
  • Install the png and jpeg libraries:

  • Snowman shell prompt

    April 6, 2013  |  tools

    My new bash shell prompt:

    Snow term

    Matching the large amount of snow outside. A more detailed picture of the snowman:

    Old snowman

    Inspired by put a burger in your shell.


    Python 3 and PyObjC

    November 27, 2012  |  os-x, programming, python

    My main programming platform is OS X 10.8 and Python 3 (currently Python 3.3). In earlier blog posts I have discussed installing and using PyCrypto in this environment. My next attempt was to find a GUI solutions for this platform. I usually prefer native approaches when programming, and for OS X the Cocoa framework is the native approach. To get access to this from Python we need a bridge, and th …


    AES and RSA PyCrypto examples with Python 3

    November 14, 2012  |  os-x, crypto, programming, python

    Earlier today I wrote about installing PyCrypto for Python 3 on OS X 10.8. I will use the opportunity to provide a few examples using PyCrypto to do AES and RSA encryption and decryption. I have created 3 programs. The first one, pycrypto-mkkey.py [src], generates an RSA key and saves it in two different files. One including the private key and one with only the public key (using the .pub extensio …


    PyCrypto with Python 3 on OS X 10.8

    November 14, 2012  |  os-x, crypto, programming, python

    On an updated Mac (in my case 10.8.2) with an updated version of Xcode  (in my case 4.5.2) compiling and installing PyCrypto for Python 3 (in my case 3.3) is not just simply running the setup.py script. The latest release of PyCrypto is 2.6 and it supports Python 3 (it has supported Python 3 since version 2.4). But my earlier attempts using Python 3.2 on OS X 10.8 failed since it couldn't locate t …


    Coding fonts

    October 11, 2012  |  tools, fonts, programming

    I consider myself a programmer, and to perform this task I rely on a set of tools. I need a text editor, compilers and/or run-times, build-systems, code repositories, documentation, and sometimes even an IDE. Since the late 80s my text editor of choice has been Emacs (and Aquamacs on OS X), but I am also comfortable with vi (including Vim) and ed. Currently, I am investigating time in newer text e …


    Generating a BibTeX file from Cristin data

    October 8, 2012  |  publ, web, python

    Based on the previous script generating HTML from Cristin data, I created another script generating a BibTeX file from the same JSON data. The script has the same limitations as the previous one, but it should be easy to modify for your needs. Have fun!


    Fetch and process information from Cristin

    October 6, 2012  |  publ, web, python

    Yesterday I wrote a small Python script to fetch and generate a publication list for web-pages. I use a web-services (ws) provided by Cristin (Current research information system in Norway). Cristin is a research information system for hospitals, research institutes, and universities and university colleges. From the provided ws I use the method hentVarbeiderPerson (see Brukerdokumentasjon Cristin …


    Almost two years in silence

    October 5, 2012  |  blog

    I restart my blog today.  November 16th 2010 was my last post (on Beatles available in iTunes). Since many of my old post were dated, I've deleted them all.  The main reason for the silence is that other tools have replaced the purpose of the blog for me. I used the blog to remind myself on interesting software, web-pages, music and articles/text that I wanted to dig into later. Kippt and Instapap …