HNHacker News
TopNewBestAskShowJobs

SomeCallMeTim

4,107 karma · joined February 17, 2010

I'm a consulting software architect and freelance CTO. I come in and rescue small businesses from code disasters, and occasionally am given the chance to prevent the disasters to begin with. I also used to develop video games, and have pivoted that skill to gamification consulting.

https://coderescue.com

submissionscomments
SomeCallMeTim··on Is something bugging you?
I totally get the same sense that I'm just "communicating" using code. I just write out the code that expresses the concepts I have in my head.

And at least some people clearly don't. I was talking to one guy who said that even for a simple for-each loop it was way faster for him to "Google the code he needs and modify it" than to write it. This boggled me. I couldn't imagine being able to Google and parse results and find the one I wanted and copy and paste it and modify it being faster than just writing the code.

Even famous developers brag about their inability to code. DHH (RoR developer) has a tweet where he brags that he couldn't code a bubble sort without Googling it. A nested loop with a single compare and swap...and he's "proud" of the fact that he needs to Google it?

I have no words.

SomeCallMeTim··on Is something bugging you?
Sure enough. Presumably my brain was switched off if I added that "correction" myself.

Or it was already there in whatever source I managed to copy it from. No idea.

SomeCallMeTim··on Is something bugging you?
I was both of those developers at different times, at least metaphorically.

I drank from the OO koolaid at one point. I was really into building things up using OOD and creating extensible, flexible code to accomplish everything.

And when I showed some code I'd written to my brother, he (rightly) scoffed and said that should have been 2-3 lines of shell script.

And I was enlightened. ;)

Like, I seriously rebuilt my programming philosophy practically from the ground up after that one comment. It's cool having a really smart brother, even if he's younger than me. :)

SomeCallMeTim··on Is something bugging you?
It's practically my life experience.

Sometimes I'm appreciated, and managers actually realize what they have when I create something for them. Frequently I accomplish borderline miracles and a manager will look at me and say, "OK, what about this other thing?"

My first job out of college, I was working for a company run by a guy who said to me, "Programmers are a dime a dozen."

He also said to me, after I quit, after his client refused to give him any more work unless he guaranteed that I was the lead developer on it, "I can't believe you quit." I simply shrugged and thought, "Maybe you shouldn't have treated me like crap, including not even matching the other offer I got."

I've also made quite a lot of money "Rescuing Small Companies From Code Disasters. (TM)" ;) Yes, that's my catch phrase. So I've seen the messes that teams often create.

The "incompetent" team code description in the story is practically prescient. I've seen the results of exactly that kind of management and team a dozen times. Things that, given the same project description, I could have created in 1/100 the code and with much more overall flexibility. I've literally thrown out entire projects like that and replaced them with the much smaller, tighter, and faster code that does more than the original project.

So all I can say is: Find better teams to work with if you think this is fiction. This resonates with me because it contains industry Truth.

SomeCallMeTim··on Is something bugging you?
This reminds me of the "Parable of the Two Programmers." [1] A story about what happens to a brilliant developer given an identical task to a mediocre developer.

[1] I preserved a copy of it on my (no-advertising or monetization) blog here: https://realmensch.org/2017/08/25/the-parable-of-the-two-pro...

SomeCallMeTim··on Is something bugging you?
Yes: Programmers who start at twelve are often the 10x programmers who can really program faster than the average developer by a lot.

No: It's not because they have 10 more years of experience. Read "The Mythical Man Month." That's the book that popularized the concept that some developers were 5-25x faster than others. One of the takeaways was that the speed of a developer was not correlated with experience. At all.

That said, the kind of person who can learn programming at 12 might just be the kind of person who is really good at programming.

I started learning programming concepts at 11-12. I'm not the best programmer I know, but when I started out in the industry at 22 I was working with developers with 10+ years of (real) experience on me...and I was able to come in and improve on their code to an extreme degree. I was completing my projects faster than other senior developers. With less than two years of experience in the industry I was promoted to "senior" developer and put on a project as lead (and sole) developer and my project was the only one to be completed on time, and with no defects. (This is video game industry, so it wasn't exactly a super-simple project; at the time this meant games written 100% in assembly language with all kinds of memory and performance constraints, and a single bug meant Nintendo would reject the image and make you fix the problem. We got our cartridge approved the first time through.)

