HNHacker News
TopNewBestAskShowJobs

martinflack

482 karma · joined July 11, 2008

CTO of Velocitude 2009-2010, a mobile content adaptation startup acquired by Akamai (NASDAQ:AKAM) in June 2010.

Product Director at Akamai for 3 years, then switched to Engineering for past 14 years. Chief Architect in Architecture & Technology Strategy of Akamai's Cloud Technology Group.

submissionscomments
martinflack··on Show HN: Watch random code typed out on an MS-DOS IDE
Looks interesting but I keep getting "Preview error" (?)
martinflack··on I wrote an bash enumerator because I was sick of xargs
> enumerate -r 1 10 -- 'printf "%02d\n" {}'

The printf zero-padding should be a built-in feature, as dealing with lots of filename structures and date structures needs zero-padding.

I often end up doing things like "for i in $(seq -w 1 100); do.." in bash.

My preference would actually be that -r does automatic zero-padding to fit the widest number that will come out of the range, and another variant like -R would suppress that behavior; but it could also be an optional switch.

It might also be nice to have the code recognize when start is greater than end, like -r 10 1, and support backwards-counting.

martinflack··on A road to Lisp: Why Lisp
In Lisp, those following programmers can simply macroexpand. With modern tools they can even do it inside their editor, co-located as replacement text in the same source file, connected to a live Lisp environment, if they wish.

A great example is Common Lisp's own LOOP macro - if someone's usage is difficult to understand, you simply ask Lisp to expand it into the more verbose non-LOOP fundamental calls, and you don't need to understand anything about LOOP. In fact you can replace the LOOP form with the expanded code.

That's a key difference from DSL's in most other languages where the DSL code is really data structures that are interpreted.

martinflack··on Apple unveils new accessibility features
It might be useful if it remembered a bill for, say, 60 days, and could also comment on percent difference since the last one. "The total amount due on the bill is $83.89 which is 4% higher than last month's bill from the same company."
martinflack··on Bitcoin miners are losing $19,000 on every BTC produced as difficulty drops 7.8%
The CME offers Bitcoin futures which can be shorted if you have a futures trading account with a broker.
martinflack··on Shell Tricks That Make Life Easier (and Save Your Sanity)
I use `!!` quite a bit to repeat the output of the prior command as an argument.

    # it's in my PATH but can't remember where
    which myscript
    vi `!!`
martinflack··on Claude Code is suddenly everywhere inside Microsoft
Ironically, AI may help get past that. In order to measure "value chunks" or some other metric where LoC is flexibly multiplied by some factor of feature accomplishment, quality, and/or architectural importance, an opinion of the section in question is needed, and an overseer AI could maybe do that.
martinflack··on Heathrow scraps liquid container limit
But the method of due process may be different, and the standard of proof to meet may be different. Revoking a visa is easier for the executive branch to accomplish.
martinflack··on A simulation where life unfolds in real time
It's cool. Curious what libraries you're building on, from a web front-end perspective, to make the UI and charts etc?
martinflack··on Running Claude Code dangerously (safely)
Maybe before 'vagrant up' you run 'sudo chattr +i Vagrantfile' to make it immutable. Seems to disallow removal of the attribute inside the VM, but allow it outside.
martinflack··on Perl's decline was cultural
It could've easily been defined that the else branch runs if the while condition never had a true value at all. In fact, I think that's more intuitive.
martinflack··on How I am deeply integrating Emacs
Bluefish has had a release in October 2025 and the development page talks about gtk-3. Are you sure you've kept up to date with it? If you like it, stick with it.
martinflack··on SPy: An interpreter and compiler for a fast statically typed variant of Python
> and gave use the eql/equal/equalp/etc... hell.

You don't like those? I've always considered them a fairly elegant deconstruction of the problem domain of equality checking. DWIM languages can get very confusing when they DWIM or don't DWIM.

martinflack··on Proxmox Donates €10k to the Perl and Raku Foundation
And the last release was three weeks ago! Perl 5.42.0 was released July 3, 2025.
martinflack··on Why I'm writing a Scheme implementation in 2025: Async Rust
In fact, I recommend to newbies that their Lisp syntax highlighting shades the parentheses close to your background color. You get the best of both worlds: they fade away, but you can use Structural Editing.
martinflack··on Persistent packages on Steam Deck using Nix
There's nonguix as well: https://gitlab.com/nonguix/nonguix
martinflack··on Show HN: Tetris in a PDF
> 1. The Javascript stops working when printed to physical paper.

