W

Wilfred Hughes

wilfred.me.uk · Personal blog · on HN since 2013

Wilfred Hughes, a programmer, writes about developer tools, language implementation and his projects, including Difftastic, Remacs and a fast BigInt.

What HN saysHN commenters praise Difftastic and its design posts, and like the style of his writing and README, including Example-Driven Development.
42HN people shared it
16linked it in comments
54stories submitted
2.1Kstory points
4 months agolast shared
2013people per year2026

Most-shared posts

  1. 1
    The Fastest BigInt in the West
    6 people · 4 points · first shared 2014 · 3 comments on HN
  2. 2
    The Definitive Guide to Syntax Highlighting
    5 people · 87 points · first shared 2014 · 23 comments on HN
  3. 3
    Difftastic, the fantastic diff
    3 people · 698 points · first shared 2022 · 90 comments on HN
  4. 4
    Why Markdown Is Not My Favourite Language
    3 people · 253 points · first shared 2013 · 97 comments on HN
  5. 5
    Example-Driven Development
    3 people · 171 points · first shared 2016 · 38 comments on HN
  6. 6
    The Siren Song of Little Languages
    3 people · 108 points · first shared 2019 · 25 comments on HN
  7. 7
    My First LLVM Compiler (2015)
    3 people · 101 points · first shared 2015 · 7 comments on HN
  8. 8
    Remacs is an incremental port of Emacs' C code to Rust
    3 people · 3 points · first shared 2017 · discussion on HN
  9. 9
    Announcing Remacs: Porting Emacs to Rust
    2 people · 206 points · first shared 2017 · 89 comments on HN
  10. 10
    Searching a Million Lines of Lisp
    2 people · 75 points · first shared 2016 · 25 comments on HN
  11. 11
    Comparative Macrology
    2 people · 63 points · first shared 2014 · 12 comments on HN
  12. 12
    An Optimising BF Compiler
    2 people · 37 points · first shared 2015 · 4 comments on HN
  13. 13
    The Emacs Guru Guide to Key Bindings (2018)
    2 people · 8 points · first shared 2018 · 2 comments on HN
  14. 14
    Baby Steps to a C Compiler
    2 people · 5 points · first shared 2014 · discussion on HN
  15. 15
    How High Are Your Tests?
    2 people · 3 points · first shared 2019 · discussion on HN

What HN people wrote when they linked it

