HNHacker News
TopNewBestAskShowJobs

mkeeter

7,006 karma · joined December 12, 2014

Electrical engineering and DIY CAD/CAM

https://mattkeeter.com

submissionscomments
mkeeter··on Stéphane Graber has left Canonical
Here's the application doc for the Product Marketing role (the only role that's currently hiring):

https://docs.google.com/document/d/1y3L6dXqkK3c5IN2j73HuZkda...

This is slightly specialized for the Product Marketing role; for engineering roles, the Market Analysis section is replaced with a similar section for engineering / system analysis.

(I work at Oxide, but this link is publicly available, albeit hard to find on the website)

mkeeter··on Ask HN: Could you share your personal blog here?
https://mattkeeter.com/blog

Between the "blog" and "projects" categories, it's about 80 posts dating back to 2008 (wow).

In recent years, it's tended towards an eclectic mix of low-level programming, graphics research, and electrical engineering.

Many posts have substantial HN discussions, e.g.

- Do Not Taunt Happy Fun Branch Predictor (https://news.ycombinator.com/item?id=34520498)

- From Oscilloscope to Wireshark: A UDP Story (https://news.ycombinator.com/item?id=32428032)

- XModem in 2022 (https://news.ycombinator.com/item?id=31570953)

- It Can Happen To You (https://news.ycombinator.com/item?id=26337046)

mkeeter··on How to ramp up a factory consuming a lot of energy?
Relevant story: back in grad school, I did a few experiments in the (old) MIT wind tunnel, now torn down.

Before starting up the fans, the guy running the control booth picked up the phone and had a short conversation, roughly

"Hi, this is [name] at the wind tunnel; can we turn it on?"

[someone on the other end replies]

"Great, thanks."

I asked who he was calling, and he explained that he had to check with the power company before powering it on. This was mid-winter, so grid demand was low; apparently during the summer (when everyone has ACs on), the start-up load could cause brownouts!

mkeeter··on Ask HN: Most interesting tech you built for just yourself?
The college president at my alma mater memorized the names and faces of every incoming freshman in my class (~200 people).

Unfortunately, I didn't know who she was, so my first encounter was having a seemingly random stranger stop me on the sidewalk and ominously declare:

"You didn't have a beard in your picture, Matthew."

mkeeter··on Building big systems with remote hardware teams
The official hardware team is about 10 people, but there's another 5-10 people that somewhat overlap.

Several of the boards discussed in the post were designed by people that are nominally on the embedded team, e.g. I designed the Gimletlet NIC and Root-of-Trust-Carrier-Carrier.

mkeeter··on Gitlab’s Startup Acquisition Process
One interesting tidbit from the handbook:

A good acquisition target company should be "willing to sunset old customers within 90 days or less, with an option to transition to GitLab" [1]

Given the pattern of startups being acquired, announcing "nothing will change", then sunsetting their original product [2], it's interesting to see this spelled out so plainly.

[1] https://about.gitlab.com/handbook/acquisitions/#acquisition-...

[2] https://ourincrediblejourney.tumblr.com/ is the canonical repository of these emails

mkeeter··on Amazon warns employees not to share confidential information with ChatGPT
This post is two blogs upstream of the original article (Business Insider -> Futurism -> Schneier on Security).

The original is here:

https://www.businessinsider.com/amazon-chatgpt-openai-warns-...

(alternatively, https://archive.is/fkU7E)

mkeeter··on Show HN: DSLCad – a programming language and interpreter for building 3D models
Can you say a little more about the geometry kernel? Is it NURBS-based, triangles, f-reps, etc?

IIRC, OpenSCAD uses CGAL and is all triangles under the hood; other tools use OpenCascade for NURBS modeling, or weirder DIY kernels.

mkeeter··on Do not taunt happy fun branch predictor
Thanks, fixed!
mkeeter··on NYC Slice
The line is consistently out the door, so they have to be doing something right!
mkeeter··on A neat XOR trick
I wanted to put the 1 visually close to the equal sign, so you didn't have to scan all the way to the end of 0000000000000000000000000000000 to find it. Perhaps this is misleading, because the code places the set bit at the LSB!
mkeeter··on A neat XOR trick
> I think the claim at the end is supposed to say `O(D)` running time rather than `O(N)` (or I can't see where `N` is defined).

Good catch; this should be fixed (using N for input length and W for window size consistently in the writeup).

mkeeter··on I don’t want to be an internet person
Ironically, Palladium magazine (which published this article) itself is backed by Peter Thiel, and is... not unsympathetic to that worldview.

For example, "Science Needs Sovereigns": https://www.palladiummag.com/2022/10/03/science-needs-sovere...

mkeeter··on How to JIT – An Introduction
On Apple silicon, there's a fun new twist: the instruction (I) and data (D) caches are separate, so you have to remember to call sys_icache_flush [1] to keep them in sync!

If you don't handle this correctly, then you'll have a Very Fun time [2].

What's especially Fun is that if you halt your program in a debugger and read back the contents of the JIT buffer, it will look perfectly correct – because those reads are coming through RAM / DCache, not ICache!

[1] https://developer.apple.com/library/archive/documentation/Sy... [2] https://twitter.com/impraxical/status/1579586601117548544

mkeeter··on Ask HN: What is the thing you've built that you regret the most?
It's pretty common – I've seen a wall o' patents in at least two (non-Qualcomm) offices!
mkeeter··on Being Ridiculed for My Open Source Project (2013)
While we're all sharing our war stories...

A very well-respected developer recently told me to "take down your blog entry and this repo before you generate more embarrassment for yourself", because I didn't do a comprehensive literature review (and cite their code) before writing a blog post.

(They later went back and edited their comments to turn down the vitriol, but guess which version I read immediately upon waking up?)

I've been around the industry for a while and have relatively thick skin, but even so, dealing with that ruined my day.

If I was new to the industry, I can't imagine how I would have reacted – but it certainly wouldn't have been positive; I could easily imagine burning out of open-source entirely given that reception.

mkeeter··on We've filed a lawsuit against GitHub Copilot
Wine literally bans contributions from anyone that has seen Microsoft Windows source code:

https://wiki.winehq.org/Developer_FAQ#Who_can.27t_contribute...

mkeeter··on Intel will lay off 20k employees
Original Bloomberg article: https://www.bloomberg.com/news/articles/2022-10-11/intel-is-...

(https://archive.ph/74jNp)

mkeeter··on The Solid-State Register Allocator
Done, I've added the same disclaimer to the Github repo.

Given that your Github issue [1] was originally titled "Take Down Notice", I'm now hesitant to read any LuaJIT code.

If I read lj_asm.c and learn from it, will you try to take down any register allocation code that I write in the future?

[1] https://github.com/mkeeter/ssra/issues/1

mkeeter··on The Solid-State Register Allocator
Hi Mike,

I promise that this was a genuine case of parallel evolution – I didn't read any LuaJIT source or documentation while writing the code or article.

Afterwards, I searched for "reverse linear scan register allocation", discovered the blog post which referenced LuaJIT, and linked it in the text.

I've updated the article to move the LuaJIT reference to the top, and adjusted the phrasing to be clear that this is not an invention, it's simply an interesting implementation. What you call "naive", others may consider didactic :)

Let me know if you have other feedback or suggested changes, either here or via email (in my profile).

mkeeter··on Ask HN: Examples of Microkernels?
Hubris is a microkernel-ish OS for embedded systems, and has a bunch of documentation about its design:

https://hubris.oxide.computer/reference/

It's all open-source on Github:

https://github.com/oxidecomputer/hubris

(I work at Oxide, mostly using Hubris)

mkeeter··on Tell HN: Spammed by a Hacker News Enthusiast
Also, their HN submission history [1] is fascinating: exclusively Github repositories, all submitted exactly on the hour (± a few seconds)!

I wonder if they are running a scraper that automatically cross-posts trending repos...

[1] https://news.ycombinator.com/submitted?id=maydemir

mkeeter··on From Oscilloscope to Wireshark: A UDP Story
It doesn't – you'd still theoretically see aliasing of frequencies above the Nyquist limit, but the 5 GSPS QSGMII signal is well below that.

(Also, the probe itself has a max bandwidth of 10 GHz, so it will filter those frequencies before they're sampled by the oscilloscope)

mkeeter··on From Oscilloscope to Wireshark: A UDP Story
Good question – it's actually sampling at 50 GS/s (the scope's maximum sample rate), then upsampling by interpolation.

The higher sample rate is useful, because it effectively gives higher precision when finding the zero crossings; however, you could reduce the .wfm size by sampling at 50 GS/s on the scope then upsampling on the computer.

mkeeter··on Map of Reddit
As a Cambridge resident, I appreciate /r/Boston and /r/CambridgeMA being placed in the "Survival" category!
mkeeter··on The Hare programming language
Redox is probably a better example than Hubris:

https://www.redox-os.org/

Hubris is intended to run on microcontrollers in a very low-level context (e.g. no display), so is very unlikely become a desktop / user-facing OS.

(I work at Oxide, mostly writing Hubris code)

mkeeter··on My entire PC got wiped Do not download
The node-ipc supply-chain attack also made its way into Unity, albeit in the milder "leave a file on the desktop" form:

https://twitter.com/hybridherbst/status/1504223953627369480

mkeeter··on Uninitialized memory: Unsafe Rust is too hard
Thanks Steve!

It turns out I had misremembered; the cast I was thinking of is

https://github.com/oxidecomputer/hubris/blob/master/sys/kern...

from &mut MaybeUninit<[T]> to &mut [MaybeUninit<T>], which doesn't construct a reference to something uninitialized.

mkeeter··on Uninitialized memory: Unsafe Rust is too hard
The article says

> A mutable reference must also never point to an invalid object, so doing let role = &mut *uninit.as_mut_ptr() if that object is not fully initialized is also wrong.

I'm curious who's right here, because I've seen your pattern in code recently!

mkeeter··on On Hubris and Humility: developing an OS for robustness in Rust [video]
In the past, I've worked on real-time systems which deliberately run in "worst-case" load all the time, basically to avoid your second concern: if high resource utilization is possible, then you have to design for it, and this is an easy way to make sure the system doesn't fall over.

For example, if you're building a system that does controls multiple motors, you'd naively do motion-planning calculations for only the motors that are actively running. If instead you do these calculations for every motor all the time, even the ones that aren't moving, you'll have a worst-case performance profile; if it still works, then you can be more confident about the system.

(I work at Oxide, but only for about a month, so this is more past experience than Hubris-specific)

← PreviousPage 3 of 6Next →