The Curious Engineer

All blogs / Dev tools / editors / IDEs

(think)

batsov.com

Bozhidar Batsov’s personal blog

Dev tools / editors / IDEsLisp / Clojure / SchemeRuby / RailsOCaml / F#

Posts
299 from 5 May 2008 to 24 Jun 2026
Posting
weekly (35 in the last year)
Kind
personal blog
Feed
https://batsov.com/feed.xml

2026 31

  1. Neocaml 0.9: A Better REPL, Dune/Opam Completion, and More Robustness
  2. Emacs loves AsciiDoc
  3. nREPL Forever
  4. neat: a language-agnostic nREPL client for Emacs
  5. Port: a minimalist prepl client for Emacs
  6. Batppuccin my take on catppuccin for emacs
  7. Fsharp ts mode a modern emacs mode for fsharp
  8. Neocaml 0 6 opam dune and more
  9. One year with the hhkb
  10. Essential claude code skills and commands
  11. Emacs and vim in the age of ai
  12. Ppx for mere mortals
  13. Learning ocaml string interpolation
  14. Working with ocaml records
  15. Printing data in ocaml
  16. Building emacs major modes with treesitter lessons learned
  17. How to vim auto save on activity
  18. Learning vim in 3 steps
  19. Setting up emacs for ocaml development neocaml edition
  20. Adding empty lines in vim redux
  21. How to vim build your vimrc from scratch
  22. How to vim to the terminal and back
  23. Supercharging claude code with the right tools
  24. How to vim many ways to paste
  25. Neocaml 0 1 ready for action
  26. A fresh look for the blog switching to jekyll s chirpy theme
  27. Tips on using mastodon
  28. How to vim insert thing at point in command mode
  29. How to vim alternative approach to find and replace
  30. How to vim navigating prose in style
  31. How to vim using effectively the command history

2025 41

  1. How to vim joining lines
  2. Rust embrace captured identifier in format strings
  3. Burst driven development my approach to oss projects maintenance
  4. Configure quick terminal size in ghostty
  5. A note about ai generated feedback
  6. Why i chose ruby over python
  7. Wayward predicates in ruby
  8. How to vim take control of split positioning
  9. How to vim fixing typos
  10. Learning ocaml numerical type conversions
  11. Learning ocaml having fun with the fun module
  12. Zoxide tips and tricks
  13. How to fish moving between recent directories
  14. How to vim proper ways to escape
  15. How to vim reloading file buffers
  16. How to vim jump around
  17. How to vim toggle comments
  18. How to vim format lines
  19. Remove stale labels instantly with github actions
  20. The origin of the pipeline operator
  21. Switching from zsh to fish
  22. Rediscovering vim
  23. My favorite tilde keybindings
  24. Using use package the right way
  25. Emacs startup time does not matter
  26. Learning ocaml parsing data with scanf
  27. Learning ocaml module aliases
  28. Learning ocaml regular expressions
  29. Why fsharp
  30. Neocaml a new emacs package for ocaml programming
  31. Ocaml s standard library
  32. Updating my toolbox ghostty and fish
  33. Learning ocaml functions without parameters
  34. Back to the basics zsh without oh my zsh
  35. Learning ocaml matching anything or the lack of anything
  36. Automate the creation of github releases
  37. Simple ways to run ocaml code
  38. A basic helix setup for javascript
  39. Replace text in multiple files
  40. Macos no longer ships with emacs
  41. Running jekyll on ruby 3 4

2024 13

  1. Articles
  2. How to fix x11 forwarding on wsl
  3. The story of a nickname
  4. Daniel craig is my james bond
  5. M x reloaded the second golden age of emacs
  6. Emacs dead and loving it
  7. Ocaml adds list take and list drop
  8. Asciidoc language specification
  9. Revisiting mastodon
  10. Curbing my email mania
  11. Bluesky
  12. 2023 the year in review
  13. Learning ocaml verifying tail recursion with tailcall

2023 7

  1. A bad year for blogging
  2. Fastmail year two
  3. Learning ocaml quoted string literals
  4. Blog comments are back
  5. Updating the bundler version specified in gemfile lock
  6. How are ocaml programmers called
  7. 2022 the year in review

