HNHacker News
TopNewBestAskShowJobs

TomNomNom

549 karma · joined March 30, 2010

[ my public key: https://keybase.io/tomnomnom; my proof: https://keybase.io/tomnomnom/sigs/yizfj_8PlIyvEqaUNToeTURxceEtUuBdpInGofbNphk ]
submissionscomments
TomNomNom··on Windows 9x Subsystem for Linux
The difference is that despite the fact that I will never use this, I am nonetheless here to celebrate the effort. What difference does it make if someone runs a marathon or takes an uber given they may arrive at the same location?
TomNomNom··on A Faster Alternative to Jq
Cool tool! Really appreciate the shoutout to gron in the readme, thanks! :)
TomNomNom··on How AI hears accents: An audible visualization of accent clusters
I tried the oracle and got this:

> Your accent is Dutch, my friend. I identified your accent based on subtle details in your pronunciation. Want to sound like a native English speaker?

I'm British; from Yorkshire.

When letting it know how it got it wrong there's no option more specific than "English - United Kingdom". That's kind of funny, if not absurd, to anyone who knows anything of the incredible range of accents across the UK.

I also think the question "Do you have an accent when speaking English?" is an odd one. Everyone has an accent when speaking any language.

TomNomNom··on RIP Shunsaku Tamiya, the man who made plastic model kits a global obsession
There's a bunch of open source work in the robot combat space, but it doesn't have to be used for robot combat specifically. The Malenki Nano is a great example: a tiny, open source receiver with three speed controllers on a single board. It has two PWM channels for servos too so you could do a ton of interesting projects with it.

https://github.com/MarkR42/malenki-nano

https://shop.bristolbotbuilders.com/product/malenki/

TomNomNom··on Automating processes with software is hard
Not directly relevant to the post, but seems like a good place to share.

My team and I once took on a very tricky automation project. At the time we had a complex software deployment done about once per month that involved a team of about a dozen people showing up at 4am to do it while traffic was low.

The deployment involved many manual steps and coordination of everybody involved. The person leading each deployment followed the documented list of steps and got each person to do their bit at the right time; people to run database migrations, people to install RPMs on particular servers, people to test and verify functionality. Mistakes and missed steps were not uncommon.

The very first thing we did was take the documentation and write a Jenkins job to post each step into a Slack channel specifically for coordinating the deployments. Someone clicked "go" and each step was posted as a message in that channel with a 'done' button to be clicked when that step was done. Clicking the button caused the next step to be posted.

The next release we did used that instead of one person reading the steps out of confluence. Everyone involved in the release could always see what step we were at, and when it was their turn to do their bit. This helped ensure no steps were ever missed too.

Over the following months we chipped away at that job a bit at a time. We'd pick a step in the process and automate just that step, starting with the low-hanging fruit first. The Slack message for that step went from "click to confirm you've done it" to "click to do it", with the result posted once it was done; followed by the next step to perform.

It was a long process, but it allowed the rest of the business (and us!) to gradually gain confidence in the automation, and lowered the risk of the project dramatically. Once several steps had been automated and battle-tested we removed the 'click to do' bits in between and the whole release became a couple of clicks followed by the odd bit of manual QA.

TomNomNom··on Claude 3 beats Google Translate
Back in 2020 my Swedish employer booked me a flight and I used Google Translate on the confirmation email. It changed the airport I was flying from

https://twitter.com/TomNomNom/status/1233058805598031873

TomNomNom··on Thirty Seven
A ~20 minute video on a particular number cropping up all over the place and not one mention of the frequency illusion / Baader–Meinhof phenomenon feels at least a little bit disingenuous.

I don't doubt that it crops up a lot when people are asked for a random number between 1 and 100 (especially if, as per the video, you ignore 1, 2, 7, 42, 69, 73, and 77, and sometimes 99 and 100), but it's pretty disappointing for a big channel based around science like Veritasium to not even mention that if you became obsessed with and went hunting for special properties of a different number between 1 and 100 you'd almost certainly find them.

