A couple of days ago, I released a native macOS application called Remember. It is a small, keyboard-driven application for stashing away notes/reminders for later. One of the cool things about it from a programming nerd perspective is that, while it is a completely native Cocoa application whose frontend is built with Swift, the core business logic is all in Racket! Why not use racket/gui? I started out with a proof of concept that used Racket for the GUI, but I realized that I’d have to write a bunch of Objective-C FFI code to get the UI to look the way I wanted (a carbon copy of Spotlight) and it seemed like it would be a pain to try and integrate DDHotKey and to add support for launching at login into a package that is easy to distribute.
I’ve been using org-mode capture templates for years and I’ve always wished I had something like that for the whole system. I took advantage of the holiday break to build Remember, a little reminders application with Spotlight-like UX. It’s available on Gumroad and you can pay what you want for it (inlcuding $0!) at the moment so I hope you’ll give it a go! Although the app isn’t Open Source, it source code is available on GitHub.
I just open sourced one of the very first Racket code bases I’ve worked on. The project is called nemea and it’s a tiny, privacy-preserving, website analytics tracker. It doesn’t do anything fancy, but it does enough for my needs and, possibly, yours too so check it out!
Another Racket thing! redis-rkt is a new Redis client for Racket that I’ve been working on these past few weeks. Compared to the existing redis and rackdis packages, it: is fully documented, is safer due to strict use of contracts, is faster, supports more commands and its API tries to be idiomatic, rather than being just a thin wrapper around Redis commands. Check it out!
I made a new Racket thing today! chief is a port of a subset of foreman’s functionality to Racket. It lets you run sets of processes together based on a Procfile. If that sounds useful to you, do check it out!
Generators in Python One of the nice things about Python is that it comes with in-built support for “generators”, functions that can suspend themselves and be resumed in the middle of processing. Here’s a generator that produces the fibonacci series: 1 2 3 4 5 6 def fib(): x = 0 y = 1 while True: y, x = x + y, y yield x A generator is instantiated every time you call the fib function.
I had originally shared a version of this post with a small, private mailing list, but then I figured there’d be no harm in sharing it with a larger audience so here it is. My girlfriend and I recently launched matchacha.ro, a small e-commerce site selling Japanese green tea here in Romania (the site defaults to Romanian, but you can change the language by scrolling to the bottom – we don’t ship outside of Romania, though, sorry!