Running Racket on iOS

/u/myfreeweb pointed out to me in a lobste.rs thread yesterday that Racket compiles just fine on aarch64 and that led me down a rabbit hole trying to get Racket running inside an iOS application. I finally succeeded so I figured I'd write down my findings in hopes of helping future Racketeers (myself included) going down this path! Compile Racket for macOS A recent-enough version of Racket is required in order to compile Racket for iOS.

Native Applications with Racket

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.

Announcing Remember for macOS

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.

Announcing nemea

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!

Announcing redis-rkt

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!

Announcing chief

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 from Scratch

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.

Racket for e-commerce

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!

Announcing deta

I just released the first version of deta, a Racket library for mapping between database tables and structs. A bit like Elixir's Ecto.

You can install it from the package server with:

raco pkg install deta

Check it out!