TomNomNom··on Fuzzing Ladybird with tools from Google Project Zero
A bug in the spec doesn't necessarily mean there will be a noticeable bug in the browsers; e.g. a crash.

The browsers may have been written to "work" / not crash over adhering strictly to the spec.

TomNomNom··on Magika: AI powered fast and efficient file type identification
Super, thank you! I look forward to it :)

I've worked on similar problems recently so I'm well aware of how difficult this is. An example I've given people is in automatically detecting base64-encoded data. It seems easy at first, but any four, eight, or twelve (etc) letter word is technically valid base64, so you need to decide if and how those things should be excluded.

TomNomNom··on Magika: AI powered fast and efficient file type identification
It provided the wrong file-types for some files, so I cannot rely on its output to be correct.

If you wanted to, for example, use this tool to route different files to different format-specific handlers it would sometimes send files to the wrong handlers.

TomNomNom··on Magika: AI powered fast and efficient file type identification
Sure thing :)

Here's[0] a .tgz file with 3 files in it that are misidentified by magika but correctly identified by the `file` utility: asp.html, vba.html, unknown.woff

These are files that were in one of my crawl datasets.

[0]: https://poc.lol/files/magika-test.tgz

TomNomNom··on Magika: AI powered fast and efficient file type identification
This looks cool. I ran this on some web crawl data I have locally, so: all files you'd find on regular websites; HTML, CSS, JavaScript, fonts etc.

It identified some simple HTML files (html, head, title, body, p tags and not much else) as "MS Visual Basic source (VBA)", "ASP source (code)", and "Generic text document" where the `file` utility correctly identified all such examples as "HTML document text".

Some woff and woff2 files it identified as "TrueType Font Data", others are "Unknown binary data (unknown)" with low confidence guesses ranging from FLAC audio to ISO 9660. Again, the `file` utility correctly identifies these files as "Web Open Font Format".

I like the idea, but the current implementation can't be relied on IMO; especially not for automation.

A minor pet peeve also: it doesn't seem to detect when its output is a pipe and strip the shell colour escapes resulting in `^[[1;37` and `^[[0;39m` wrapping every line if you pipe the output into a vim buffer or similar.

TomNomNom··on Show HN: Pfuzz, a web fuzzer following the Unix philosophy
Thanks for the shout-out :)

I like the idea! I'll see if I get a chance to play around with it at work next week.

TomNomNom··on Track HN: Survival Rate of Show HN Stories
Just a silly aside with regards to the regex to extract domains from URLs, my little tool called unfurl [0] exists to solve that exact sort of problem :)

[0]https://github.com/tomnomnom/unfurl

TomNomNom··on UK inflation forecast to hit 18.6% next year, energy bills may rise to £6000
I strongly disagree that nearly 20% of the median household income (£31,400 [0]) is reasonable for a family's annual energy bill. Median income for the poorest 20% is £14,600 - the chances they could afford £6k a year on energy are slim.

Are you really suggesting that housing costs should average around £1400 per year (about one tenth the average annual rent [1]), but energy costs more than 4 times that amount are reasonable?

[0] https://www.ons.gov.uk/peoplepopulationandcommunity/personal...

[1] https://homelet.co.uk/homelet-rental-index

TomNomNom··on Ask HN: What concepts have you never truly understood?
The Git Parable [0] was the thing that gave me my "aha!" moment with git. It may work for you too

[0]: https://tom.preston-werner.com/2009/05/19/the-git-parable.ht...

TomNomNom··on I had to give a wrong answer to get the job (2017)
In a "Business and Communication Systems" exam at school I got the question "Explain how email works". Being the nerdy teen I was, I wrote about SMTP, MX records and that sort of thing.

That was not the right answer.

TomNomNom··on Why is electricity so hard to understand? (1989)
Tension is used in English to mean voltage sometimes too!

The most common place I can think of is in the HT (High Tension) leads leading to a car's spark plugs: https://en.wikipedia.org/wiki/High_tension_leads

