

Yeah I agree. It’s often easier to start from something that’s wrong than a blank page.
Yeah I agree. It’s often easier to start from something that’s wrong than a blank page.
Tool Command Language. It’s a shitty stringly-typed scripting language from the 80s that took a neat hack (function bodies are string literals) way too far.
It’s a bit less shit than Bash, but shitter than Perl.
Unfortunately the entire EDA industry has decided to use it as their scripting interface, which isn’t too bad in itself - the commands they provide are pretty simple - but unfortunately it leads to people stupidly basing their entire EDA infrastructure on TCL rather than wrapping it in a saner language.
No not in the same way Tony Stark did. But Tony Stark is imaginary. Obviously nobody can build an electric car or a rocket in the same way that Tony Stark does.
Of all the criticisms of Musk this is the weakest. There are many way more valid ones… for instance:
Despite all that he clearly has a pretty good handle on engineering and is definitely involved. He’s not just a figurehead.
I know right, people are multidimensional. You can downvote if that blows your mind.
Be thankful we got Javascript. We might have had TCL! 😱
Interesting footnote: the founding of Netscape occurred at the same time I was deciding where to go in industry when I left Berkeley in 1994. Jim Clarke and Marc Andreessen approached me about the possibility of my joining Netscape as a founder, but I eventually decided against it (they hadn’t yet decided to do Web stuff when I talked with them). This is one of the biggest “what if” moments of my career. If I had gone to Netscape, I think there’s a good chance that Tcl would have become the browser language instead of JavaScript and the world would be a different place! However, in retrospect I’m not sure that Tcl would actually be a better language for the Web than JavaScript, so maybe the right thing happened.
Definitely dodged a bullet there. Although on the other hand if it had been TCL there’s pretty much zero chance people would have tolerated it like they have with Javascript so it might have been replaced with something better than both. Who knows…
Yeah Teslas were pretty leading edge at the beginning. Then they started doing weird stuff like removing stalks and making triangular trucks.
Falcon 9 and Starship are obviously futuristic too.
Yeah this. Every company I’ve worked in does 2 week sprints with a kanban to organise tasks but beyond that it’s pretty much normal project management; no faddy named models or anything.
Sure, but there are a gazillion forum websites already. I’d just use an existing one. The one D uses is the best I’ve ever used. I think it’s actually written in D, which is a very niche language but way nicer than Ruby.
Saying “good attempt” is just a nice platitude. It doesn’t actually mean that what you’ve done is good, especially if you follow it up with (effectively) “but you’ve got to do it all again”. I think most people understand that.
Yeah I mean obviously the technical points here are correct (and I wish my colleagues would write more robust code with less Bash and regex all over the place), but I don’t know why he thinks you need an asshole manager to deliver that message.
Over-engineered. Too many moving parts. Refactor.”
That was it. No “nice work.” No “good attempt”. Just a hard stop.
Uhm yeah, would writing “good attempt” have hurt? Obviously not. He could easily have been nice and still deliver the technical information.
Good attempt, but I think this is too over-engineered with too many moving parts. For instance x y z would be simpler to maintain, and a b c isn’t robust to 1 2 3 for example.
It doesn’t take much. Don’t be a dick.
Ha no. SQLite can easily handle tens of GB of data. It’s not even going to notice a few thousand text files.
The initial import process can be sped up using transactions but as it’s a one-time thing and you have such a small dataset it probably doesn’t matter.
Definitely SQLite. Easily accessible from Python, very fast, universally supported, no complicated setup, and everything is stored in a single file.
It even has a number of good GUI frontends. There’s really no reason to look any further for a project like this.
Honestly I think the complaints about the job market are overblown. If you are good then there will always be a job for you somewhere.
If you’ve already tried programming and you enjoy it then it is a really great career. Crazy money (especially in the US) for low effort and low responsibility.
Just be aware that CS is usually a lot more theoretical than most programming. You’ll be learning about things like Hoare logic and category theory. Tons of stuff you only really need in the real world if you’re doing formal verification or compiler design.
Still, I kind of wish I did have that theoretical background now I am doing formal verification and compiler design! (I did a mechanical engineering degree.)
Also you don’t need a CS degree to get a programming job. I did a survey of colleagues once to see what degree they had and while CS was the most common, fewer than half had one. Most had some kind of technical degree (maths, physics, etc.), but some had done humanities and one guy (who was very good!) didn’t have a degree at all.
I wouldn’t worry about the market. Maybe take a look at the syllabus for places you might apply to, e.g. here’s the one for Cambridge. Also I guess an important question is what’s the alternative? What would you do otherwise?
I’ve definitely seen “this is more correct, but all the other code does it like this so can you change it?”
I can’t say I entirely disagree with it either - usually the “more correct” is not “the existing code doesn’t work at all”, and keeping it consistent makes it easier to fix all of the code later, because you’re only fixing one style instead of two (or more).
No, they’re inherently optional in Git. There’s no way to “check in” a git hook. You have to put in your README
Clone the repo and then please run
pre-commit install
! Oh and whatever you do don’tgit commit --no-verify
!
You definitely need to actually check the lints in CI. It’s very easy though, just add pre-commit run -a
to your CI script.
So… to store encrypted data that only the user can decrypt you don’t need any fancy zero knowledge algorithms. Just have the user keep the encryption key.
For authentication you could use one of these algorithms. OPAQUE seems to be popular. I’m not an expert but it seems like it has several neat zero-knowledge style properties.
But probably forget about implementing it without a strong background in cryptography.
To check that people ran the pre-commit linters.
Committing itself won’t be possible
That’s not how pre-commit hooks work. They’re entirely optional and opt-in. You need CI to also run them to ensure people don’t forget.
You need them in CI anyway to check people have actually done that, but yeah you definitely don’t need to have CI automatically fix formatting and commit the fixes. That’s crazy.
Normally when I merge a PR I put the long PR message (if there is one) in the merge commit (again if there is one), rather than shitty Merge PR from patch1
that people seem to use.
You can actually change the behaviour on GitHub to be sane: https://blog.mergify.com/how-to-change-the-default-commit-message-on-github/amp/
If I’m not keeping the branch (usually PRs are not big enough to make preserving multiple commits useful) then I squash & merge which gives you the chance to edit the commit message and copy details from the PR message in.
That would be very difficult because Typescript isn’t sound.
It’s definitely improving. I thought the same as you but I looked through my recent ChatGPT prompts and it’s actually decent now, at least at simple/throwaway tasks. It doesn’t stand a chance at the niche domains of my actual job.