LabMechanic
Herbert Gross' “Calculus Revisited” three-part series.
— https://ocw.mit.edu/courses/res-18-006-calculus-revisited-single-variable-calculus-fall-2010/
— https://ocw.mit.edu/courses/res-18-007-calculus-revisited-multivariable-calculus-fall-2011/
— https://mitocw.ups.edu.ec/resources/res-18-008-calculus-revisited-complex-variables-differential-equations-and-linear-algebra-fall-2011/index.htm
The above is more or less “engineering math”.The below is “normal college” math:
Edward Frenkel's Multivariable Calculus lectures:
https://www.youtube.com/playlist?list=PLaLOVNqqD-2GcoO8CLvCb...
Dr. Valerie Hower's Linear Algebra lectures:
https://youtube.com/playlist?list=PLpcwHaLYiaEXW5fLNOlItPH4A...
Interactive Linear Algebra (online “college level” textbook):
https://textbooks.math.gatech.edu/ila/
Tutorial-like Linear Algebra (interactive online textbook):
https://immersivemath.com/ila/index.html
Sheldon Axler's Linear Algebra Done Right book:
Sergei Treil's Linear Algebra Done Wrong book:
https://www.math.brown.edu/streil/papers/LADW/LADW-2014-09.p...
Linear algebra and vector calculus revamped:
— Linear and Geometric Algebra by Alan Macdonald: http://www.faculty.luther.edu/~macdonal/laga/index.html
— Vector and Geometric Calculus: http://www.faculty.luther.edu/~macdonal/vagc/index.html
However, given the availability of LLMs, how would you justify the expense of hiring junior developers fresh out of school?
Check Microsoft.com or Google.com's career pages as an example (you will also see something similar going on within mid-sized companies), do you find any jobs for entry level applicants? Are those entry level jobs offered mostly in India or Eastern Europe?
So tell me, how is the ability to think helpful for an entry level applicant, when HR departments won't hire you because you lack “2+ years of non-internship C++ experience” for an entry-level position?
My point: being able to think is of course fine, but HR departments require you to do back and front flips, speak perfect reverse Mandarin Chinese and have 2+ years of non-internship experience in C++ on top of that. Being able to think won't justify the expense of hiring a junior dev fresh out of school in a high-income country. (At least this is my impression of the current job market.)
PS: So, I just finished school last year, and I'm still on the hunt for a job. It seems like a lot of companies in wealthy countries are holding off on hiring newbies like me. I get why they're doing it (e.g., inflation, interest rates), but it's really frustrating when you're the one affected.
I mean, how are we supposed to get experience if no one's willing to give us a shot, right? It's a tough spot to be in. Then the LLMs (even if they cannot think), they still bring value and accelerate development (with a potentially lower headcount). Seniors will be fine without us juniors given the prevalence of LLMs and high inflation environment (which makes companies risk-averse and very picky).
However, our Western governments require us to have permits to catch fish, make fire. Yet, employers do not want us entry levels working at their companies. In California, they are moving the "goalpost" with the homeless people (not few are older folk where some of them went out of luck).
So tell me, is this “consumer economy” still a thing?
I know individuals who attended top computer science universities, earned master's degrees, yet they still struggle to find a job. The missing element in such conversations is that recent graduates often lack the required expertise that HR departments demand. Companies or their HR departments have become extremely selective and require multiple interview rounds before considering employment. Alternatively, companies hire student workers because they are cheaper, or they outsource hiring to countries like India, Eastern Europe, or Turkey, pausing hiring for entry-level applicants in high-income countries.
However, some governments claim a “shortage of skilled labor especially in the IT sector,” while individuals with computer science degrees find themselves unemployed in these “uncertain times”. Experienced individuals may manage to stay afloat, but those without experience, such as recent graduates like myself, are deemed less valuable. This is partly due to the prevalence of Large Language Models (LLMs), which I refer to as “Google search on steroids”.
Have you heard of “bullshit jobs”? If so, I suspect that many positions are actually insignificant. As a student worker, I co-developed an audio editing application (C++17, Qt 5). To be honest, there was nothing in it that hadn't already been solved. Would you argue that a “level meter”, “equalizer”, or “JSON parser” are things that need to be reinvented despite the availability of MIT-licensed libraries?
Rather, these jobs appear to be a form of “collective busywork”. Nevertheless, the fortunate few engaged in such “busywork” earn significant sums despite not contributing much. What kind of economy is this, where one can thrive without generating actual value (e.g., innovation, non-copy paste work)?
A “consumer-oriented economy”, huh? We need consumers, yet we cannot drive up consumption, because we collectively play a game of hot potato until someone solves all the world's woes for us.
Make sure you are able to set pixels and create audio samples (sine function sampled over a discrete time steps). Also make sure to store the results as PPM P3 (very simple text-based image format) and WAV. Some inspiration form Wellons: https://nullprogram.com/blog/2017/11/03/
Then you can implement a ray tracer, a rasterizer or audio generator.
Other ideas:
- implement your simple neural network learning XOR
- implement your hash table or your version of std::unordered_map (array +
hash function + tombstones)
- arena allocator
- dynamic array or your version of std::vector
- a circular/ring buffer (that you can also use as a queue/stack)Needless to say, fundamentals, that is, math (geometry, algebra, and calculus) and physics (mechanics, electromagnetism, thermodynamics).
Some basic algorithms/techniques such as backpropagation, triangle ray tracing and rasterization, and some fundamental awareness that you can compute anything given 5-6 instructions (Turing completeness). Knowing how to program in a language like Python might suffice.
Then there are skills that are essential to maintain your life, such as fire making, fishing, and water filtration. You need to get energy someway.
See also Maslow's pyramid.
Before LLMs, you would cobble a bunch of disjoint information via a search engine like Google. Now, LLMs do this for you, and it certainly helps me to get a lot quicker with using libraries or APIs I am not familiar with (e.g., PyGame, Flask, Django). However, you might find that code from the LLM might need some fixing (subtle bugs or redundancies) or a better use of resources.
The other issue is the LLM's dataset bias towards the most used technologies or concepts. So you might have a hard time with an LLM trying to make Clojure/Racket code or telling the LLM to specifically do the point-in-triangle test with the wedge product only.
Hence, there is still some leeway or reason to use your thing between the ears.
You might as well ask: Are you referencing Stack Overflow or the Microsoft Developer Reference (e.g., in your developer notes/comments)?
My answer: usually, yes.
CC = clang
CFLAGS = -g -std=c2x -Weverything -fsanitize=undefined,address
all: app.exe
app.exe: src/main.c
$(CC) $(CFLAGS) src/main.c
clean:
rm -rf /build
See my comment here with an example of an NMAKE Makefile.
Consider: CC = cl.exe
LD = link.exe
CFLAGS = /Od /Zi /FAsu /std:c17 /permissive- /W4 /WX
LDFLAGS = /DEBUG /MACHINE:X64 /ENTRY:wWinMainCRTStartup /SUBSYSTEM:WINDOWS
LDLIBS = user32.lib gdi32.lib
PREFIX = ../src/
all: app.exe
app.exe: app.obj
$(LD) $(LDFLAGS) /OUT:app.exe app.obj $(LDLIBS)
app.obj: $(PREFIX)app.c
$(CC) /c $(CFLAGS) $(PREFIX)app.c
clean:
rmdir /q /s buildhttps://jera.com/techinfo/jtns/jtn002
Consider using Clang-Tidy with
`-*,cert-*`
(Which disables all default options, and checks your code according to the Secure coding standard (CERT) ruleset.)Use Clang-Format as well. If you use Clang, consider `-Weverything -fsanitize=address,undefined` and disable options that you do not need. Consider using NMake or Make (or just write a simple script to automate building the stuff).
Here's a Google-esque style guide for C:
https://gist.github.com/davidzchen/9187878
At least, this is my approach.
The only thing that is constant is, as someone a long time argued, is “change”. Arguably, basic needs, and with that I mean existential needs, seem to be universal for most lifeforms: water, forms of energy (i.e., food, warmth), and the ability to maintain your system.
If something very bad hits the fan (no agriculture, no public farmland), you and me probably need to first learn how to make fire, how to purify water and how to catch fish. Fishing without permission could lead you to jail, but in tough situations, the legal stuff might be not your main concern. How much does it cost to get a permission? Can you afford it if you're homeless and no one is helping or giving you a job, a shelter? How are you going to get taxed and pay your government your state employees (e.g., police)? Who will then pay police to enforce laws? Or who will protect your basic constitutional rights, if you cannot pay taxes to finance a judge? Or, more extremely, what if a lot of people will be out of a job overnight? What will the government and state people do then without this transaction? So, there's a lot of what ifs… We aren't there yet.
In other words: how can you take part in a fair society if there are no jobs available, especially if you're old, unlucky, or your skills aren't as useful anymore because of LLMs or possibly AGI? Which means society does not need you, and perhaps would like to get rid of you.
The question is, will wealth (the ability to make transactions) still be relevant if AGI becomes a reality? What kind of transactions can you make? Buy AGI systems powerful enough to fulfil all kinds of labor needs, buy farmland, buy wells or sources of clean water? However, why should this be possible if some of us live in a democracy, even if there is a great influence from those with wealth?
Since I tend to be negative about things (i.e., I am biased), it's hard to say for sure what will happen. Further, there might be a lot of things I have not considered (tunnel vision).
PS: the dollar has no intrinsic value, we give value to it. So, I do not know what wealth means, if there is significantly less need for human labor. Ultimately, if some of us can have “free slaves” (i.e., robots), then some of us arguably do not need to have wealth (the ability to make transactions). Only raw power/dominance and luck.
Creating AGI needs powerful computers, which are costly. Independence from humans, like workers in chip factories, requires bootstrapping[1]. This leads to a scenario where a subset of humans serves their bosses, and bosses serve shareholders until AGI takes over. Those with money hold power, and if we aren't good “slaves” robots might take over. There's a chance of using prison labor, especially with the ease of getting jailed in the US for minor offenses. A cynic might say: why not change laws to make it easier to jail people? Might solve homelessness, and we get free labor that way. Rising homelessness is likely. The only option for us “plebs” is to learn basic survival skills like making fire, catching fish, and purifying water and possibly fight each other so that those who rule over us be at ease:
“When two people quarrel, a third rejoices.”
We might have a “democracy” on paper, but it is clear to me that the people can influence politics with great leverage, if they have enough wealth at their disposal:
“Despite the seemingly strong empirical support in previous studies for theories of majoritarian democracy, our analyses suggest that majorities of the American public actually have little influence over the policies our government adopts. Americans do enjoy many features central to democratic governance, such as regular elections, freedom of speech and association, and a widespread (if still contested) franchise. But we believe that if policymaking is dominated by powerful business organizations and a small number of affluent Americans, then America’s claims to being a democratic society are seriously threatened.”[2]
Keep in mind though, we cannot predict the future, it might be worse, it might be better, it might be something we cannot even imagine (see Nassim Taleb). Further, I seem to have pessimistic tendencies (biases), so keep that in mind too. So, I hope that my pessimism is just futile and does not hold any water (not even a drop).
Reference:
1. “In general, bootstrapping usually refers to a self-starting process that is supposed to continue or grow without external input.” [Source](https://en.wikipedia.org/wiki/Bootstrapping)
2. https://www.cambridge.org/core/journals/perspectives-on-poli...
On the flip side, Rust has great error messages and boasts a robust package manager, “cargo” (more convenient than say CMake) but lacks libraries such as STB, Catch2, nlohmann::json, and DirectX Math, OpenGL, …
Although there are bindings to libraries for DirectX Math created by others, the question remains: are they genuinely production-ready? C and C++ have a long history, they are different languages, but they are arguably orthogonal. Not completely different.
I would say: do not focus on languages, more on solving problems. That means, learn fundamental subjects well (geometry, linear algebra, calculus, differential equations). If people like Karpathy and Jensen are right, then being very good at a particular programming language might not have much of an importance.
Technologies: C/C++, Python, JavaScript, Rust, Scala 3, Clojure, Racket, Qt 5, SDL2, Windows API, DirectX Math, Play, Vue.js
Projects: I did write basic software rasterizers and ray tracers (in C/C++, Rust, Python, JavaScript) and a neural network learning XOR from scratch in Python. I haven't uploaded many of my projects on GitHub yet, but here is a small sample:
https://privatebin.net/?ae5a97996cd17be6#7Ps9FAqTCQYPGMmj1rY...
I am sufficiently open and curious enough to any kind of project.
E-Mail: see my about. ;)
Remote: Yes
Willing to relocate: Yes
Technologies: C/C++, Python, JavaScript, Rust, Scala 3, Racket, Clojure, Linux, Git, Make, CMake, Clang-Tidy, Clang-Format, Catch2, Windows API, DirectX Math, SDL2, Qt, Play, Vue.js
Résumé/CV: https://drive.google.com/file/d/1mT6TmIjZO_dCS6q4qTP-Zikx3bb...
Email: see my about or resume.
---
Hello, I'm a recent computer science (B.Sc.) graduate eager to embark on my first role as a software developer. I bring a diverse skill set with experience in several key technologies and a solid grasp of mathematics (linear algebra, “3D math”, calculus). I am open to both long-term positions and contract work, ready to contribute my skills and enthusiasm.
Ask HN: How to Get a Sofware Job?
How to approach finding some kind of employment in software, given that I've been looking for a job worldwide since April last year, but haven't found one yet?I'm open to any software or IT position. Furthermore, I graduated with a bachelor's degree in computer science in April 2023, and I'm currently based in Central Europe.I'm skilled in C/C++, Python, and JavaScript. I also have experience...
Some people (Munger? Buffet?) believe The Coca-Cola Company will continue to exist, because it existed for that long (Lindy effect), so it must continue to exist. Why “must”? The problem is right here, you cannot reliably predict the future. Who knows what will happen by 2060?
Therefore, things like Kondratiev waves might be a new form of modern coffee cup reading.
Ask HN: How to execute an 180B+ LLM on a Turing machine?
Or, equivalently, how would you approach running an 180B+ LLM on a Von Neumann computer with say 1 MB of main memory and virtually limitless secondary storage? Or, do you know about an approach (that you might read somewhere) that might help running a heavy LLM on virtually any Turing equivalent device?Picture this: you're stuck with your “potato computer” (small RAM, no external GPU, very...
Getting Started in Clojure [pdf]
Compilers – Ghassan Shobaki
Tell HN: Comp Sci, Algebra and Calculus Resources I Like
Below is a list of resources that I personally like, because most of them emphasize derivations/motivations (e.g., deriving the cross product out of 3 assumptions/axioms) over (mechanical) memorization (e.g., just showing the mechanics of matrix multiplication/determinants without derivations/motivations): - Bari A., Algorithms, YouTube (playlist), ...
CS University Lectures (Dr. Daniel Page)
Panopticon it is:
https://en.wikipedia.org/wiki/Panopticon
Generally, there is plenty of reasons to be worried:
- Firmware-wise (e.g., Intel Management Engine, Coreboot, Libreboot, system on a chip)
- Hardware-wise (i.e., Von Neumann architecture - Code + Data)
- Operating System-wise
(e.g., 0-click exploits, remote code execution to manipulate the CPU's instruction pointer,
stack overflow, Pegasus)
- Facility-wise (e.g., electromagnetic waves, cell towers, Faraday cloth)
- You (making mistakes)
What you can ultimately do is: rely on randomness (e.g., rolling casino-grade dice), Diceware, one-time pad, no computers of any kind.
Further, hope that time traveling backwards remains impossible.
Otherwise officers will travel back in time and can see what you wrote (e.g., unencrypted message) back then.If you need some electronics go with analogue electronic devices. Or, make your own computer systems from scratch with transistors etc.:
jdh, I built my own computer. by hand., https://youtu.be/vaGZapAGvwM?si=lGQuskkFxZ7FHe1h
1) *Bitwarden:*
I am no longer using Bitwarden since they can delete your account at any time for any reason[5].
2) *KeePassXC:*
For KeePassXC, you need to store your "Passwords.kdbx" (~16 kB) database file somewhere and remember a master password.
3) *Spectre (https://spectre.app/)\\\*
I haven't tried it yet; however, Spectre calculates your password each time you need it. All you need is a name (e.g., your full name), your master password (see Diceware[1]), and the site name, from which Spectre algorithmically calculates your password. If you need to change a site's password, iterate the counter and calculate a new password.
It works offline and is open source. Here's a web app version that runs locally:
[Spectre Web App](https://spectre.pw/)
*Bonus: One-Time Pad + (Layman-ish) Physics:*
There are plenty of reasons to be paranoid[2]:
- Firmware-wise (e.g., Intel Management Engine, Coreboot, Libreboot, system on a chip)
- Hardware-wise (i.e., Von Neumann architecture - Code + Data)
- Operating System-wise
(e.g., 0-click exploits, remote code execution to manipulate the CPU's instruction pointer,
stack overflow, Pegasus)
- Facility-wise (e.g., electromagnetic waves, cell towers, Faraday cloth)
- You (making mistakes)
Given the above, I would first base everything on "true"[A] randomness (see random.org or roll casino-grade dice). "True" randomness is essentially: "every outcome has the same probability." As long as backward time traveling remains impossible, I would abstain from computers and simply follow the One-Time Pad protocol with a pen and paper, among other things. Message: Hello -> ASCII -> Binary
Key: 5EYES (keep this private, must be random)
Cipher: <Message in binary format> XOR <Key in binary format> -> convert back to ASCII
The above is just one (i.e., XOR) out of many ways to follow the one-time pad protocol. For 128 characters, you need a random number from 0 to 127. However, you need to ensure that each number has the same probability to show up. Perhaps there is a way to encode or "rename" the numbers from 0 to 127 with a string of digits 1, 2, 3, 4, 5, 6 so that you can roll a die multiple times in a row to randomly get a number between 0 to 127 (see Diceware[1]).
One-time pad might be good to encrypt your master password.*References:*
1. Diceware, [Wikipedia](https://en.wikipedia.org/wiki/Diceware)
2. CS155 - Computer and Network Security,
[Stanford](https://crypto.stanford.edu/cs155old/cs155-spring18/syllabus.html)
3. [One-time pad - Wikipedia](https://en.wikipedia.org/wiki/One-time_pad)
4. Animated Explanation of the one-time pad, https://www.youtube.com/watch?v=QVV_bUxxiZ8
5. https://tosdr.org/en/service/1348
*Notes:* A) If you assume determinism (because our current "collective bias" leads us that way),
then the quote marks are okay; if not, then not.
Personally, everything seems to be based on assumptions or beliefs anyway (your existence, math, ...),
so I go by "ignorance is bliss."