Some programmers are just faster and more intuitive with programming than others. This shouldn't be a surprise. Some writers are better and faster than others. Some artists are better and faster than others. Some architects are better and faster than others. Some product designers are better and faster than others. It's not all about the number of hours of practice in any of these cases; yes, the best in a field often practices an insane amount. But the very top in each field, despite having similar numbers of hours of practice and experience, can vary in skill by an insane amount. Even some of the best in each field are vastly different in speed: You can have an artist who takes years to paint a single painting, and another who does several per week, but of similar ultimate quality. Humans have different aptitudes. This shouldn't even be controversial.

I do wonder if the "learned programming at 12" has anything to do with it: Most people will only ever be able to speak a language as fluently as a native speaker if they learn it before they're about 13-14 years old. After that the brain (again, for most people; this isn't universal) apparently becomes less flexible. In MRI studies they can actually detect differences between the parts of the brain used to learn a foreign language as an adult vs. as a tween or early teen. So there's a chance that early exposure to the right concepts actually reshapes the brain. But that's just conjecture mixed with my intuition of the situation: When I observe "normal" developers program, it really feels like I'm a native speaker and they're trying to convert between an alien way of thinking about a problem into a foreign language they're not that familiar with.

AND...there may not be a need to explicitly PROGRAM before you're 15 to be good at it as an adult. There are video games that exercise similar brain regions that could substitute for actual programming experience. AND I may be 100% wrong. Would be good for someone to fund some studies.

SomeCallMeTim··on Why Zig When There Is Already C++, D, and Rust?
Honestly, most everything listed on the page as an advantage of Zig, is a disadvantage from my point of view.

I'm sure Zig has its use cases. For what I write, I not only don't care if there's a hidden function call or error handling, I see those as 100% necessary for a modern language.

Needing to handle errors inline is a huge mess for anything nontrivial. It distracts from the logic that's important at that point in the code. Being able to override an accessor to do something instead of being a raw access is incredibly useful; a tiny change and rebuild is all that's required to track information that you would otherwise need to rewrite an entire app to support.

If you're writing extremely low level code and libraries, especially embedded, then fine, minimizing hidden behavior is important. Being able to operate without a standard library is also important in that case. Outside of that niche, though, there are few places I'd call those "features" of Zig an advantage.

SomeCallMeTim··on Figma and Adobe abandon proposed merger
Another way to say "decide they're against the merger" is "evaluate the situation and make a timely ruling that they oppose the merger as illegal."

Which is exactly what they were supposed to do. Adobe and Figma tried to argue with the regulators or find a compromise, but couldn't come up with a solution that satisfied all parties.

If you try to extract subtle implications from the phrasing of a commenter on HN, you're likely to jump to the wrong conclusion.

SomeCallMeTim··on What codegen is good for
The output of LLMs is ... rarely well-designed. Well-documented (with often incorrect documentation), well-formatted for sure, but profoundly not well-designed, unless you're asking for something so small that the design is trivial.

Even with GPT-4, if you ask it for anything interesting, it often produces code that not only won't work, but that couldn't possibly work without a major rewrite.

Not sure what you've been requesting if it's always been good output. Even when asking GPT-4 for docs I've had it hallucinate imaginary APIs and parameters more often than not.

Maybe the questions I ask are not as common? Given my experiences, though, I wouldn't recommend it to anyone for fear it gave them profoundly bad advice.

SomeCallMeTim··on What codegen is good for
> LLMs are very, very good at generating code

Ummm.... Awful code that often looks right at first glance, maybe.

Maybe LLMs can generate the kind of code that's really shallow in its complexity, but for literally everything I would call interesting LLMs have produced hot garbage. From "it doesn't quite do what I want" to "it couldn't possibly work and it's extremely far from being sane," though it always looks reasonable.

