HNHacker News
TopNewBestAskShowJobs

mgdev

506 karma · joined May 19, 2020

https://mg.dev
submissionscomments
mgdev··on "A computer can never be held accountable"
Unless it can die. And understand death. And adapt behavior to avoid death.

Of course, that raises a whole new set of issues.

mgdev··on Oracle Cloud deleting active user accounts without possibility for data recovery
I was charged $5k due to a bug on Oracle's side.

I initially escalated to support. Similar thing - they said there was nothing they could do, and that I needed to cut a ticket to another team... one which I couldn't contact. They simply closed the ticket.

I did a chargeback for that portion of my bill. TBD whether they will nuke my account or not.

mgdev··on Only 720k Snapdragon X laptops sold in Q3 – less than 0.8% of PCs
Over-marketed the technology, under-marketed the benefits.
mgdev··on Why Haskell?
Hear, hear!
mgdev··on Why Haskell?
I'm just now discovering Koka. I'm kinda blown away.

I'm also a little sad at this defeatist attitude. What you said might be true, but those things are solvable problems. Just requires a coordinated force of will from a few dedicated individuals.

mgdev··on The 'Save Money and Pursue Passion Later' Myth
Consider that the type of person who can't save enough money, no matter how much they make, is probably not the kind of person who will be successful in business.
mgdev··on What's functional programming all about? (2017)
I'm personally a fan of FP. It offers clear benefits: simplified parallelization, improved testability, and reduced side effects. These advantages often lead to more maintainable and robust code.

However, FP's benefits can be overstated, especially for complex real-world systems. These systems frequently have non-unidirectional dependencies that create challenges in FP. For example, when component A depends on B, but B also depends on a previous state of A, their interrelationship must be hoisted to the edges of the program. This approach reduces races and nondeterministic behavior, but it can make local code harder to understand. As a result, FP's emphasis on granular transformations can increase cognitive load, particularly when dealing with these intricate dependencies.

Effective codebases often blend functional and imperative styles. Imperative code can model circular dependencies and stateful interactions more intuitively. Thus, selectively applying FP techniques within an imperative framework may be more practical than wholesale FP adoption, especially for systems with complex interdependencies.

mgdev··on Leader Election with S3 Conditional Writes
I'll add that if a lot of people actually did start using it for this purpose, they could probably just productionize the thing they actually use for this, which is essentially their own version of etcd, but with Paxos instead of Raft.
mgdev··on Leader Election with S3 Conditional Writes
You must be fun at stand-ups.
mgdev··on Leader Election with S3 Conditional Writes
I'll concede that "it" was ambiguous. Though if you take the most literal version of what I said, it would be they'd shut down S3, which clearly isn't true.

We can continue to debate whether or not I (who worked on that team and generally understands what goes into building scaled cloud services, having built several myself) understand how a cloud provider responds to customers using your service in a way you clearly didn't intend, or we can move on with our day.

mgdev··on Leader Election with S3 Conditional Writes
Totally. I'm not advocating that people don't ever use it for this. I'm just saying that from a pure resource perspective, it might be one of the least resource-efficient mechanisms for doing this.

As others have pointed out, it's probably not a noticeable cost and, in fact, the fixed costs associated with setting something up yourself would far outweigh what you're paying to use S3 for this purpose.

Part of me just dies inside when I think of all the stuff needlessly happening behind the scenes, given it's not actually being used for storage. I mean, it's called Simple Storage Service.

mgdev··on CIEL Is an Extended Lisp
It's almost perfect.

If it were strict C in stead of C++ I would probably be in love.

mgdev··on Leader Election with S3 Conditional Writes
I never said they would kill the feature. I said they would shut down the behavior. They can do that through economic incentive.

(Source: I was on the S3 team. Opinions my own, etc.)

mgdev··on CIEL Is an Extended Lisp
I agree that the JVM is an amazing piece of technology.

But the ecosystem that exists around the JVM also comes with both a bunch of awesome libraries, and a whole bunch of cruft and ceremony.

If, like Clojure, you're trying to pull in compatibility with JVM libraries, then you pull all that in. So now if you want a little C in your Clojure, you have to go through JNA or something.

I would like the option of going native with a Clojure dialect, without passing through either JVM (Clojure) or JS (ClojureScript).

mgdev··on Leader Election with S3 Conditional Writes
They introduce economic incentives. :)

By way of example, a little over a decade ago a famous online streaming company used to upload all of their video masters for transcoding. This process involved a huge upload and a huge workload, followed by a significant drop in activity.

The problem was that AWS had to provision for peak usage instead of average usage. This resulted in a situation where the peak-to-average ratio was very high for just one or two customers.

To address this issue, the solution was to incentivize these customers to spread out their workload more evenly over time, at least until they were no longer the largest driver of peak/avg.

This is also why things like Reserved Instances and Spot Instances exist.

mgdev··on Leader Election with S3 Conditional Writes
If everyone started using S3 for this purpose, they would shut it down pretty quickly.