2022 43

  1. Bozhidar is on mastodon
  2. Back to android my take on the pixel 6a
  3. Topic specific rss feeds
  4. Git tip find the top contributors
  5. What s the term for a filename without its extension
  6. Reading files in ocaml
  7. An unexpected blogging record
  8. Ocaml tips implementing a range function
  9. Lessons learned from a hardware upgrade gone wrong
  10. Why bother with a custom desktop pc in 2022
  11. Ocaml tips converting a string to a list of characters
  12. Resetting circleci checkout ssh keys
  13. Oh my zsh fun with take
  14. Reload zsh configuration
  15. Zipping collections in ocaml
  16. Ocaml at first glance
  17. Ocaml tips multiple let bindings
  18. Setting up emacs for ocaml development
  19. Learning ocaml
  20. Clojure tricks number to digits
  21. Clojure tricks replace in string
  22. Clojure tricks zipping things together
  23. A note about guest posts
  24. Dealing with unwanted email
  25. Fastmail year one
  26. Zed editor
  27. Modern emacs redux
  28. Back in action
  29. Commercial emacs
  30. Who needs modern emacs
  31. Having fun with custom domains for email
  32. Email mania
  33. Thinking writing
  34. The war in ukraine
  35. The case against crypto
  36. Titanium edition
  37. Reader s block
  38. Cheating at wordle like a hacker
  39. How to find which package a file belongs to in debian ubuntu
  40. Farewell g suite legacy free edition
  41. Unix sockets are now supported on windows
  42. Bad ruby hash value omission
  43. My writing process

2021 26

  1. 2021 the year in review
  2. Interactive programming in a nutshell
  3. New laptop lenovo yoga slim 7
  4. Building emacs from source with pgtk
  5. Changes to github pages
  6. Perl turns 34
  7. Magit for vs code
  8. Working with multiple versions of java on ubuntu
  9. Experimenting with link posts
  10. No hello
  11. Emacs is not a proper gtk application
  12. Advent of code 2021
  13. Firefox is the only alternative
  14. A decade with jekyll
  15. Emacs is a Lifestyle
  16. Small Improvements to the Blog
  17. Why Emacs: Redux
  18. .net Forever
  19. Display Git Configuration
  20. Your Name is Your Brand
  21. Atom Feeds in Jekyll: Redux
  22. A Note About Recruiters
  23. The MacBook: Redux
  24. Blog Comments are Dead
  25. Switching to Minimal Mistakes
  26. Getting in Touch

2020 7

  1. Inspecting the Contents of a Ruby Gem
  2. Farewell Disqus
  3. Basic Git Setup
  4. Rename Multiple Files in Linux
  5. Hey
  6. Ubuntu Tip: Removing All Packages Installed from a PPA
  7. Meta Redux

2018 4

  1. Going Rogue
  2. If I Could Turn Back (Git) Time
  3. Back in Black
  4. Migrating from Octopress to Jekyll

2015 3

  1. CIDER 0.9
  2. Projectile 0.12 released
  3. Octopress 3.0

2014 16

  1. Introducing inf-clojure - a Better Basic Clojure REPL for Emacs
  2. A CIDER Unsession at Clojure/conj
  3. The Road to CIDER 0.8
  4. RuboCop Logo
  5. clojure-mode 3.0
  6. SICP Distilled
  7. The Elements of Style in Ruby #14: Variable Interpolation
  8. The State of Some Emacs Packages for Clojure Development
  9. CIDER 0.7
  10. Permalinks in the Ruby and Rails style guides
  11. Permalinks in the Clojure style guide
  12. Find out where a rake task is defined
  13. The Elements of Style in Ruby #13: length vs size vs count
  14. A list of deprecated stuff in Ruby
  15. The Elements of Style in Ruby #12: proc vs Proc.new
  16. Looking Back on 2013

2013 31

  1. Projectile 0.10 is out!
  2. Regexp anchors in Ruby
  3. Using Ruby’s each_with_object
  4. RuboCop 0.14: Beyond the Ruby Style Guide
  5. Using Ruby’s gsub with a hash
  6. The Elements of Style in Ruby #11: Invoking Lambdas/Procs
  7. Lambdas/Procs in Case Expressions
  8. The Elements of Style in Ruby #10: In cryptic Perlisms we do not trust
  9. A couple of useful extensions to Ruby’s Enumerable module
  10. Using Ruby’s gsub with a block
  11. Announcing the Powerpack library
  12. The Elements of Style in Ruby #9: Hash#has_key? and Hash#has_value? are deprecated
  13. Android vs iOS: No Clear Winner
  14. The Elements of Style in Ruby #8: Know Thy Predicates
  15. The Elements of Style in Ruby #7: The case against ===
  16. The Elements of Style in Ruby #6: Attributes Redux
  17. The Elements of Style in Ruby #5: Readability of long numeric literals
  18. The Elements of Style in Ruby #4: Array#join vs Array#*
  19. RuboCop 0.9 is now patrolling the streets!
  20. The Elements of Style in Ruby #3: Make sure something is an array
  21. The Elements of Style in Ruby #2: Favor sprintf(format) over String#%
  22. The Elements of Style in Ruby: An Essay in N parts
  23. The Elements of Style in Ruby #1: Maximum line length
  24. RuboCop 0.8.0 is out, support for JRuby and Rubinius is in!
  25. WikEmacs lives on under new stewardship
  26. RuboCop 0.6.0 released
  27. Emacs Redux
  28. RuboCop
  29. The WikEmacs Experiment is Over!
  30. drop-nth in Clojure
  31. Just juxt it!