SomeCallMeTim··on The burden of Long Covid “so large as to be unfathomable”
What would that even accomplish?

And no, even if it were created as part of vaccine or coronavirus research, that would not equate to it being a biological weapon. That's an absolutely unjustified leap. Do you know how virus research works? Clearly not. They still have smallpox viruses sitting around in labs. I don't know if there is any active research related to improving the smallpox vaccine, but if there were, and there were a release, in what way could you possibly classify vaccines as biological weapons?

But back to the original point: WHY? There is ample evidence that this particular lab had lax safety protocols that might have resulted in a leak of the virus. There is also evidence that similar viruses existed in the wild animal population of the area. They may or may not have been studying one of those viruses in the lab, but that alone doesn't prove where it first infected a human.

But say you have incontrovertible proof. What does that change?

People who died will remain dead. People with long COVID will remain ill. We can rattle sabers at China, but they're likely to continue to deny it was their fault. So what does happen? We can extrapolate from the past:

1. People of Chinese (or any east Asian) ancestry will be treated badly or even killed in twisted "revenge" fantasies of various idiots around the world.

2. The saber rattling could escalate to actual hot war, and more people would die.

3. Say I'm wrong and China does admit the lab screwed up. What then? They'll fire and/or execute people who were responsible. And...? It's not like they're going to pay compensation to everyone who lost a loved one around the world. They'll perform some political theater, and after a news cycle it will fade away.

I don't see an upside unless you're hoping for #3 and think that killing or jailing a few more people will somehow even the scales? Killing or jailing people for incompetence seems cruel and unusual to me. Never attribute to malice that which is adequately explained by stupidity.

SomeCallMeTim··on Leaving the Web3 cult
> Blockchain have a lot of utilities.

I have yet to see a single application for blockchain that isn't better done without blockchain.

Zero. None.

SomeCallMeTim··on Leaving the Web3 cult
Web3 morphed to mean "things that use a distributed blockchain." That's why we hate it. (It's not just currency either; it's anything blockchain, including NFT.)

"P2P web" needs a new name.

SomeCallMeTim··on Leaving the Web3 cult
The aversion to blockchain and cryptocurrency is because they're a scam.

There's literally no use case for crypto that makes sense. Nothing that couldn't be better done without a distributed blockchain.

Blockchain is a way to set up a really slow, really limited, and hard to manage database that's hosted among multiple untrusted entities. Literally every use case would be better handled by using a single trusted database and cryptographic signatures for verification (as opposed to "crypto", which really means blockchain. I hate how words get co-opted.).

AI at least has positive uses, even if it's also being hyped well beyond its actual usefulness.

SomeCallMeTim··on Iosevka typeface for code, from code
I also tend to switch to straight black and white. I don't get the desire for less contrast.

I do like ligatures, and I like checking out new fonts, but I'm not going to be offended if you don't. ;)

SomeCallMeTim··on Iosevka typeface for code, from code
Meh. I like nice fonts, but I never talk about what font I use.

I don't even know what font I'm currently using, though I put some thought into choosing it at the time.

Some of us just care about what our fonts look like. I'm loving the configurator with Iosevka; yes, I'll likely spend an hour tweaking a custom font, but after that I'll just be done and move on.

There's no "flex" if I never even show anyone my dev environment or talk about what font I use. I think you're experiencing selection bias in thinking that only people who flex care about their fonts. ;)

SomeCallMeTim··on I Hate the News (2006)
I think you're mistaking centrists for liberals.

Are you in a predominantly conservative area? A "red state"?

Or is your circle of friends in their late teens and 20s? Younger folks just don't vote as often as older.

In the circle of people I know, who are mostly actual liberals, and who are generally 40+, they've been very engaged and voting consistently.

Heck, even the conservative Republicans I know have been engaged and voting consistently for Democrats since Obama came on the scene. I do tend to hang around smart and educated individuals, and every ethical conservative at this point has defected to voting for Democrats for years now--at least since Trump won.

SomeCallMeTim··on I Hate the News (2006)
Fox? Yes. Absolutely.

