Moritz Hamann
moritzhamann.com
Moritz Hamann
@moritzhamann.com
Engineering Manager at Bloomberg LP. Opinions are my own.

Currently doing 12 months of OCaml to what the fuss is all about 🐫😁

Mastodon: @MoritzHamann@mastodon.social

https://moritzhamann.com
Pinned
Ok I've procrastinated long enough, but I'm using it on a day to day basis and it kinda works ok. So here it is - the 0.1 release of ocamlmycaml.nvim 🎉 featuring

- `:Dune` integration
- Custom ocamllsp commands
- Telescope integration for search-by-type

github.com/MoritzHamann...
GitHub - MoritzHamann/ocamlmycaml.nvim at 0.1
Neovim integration for OCaml. Contribute to MoritzHamann/ocamlmycaml.nvim development by creating an account on GitHub.
github.com
Reposted by Moritz Hamann
I'm still looking for 10 more #fsharp lovers to fill out the #FsAdvent schedule. 🙏
November 16, 2025 at 8:26 AM
Reposted by Moritz Hamann
Hey #fsharp, what we do with #FsAdvent this year? sergeytihon.com/fsadvent/ Do we have 24 F#ers ready to participate?
November 2, 2025 at 8:10 AM
Same here. From time to time I look at it, like the premise, try to start using it and stop after a few hours 😔
I want to like the Swift programming language. I just c@n't do it.
August 31, 2025 at 9:14 AM
Reposted by Moritz Hamann
When you use coding agents for something that produces the bulk of the code of an application that will be used for years, also factor in the technical debt that you are happily accumulating. When you use LLMs an an aid, you could, on the contrary, improve your coding culture.
August 21, 2025 at 1:08 PM
After trying to pick up Go again, I'm more convinced that it should have a .? operator or at least some linter rules to enforce nil checks on pointer receivers.

This would stuff like `myVar.GetX().GetY()` (where GetX/Y returns pointers) at least a bit more safe ...
August 2, 2025 at 7:33 PM
Looks like quite a prolific author, and I think there are many good insights on www.seangoedecke.com,
All posts
Sean Goedecke's personal blog
www.seangoedecke.com
June 22, 2025 at 9:41 AM
Trying now for hours to figure out why and when Safari on macOS is rendering "font-family: fantasy" either as Zapfino or as Papyrus, but don't have the slightest idea so far...
June 2, 2025 at 9:02 PM
www.seangoedecke.com/not-your-cod... This resonates quite a bit with me. The best advice I've ever seen was from a Jane Street tech talk about their internal code review practices (encouraging reviewers to push to the branch rather than just leaving comments
bsky.app/profile/mori...)
May 31, 2025 at 1:04 PM
I had to crop some margins on a PDF and this Java app with its Swing UI just worked... github.com/mbaeuerle/Br... autodetect the content area, overlayed all pages to manually adjust the crop area if necessary. I wish all software was like this 🥹
GitHub - mbaeuerle/Briss-2.0: Briss 2.0 is intended to be a GUI Update for the Briss PDF cropping tool.
Briss 2.0 is intended to be a GUI Update for the Briss PDF cropping tool. - mbaeuerle/Briss-2.0
github.com
May 29, 2025 at 6:29 PM
Seriously considering building an LSP for (git) diffs 🫠
May 19, 2025 at 8:58 PM
So much this. It only pays off much later, but whoever is going to maintain your code (even your future self) will thank you for it :)
type-safety is painful when you are migrating from unsafe to safe, or even when you are creating software from scratch, but it's marvelous when you are maintaining, refactoring, testing or explaining code
April 16, 2025 at 8:04 PM
weird at first, but I've come to like it as well
April 5, 2025 at 3:48 PM
Reposted by Moritz Hamann
Plus, a vintage Emacs / org-mode presentation! So much to love!
April 4, 2025 at 2:34 PM
ok lol. I was enjoying a bit of recreational Odin programming and thought to myself: would be cool if it had some automatic memory management for places where you don't care for performance. 50 lines later we've integrated www.hboehm.info/gc/gcinterfa... as a custom allocator 😅
Garbage Collector Interface
www.hboehm.info
February 20, 2025 at 9:57 PM
trying for hours now to get dune to link a c library. but for whatever reason it's building the executable but running it results in unresolved symbols.

I hoped the following flags would be enough in an (executable) stanca? (flags :standard -cclib -lmruby -ccopt -L/opt/homebrew/lib)
February 17, 2025 at 8:37 PM
TIL that you can use OCaml's PPX extensions in quoted strings. I.e. for ppx_string:

[%string "This \"%{value}\" will get replaced"]
is the same as
{%string|This "%{value}" will get replaced|}

(all credit to tarides.com/blog/2019-05... which is a really good read)
An introduction to OCaml PPX ecosystem
Exploring OCaml PPX rewriters: Insights on building, contributing, and enhancing the OCaml ecosystem with practical tricks that simplify code transformation.
tarides.com
February 15, 2025 at 11:17 AM
Reposted by Moritz Hamann
It looks like benchmarksgame-team.pages.debian.net/benchmarksga... is now reporting build times, which is probably the best benchmark on the whole page
February 10, 2025 at 9:49 PM
I was just trying to create a small mobile website with charts on them and realised that the whole left-to-right concept for line charts is not very mobile friendly. Does anyone know a (JS) library to draw "vertical" (top-to-bottom) line charts? 😅
February 5, 2025 at 9:56 PM
Mobile phone design peaked in 2000-2010. Flip phones, sliders, swizzle phones, T9 Input...
February 5, 2025 at 8:22 AM
Reposted by Moritz Hamann
Vim tip of the day: run a macro on every entry in a quickfix list with `:cdo normal @q`
thanks, til.codeinthehole.com/posts/how-to...
TIL How to use custom functions with ':cdo' — David Winterbottom
Vim’s :cdo command lets you run an Ex command in each entry in the quickfix list. — can be read in 2 minutes
til.codeinthehole.com
February 3, 2025 at 4:05 PM