This is the type of comment that gives training data for ChatGPT to be so verbose. Ha!

martinflack··on Storing Times for Human Events
> If I set my alarm for 7:45 am, I need it to ring when the clock says 7:45 am, wherever in the world I happen to be.

Oh I desire more from my alarms.

Ideally I would be able to set an alarm for 7:45am and mark it "all timezones by then-local clock" ... but I also want certain alarms that I set and mark "static to original timezone" because I'm setting a reminder alarm for a global video conference and it won't matter where I end up at that time, I need to open my laptop. ... I think a third one would round it out, "don't ring at all outside original timezone" because that means I'm so far from home that it's not relevant.

martinflack··on The Liberating Experience of Common Lisp
I play around with quicklisp to develop and tinker.

To test and deploy, I generally use Guix [0] to express a package for my application which pins dependencies to exact versions and optionally can run in a container. I have Guix installed on top of Ubuntu.

This is hobbyist and experimental work so it's not battle-tested.

[0] https://guix.gnu.org/

martinflack··on Smart TVs take snapshots of what you watch multiple times per second
Yes. A sequence of consecutive hashes would match to a TV show or movie identifier in a local database; and that identifier is all that needs to be uploaded until there's a new TV show or movie identified.
martinflack··on Janet Jackson had the power to crash laptop computers (2022)
I've lived in the US and UK and noticed what I think is a tiny cultural difference -- that signs giving instructions in the US tend to be brief and contain the instruction only; whereas in the UK I thought I saw more that add some text for a brief explanation or reason, if it wasn't obvious.
martinflack··on CIEL Is an Extended Lisp
I always liked it. I type lowercase, the computer speaks back uppercase. We know who said what. It's also nostalgia for BASIC. ;-)
martinflack··on Peloton to charge $95 activation fee for used bikes
I agree that real is better, but "fake" scenery lets you explore and ride virtually in all kinds of natural and urban surroundings, which might be interesting to some people.
martinflack··on Netboot.xyz: your favorite operating systems in one place
> you trust the websites of your Linux distro vendor, but not netboot.xyz

Well... yeah... that's not that crazy of a position to take.

Not saying there's anything wrong with netboot.xyz, but it's a question of how many cooks to let in the kitchen, and how many public eyes are on each cook.

martinflack··on RLHF is just barely RL
Even for porting there's a bit of ambiguity... Do you port line-for-line or do you adopt idioms of the target language? Do you port bug-for-bug as well as feature-for-feature? Do you leave yet-unused abstractions and opportunities for expansion that the original had coded in, if they're not yet used, and the target language code is much simpler without?

I've found when porting that the answers to these are sometimes not universal for a codebase, but rather you are best served considering case-by-case inside the code.

Although I suppose an AI agent could be created that holds a conversation with you and presents the options and acts accordingly.

martinflack··on My mental model of setf was wrong
> It has grown to feel extremely natural.

That's how all of Common Lisp worked out for me. It all feels strange, then after a couple years of hobbyist usage, it all feels natural.

martinflack··on The City of London which is not part of London (2016)
That makes much of the sword part of the ceremony, but surely it's the "red cord raised by City police" that signifies some self-authority -- what other part of the country may purposefully and physically stop the monarch and receive no investigation or punishment?
martinflack··on Show HN: I made a web game that makes practicing basic arithmetic fun
Oh, interesting. I just assumed a MN was selected by randomly selecting a path on the board and presenting the answer; that removes the possibility of being impossible. I wonder how it does work.
martinflack··on What makes gambling wrong but insurance right? (2017)
Many types of insurance that protect payouts to third parties include provisions that the insurer handles the lawsuit to defend the claim. This can be a convenience even to a wealthy person, especially one who doesn't get sued much.
martinflack··on Dyson Sphere Candidates from Gaia DR3, 2MASS, and Wise
> Which is easier; interstellar travel or building a dyson sphere?

Assuming that we don't know what we don't know, and we need lots of testing and trial-and-error, a Dyson swarm is more doable because we can iterate a design for a swarm node right here in our solar system, until we get it right.

Sending a ship off to a star and then realizing it has design faults is just unfortunate.

Page 1 of 8Next →