NYT? Only if you consider "what's actually happening" or "reality" to be a bubble. I see both liberal and conservative viewpoints in the NYT all the time.

Reality does have a stubborn liberal bias, after all.

That said, NYT is equally driven by sensationalism, in the "If it bleeds, it leads" sense.

SomeCallMeTim··on I Hate the News (2006)
I do wonder whether encouraging people to exist entirely in their bubble is healthy.

I agree with the article to a point. I don't really have a "daily news ritual," though I tend to stumble across major stories.

But enough people being isolated from the news can result in an uninformed populace. People continuing to vote R or D simply out of habit.

I mean, I'm unlikely to vote anything but D for the foreseeable future. But if the R party self-destructs and an actual, viable, left-leaning party is created, I'd want to know that.

But that doesn't mean I need updates on every manufactured crisis daily, either.

SomeCallMeTim··on JavaScript Gom Jabbar
ESLint does an amazing job in detecting floating promises. I've not had it miss one, ever. When adding this to a project, I've discovered multiple accidental bugs due to a missing "await" keyword--bugs that were extremely subtle and intermittent in many cases.

The only thing it can't do is determine that you actually did handle the promise later. Which is fine. It's a LINTING RULE, and false positives are the name of the game.

What's BAD is when you accidentally miss handling a promise at all. It's an invisible error without the linting rule.

Your other comments...don't even make sense. You're going to build a Lanczos filter by hand? Or you're only going to ... compile ImageMagick to WebAssembly?!, ... an implementation which is tremendously slower (nearly unusably so for large images) than that of Sharp:

https://www.npmjs.com/package/sharp

... which is simply an import away?

No, what you're doing is called "motivated reasoning." You've concluded that Deno is the best, and you're reinterpreting all of my complaints in convoluted ways to support your predetermined conclusion.

Standard fanboy behavior. Or troll behavior. I cite Poe's Law as why it's impossible to tell the difference.

SomeCallMeTim··on JavaScript Gom Jabbar
> Package.json, no such thing for Deno (not unless you go out of your way to infect Deno with it)

Yeah...this always felt like a bug in Deno. ¯\_(ツ)_/¯

> scripts, doesn't matter since all Deno projects have the same tools built-in (benchmarker, bundler, compiler, formatted, linter, task runner, test runner, etc...)

AND...you therefore can't do anything outside of the box in a well-defined way. Oops.

Example: How do I run just the main server and not a worker? How do I seed the database?

> dependencies doesn't matter anywhere near as much because Deno comes with a standard library

Sigh. Yeah. Really. You said that.

OK, using the standard library, please:

- Parse Excel files, modify them, and rewrite them to disk.

- Load and modify a PNG and write it out as a JPG. Be sure you scale it down using a Lanczos kernel.

> eslint doesn't matter since deno has a linter

One of the most powerful eslint rules for TypeScript is the detection of dangling promises. A quick glance at the deno lint rules doesn't see anything that will handle this critical lint rule.

And OOPS, adding eslint to the project in a standardized way isn't possible because there's no package.json!

... I could go on.

Sorry, but Deno fanboying is so last year.

SomeCallMeTim··on Volvo Cars Adopts Tesla's NACS Port in the United States, Canada and Mexico
...and?

As long as there are chargers available at a particular station, why should I care how many are sitting unused?

I've been by many Supercharger stations where there were no cars charging at all. Sometimes I see one or two, but the majority of the time most of the chargers are empty.

The number of locations indicates the flexibility of the charging network. There are CCS chargers in places where Superchargers don't exist, meaning you have more places you can go with CCS than you can go with a Tesla.

And that isn't a hypothetical. I've driven down to the Carlsbad Caverns with my family in the past, and I wanted to do it again with my electric car. For a long time, southwest New Mexico had NO fast charging stations for any brand of charger, but in the last year it's gained enough CCS chargers that I could comfortably drive back to the caverns without worrying about range. And there are still no Superchargers within a hundred miles. (Note I'd be coming from Colorado, so driving down from the north side of the state--you could probably make it TO Carlsbad from a west Texas Supercharger, and then make it back to the same Supercharger, but that would be many hours of driving out of my way.)

