HN user

dwrodri

1,011 karma

I like computer architecture, machine learning, making music, and low level stuff. Website: https://derekrodriguez.dev

Posts42
Comments260
View on HN
mikehadlow.blogspot.com 1d ago

Configuration Complexity Clock (2012)

dwrodri
1pts0
www.youtube.com 6d ago

Thoughts on Typing – Guido Van Rossum (PyCon 2026) [video]

dwrodri
5pts1
derekrodriguez.dev 2mo ago

"Parse, don't validate" through the years with C++

dwrodri
86pts48
derekrodriguez.dev 6mo ago

Magic: The Gathering is full of interesting ML challenges

dwrodri
2pts1
news.ycombinator.com 1y ago

Ask HN: Alternatives to Data Wrangler?

dwrodri
1pts0
news.ycombinator.com 1y ago

Ask HN: Going beyond Pandas for analysis, how to stay sane?

dwrodri
4pts4
derekrodriguez.dev 2y ago

Building PlantHub: A Data "Plantform" for monitoring plants

dwrodri
1pts0
dwrodri.gitlab.io 2y ago

Spot the bug in this Python code (2023)

dwrodri
8pts14
twitter.com 2y ago

An exploratory engineering project designing large nanosystems at atomic detail

dwrodri
1pts0
www.youtube.com 2y ago

Open Source Motion Capture for Autonomous Drones [video]

dwrodri
3pts1
people.computing.clemson.edu 2y ago

A Short History of the Clemson University School of Computing

dwrodri
1pts0
dwrodri.gitlab.io 2y ago

Spot the bug in this Python code (2023)

dwrodri
2pts4
ai.facebook.com 3y ago

Meta’s Research SuperCluster

dwrodri
2pts0
news.ycombinator.com 3y ago

Ask HN: Has anyone used an M1 Mac Mini as a server and liked it?

dwrodri
8pts11
news.ycombinator.com 3y ago

Ask HN: I want to crawl every plain HTML website. Where do I begin?

dwrodri
4pts4
www.pcmag.com 4y ago

The Gateway PC Brand Returns with New Laptops

dwrodri
2pts1
davidmytton.blog 4y ago

How much water do data centers use? (2020)

dwrodri
7pts0
cseweb.ucsd.edu 4y ago

Lecture Notes for UCSD's CSE 126: Multimedia Systems

dwrodri
2pts1
news.ycombinator.com 4y ago

Ask HN: How do you circumvent low upload bandwidth limits in the US?

dwrodri
4pts6
dustingram.com 4y ago

What does it take to power the Python Package Index?

dwrodri
3pts0
entity-systems.wikidot.com 4y ago

Entity Systems Wiki

dwrodri
1pts0
news.ycombinator.com 4y ago

Ask HN: Is DuckDuckGo Violating Bing Search API TOU?

dwrodri
1pts6
news.ycombinator.com 4y ago

Ask HN: What computer vision project are you working on?

dwrodri
15pts1
dwrodri.gitlab.io 4y ago

Jaypeg: Improving my Go programming skills by building an image host

dwrodri
1pts0
news.ycombinator.com 4y ago

Ask HN: How did you establish and maintain relationships with your first users?

dwrodri
134pts61
texaslawreview.org 5y ago

Fair Learning

dwrodri
2pts0
en.wikipedia.org 5y ago

Sorting Networks

dwrodri
2pts0
pydepsearch.dwrodri.com 5y ago

Show HN: A dead simple JSON API for searching PyPI projects

dwrodri
1pts1
news.mit.edu 5y ago

MIT and U.S. Department of Defense team up to launch a new edX learning platform

dwrodri
3pts0
news.ycombinator.com 5y ago

Ask HN: Are non-Apple employees using Swift for numerical computing?

dwrodri
2pts0

My deepest conflict with Python as someone who works with it professionally is balancing "keep it simple and clean" with an acknowledgement that reality is often is complex and messy.

Synchronous, mostly functional python scripts written with the standard library and perhaps a few dependencies generally feel like the best the language has to offer, and they frequently make great prototypes (and I have put a few in production).

But I have also dealt with a lot of important stuff that felt like the wrong tool for the job:

- Airflow tasks, and durable workflows as a whole on top of a database

- async stuff, and generally the fact that you need `aiofile` to interact with the filesystem asynchronously

- "Productionized" stuff around NumPy and DataFrame APIs. I think there are genuinely fascinating uses for this stuff and its still great! JAX stood out as the the API that truly "clicked" for achieving "simplicity" despite the difficult challenges that it solves.

Typing woes appear the most when I am handed a prototype to productionize. Good static analysis of types carries you so far, it makes me frequently wonder if something even more aggressive than what TypeScript does would have been ideal. There is a great scripting language trapped underneath a mountain of adjustments that have been made to Python so it can "be used for writing large scalable software systems" and it makes me question whether that ever should have been the point of Python in the first place.

P.S. INB4 Stroustrup quote about languages people complain about vs ones they don't use and all that. You can tell Go was designed for very specific use cases and hasn't catered too much to use cases outside of that.

Something of consideration: Flock cameras were installed after discussions across the HOA and local police department, after a multiple crimes happened in an area. So long as a discussion about the lifetime of the cameras is raised eventually, this sounds like a measured and reasonable use of surveillance.

There is still something to be said about the lack of alignment between Flock the company and the HOA as to how that data is used, but the compromise was explicit, and there was at least some coordination within the community. At the heart of the issue with automatic surveillance is the lack of accountability over those who retain the data and the lack of consent of those surveilled, and measures were taken to address one of those two within your community.

I was asking around a while ago about better single-node solutions to "durable workflows" than Airflow before I was familiar with the terminology. Admittedly, Go + durable workflows in the cloud feels like the perfect marriage. Seeing the gated features makes me hesitant, unfortunately, but definitely considering this!

Google has muddied the waters on their Gemini usage statistics as it now powers a big chunk of Search. Depending on how you cut it, Gemini (and Gemini powered products) are probably producing the most output tokens seen by the most human eyeballs by a large margin.

Google at its core is not a dev tools company and it has become evident that is where the money is given the verifiable nature of software. Hixie's reflections on his tenure at Google still ring in my head to this day, though I have never worked there[1].

The people at the helm of Google no longer see the company's identity as something which must be channeled through a product or an experience. Some will point to the DoubleClick acquisition, others will point to Google Reader, or Pichai's ascension. Despite his very short tenure, MBA/McKinsey-brain is a very real phenomenon and it's no mistake that it shaped the "promotion packaged as a product launch" culture that steered Google away from seriously betting on anything that wasn't ads. To quote the signull tweet linked elsewhere in this thread, you can have everything at Google, except for permission.

Most importantly--I don't think there's a single tech product where I can point and say "Google wouldn't do that". You can contrast this with say, other Alphabet companies which don't suffer from this remotely as much. It is VERY clear what Waymo and YouTube are trying to accomplish, and while it frequently makes a ton sense for the companies to share infrastructure and product knowledge, YouTube does an exceptional job on the product side of making it very clear what they would and wouldn't do. They have experimented and shut down experimental features before (is their MOOC functionality still around?), but since it's fairly clear Google specifically is no longer working in service to the mission of providing the world's best digital portal for accessing information, I think it would behoove of them to figure out what their mission is.

1: https://ln.hixie.ch/?start=1700627373&count=1

Author here:

A lot of my professional C++ experience comes from the computer vision space where I am specifically linking against FFmpeg (libav does its own share of memory management tricks that don't always play well with RAII).

I think of static functions (even within member classes) as a signifier of "hey, you don't need a constructed object for this to work and it doesn't depend on class instance state".

In application code, I was typically relying on Myers Singletons and the implicit thread-safeness more than what you see here. I debated dropping the static keyword because it stands out as odd especially in a private class method, but settled on keeping it.

A very specific shortcoming of this implementation is indeed "Day of Month" and "Month of Year" aren't given their own types! The type specification should likely be applied all the way down! I felt the examples conveyed the point well enough and it was shorter in many cases.

Author here. The post didn't get much traffic when I uploaded so I didn't engage much with the thread. Looks like I should've come back!

I specifically wrote that by hand to note the specific shortcomings of this approach when evaluated under King's thesis. I do acknowledge that I use LLM models heavily when drafting the code snippets in this blog post, and I do a mini review in the conclusion of the downsides of using these models.

Admittedly probably some aggrandized boasting here, but I think empirical verification of that Adam modification alone would be a meaningful contribution, unless that's prior work?

Why I love FreeBSD 4 months ago

Serious FreeBSD question: I like a lot of what FreeBSD promises, but have been hesitant to make the leap for my home server as I enjoy hosting game servers via steamcmd. I know FreeBSD has Linux binary compatibility, but I am unsure how this would play out for all of my hosting needs. Also, I have some old Nvidia GPUs in this machine, which I might get rid of as they are no longer supported by the latest releases of ML packages, but I also might keep them around for self-teaching CUDA.

How do FreeBSD users get around the inconveniences associated with the "the rest of the world" running on Linux?

Author here, welcoming feedback and ideas for how you'd approach challenges such as these. There was a long road of operational tasks to get to a "quick" iteration loop in my debug UI, that I'll be ready to share that story once my new ranker is outperforming my old one. As of right now, the entire data + ranking operation runs on an few-years-old gaming PC with 24GB of ram and 12 cores.

The NMF model was fairly simple to get off the ground, thanks to the maturity of the deployment ecosystem surrounding it. Getting the Set Transformer to beat it in my internal benchmarks has been a journey, hopefully I'll share later this year!

I would love to host an ultra high quality stream on my own web server, and then have that exact stream piped to YouTube live via OBS. Is there an easy way to do that now?

YouTube likely won't support streaming 3440x1440 60FPS video, and while discord technically supports it, they usually compress the footage fairly aggressively once it's sent up to the client, so I'd like to host my own; it only needs to support a few people. I wouldn't mind hosting it so my friends and side project partners can watch me code and play games in high quality.

I think if AI can help us modernize the current state of hardware verification, I think that would be an enormous boon to the tech industry.

Server class CPUs and GPUs are littered with side channels which are very difficult to “close”, even in hardened cloud VMs.

We haven’t verified “frontier performance” hardware down to the logic gate in quite some time. Prof. Margaret Martinosi’s lab and her students have spent quite some time on this challenge, and i am excited to see better, safer memory models oyt in the wild.

A lot of the same big ideas used in hardware are making their way into the software later too, see https://faultlore.com/blah/tower-of-weakenings/

When I was in my 20s, I hit a point where I started looking back on my high school years and realized there were a small handful of teachers who had a very large influence on what I use as my "compass" for guiding me towards being the person I wanted to become as an adult.

One commonality among all of those teachers is that decade(s) later, it seems that they are mostly the same person, beliefs-wise and character-wise. It appeared that they had hit a point in their life where they "figured it out", and anchored themselves on that point. I put the phrase in quotes, because as an adult, I know the statement is superficial now, but that it certainly how it seemed when I was younger.

Circling back to the post: in my own lived experience, "Men who mean what they say" became that way not necessarily through the sole virtue of honesty, but by guiding themselves using the same set of virtues (honesty included) for large portions of their life. It was very easy to understand what mattered to them and what they believed in, and as an adult at the end of my 20s, it is clear to me that should I want to become the person my younger self aspired to be, following in my teachers' example means making an increasing percent of my actions reflect the virtues that matter the most to me.

But it is a learned process, not one necessarily passed down through merely being a person who has learned that lying is bad. By learning to practice actions which reflect your virtues, you also learn how to avoid shallower "means-justify-the-ends" behavior (e.g. is it more important to NEVER tell a lie, even if speaking only in facts you know to be true creates more harm?)

trying to build a webapp where i apply some recommender systems knowledge to TCG deckbuilding. MtG in particular is suffering from product fatigue and as someone who is both an MLE and a casual MtG player, it has been a fun challenge to apply my skills to a domain of interest

Formal methods = “this software cannot do things it shouldn’t do”, I have formally proven it ALWAYS EXECUTES THE WAY I CONSTRAINED IT TO.

Contrast with

Testing = “My tests prove these inputs definitely produce these test outputs”

IME Formal methods struggle making contact with reality because you really only get their promise “it always does what it is constrained to do” when every abstraction underneath provides the same guarantee, I wager most CPUs/GPUs aren’t verified down to the gate level these days.

It’s just faster to “trust” tests with most of the benefit, and developing software faster is very important to capturing a market and accruing revenue if you are building your software for business reasons.

EDIT: My gate-level verification remark is a bit extreme, but it applies to higher layers of the stack. The linux kernel isn’t verified. Drivers are sometimes verified, but not often. There is an HN comment somewhere about building a filesystem in Coq, and while the operations at the filesystem layer are provably correct, the kernel interfaces still fail. The firmware still isn’t proven. The CPU itself running on has undisclosed optimizations in its caches and load/store mechanisms which just aren’t proven, but enabled it to beat the competition on benchmarks, driving sales.

Genuine question: I'm aware that 100% automation for pretty much all agricultural processes is likely highly impractical if not borderline infeasible. As someone inexperienced with either robotics or agriculture, are you saying that chasing the "100%" is bad or are you saying that we're already mostly past the point of diminishing returns? My uninformed opinion is that I agree with the statement "let farmers farm", but we should keep looking at robots / software / AI to find ways to let farmers farm more for less. But keeping the mindset of building tools to enable individuals to do more is essential, moreso than the idea of replacing the farmer.

I came back to this reply after a little bit of research and investigation into our own stack. Admittedly, I ended up in this role after hopping around the startup scene a little bit but after doing a little digging... honestly I am a little embarrassed as an MLOps person that I have only barely heard of this name and never really looked into this more. We have lots of in-house tooling that is trying to imitate what Airflow does, but we spend a lot of time maintaining ourselves and it might make a lot of sense if this just works for our cloud environment, and it would lift a huge burden off of the rest of our engineering team to go work on other stuff.

Thanks again. I am a big fan of stable, mature, software that just does it's job and this looks exactly like that.

I am building a TCG card management app as a way to keep my machine learning skills sharp and to learn iOS development.

Pretty standard CRUD flows + plenty of opportunity to get comfy with iterating and deploying software on iOS.

This app will basically be the playground for me to work on: - Frontend / UX - Computer vision (scan in cards w/ Camera) - recommender systems (what cards are good suggestions to add to this deck?) - Clustering (what decks are similar to this deck?)

Websites like TappedOut and Archidekt are great products, but as someone who plays casually and doesn't do much to keep up with releases I find assembling fun Commander decks from singles to be quite a time investment, and I'd like to see if I can focus in on that UX specifically for myself.

Some laptops solve but I don't think their methods apply here as the top of my monitor ends up being quite a bit higher than what would look "good" for simple eye correction.

I appreciate the pragmatism of buying another thing to solve the problem but I am hoping to solve this with stuff I already own.

I’d be lying if the nerd cred of overengineering the solution wasn’t attractive as well.

Tangentially related to the post: I have what I think is a related computer vision problem I would like to solve and need some pointers on how you would go about doing it.

My desk is currently set up such that I have a large monitor in the middle. I'd like to look at the center of the screen when taking calls. I'd also like it to appear as though I am looking straight into the camera, and the camera is pointed at my face. Obviously, I cannot physically place the camera right in front of the monitor as that would be seriously inconvenient. Some laptops solve but I don't think their methods apply here as the top of my monitor ends up being quite a bit higher than what would look "good" for simple eye correction.

I have multiple webcams that I can place around the monitor to my liking. I would like to have something similar to what is seen when you open this webpage, but for a video. hopefully at higher quality since I'm not constrained to a monocular source.

I've dabbled a bit with OpenCV in the past, but the most I've done is a little camera calibration for de-warping fisheye lenses. Any ideas on what work I should look into to get started with this?

In my head, I'm picturing two camera sources: one above and one below the monitor. The "synthetic" projected perspective would be in the middle of the two.

Is capturing a point cloud from a stereo source and then reprojecting with splats the most "straightforward" way to do this? Any and all papers/advice are welcome. I'm a little rusty on the math side but I figure a healthy mix of Szeliski's Computer Vision, Wolfram Alpha, a chatbot, and of course perseverance will get me there.