Small objects (especially small hot objects) are actually problematic in S3. They cache them in the keymap instead of retrieving from block storage. But many small objects can quickly blow out a keymap shard. The keymap is designed for high-performance lookups. Because of this, it's also more expensive to scale out this class of 'storage' at the keymap layer than to scale out block storage. And you still have to do quorum writes to block storage and then cache eviction at the keymap.

If you're doing this for slow-moving leader election in a small cluster, fine. But if, for example, you started using this for leader-election among end-user-defined workloads that could scale up/down, you might find yourself on the other side of a call from AWS.

mgdev··on CIEL Is an Extended Lisp
I agree! And I still love it because it's what allowed me to sneak a Lisp into not just a Java shop, but the Java shop: Oracle.
mgdev··on CIEL Is an Extended Lisp
Will check it out!
mgdev··on CIEL Is an Extended Lisp
I'll check it out, thanks!
mgdev··on CIEL Is an Extended Lisp
Ahh, the siren song of Lisp

I wrote Lisp (Clojure) professionally for several years. It was the most fun I ever had.

My only problem was it was an ongoing battle to convince people - especially management - that I wasn't crazy.

Sure, I was crazy-productive, but they also thought that there was some nutjob in the corner that was quietly adding risk to the business.

If someone could give me the ergonomics of Clojure, but without the JVM and the ability to easily target 1/ native (incl easy bidirectional C iterop), 2/ wasm, and 3/ support both in aot and runtime + JIT modes, I would switch in a heartbeat.

Is that too much to ask?

mgdev··on Leader Election with S3 Conditional Writes
This is a very expensive way to do leader election, at least from an infrastructure perspective.

This is because you're essentially pushing the problem down to S3, which does its own leader election in a way that is waaaay overbuilt for what we're trying to accomplish here.

But... that doesn't mean it isn't cool. :)

mgdev··on Marketing to Engineers (2001)
This is one of the reasons why I disagree with point three of the article.

The emotion that AWS helped overcome was frustration that individual developers faced when trying to build something new. Suddenly, hardware was in their control from their keyboards.

That was a magical experience, and it definitely filled me with emotion the first time I uploaded an object to S3.

(I loved it so much, I later worked for that team!)

mgdev··on Marketing to Engineers (2001)
I disagree with point three. Engineers do make purchases based on emotions, just different ones than typical consumers.

Engineers are driven by emotions like:

- Desire for intellectual respect: Choosing innovative products to appear forward-thinking.

- Risk aversion: Preferring established brands to avoid project failures.

- Professional pride: Selecting high-performing solutions for personal satisfaction.

- Peer validation: Making choices they believe colleagues will approve of.

- Cognitive bias: Favoring solutions that confirm existing beliefs.

What looks like logical decision-making is often an emotion-driven choice justified with technical arguments. This is evident in online discussions where product critiques are framed logically but stem from emotional responses or biases.

Effective marketing to engineers should recognize these emotional drivers while providing the technical depth needed to rationalize decisions. It's not about ignoring emotions, but addressing the specific emotional needs of a technical audience.

mgdev··on Continuous reinvention: A brief history of block storage at AWS
It's cool to read this.

One interesting tidbit is that during the period this author writes about, AWS had a roughly 4-day outage (impacted at least EC2, EBS, and RDS, iirc), caused by EBS, that really shook folks' confidence in AWS.

It resulted in a reorg and much deeper investment in EBS as a standalone service.

It also happened around the time Apple was becoming a customer, and AWS in general was going through hockey-stick growth thanks to startup adoption (Netflix, Zynga, Dropbox, etc).

It's fun to read about these technical and operational bits, but technical innovation in production is messy, and happens against a backdrop of Real Business Needs.

I wish more of THOSE stories were told as well.

mgdev··on Electric Clojure v3: Differential Dataflow for UI [video]
I hate stuff like this.

It's so incredibly brilliant that it spoils me for mainstream tech, but it's never actually "done enough" for mgmt to feel comfortable adopting it in any capacity. (See also: Unison https://www.unison-lang.org/)

Or, you can get them to adopt, but then you hit hiring limitations.

I say this as someone who built a large team of Clojure developers in a Fortune 100 company, and lived to regret it.

mgdev··on He Skipped College to Become a Repairman. He's on His Way to $175k a Year
I suppose I had my order of operations turned around. Lard substitute first, war lubricant later.

https://www.thedailymeal.com/1386775/crisco-facts-why-people...

mgdev··on He Skipped College to Become a Repairman. He's on His Way to $175k a Year
> Haynes passes Leonardo a rusty, dented Crisco tub, which he and Price use to lubricate the pipes they work on.

I can't believe someone decided, "Hey, we should take this stuff we built as a submarine lubricant, and market it to housewives to make fluffier pie crusts."

Evil genius.

mgdev··on Investors are suddenly getting concerned that AI isn't making any serious money
Welcome to the trough of disillusionment.
mgdev··on Alexa is in millions of households and Amazon is losing billions
This is the cost of building a proprietary distribution network. Now they need to monetize it.
mgdev··on Ask HN: Those of you who've left the SWE world, what did you transition into?
"Save while you're earning decent cash" seems pretty actionable to me.
← PreviousPage 3 of 6Next →