Live data from Hacker News

Low-Level Programming University – A roadmap to becoming a low-level programmer

github.com

131–140 of 168 posts

Re: Low-Level Programming University – A roadmap to becoming a low-level programmer

#131

Earlier quoted context omitted.

Game development also needs people going low. Both in terms of cranking every last bit of performance from an end users machine, to packing as much information into a packet as possible to stream to the server.

True, but the game industry is legendary for horrible working conditions (thanks to an oversupply of labor).

> oversupply of labor

The funny thing is, its the opposite for the low level stuff. Nobody does it, so there's a huge demand, which results in too much work for those who are filling those roles.

Game development is broken for a litany of reasons, but I resist the urge to go into it to keep things on topic. I will say that it gets kids in STEM, and for the youngin's, getting into the low level stuff is a safe bet for a profitable career.

Re: Low-Level Programming University – A roadmap to becoming a low-level programmer

#132
post #119

Earlier quoted context omitted.

i am curious how much is your company willing to pay? is your budget around 150-200K or around 80-120K?

asking the real questions

Well, sort of. It's forgetting taxes, house prices, and more.

Places where you can buy decent stand-alone homes for $50,000 and/or have no state taxes are rather different from Mountain View and Manhatten.

It's funny how people in the pricey places look at a $100,000 salary and not see how it is, all by itself, plenty to support a large family in a home with a big yard. People living that life look back at the city folk and can't imagine how they could ever afford the same thing in a city -- it'd be roughly $2 million (a factor of 40) in San Francisco.

Re: Low-Level Programming University – A roadmap to becoming a low-level programmer

#133

The bearishness here surprises me. The more a company spends on infrastructure, the more they need low-level people. A good low-level programmer can reduce cost requirements 10x or more. Any company spending millions or billions on infrastructure can make enormous savings by hiring the right people. Crucial for Google, Amazon, Facebook, and even midsize startups can see a big improvement. And its difficult to fill th…

I fully agree with you. It's not just infrastructure but also devices and the surrounding ecosystem. I work in this space and let me assure you there are many jobs with GREAT pay. I"ll go on and make another bold claim. Focusing on lower level stuff and systems concepts lay an excellent foundation for designing complex systems regardless of the language used. Once you understand how a program is executed from the gro…

how much we talkin?

Re: Low-Level Programming University – A roadmap to becoming a low-level programmer

#134

Earlier quoted context omitted.

I went to college with a guy who did industrial, embedded stuff you see in factories. One of his projects he told me about was a robot that cut the glass windows or something like that at a Volvo plant. Anyway, he wrote the software for sensors, control, etc. Integrated it into GUI tools or backends. I said something kind of like you said to him. He replied that he'd have better job security than any of us in IT doin…

The problem is skill transfer. What does he do when Volvo shuts down his factory? Even if there are other potential employers nearby, they are unlikely to be hiring because they already have their guy.

You kidding? His company builds the equipment for one deployment. Then they do that for another. Then another. He might get sent in for maintenance or they might send someone else. He isn't doing day-to-day admin at the factor or something.

Re: Low-Level Programming University – A roadmap to becoming a low-level programmer

#135

Earlier quoted context omitted.

That is an exaggeration, for most embedded jobs you don't need $100k in test equipment. I am sure there are exceptions, but usually you will need the target, a debugger and _maybe_ a logic analyzer or an oscilloscope.

Usually it's around $10K (sig-gen, scope, logic analyzer, jtag) but occasionally there's an RF test chamber and associated gear involved :) Also, if you're dealing with uCs, you'll almost always want at least a Saleae and a 100+mhz scope.

Interestingly enough, I worked as an embedded dev for 3 years already and I used a scope and a Logic analyzer maybe 1 week during this time. I do admit that my job is kind of shitty and I'm working on messy in-house frameworks. I bet Saleae + oscope are indispensable when doing board bringup or things like that tough.

For my home-lab I went the el cheapo way and bought my own hackable Rigol (brought it to 100 Mhz) and, to my great shame, I bought a Saleae clone. I promise, Sealae guys, I'll buy an original on my next raise, I promise!

Re: Low-Level Programming University – A roadmap to becoming a low-level programmer

#136

Earlier quoted context omitted.

I agree not to go into low level programming expecting a wealth of job opportunities to suddenly open up, but I wouldn't tell people not to go there at all. Not only is assembly really fun to play around with, I feel like I've gotten a lot out of the bits of assembly I've read/written. Even though I've never written assembly code for work, being able to read the disassembly in gdb has come in handy before. Also, a lo…