TomNomNom··on GitHub repo of ALL known bug bounty platforms (45) and Halls of Fame (497)
If you were a bug bounty hunter and wanted to sign up for as many platforms as possible to maximise your potential scope, this list would be really useful.

Seems to me like useful content for hackers, which is what I would expect to see on Hacker News.

TomNomNom··on Gron – Make JSON Greppable
1. There isn't really a name for it, but it's a subset of JavaScript and the grammar is available here specified in EBNF, with some railroad diagrams to aid understanding: https://tomnomnom.github.io/gron/

2. That's pretty much exactly why I wrote the tool :)

TomNomNom··on Gron – Make JSON Greppable
No problem at all! I'm as surprised as you are to be honest! Still makes me happy to see people getting use out of any of my tools though :)
TomNomNom··on Gron – Make JSON Greppable
I'm sorry to say this is down to my (the author's) mental health issues over the last few years.

I hope to be able to face dealing with people's issues and PRs soon.

TomNomNom··on Gron – Make JSON Greppable
I think this is a good point. It's definitely hard to grep for certain parts of gron's output; especially where there's arrays involved because of the square brackets. I find that using fgrep/grep -F can help with that in situations where you don't need regular expressions though.

It's not an ideal output format for sure, but it does meet some criteria that I considered to be desirable.

Firstly: it's unambiguous. While your suggested format is easier to grep, it is also lossy as you mention. One of my goals with gron was to make the process reversible (i.e. with gron -u), which would not be possible with such a lossy format.

Secondly: it's valid JavaScript. Perhaps that's a minor thing, but it means that the statements are eval-able in either Node.js or in a browser. It's a fairly small thing, but it is something I've used on a few occasions. Using JavaScript syntax also means I didn't need to invent new rules for how things should be done, I could just follow a subset of existing rules.

FWIW, personally I'm usually using gron to help gain a better understanding of the structure of an object; often trying to find where a piece of known data exists, which means grepping for the value rather than the key/path - avoiding many of the problems you mention.

Thanks for your input :) I'd like to see your jq script to help me learn some more about jq!

TomNomNom··on Weirdos in the depression
As someone who was a bit of a weird kid, I definitely think it's easier to be a weirdo today. The main reason being: I can find my fellow weirdos.

When I was at school and my peers made fun of me for my even slightly esoteric interests I felt alone. I didn't know anyone else who liked the same things that I did; or at least not to the same, occasionally obsessive, degree. It was hard.

Now that the internet exists and is popular: I can find my people. There's probably a forum or subreddit for pretty much any niche I could care to infatuate myself with, and there's creators on YouTube making fantastically long and detailed videos on the minutiae of every subject under the sun.

I don't feel alone any more :)

TomNomNom··on The most surprising Unix programs
My advice is to sort the files just-in-time using the shell:

    comm <(sort fileA.txt) <(sort fileB.txt)
TomNomNom··on Go Things I Love: Channels and Goroutines
Ran the example on my machine and can confirm it's broken.

Be careful relying on the results of the Go playground; it has a bunch of differences and probably has GOMAXPROCS set to 1, which most other systems will not.

You need a sync.Mutex or similar protecting your call to append :)

TomNomNom··on Build your own dial up ISP in 2019
That looks to be an INET Spectra of some kind. Possibly an 8243-1 based on a few searches.
TomNomNom··on Is “Ass” the Most Complicated Word in English?
The word that surprised me the most when flipping through a dictionary as a child was probably 'set': https://www.merriam-webster.com/dictionary/set
TomNomNom··on Wootz steel
Wait, what?! I've been subscribed to Niels Provos on YouTube for years for his swordsmithing content without realising who he was outside of that. What an amazing guy :) Thanks for pointing that out!
TomNomNom··on Static web – back to the roots?
That actually sounds like slightly cut-back version of Microsoft FrontPage. Best of luck!
Page 1 of 3Next →