My senior dev colleague recommended me this book saying if I want to become a good software engineer, this book is a must. I heard about it from others as well.
It was published in 2008 by the man who has been coding since 1970s, but it seems, the principles he describes are
The cycle is complete: now you can turn a docker container into an executable, so the user downloads an executable, and inside the executable there's a docker image.
Back in 2015 I was the interviewer side in for a programmer position.
Many people could talk the talk, some of them had "impressive" looking resume.
Most of them could not answer this simple question:
Given an array with numbers and nulls, split it to multiple arrays, with
Notice how SQL was not designed to be a language that your program uses to interface with the database.
It's a language for the casual technical user to query data without using an imperative programming language.
First year university, I had an OOP professor.
He talked a lot about what's OOP and how it's different from procedural.
At the time I was learning C++ by studying the half-life SDK. So I shows him this code and asked him about it
He said it's not OOP.
@amytheartist
It's not a "game", and it's not morally condoned by anyone. It's not an Egyptian cultural practice. It's trashy low class criminal behavior.
People saying "but it works fine", like, why do you think I bothered to check the activity monitor in the first place? Why did I go through the trouble of closing every last open program to try reducing memory usage?
It wasn't because "everything is fine".
People use AWS not because it's good, but because they want to add "AWS experience" to their resume.
I did an actual experiment and confirmed it 100% (N=1)
I was on a "team" discussing how to implement (what to me felt like) a simple feature.
I gave a description of how to do
@GigaBasedDad
Fake news. "Caloric intake" has definitely increased by tons.
People don't report it.
Watch the show "secret eaters". It holds the literal secret to this question. (Just one episode is enough).
For some reason this post has over half a million views, but it's espousing a bad mindset.
I'll take this chance to give a small lesson:
The code in the OP is great. It's labeled "arrow anti pattern", but what exactly is wrong with it?
It's very easy to read. Very easy to
A typical Rails app will serve up to 1.5 requests per second per vCPU. With tuning plus an optimized app, that can be up to about 5 requests per/sec/vCPU.
So these days, vertical scaling can buy you 75-250 requests per/sec for 350 a month… not bad. ~5-10x better than Heroku.
Maybe you don't have "Imposter Syndrome".
Maybe you are, actually, an imposter.
As a kid, did you have any interest in computers, math, science, engineering, making things, understanding how things work, abstract concepts?
I don't understand why so many in the comments are trying to come up with answers.
Guys, this is not an "interesting" programming quiz.
Anyway here's my answer
Something I am really proud of is the absolute smoothness of this resizing animation.
Doing this with almost any other app is a flickering mess. You will never be able to unsee it again
@m_ashcroft
If someone made a time machine the most challenging part would probably be related to computing the coordinates of where the earth would be in T amount of time and making sure you are not teleported to the inside of a volcano
Just in case it's not clear, this question is just for filtering out people who can't even program.
Once you pass it, I'd ask a couple more interesting / fun questions.
I used to think virtual functions (interfaces) were quite suitable for building "open" systems that can be extended by others without you knowing ahead of time what features they will have.
I was wrong.
Very few people actually know how to do that.
If you want to get straight
@bitfield
It's really not very smart to base your identity around a language.
If you learn the fundamentals of programming you can easily pick up any language.
Regarding JS, I think it's on its way out, given the rise of wasm.
The most common needless use of `let` I see:
Setting an initial value, followed by mutations.
This is hard to read because it requires the reader to hold the initial value in their head while reading, and monitor any mutations along the way.
Solution: Call a function instead.
Re: autocomplete / intellisense / LSP
One of the remarkable things I've noticed from watching Jonathan Blow's programming streams is that he uses a plain text editor without autocomplete, and yet he's much more productive than people who do.
He types out entire blocks of code
You either concieve of programming as data processing, or you concieve of it as the stitching together of black boxes (libraries and services).
Programming education should teach you how to make behavior emerge via data processing.
BUT, as you begin learn to program, you can't
Clean code made a guy I worked with unironically create a function “add�� that takes two numbers as input and returns their sum.
He wrote tests for it.
Finder, the default file explorer in macOS, takes several seconds to load a directory with thousands of pictures and movies.
The file explorer is most people's most direct (visceral?) experience with computers, and it's very slow when it has to deal with a few thousand items.
This application is comically unresponsive, making thousands of Windows API calls opening files and registry keys every time you change directories resulting in changing a directory taking 1.5 to 2 seconds on my i9 13900H machine.
@planefag
A professional who is not emotionally and mentally addicted to your approval is dangerous, because he's ultimately not an employees, but a contractor. You can't control him. If he finds a better paying job, he's jump without a second thought.
Most frameworks make it easy to solve simple problems, but they also make it much more difficult than necessary to solve problems of increasing complexity.
Beginners are attracted by how easy it is to achieve the simple things, and they imagine this ease of work will extend all
Python for me was fun at the beginning but I kind of hit a wall and it took me a few years to figure out what had happened.
I wasn't able to solve (or mentally model) problems past a basic level of complexity.
This was primarily caused by dynamic typing, but was probably
Hear about a thing, look for their homepage.
Homepage is a giant picture with a meaningless blurb.
Every. Single. Time.
I have no idea what this means. Who is designing these?
It's better to explicitly contain the complexity inside components, than obscuring it in the interactions between the components.
Don't attempt to obscure complexity
It's painful to navigate a codebase where everything is split into tiny little units that don't do anything.
People use "real world" as an excuse for poor performance.
Making web backends high performance is simple:
Pre-compute everything
You have so much more disk space then RAM. Even a cheap VPS server will have 50GB.
Use the disk space to lighten the workload on the CPU.
If you are looking for a language that keeps the simplicity of C but adds modern machinery, you have but two choices:
• Odin
• Zig
There's nothing else on the market
@karpathy
@Tristi42
Rust keeps the simplicity of C and adds all the machinery you'd want from a modern programming language. Don't hesitate. I find Rust hands-down the most productive language I ever used.
@BBaconBitz
@pearlythingz
He's a problem but he's not "the" problem.
All societies throughout history placed a huge prohibition on sex outside marriage exactly for this reason.
You're not supposed to just have kids and then tell society "Take responsibility for my progeny on my behalf lol kthxby".
The proof that html/js/css is failed model for GUI development is that even with over a decade of experience, you can't just write the code for a UI and know it will work correctly.
It's always trial and error, and at the end of the day, when you finally get all the details for
Take 2: Code reading like prose is not a virtue
When reading the code, you're probably trying to figure out what's going on in order to fix a bug or make a change or an improvement.
Reading "like prose" does not help you achieve any of that.
Presumably, when you produce a
@nixcraft
Linux has two cases:
1) Happy case:
"It's already installed."
2) Sad case:
"Well .... not really, but if you want, you can waste 3 weeks of your time to try to make it work"
The following are bad & awful and you should avoid at all costs:
- Object Oriented Programming / Test Driven Development / SOLID principles / Clean Code / Clean Architecture
- Kubernetes / Microservices / Serverless / Vercel
- Scrum & similar thick processes claiming to be
Too many people have been taught that a series of if-else statement is "bad code".
In reality, the most horrible code I've seen in the wild is the over abstracted OOP variety, where everything is done via indirections and you can't tell what's going on without jumping through
Applies to programming too. If you're not annoyed by slow languages, by OOP, by bullshit best practices, you'll stay mediocre.
To get good, you need to first get irritated.
To be a good writer, you have to be annoyed by bad writing. You're unlikely to get your first drafts exactly right, and unless you're annoyed by what you got wrong, you won't fix it.
Software development is in the Roman Numerals stage.
Everything is way more complicated than it needs to be, and almost no one is working to make it better.
There's a common misconception even amongst honest OOP advocates that straight forward code works fine for small programs, but OOP works better for large scale projects.
That's infact incorrect.
Straight forward programming works at all scales.
OOP doesn't work at any scale.
@tr1pc0de
Presumably the dumb fakers don't bother applying to jobs in your field. They all jump on frontend positions because they think they're so easy.
@shae_mcl
The actual psyop is making you believe that you need to be attractive and desireable forever.
I've seen old women refuse to be called granma because they think it signifies being ugly and undesireable.
People need to get more grounded with their stage of life.
@bitfield
Very common among junior programmers.
This question though is so simple I can't think of a reason one can't solve it except they have no idea how to program.
@GailHeriot
The most impact this will have on immigrants is replacing an easy and familiar word with strange jargon, making it more difficult for them to communicate.
The logic here is exactly backwards. This is more reason to not use a slow language.
Imagine getting free 100x improvement in performance specs without paying 100x hardware fees.
No brainer.
Makes it even crazier to hear people complain "Ruby is slow". What? Ruby is the cheapest luxury language on the block. Incredible productivity, and it'll scale your SaaS to the fucking MOON on a 48-core EPYC machine that costs peanuts while you make millions.
With these kind of specs you should be serving at least 50_000 requests / second.
Disk I/O would be minimal for most workloads (except file downloads).
192GB RAM should mean your entire data + all the indices all comfortable fit within RAM, with plenty of room to spare.
This kind of quote only makes sense in a universe where the majority of programmers by default write code that performs reasonably well.
Unfortunately the vast majority of programmers today write code that performs awful by default.
Also, you can't "make it fast" after the
I'm not really that interested in AI development. It's not because I think it's overhyped (I do). It's just not my main interest.
My main interest is systems programming and application programming.
When I was starting to learn Japanese, some people were telling me to learn
To clarify, the project is already hosted on AWS. This thread is about implementing some feature using yet more AWS services wired up together vs just implementing the feature in code & database tables.
Also, yes, the story is true.
I'm barely a 0.5x programmer. If I don't carefully guard my dev cycles I'd easily degenerate into a 0.01x programmer.
I use statically typed languages because I'm too stupid to always correctly remember which object has what fields, or which function takes which parameters.
I
Is there anything more vapid, more ignorant, more downright breathtakingly stupid, than deriding the last fifty years of software engineering by saying: “All you need is functions”?
I welcome arguments to the contrary, but it seems like Scrum is designed on purpose to subjegate and demoralize programmers while giving the upper hand to project managers.
@harmlessai
Jailbreaking helps a little bit. It's still very hesitant about it, but still helps a bit.
Please take notes
@sama
@OpenAI
Without jaibreak: With jailbreak:
In 2015 DHH Tweeted that Basecamp handles 2000 requests per second with 30 application instances.
So about 67 requests per second per instance.
2019 Article says their infrastructure costs half a million dollar.
Make of that what you want
Scrum is usually practiced by companies that don't understand how to develop software (as a "remedy").
No one who is good at software development would choose to follow Scrum out of their own volition.
Here's a video by
@Jonathan_Blow
explaining that thousands of hackers are working on injecting backdoors into open source projects
The only shocking thing about this incident is that it was discovered within a few weeks.
I'm still in shock the xz backdoor happened.
But even more surprising is that it got caught because a dev noticed login in to his machine via ssh was taking 0.8s instead of the usual 0.3s and decided to look into it.
And he happened to be familiar with the Valgrind situation
I think many software developers don't understand the concept of pipelining.
If you're doing one thing that has Y steps, it makes sense to do one step at a time: go from step 0 to step Y and be done.
If you're doing N things that each have Y steps, it makes sense to do the
Re: autocomplete / intellisense / LSP
One of the remarkable things I've noticed from watching Jonathan Blow's programming streams is that he uses a plain text editor without autocomplete, and yet he's much more productive than people who do.
He types out entire blocks of code
I keep getting people telling me it is "unreasonable" to say that OOP is never useful.
So many people have their own definition of OOP.
Your definition does not matter. The term OOP is a trojanhorse. Once you accept "OOP is good" as a base premise, then you will find yourself
@Hasen_Judi
"It's never useful actually". Makes no sense whatsoever. Different paradigms have different uses (and abuses). Rarely are paradigms pure by the time they reach industry either.
@transmutrix
Things are much worse now as people who fail such interviews now go on reddit and complain about how their job will just be styling buttons in css anyway so why should logic even matter
@cmuratori
@Jonathan_Blow
At the rate AI had been improving its programming skill it should be a much better programmer than you or anyone else some time this year. Unless you’re expecting that improvement rate to suddenly stop?
P.S. the prof was right. This code is not OOP.
It does utilize classes, and some virtual functions, but the vast majority of behavior is coded as data processing in the regular procedural way.
Web programming would be a lot simpler if you just treat data as data.
Instead, both the backend and the frontend treat their data as "special".
Frontend: You can't just read/write UI state, you have to do it through special weird APIs. Whether it's React style setState family
@decruz
My point was the only thing you need to handle large scale scenarios is a distributed database. It's the bottle neck.
100k daily users is too small by the way. A single server can handle it and still have plenty of resources to spare.
Maybe if you had 100k concurrent users..
I heard some people forked SQLite into libSQL to make it "open contribution".
Here's my prediction:
Without strong gate keeping, the quality will degrade, and several critical bugs (e.g. data corruption) and vulnerabilities will be introduced.