Would I like to see more redundancy at every location? Sure. But to me it's more important that there are chargers available where I want to go than that there are a ton of redundant chargers at every location.

Maybe if I lived in LA and wanted to be able to drive to SF I would have different priorities.

SomeCallMeTim··on Volvo Cars Adopts Tesla's NACS Port in the United States, Canada and Mexico
We'll see what happens, I guess.

As long as I can charge my car (Ioniq 5) moving forward, it doesn't really matter.

CCS has higher speed charging than is available at Superchargers, at least for my car, though, so I hope the NACS standard has the ability to support the higher charging speed.

SomeCallMeTim··on Volvo Cars Adopts Tesla's NACS Port in the United States, Canada and Mexico
I've done a long distance road trip, and the CCS stations have occasional failed chargers, but every single one was available to charge my car.

Think of it this way: The Supercharger network has to be reliable, because there's only one station every ~100 miles or so. The CCS network can afford to be a bit less reliable because it's more redundant. And even then, the "less reliable" typically means that one out of four available chargers in a location is out of service, not that the location itself is unusable.

And there are apps that lets you see the status of chargers at a location, so you can check in advance whether a particular location is working. If a location seems to be in poor repair, you can always plan around it.

SomeCallMeTim··on Volvo Cars Adopts Tesla's NACS Port in the United States, Canada and Mexico
Most of those 2M EV chargers only need to be Level 2.

It makes MUCH more sense to use J1772 by default in those 2M chargers, since every EV other than Tesla currently uses that standard, and Tesla can easily use an adapter.

So CCS hasn't "lost". In fact, it's likely to remain a standard. In fact, there are some 5,200 CCS charging station locations in the US, compared to only about 1,800 Supercharger stations. [1]

A stronger position in the market only amplifies itself. Beta was better in every way than VHS, but VHS had a lead in popularity, and network effects eventually resulted in the death of Beta.

[1] https://insideevs.com/news/673190/nacs-ccs1-locations-chargi...

SomeCallMeTim··on In New Paradox, Black Holes Appear to Evade Heat Death
Reading about how, over time, the volume of a black hole seems to grow infinitely makes me immediately jump to an obvious connection:

The universe as a whole is ALSO a system that appears to grow infinitely.

I mean, there have been many conjectures that a black hole could contain a new universe, and that the creation of a black hole also creates a new universe. This would seem to hint at another potential connection.

That said...I'm really not a physicist, so maybe that connection is at best a hook for a science fiction story. But it surprises me that the article didn't even mention the parallel.

SomeCallMeTim··on The Case for Bash (2021)
Bash is used as a programming language.

And it's an objectively awful programming language. Sh is even worse.

Korn isn't installed absolutely everywhere like Sh is. It's not even installed in 1/100 of the locations that Bash is installed. So it being better is irrelevant to the discussion of Bash as a programming language.

Because Bash is so awful, the only real justification for using it as a programming language is that it's already installed. Since Korn isn't already installed, that means you'd need to install it. If you're going to be installing something, there are far better choices.

So your comment doesn't at all contribute to the discussion of alternatives to using Bash as a programming language.

And the verbosity of using Java to list a folder contents is equally irrelevant. No one would argue that Java is better ... for listing directory contents.

If you do want to write a script that calls a bunch of shell commands, or even that operates on folders and files, there are far better languages and tools.

See, for example, https://www.npmjs.com/package/tish

Or just Node/TypeScript in general.

SomeCallMeTim··on The Case for Bash (2021)
> Bash is a user interface.

Meh. That part is irrelevant in the extreme to the discussion.

Fact is that people write `.sh` and `.bash` scripts to get things done. They use conditional logic and loops and everything.

Functionally, it's a programming language with a (useful) REPL.

And this discussion is 100% about how bash is as a programming language.