Totally agree. When I taught x86 assembly in college (in the 90's), the goal of the class was to give the student a better idea of how things worked under the hood to improve their C programming, not to be an assembly programming. Just today, I helped a coworker debugging a segmentation fault that occurred in a library where the debugging info was stripped out by looking at the assembly code.

> Just today, I helped a coworker debugging a segmentation fault that occurred in a library where the debugging info was stripped out by looking at the assembly code.

Being able to debug applications which don't have debuginfo (particularly optimized builds) is highly valuable though.

Re: Low-Level Programming University – A roadmap to becoming a low-level programmer

#137

Earlier quoted context omitted.

Take a look through the monthly HN "Who's hiring?" posts. Jobs of any kind that aren't web (front-end, back-end, or full stack) or mobile apps are vanishingly scarce. It's really quite depressing.

Us low-level types don't post there. We know the bias against defence contractors, against the south, against the non-urban parts of the USA, and so on. We know we aren't wanted around here. The jobs can be nice though! My place is looking to hire dozens per year. We do emulators, JIT, hypervisors, stuff like valgrind, debuggers, manual disassembly, and vulnerability research. I've been here 11 years. I've worked wit…

How could someone make them selves worth even interviewing for a job like that? I do Ruby/python and Devops with some small hobby c and Linux stuff in my free time

Re: Low-Level Programming University – A roadmap to becoming a low-level programmer

#138

Don't go there. There's really not a lot of work. But if you must, low level is more a calling than a learned skill. You probably shouldn't be learning assembler. First, compilers are really quite good. Yes, it's possible to beat them (I do) but generally not by much. And not by much ain't gonna put bacon on the table. You can probably get what you need from gcc inline asm() calls. Take a look at the linux sources an…

There are plenty of reasons to know assembler besides performance. I am completely ignorant of all the pipelining mechanics you discussed but have gotten paid to use assembly for years.

1. Writing embedded software. You're not going to get very far if you don't know how to set up your memory, text section, etc.

2. Debugging embedded software. Good luck interpreting your JTAG output if you don't have a good knowledge of assembler. Even if you get to use gdb/Wind River Debugger/etc., you will want to be able to tell what is happening. Symbols only go so far. A backtrace will get messed up and you'll need to look at the stack to figure out what happened. An access violation will occur and you'll need to figure out what line of code it corresponds to.

3. Debugging without source code. Same as #2, even more difficult.

3. Reverse Engineering. You are trying to figure out what is happening in a proprietary driver binary blob (such as NVidia's Linux driver). You are trying to figure out how to get your software to work with an ancient piece of software whose author has long since been out of business. Even if you have the cash for Hex-Rays decompiler or can readily use the Hopper decompiler, this code is simply not high-level enough to interpret without knowing assembly and having a deep understanding of the stack and memory.

4. Vulnerability research / hacking. You are writing an open-sourced client for a proprietary protocol, looking for a memory corruption vulnerability, etc. You can pretty much forget it unless you know assembly.

Re: Low-Level Programming University – A roadmap to becoming a low-level programmer

#139

Earlier quoted context omitted.

Take a look through the monthly HN "Who's hiring?" posts. Jobs of any kind that aren't web (front-end, back-end, or full stack) or mobile apps are vanishingly scarce. It's really quite depressing.

Us low-level types don't post there. We know the bias against defence contractors, against the south, against the non-urban parts of the USA, and so on. We know we aren't wanted around here. The jobs can be nice though! My place is looking to hire dozens per year. We do emulators, JIT, hypervisors, stuff like valgrind, debuggers, manual disassembly, and vulnerability research. I've been here 11 years. I've worked wit…

I think that's kind of needlessly confrontational and doesn't make your company look welcoming to someone who might be looking to leave SF/NYC.

That said, it's obvious to me who you work for but anyone who'd be offended won't know.

I'd love to move to Melbourne, FL to do vuln research but I'd have to convince my family to make the move first.

Re: Low-Level Programming University – A roadmap to becoming a low-level programmer

#140
post #137

Earlier quoted context omitted.

Us low-level types don't post there. We know the bias against defence contractors, against the south, against the non-urban parts of the USA, and so on. We know we aren't wanted around here. The jobs can be nice though! My place is looking to hire dozens per year. We do emulators, JIT, hypervisors, stuff like valgrind, debuggers, manual disassembly, and vulnerability research. I've been here 11 years. I've worked wit…

How could someone make them selves worth even interviewing for a job like that? I do Ruby/python and Devops with some small hobby c and Linux stuff in my free time

Follow the guide in the link. Do the Arduino stuff first; being unable to do something will drive you to learn exactly as much C and assembly as you need. Learn to write network code in C. Learn how TCP/IP works and try to do weird things, such as transmitting information with ICMP (ping) packets.

The next step (for that particular company's work) would be to actually reverse engineer some complex code and write about it on a blog.

If you want to basically guarantee yourself an interview, reverse engineer and find a vulnerability in some software, and write about it. Then apply with that information.

If you're looking for the "easier" way, just apply to DoD in Maryland or Virginia for an ultra-low-paying, but connected job that allows you to learn all this stuff on the job.

Post reply on HN