S
Steve Losh
stevelosh.com · Personal blog · on HN since 2009
Steve Losh is a programmer who writes about Common Lisp, Clojure, Vim, Mercurial, and Git.
What HN saysHN repeatedly recommends his "A Road to Common Lisp" as a roadmap for learning the language, and his Clojure roguelike series.
219HN people shared it
156linked it in comments
149stories submitted
6.6Kstory points
3 months agolast shared
2009people per year2026
Most-shared posts
- 1Git koans49 people · 826 points · first shared 2013 · 141 comments on HN
- 2A Modern Space Cadet31 people · 166 points · first shared 2012 · 54 comments on HN
- 3A Road to Common Lisp30 people · 811 points · first shared 2018 · 168 comments on HN
- 4Coming Home to Vim15 people · 567 points · first shared 2010 · 121 comments on HN
- 5The Homely Mutt15 people · 225 points · first shared 2012 · 110 comments on HN
- 6A Guide to Branching in Mercurial15 people · 8 points · first shared 2010 · discussion on HN
- 7List out of Lambda10 people · 186 points · first shared 2013 · 47 comments on HN
- 8The Caves of Clojure10 people · 104 points · first shared 2012 · 20 comments on HN
- 9Teach, Don't Tell (2013)9 people · 558 points · first shared 2013 · 75 comments on HN
- 10Volatile Software (2012)9 people · 72 points · first shared 2012 · 4 comments on HN
- 11t: cli task management for finishing tasks, not organizing them8 people · 8 points · first shared 2010 · 2 comments on HN
- 12Mercurial Queues are like Git's index on steroids7 people · 10 points · first shared 2010 · 4 comments on HN
- 13Why I Two-Space6 people · 131 points · first shared 2012 · 102 comments on HN
- 14My Extravagant Zsh Prompt5 people · 100 points · first shared 2010 · 14 comments on HN
- 15The Real Difference Between Mercurial and Git5 people · 7 points · first shared 2010 · 3 comments on HN
What HN people wrote when they linked it
troad · 2025-06-21
Sorry for my late reply. Touretzky's Common Lisp: A Gentle Introduction to Symbolic Computation holds up well as a good introduction. Steve Losh's A Road to Common Lisp is a great roadmap for going further (https://stevelosh.com/blog/2018/08/a-road-to-common-lisp/).
For tooling, you can get started with just sbcl and rlwrap, both of which should be in any Linux repo. Get a REPL with `rlwrap sbcl`. Exit with `(exit)`.
sandbach · 2025-01-13
There's this great post by Steve Losh:
https://stevelosh.com/blog/2018/08/a-road-to-common-lisp/
tmtvl · 2023-11-15
I recommend Common Lisp, it's fast, it's mature, and it has some wicked cool tools. You can find some resources here: <https://stevelosh.com/blog/2018/08/a-road-to-common-lisp>. You can also look at CLiki (the Common Lisp wiki), the Common Lisp Cookbook, and the Common Lisp Community Spec for information any basically anything you may be interested in.
tl · 2023-08-15
All 5 of those age better than React. Also, you are conflating languages and platforms.
Counterexamples / Retorts:
- https://catonmat.net/5-best-programming-languages
- https://stevelosh.com/blog/2018/08/a-road-to-common-lisp/
Choose ecosystems free of hamster wheels, friend.
dan-g · 2022-10-24
Steve Losh has a great series of blog posts on creating a roguelike in Clojure: https://stevelosh.com/blog/2012/07/caves-of-clojure-01/
philips · 2022-05-15
The hack to force you to use the correct shift key when touch typing is amazing! I can’t wait to try it. I have been plagued with using the wrong key for years.
https://stevelosh.com/blog/2012/10/a-modern-space-cadet/#s16-shift-key…
sodapopcan · 2021-10-23
Ya, the git UI is not great. It has improved a ton over the years but still not great. Have you ever seen Git Koans? It's good for a laugh. https://stevelosh.com/blog/2013/04/git-koans/
phoe-krk · 2020-12-16
Common Lisp programmer here.
https://stevelosh.com/blog/2018/08/a-road-to-common-lisp/
That's the best article I know on the matter.
CaptainRefsmat · 2020-08-27
> Is there a good definitive guide somewhere on the best workflows for hg?
I don't know about workflows specifically, but there is a very good reference [0] about Mercurial's branching models. Maybe this will help you.
[0] https://stevelosh.com/blog/2009/08/a-guide-to-branching-in-mercurial/
heisig · 2020-07-24
The Common Lisp Cookbook is an excellent starting point for learning more about the Lisp ecosystem:
https://lispcookbook.github.io/cl-cookbook/
Another great introduction to Lisp is this blog post by Steve Losh:
https://stevelosh.com/blog/2018/08/a-road-to-common-lisp/
yakshaving_jgt · 2020-02-08
Here’s a good one: https://stevelosh.com/
And here’s mine: https://jezenthomas.com/
shadowfiend · 2019-10-23
One of my favorite writings on the matter is Teach, Don't Tell, by Steve Losh: http://stevelosh.com/blog/2013/09/teach-dont-tell/ , including a rather savage takedown of wikis as a documentation mechanism. A bit idealistic, perhaps, especially for open source or single-person projects, but a good north star for doc work IMO.
snazz · 2019-07-29
Most “progress” since CL has been very “one step forwards, two steps back”. The interactive development, amazing debugging (don’t unwind the stack), powerful macros, nearly-C-speed (if optimized), great tooling, etc. are mostly kept by other Lisps, but at the same time most every new language in the Lisp family loses some aspect of what makes CL great.
http://stevelosh.com/blog/2018/08/a-road-to-common-lisp/ is highly recommended, as well.
MichalSternik · 2019-05-23
Steve Losh in his already-classic CL blog post [^1] suggests either Vlime or Slimv, quote:
„If you’re like me and already have Vim burned too deeply into your fingers to ever get it out, I’d recommend Vim with Vlime. It will give you 80% of the experience you’ll get with Emacs.”
If you want 100% of SLIME goodness without sacrificing vim, try spacemacs [^2]. I switched about two years ago and am very happy.
[1]: http://stevelosh.com/blog/2018/08/a-road-to-common-lisp/#lisp-as-a-sys…
[2]: http://spacemacs.org
kannmig · 2019-01-16
Steve Losh's post on how to learn Common Lisp is an amazing resource. I encourage people to check it out!
It happens to include many of the books mentioned in the parent post.
Link: http://stevelosh.com/blog/2018/08/a-road-to-common-lisp/
Accompanying HN discussion: https://news.ycombinator.com/item?id=17852194
krupan · 2018-10-04
" It also has the downside of requiring extensive use of more advanced features like interactive rebasing."
This is true. In the early days of mercurial (back before it was clear that git was winning the popularity contest) there was an extension called Mercurial Queues[1] that made it really easy to work this way. The downsides were: it didn't handle conflicts well, and it could totally destroy your work if you weren't careful. Since then someone has written the Evolve extension which is Mercurial Queues done right. That, sadly, came about after git had "won" the popularity contest.
1. Best explanation of Mercurial Queues: http://stevelosh.com/blog/2010/08/a-git-users-guide-to-mercurial-queue…
Biqh1 · 2018-09-02
When I set up my personal gmail with Mutt, I used the following guides, if you're interested. None of them are perfect, so I did what most people do and took bits and bobs from all of them:
1. [https://smalldata.tech/blog/2016/09/10/gmail-with-mutt]
2. [http://stevelosh.com/blog/2012/10/the-homely-mutt/]
3. [https://baptiste-wicht.com/posts/2014/07/a-mutt-journey-my-mutt-config…
bunderbunder · 2018-08-27
I haven't read the whole thing, but, I gotta say, seeing the "Ugliness" section (http://stevelosh.com/blog/2018/08/a-road-to-common-lisp/#ugliness) in the preamble gives me high hope for this writeup. It's so lovely to see writing on Lisp that isn't just hagiography.
hv42 · 2018-08-05
If you editor has a correct git support, you never need to do git status because it will show you which files had been edited since the last commit.
Every time I hear people saying how much they prefer the git command line is because they never seriously tried to leverage the git features of their IDE.
Vs code with git lens or intellij idea have excellent git integration. Everything is one shortcut away.
The git commands that are used are log into a console if you want to check.
At the end of the day both methods work, it's just a matter of preference but it is worth trying a good git UI.
Also if you ever try to teach someone git, it's not as intuitive as you think [1]. Having a consistent UX can help.
That's why there is definitely a space for this kind of git UI as presented in the article.
[1]http://stevelosh.com/blog/2013/04/git-koans/
dmix · 2018-03-24
I don't know anyone who uses Mutt directly for imap.
Every guide I've read recommends using imapsync and msmtp for sending.
http://stevelosh.com/blog/2012/10/the-homely-mutt/#getting-email
jordigh · 2017-12-03
> Also, follow the development of Django and comment on the intentional breaks if you think they’re not worth changing.
I really don't want to be sucked into Django's drama:
https://us.pycon.org/2015/schedule/presentation/381/
I've encountered very little sympathy from Django developers. Everyone seems to have just accepted that it breaks often and it's totally my fault for not keeping up with the breaking changes. Everyone seems to think that Django breaking compatibility all over the place is good, proper, acceptable, and inevitable. Nothing is sacred, anything can break, and make sure you go through that list each release to see what you have to change in your code.
This makes me sad and frustrated.
http://stevelosh.com/blog/2012/04/volatile-software/
pwdisswordfish · 2017-07-10
The UI has some warts, and a few design choices were made that some people find questionable. You can get used to them (which is probably why most people don't even notice it as a problem), but they're there.
The best survey of Git's quirks that I've seen is, unfortunately, http://stevelosh.com/blog/2013/04/git-koans/
juanre · 2017-06-16
I switched back to mutt 5 months ago, when my startup started to grow fast and I needed a sensible way to deal with lots of email in multiple accounts. I haven't looked back. I still have gmail as a back-end, but I use mbsync to keep local copies of all my accounts, and msmtp to send mail.
Some resources I found helpful:
- http://stevelosh.com/blog/2012/10/the-homely-mutt/ (good, but it recommends offlineimap — I tried it and found it to be slow and buggy. mbsync is much better.)
- https://github.com/cbracken/mutt
- https://lukespear.co.uk/mutt-multiple-accounts-mbsync-notmuch-gpg-and-…
alkonaut · 2017-05-30
I think hg is more consistent, more polished, and sometimes involves a bit fewer steps to accomplish the same tasks.
One of the best (and funniest) criticisms of the git command line is the famous git koans. http://stevelosh.com/blog/2013/04/git-koans/
git branch -d
git remote rm
Is a prime example of how, if you designed it from scratch, you wouldn't leave inconsistent. "List things", "delete things" etc are activities that should work the same for all kinds of objects. the Git cli isn't designed with that thought. It's organically grown and every change is more or less irreversible because the human interface UI is used in programming (What I like to think of as the biggest flaw of Unix)
avmich · 2017-01-02
I'd recommend http://www.michaelnielsen.org/ddi/lisp-as-the-maxwells-equations-of-so… .
A couple of "lower level" explanations - http://stevelosh.com/blog/2013/03/list-out-of-lambda/ (a somewhat easier start) and http://codon.com/programming-with-nothing - show where part of the power comes from.
alex- · 2016-12-11
http://stevelosh.com/blog/2013/04/git-koans/
Despite being a fan of git I do like these stories. "The Hobgoblin" is my favorite.
daenney · 2016-10-27
I don't turn on caps. I usually only need it for a single letter, so the shift key does wonders.
I follow this setup[1], where caps lock can both function as ctrl and esc depending on how long you press/hold.
[1]: http://stevelosh.com/blog/2012/10/a-modern-space-cadet/#control-escape
jrcii · 2016-09-23
I've got Mutt going with Gmail along the lines of Steve Losh's advice http://stevelosh.com/blog/2012/10/the-homely-mutt/
It works great. Very fast, and it's nice to have a local backup of my email.
jiiam · 2016-06-08
Nice, but IMO it falls, as the Bullet Journal, into the category of beauty over result. I just think that simpler, less structured systems provide comparable results in terms of getting things done, while wasting less effort on the nonessential aspect of system.
As for alternatives, my favourite is t (http://stevelosh.com/projects/t/). Truth be told, it may be way too simple. But yet again, complexity needs to be justified.
As a side note, remember that you can do for organizing tasks an argument similar to xkcd's on automation:
https://xkcd.com/1205/
https://xkcd.com/1319/
dannysu · 2016-04-04
There was a great thread on HN before that motivated me to install mutt: https://news.ycombinator.com/item?id=10182582
I found this tutorial that I wanted to follow in that thread: http://stevelosh.com/blog/2012/10/the-homely-mutt/
I do have offlineimap and mutt already setup and I can read emails, but haven't installed notmuch or done any configuration. Seeing 1.6 release reminds me that I should give it a fair try again.