Here is why TypeScript in Go is 10× faster
> Half of our performance gain is from being native code and the other half is from being able to utilize all those CPUs
> JavaScript basically forced us to leave that money on the table
In 1991, one man coded for 28 hours straight without sleep.
What he created transformed both gaming and aerospace engineering.
The story of DOOM is wilder than you think.
Here's how one coding marathon changed technology forever:
Problem: Your code base probably contains a lot of copy/pasted code, but it's hard to find.
Solution: jscpd
jscpd is a command line tool that finds copy/pasted code and reports specific duplicated lines.
Works for over 150 languages.
Example report:
By all means, make your code readable. It's relevant when you look at code in the small. But you should not rely on reading as the primary means to reason about a system.
Code is best seen as data. It can be interesting to read it occasionally, but for the most part it’s more appropriate to approach it through dedicated tools that summarize it.
Why is that important or even needed at all?
Today, developers spend most of their time reading code. They do that because they want to understand enough to figure out how to change the system. Reading is the way they extract information from the system. As code is data too, we can build tools that extract the information we care about from it.
#MoldableDevelopment
Thread alert! 🚨 If you're a developer or designer, you'll definitely want to check out #PlantUML for generating #UML sequence diagrams.
I discovered PlantUML 4 years ago but only had the opportunity to use it 2 weeks ago, and I'm already in love with its simplicity and ..
I've been working on this diagram for a while now. I've incorporated a lot of feedback, but now I think it is ready. Feel free to use it in case you need it 👇
"Don't talk to strangers" also applies to software development.
You hear from good programmers about having "loosely coupled" classes.
But what does this mean?
The amount of coupling refers to how often changes in class A force changes in class B.
Tight coupling means the two classes often change together.
Loose coupling means they are mostly independent.
We even have a law for this, "Law of Demeter," formulated in 1987.
This is how you translate this Law to your class design:
- An object should only call methods of the objects it creates.
- It can call methods on objects passed to it as parameters.
- It can call methods on any direct component object.
Here are the 3 main benefits:
Reduced Coupling: Changes in one area are less likely to impact other areas.
Better Modularity: Isolated modules are easier to understand and maintain.
Easier to Test: Fewer component dependencies make it easy to test them.
Each unit should only talk to its friends; don't talk to strangers!
How do you avoid bad coupling?
1995: Mudge published "How to Write Buffer Overflows", one of the first papers about buffer overflow exploitation. Afterwards, Mudge sent a copy to Aleph One, who later wrote "Smashing the Stack For Fun and Profit" in 1996. Seminal security paper to seminal security paper.
Below, I modified the data loader to return all 8.8M rows for 1979–2022 instead of only showing the 106,004 for 2022. Collisions are a strong proxy for population (and traffic) density, but the detail is striking.