> Having said that, Bash is my favorite programming language, because it is so limiting, and simultaneously not limiting, because it wasn't designed to fulfill what A Real Programmer(TM) thinks a programming language should be.

Umm... Then, yeah, I have to agree with your self-assessment of not being a "real programmer."

Sorry, but it's obviously true.

You're a scripter. I've known and worked with many scripters. They can do a lot of valuable work and contribute in a lot of ways to various projects. But they're not programmers.

Which is fine. Script away.

> But modern programmers, being wildly unimaginative creatures of habit, think the user is supposed to serve the computer.

After admitting you're not a programmer, you then go on to demonstrate that you don't really understand how programming works. Which I guess follows?

That's so far from the reality, that it's Not Even Wrong.

> That the more you type, and the more hoops you jump through, the more "clever" you are with the "way" you tell the machine to do something, that this is superior.

Programming languages are exactly the level of complexity needed to, with the least effort and most reliability, craft the code that, literally, civilization relies on.

It can't be made simpler. The complexity is inherent in the domain.

> Programming is a mistake. It's a half-measure. A stutter in the evolution of digital computing. We weren't meant to program, ...

YOU weren't meant to program. You admitted that above. Don't speak for the rest of us.

Everything significant in software that has been and will be accomplished moving forward will be created by programmers using programming languages. Your rant against programmers and programming is based on a lack of understanding of what programming really is and how programmers really think.

It's not even slightly about being clever. It's about the act of primal creation. We're effectively wizards of the modern world. We don't care at all about making a machine happy; we care about building things that work. That the things embody complexity isn't the goal, but it is a thing of beauty when it all works together elegantly.

SomeCallMeTim··on Scar tissues make relationships wear out (2013)
I don't know that NVC always works the way its proponents think it does.

I've been around a lot of NVC practitioners. Many have been active NVC educators.

Maybe they've all been Doing It Wrong, but...I find that when presented with the "NVC way" of discussing a problem, my brain always translates it to the emotional symbols I understand, which are nearly identical to the symbols generated by an overt criticism.

That said, I recognize that could simply be a "me problem." Which I won't dispute. I'm not entirely neurotypical. And generally if something I'm doing is bothering someone, I try to deal with it; I don't make everything into drama. I just don't parse the NVC words appreciably differently than a normal, polite request. (Overt hostility does push my buttons, but short of that, it doesn't seem to matter.)

Just saying that NVC isn't magic. If the person making the request has a reasonable point, I'll acknowledge and do what I can to adjust my behavior. If they seem to be asking something less reasonable, wrapping it with NVC language doesn't change the request materially for me at all.

> It drives me crazy when I find out people just sit there and don't tell me when I'm upsetting them. Communication, my men! If you can't fix it in your own head, get other people involved and talk it through.

Agree that people should generally be open about issues. But there's appropriate context for everything. I really don't want coworkers coming up to me and asking to work through an emotional issue for an hour because something I suggested was different than their suggestion, and my suggestion bruised their ego. Close friends? Sure. I probably have higher than average tolerance for such conversations among those I care about. But I choose my close friends, and largely don't get to choose specific coworkers, and so demanding that level of emotional work seems outside of the job description.

Also: Totally agree about telling the contractor that dust got everywhere and letting them know that's a problem. But for me, it wouldn't be at all about "my feelings." It would be about a request to a contractor to adjust their behavior or that of their subs based on reasonable expectations. I would personally feel foolish taking an NVC approach with a contractor in that situation, TBH. Not "It makes me feel disrespected when dust gets all over the place," but something more like, "Hey Jim, someone didn't seal the plastic around the construction area and we had a bunch of dust we needed to clean up. Can you be sure that everyone knows that it's important to keep the dust seal closed? Thanks." Heck, the latter is even less confrontational than the "you left the plastic open" in the OP's comment.

SomeCallMeTim··on The Case for Bash (2021)
Ummm....

A debugger won't "step in" unless you..."step in" instead of "step over."

STL is also no longer a thing. There's only the C++ standard library. So I think you're dating your usage of C++ by ... a decade or more?

← PreviousPage 2 of 34Next →