2012 24

  1. Deleting Remote Git Branches
  2. Emacs Tip #8: Manipulating Word Case
  3. From Linux to OS X: Meet Your New Apps
  4. Emacs Tip #7: Remap Return to Control in OS X
  5. Dealing with SSL certificate validation errors in Rails
  6. Emacs Tip #6: Remove variable & function definitions
  7. Ruby Tip #3: Matching on an Object’s Class in a Case Expression
  8. Rails Tip #1: Use Pry Instead of irb for the Rails Console
  9. Emacs on OS X
  10. Setting up fallback locale(s) in Rails 3
  11. Long Time, No See
  12. Emacs Support for the Slim Template Language
  13. guru-mode
  14. From Linux to OS X: 1 Year Later
  15. A True Emacs Knight
  16. MELPA - homebrew (Emacs Edition)
  17. WikEmacs: The Other Emacs Wiki
  18. All Hands on Deck! (or the Action Plan for a new Emacs community wiki)
  19. Die EmacsWiki, Die!
  20. Emacs Tip #4: Repeat Last Command
  21. Ruby Tip #2: Get a List of All Rake Tasks
  22. Emacs Tip #5: Save Buffers Automatically on Buffer or Window Switch
  23. Color Theming in Emacs: Reloaded
  24. Package Management in Emacs: The Good, the Bad and the Ugly

2011 34

  1. Solarized for Emacs
  2. The Ultimate Collection of Emacs Resources
  3. Ruby Tip #1: Demystifying the Difference Between == and eql?
  4. Emacs Tip #3: Whitespace Cleanup
  5. Admin Interfaces for Rails Apps: RailsAdmin vs ActiveAdmin
  6. Why Emacs?
  7. Emacs Tip #2: Open File in External Program
  8. Blogging Like a Hacker: Evolution
  9. Deploying Rails 3.1 applications on Heroku’s Celadon Cedar stack
  10. Getting started with Emacs 24
  11. A peek at Emacs 24
  12. Debian post installation setup & tips
  13. Django 1.3 vs Rails 3: A not so final showdown
  14. The Linux desktop experience is killing Linux on the desktop, Part II
  15. The Linux desktop experience is killing Linux on the desktop
  16. Emacs Tip #1: Set the default font in Emacs 23
  17. Running Xerox Phaser 3117 under Fedora 15
  18. Fedora 15 post installation setup & tips
  19. Java.next() - JRuby: The Rubyists Strike Back
  20. Recommended Ruby books
  21. Java.next() - Clojure: The Return of the Lispers
  22. A new Zenburn theme for Emacs
  23. Java.next() - Scala: The Revenge of the Static Typing
  24. Java.next() - The Groovy Programming Language
  25. Ruby or Python?
  26. Parsing numbers from string in Common Lisp
  27. One shell to rule them all…
  28. Should I stay or should I go?
  29. Programming languages worth learning
  30. Incremental development with Scala and JRebel
  31. Thoughts on the Amazon Kindle
  32. Add an Atom feed to a Jekyll blog
  33. Emacs Dev Kit
  34. Moving from WordPress to Jekyll

2010 4

  1. My professional CV in LaTeX
  2. Enabling 3D support for Nouveau in Fedora 13
  3. Changing the look & feel in NetBeans 6.8
  4. How to enable font anti-aliasing in a Java Swing app

2009 10

  1. How to center a JDialog over a JFrame in Swing
  2. Automatically execute programs after zsh login
  3. Accessing the menu bar in Emacs
  4. Using Xerox Phaser 3117 on Fedora
  5. Modify JVM parameters for JBoss AS
  6. Emacs Configuration On GitHub
  7. Find out quickly which package provides a certain library with YUM
  8. Java type indicators in Eclipse
  9. Emulate the behaviour of Return+Shift(insert new line) from popular IDEs(IDEA, Eclipse) in Emacs
  10. A switch on String idiom for Java

2008 5

  1. The best way to implement the Singleton pattern in Java and Ruby
  2. A nice zsh prompt
  3. Using Emacs for Rails development: The perfect setup
  4. Das Keyboard
  5. Every blog has its first post…