22 August 2023 My custom Tesco Clubcard pkpass My significant other and I had two plastic Tesco Clubcards. I lost mine, so I took a picture of hers. I was fairly certain a barcode photo would scan just as well at self-checkout, and it did. This got me thinking about Apple's Walle … | Continue reading
07 August 2023 sqlite-mode goodies I recently wrote about Emacs 29's new sqlite-mode, which enables you to browse sqlite databases from your beloved editor. Out of the box, it supports the following browsing features: sqlite-mode-list-data: List the data from the table unde … | Continue reading
07 August 2023 Extending sqlite-mode (cell navigation + edits) I recently wrote about Emacs 29's new sqlite-mode, which enables you to browse sqlite databases from your beloved editor. Out of the box, it supports the following browsing features: sqlite-mode-list-data: List the da … | Continue reading
06 August 2023 Emacs 29's sqlite-mode I've jumped on the Emacs 29 bandwagon! Mickey Petersen has a great rundown of What's New in Emacs 29.1. Now every so often, I need to take a quick peek at an sqlite3 table. Emacs 29.1 ships sqlite-mode, which can help with that. Use sqlit … | Continue reading
06 August 2023 Emacs 29's sqlite-mode I've jumped on the Emacs 29 bandwagon! Mickey Petersen has a great rundown of What's New in Emacs 29.1. Now every so often, I need to take a quick peek at an sqlite3 table. Emacs 29.1 ships sqlite-mode, which can help with that. Use sqlite-mo … | Continue reading
30 July 2023 Emacs: scan this QR/bar code Another day, another tool brought to my Emacs fingertips. A while ago, I wrote about easily copying text from desktop to mobile via QR codes. Later on, I brought it under dwim-shell-command as dwim-shell-commands-clipboard-to-qr. This … | Continue reading
30 July 2023 Emacs: scan this QR/bar code Another day, another tool brought to my Emacs fingertips. A while ago, I wrote about easily copying text from desktop to mobile via QR codes. Later on, I brought it under dwim-shell-command as dwim-shell-commands-clipboard-to-qr. This tim … | Continue reading
25 July 2023 A cure for JavasScript fatigue? It's been roughly a decade since I wrote any significant amount of JavaScript. Back then, I primarily relied on the Google Closure Compiler in my project. Yeah, I know… These days, it's hard not to bump into any JavaScript project th … | Continue reading
25 July 2023 A cure for JavaScript fatigue? It's been roughly a decade since I wrote any significant amount of JavaScript. Back then, I primarily relied on the Google Closure Compiler, now maybe an archaeological artefact? These days, it's hard not to bump into any JavaScript pro … | Continue reading
25 July 2023 A cure for JavaScript fatigue? It's been roughly a decade since I wrote any significant amount of JavaScript. Back then, I primarily relied on the Google Closure Compiler, now maybe an archaeological artefact? These days, it's hard not to bump into any JavaScript pro … | Continue reading
12 July 2023 ChatGPT visits the Emacs doctor Emacs is a part-time job. A multi-language development environment. A lisp machine. An email client. A web browser. A zettelkasten. A spreadsheet. A mastodon client. A shell. A ledger. A super agenda. An operating system. Some say it … | Continue reading
09 July 2023 chatgpt-shell v0.60.1 updates Back in April, I shared chatgpt-shell updates, showcasing chatgpt-shell features. It's been a little while, so here's an update with the latest additions. Multi-session support You can run multiple shell instances independently co … | Continue reading
05 July 2023 Duplicate this! James Dyer has a nice post sharing his frequent dired need to duplicate files. He offers a solution using a custom interactive command. His use-case resonated with me. Similarly, James' recommendation to bind his file-duplicating command to C-c d … | Continue reading
29 June 2023 Stitching images from the comfort of dired I recently wanted a few images stitched together. A perfect job for ImageMagick. A quick search yielded the magical incantation: convert image1.jpg image2.jpg image3.jpg +append joined.jpg Great, now I know, but I'll r … | Continue reading
18 June 2023 noweb: the lesser known org babel glue While Org babel's noweb isn't something I've frequently used for literate programming, its simplicity makes it rather versatile to glue all sorts of babel things I hadn't previously considered. The idea is simple. Add a plac … | Continue reading
25 May 2023 Deleting from Emacs sequence vars Adding hooks and setting variables is core to customizing Emacs. Take a major mode like emacs-lisp-mode as an example. To customize its behaviour, one may add a hook function to emacs-lisp-mode-hook, or if you're a little lazy while … | Continue reading
18 May 2023 Sprinkle me logs At times, basic prints/logs are just about the right debugging strategy. Sure, we have debuggers and REPLs which are super useful, but sometimes you just know that sprinkling your code with a handful of temporary prints/logs will get you enough info … | Continue reading
11 May 2023 dwim-shell-command on Windows + upload to 0x0.st You can now use dwim-shell-command on Windows. Shoutout to Kartik Saranathan, who sent a pull request to get rid of ls usage. Also thanks to Bram for sharing his upload to 0x0.st implementation. I'd been wanting to … | Continue reading
01 May 2023 chatgpt-shell siblings now on MELPA also In chatgpt-shell updates, I highlighted dall-e-shell (a DALL-E Emacs shell), ob-chatgpt-shell (ChatGPT org babel support), and ob-dall-e-shell (DALL-E org babel support) were initially excluded from the chatgpt-shell MELPA su … | Continue reading
28 April 2023 Generating elisp org docs chatgpt-shell's README includes few org tables documenting the package's customizable variables as well as available commands. Don't worry, this isn't really another ChatGPT post. Here's an extract of the docs table: | Custom variable … | Continue reading
25 April 2023 chatgpt-shell available on MELPA About a month ago, I posted about an experiment to build a ChatGPT Emacs shell using comint mode. Since then, it's turned into a package of sorts, evolving with user feedback and pull requests. While chatgpt-shell is a young pack … | Continue reading
21 April 2023 Recording and screenshotting windows: the lazy way While there's no substitution for great written documentation, a quick demo can go a long way in conveying what a tool if capable of doing or what a tip/trick can achieve. If you've read a handful of my posts, y … | Continue reading
20 April 2023 ob-swiftui updates While experimenting with delegating Markdown blocks to Org babel in Emacs chatgpt-shell, I resurrected ob-swiftui. A package I had written to execute and render SwiftUI blocks in org babel. ob-swiftui has two modes of rendering SwiftUI blocks: … | Continue reading
15 April 2023 My Emacs eye candy I get the occasional question about my Emacs theme, font, and other eye candy. I'm always tickled and happy to share. It's been a while since I've made visually significant changes to my Emacs config. May as well briefly document for poster … | Continue reading
07 April 2023 shell-maker, a maker of Emacs shells A few weeks ago, I wrote about an experiment to bring ChatGPT to Emacs as a shell. I was fairly new to both ChatGPT and building anything on top of comint. It was a fun exercise, which also generated some interest. As mention … | Continue reading
05 April 2023 Flat Habits 1.1.4 released Flat Habits 1.1.4 is now available on the App Store. Flat Habits is a habit tracker that’s mindful of your time, data, and privacy. It's a simple but effective iOS app. If you care about how your data is stored, Flat Habits i … | Continue reading
21 March 2023 A ChatGPT Emacs shell I had been meaning to give ChatGPT a go. Preferably from Emacs. As an eshell fan, ChatGPT just seemed like the perfect fit for a shell interface sorts. With that in mind, I set out to wire ChatGPT out with Emacs's general command interpreter … | Continue reading
04 March 2023 *scratch* a new minimal org mode scratch area for iOS While we already have lots of note-taking apps on iOS, I wanted a minimal *scratch* area (à la Emacs), so I built one. What's the use-case? You're on the go. Someone's telling you directions, or a phon … | Continue reading
29 January 2023 Chicken Karaage recipe Huge fan of Chicken Karaage, but never really made it at home until recently. Dice the chicken 350 grams boneless chicken thighs Dice the chicken up. Marinade for 30 mins 1 tablespoon soy sauce (Kikkoman or simil … | Continue reading
10 January 2023 Emacs: org-present in style I had been meaning to check out David Wilson's System Crafters post detailing his presentations style achieved with the help of org-present and his own customizations. If you're looking for ways to present from Emacs itself, David's p … | Continue reading
08 January 2023 Emacs: insert and render SF symbols About a week ago, I added an Emacs function to insert SF symbol names. This is specially useful for SwiftUI. I didn't bother too much with inserting symbols themselves since I hadn't figured out a way to render them for all bu … | Continue reading
31 December 2022 Emacs: Macro me some SF Symbols For inserting SF Symbols in SwiftUI, I typically rely on Apple's SF Symbols app to browse the symbols's catalog. Once I find a symbol I'm happy with, I copy its name and paste it into my Swift source. This works fairly well. Wi … | Continue reading
18 December 2022 Emacs: ffmpeg and macOS aliasing commands On a recent mastodon post, Chris Spackman mentioned he uses Emacs to save ffmpeg commands he's figured out for later usage. Emacs is great for this kind of thing. I've tried different approaches over time and eventually … | Continue reading
12 December 2022 Emacs: Context-aware yasnippets Back in 2020, I wrote a semi-automatic yasnippet to generate Swift initializers. I say semi-automatic because it could have been a little smarter. While it helped generate some of the code, what I really wanted was full context-a … | Continue reading
12 November 2022 Emacs: quickly killing processes Every so often, I need to kill the odd unresponsive process. While I really like proced (check out Mickey Petersen's article), I somehow find myself using macOS's Activity Monitor to this purpose. Kinda odd, considering I prefer … | Continue reading
06 November 2022 Hey Emacs, change the default macOS app for… A few weeks ago, I added an "open with" command to dwim-shell-commands.el. It's pretty handy for opening files using an external app (ie. not Emacs) other than the default macOS one. dwim-shell-commands-macos-open- … | Continue reading
02 November 2022 Hey Emacs, where did I take that photo? I was recently browsing through an old archive of holiday photos (from dired of course). I wanted to know where the photo was taken, which got me interested in extracting Exif metadata. Luckily the exiftool command line … | Continue reading
23 October 2022 Emacs: A welcoming experiment The *scratch* buffer is the first thing I see when I launch an Emacs session. Coupled with persistent-scratch, it's served me well over the years. I gotta say though, my scratch buffer accumulates random bits and often becomes a lit … | Continue reading
14 October 2022 Emacs: Open with macOS app On a recent Reddit comment, tdstoff7 asked if I had considered writing an "Open with" DWIM shell command for those times one would like to open a file externally using an app other than the default. I hadn't, but nice idea. Take imag … | Continue reading
12 October 2022 Improving on Emacs macOS sharing A quick follow-up to Emacs: macOS sharing (DWIM style)… Though functional, the implementation had a couple of drawbacks. Tohiko noticed fullscreen wasn't working at all while Calvin proposed enumeration for tighter Emacs integr … | Continue reading
12 October 2022 Emacs: macOS sharing (DWIM style) UPDATE: See an improved implementation here. A few days ago, I wrote dwim-shell-commands-macos-reveal-in-finder. While I've written a bunch of other dwim-shell-commands, what set this case apart was the use of Swift to glue an … | Continue reading
09 October 2022 Emacs: Reveal in macOS Finder (DWIM style) Just the other day, Graham Voysey filed an escaping bug against dwim-shell-command. Once he verified the the fix, he also posted two uses of dwim-shell-command-on-marked-files. I've made some small tweaks, but here's th … | Continue reading
01 October 2022 Plain Org v1.5 released If you haven't heard of Plain Org, it gives you access to org files on iOS while away from your beloved Emacs. Hadn't had time to post, but v1.5 has been available on the App Store for a couple of weeks now. The update is mostly a bugfi … | Continue reading
01 October 2022 dwim-shell-command usages: pdftotext and scp dwim-shell-command is a little Emacs package I wrote to enable crafting more reusable shell commands. I intended to use it as an async-shell-command alternative (and I do these days). The more surprising win was bring … | Continue reading