ilyagr · 2025-07-10
https://github.com/Wilfred/difftastic/wiki/Structural-Diffs is a nice list of alternatives. Difftastic itself is great as well! The author wrote up nice posts about its design: https://www.wilfred.me.uk/blog/2022/09/06/difftastic-the-fantastic-dif… https://difftastic.wilfred.me.uk/diffing.html.
r4victor · 2021-02-10
I assumed the readers would follow the link to see the original results. GMP is undoubtedly the state-of-the-art of arbitrary-precision arithmetic. The point of this table was to compare bignum implementations provided by different languages, so programs that use GMP bindings are excluded. Probably it would make sense to include the best result that uses GMP, but I think GHC is quite representative of GMP's performance. I'm not the first one who draw such a comparison. This article goes into some more detail: http://www.wilfred.me.uk/blog/2014/10/20/the-fastest-bigint-in-the-wes…
pandeiro · 2017-01-12
I really love the idea and style of this blog post and the project's README. I recognized the style from somewhere and then realized it was the same author as "Example Driven Development"[1], another one that showed up on HN a while back. [1]: http://www.wilfred.me.uk/blog/2016/07/30/example-driven-development/
Wilfred · 2023-08-12
> How well do existing VCSs integrate with it? Git supports external diffing tools really well with GIT_EXTERNAL_DIFF, which you can use with difftastic[1]. Other VCSs are less flexible. For example, I haven't found a nice way of getting a pager when using difftastic with mercurial. > Did you feel restricted at any point by writing a diffing tool, instead of basing a new VCS around this concept? Oh, that's an interesting question! Difftastic has been a really big project[2] despite its limited scope and I'm less interested in VCS implementation. I think text works well as the backing store for a VCS. There are a few systems that have structured backends (e.g. monticello for smalltalk), but they're more constrained. You can only store structured content (e.g. monticello requires smalltalk code) and it must be well-formed (your VCS must understand any future syntax you use). Unison[3] is a really interesting project in this space, it stores code by hash in a sqlite backend. This makes some code changes trivial, such as renames. From the perspective of a text diff, an AST diff is lossy. If you add an extra blank line between two unchanged functions, difftastic ignores it. That's great for understanding changes, but not for storage. [1]: https://difftastic.wilfred.me.uk/git.html [2]: https://www.wilfred.me.uk/blog/2022/09/06/difftastic-the-fantastic-dif… [3] https://www.unison-lang.org/
igouy · 2024-11-01
https://www.wilfred.me.uk/blog/2014/10/20/the-fastest-bigint-in-the-we… Look at all the programming language implementations that provide big integers by calling out to GMP. Why would it be "cheating" when available to all and done openly? Libraries matter.
eddieh · 2021-03-16
I don’t think I’ve seen BigInt in the wild Wild West of JS at all, so that’s probably true that most folks are not aware of it. I wonder if there’s some room for improvement since using GMP is pretty standard for most languages. Edit: forgot to link to a BigInt comparison in major language implementations http://www.wilfred.me.uk/blog/2014/10/20/the-fastest-bigint-in-the-wes…
alphapapa · 2017-09-03
Wilfred is a genius. The OP article is from about a year ago, but it laid the foundation for the Emacs package he just released: http://www.wilfred.me.uk/blog/2017/08/30/helpful-adding-contextual-hel…
FullyFunctional · 2017-07-17
According to http://www.wilfred.me.uk/blog/2017/07/15/these-weeks-in-remacs-ii/ it's running on 32-bit macOS. I don't know if Remacs is 32-bit-only on all platforms. This is an interesting project and I wish them well. I have no opinion on Rust at the moment, but I do see this as part of a general trend towards safer languages.
dotemacs · 2017-07-17
> This looks like a lot of work for what amounts to very little end-user benefit. Oh, but how wrong you are. At London Emacs meetup Wilfred gave a talk about his motivations for this work. One of the big and most obvious benefits is this: while porting some feature to Rust, he discovered a bug in Emacs, fixed it and got given commit access for his work. You can read the transcript of his presentation here: http://www.wilfred.me.uk/blog/2017/04/30/remacs-talk-transcript/
tangue · 2017-07-16
STOP/ I just think that before judging remacs everyone had to read this blogpost: http://www.wilfred.me.uk/blog/2017/04/30/remacs-talk-transcript/
lokedhs · 2017-01-15
Or this one: http://www.wilfred.me.uk/blog/2017/01/11/announcing-remacs-porting-ema… For extra enjoyment, look at the way they convert a function definition to Rust. You'd hope that the new version would be at least somewhat nicer than the original, but of course not. As lng as it's Rust it must be better, right?
mafribe · 2015-11-26
Fascinating, but not surprising that the study concludes that the "effect becomes weaker with an increase in programming experience". Maybe of interest is Hughes' discussion [1] of the different forms of syntax colouring. It was discussed on HN before [2]. [1] http://www.wilfred.me.uk/blog/2014/09/27/the-definitive-guide-to-synta… [2] https://news.ycombinator.com/item?id=8378799
killercup · 2015-08-30
Interesting! I just read [1] this morning, which describes an optimizing BF compiler (written in Rust) that compiles to LLVM IR. The article also gives a good overview of optimization techniques used. [1]: http://www.wilfred.me.uk/blog/2015/08/29/an-optimising-bf-compiler/ Edit: Just saw this was also discussed on HN: https://news.ycombinator.com/item?id=10141604
somat · 2024-11-09
There was a good point made, that has stuck with me over the years. that our syntax highlighters are highlighting the wrong thing. They should not be coloring the grammar, we are good at picking out grammar, they should be highlighting the symbols. each different variable and function name should be getting it's own color. that is, the goal is to make it quicker to distinguish different symbols, not that they are a symbol. But this is much harder than stylizing the grammar so all our tooling sticks with the easy thing rather that the useful thing. Now, I am being a bit mean on grammar styling. It does help quite a bit but I would like to see a symbol matching engine in action to see if that really works. Unfortunately I don't remember where I read the original post and am unable to attribute it correctly. update: while trying to look it up I found this https://www.wilfred.me.uk/blog/2014/09/27/the-definitive-guide-to-synt…
rhythmvs · 2014-05-23
Happy to read there is some interest in “Markdown 2.0” or “lightweight markup, next generation”. With adoption by big outlets like Github and StackOverflow, and dozens of static site generators built on plain text source files, marked-up in Markdown syntax, Markdown is becoming a _de facto_ general-purpose document _editing_ and _storage_ standard. With the advent of fast client-side parsers, soon it might even substitute html as a document _exchange format_, too (at least for some use cases). But there is no official spec, development of the syntax grew stale (from the start, thanks to Gruber)¹, and hence the language heavily suffers from fragmentation²: people want to be able to do more with light-markup, so they build extensions, or fork the language altogether. The troubles with Markdown are discussed in various³ places⁴, John MacFarlane built a formalized comparison tool⁵, but as of yet, there is no joint effort to cooperate on a lightweight markup standard. There are a few interesting projects that dare to forsake Markdown and try their luck: Fountain.io⁶ (a domain specific light markup language for playwriting), SkrivML⁷, Strictdown⁸, and z.m.l.⁹ Then there are, of course, the many predecessors of Markdown, which prove that Markdown (or light-markup in general) is not the imprescriptible privilege of its self-proclaimed benevolent dictator for life, and some of which are still widely used in various communities: Setext (1992), AFT (1999), Grutatxt (2000), AsciiDoc…

Keyboard shortcuts

/Search
j kNext / previous blog
EnterOpen selected blog
vVisit the blog site
fFollow / unfollow
lSwitch grid / list view
dSwitch dark mode
g hHome
g pTop posts
g tTopics
g fFollowing
g lLiked
g yHistory
g qFAQ
EscBack / close