Live data from Hacker News

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

github.com

111–120 of 168 posts

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

#111

Earlier quoted context omitted.

Umm, Amdahl's law is actually a negative result . It's saying that if you infinitely improve some magical hotspot that is 1% of your workload, the best you can only ever get to is 99%. If anything, Amdahl is telling us not to grind on trivialities.

That's not how I understood it - I thought it was about the upper limit of theoretical parallelism. But I'm an EE, so maybe I misunderstood some finer points?

An upper limit on the benefits. To me, an upper limit is a negative result. When Leon (in Blade Runner) finds out that he only has 4 years to live (an upper bound) he takes it pretty hard.

Amdahl:

  A fairly obvious conclusion which can be drawn at this
  point is that the effort expended on achieving high
  parallel processing rates is wasted unless it is
  accompanied by achievements in sequential processing
  rates of very nearly the same magnitude.
http://www-inst.eecs.berkeley.edu/~n252/paper/Amdahl.pdf

A point made when we read the paper was that Seymour Cray always made sure that his computers were also the fastest scalar computers even though they were sold as vector processors.

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

#112

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…

Can you clarify your statement?What does a low-level person do to improve infrastructure?

Gosh... Lets say you have to purchase X servers at Y dollars, where X*Y>1E8.

How much does an engineer making $200k a year have to reduce X by before he pays for himself? Not much, and simply finding a hotspot and doubling the performance by aligning a data structure or whatnot could pay for his salary for a decade.

The old adage that computers are cheap and engineers are expensive is about 15 years out of date for a large portion of the software being written today. That is when companies stopped being able to generally externalize the costs of shitty code. Plus, as microcontrollers ate the world, the ability to ship a $1 micro controller instead of a $10 one on a product run of 100k units can mean the difference between a competitive growing company and a dying one.

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

#113
post #19

Earlier quoted context omitted.

I struggle to find good low-level devs. It is surprisingly hard to find good C / kernel / network programmers.

You're not the only one. My company is desperate for good low level hackers. We can find people who know Python and Java for days, but people with the skill set we need are very hard to find.

Where are you? Want to talk?

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

#114
post #19
post #7

Low level programmer here. This is great but the job market for low level programmers is very small. Recently, while interviewing, I described a thread safe, concurrent queue implementation to a hiring manager and he asked me -- "so how does this relate to big data and ML"?

I struggle to find good low-level devs. It is surprisingly hard to find good C / kernel / network programmers.

Where are you searching?

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

#115

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…

As an embedded programmer, I wholeheartedly second this. I'm in an area where there are relatively few opportunities to do close to the metal work. The ones that do, don't pay any more than backend web developers make. In fact I've come to assume that they can offer less due to either the intrigue of the work, or because you often compete with computer/electrical engineers who aren't expecting outsized developer sala…

Please don't discourage people without having the full view. There are many good low-level teams with software first people. At least in the bay area there are many exciting projects for people with this skill set. Self driving cars (Waymo, Tesla etc) , VR / AR headsets (Microsoft, Facebook etc.), Phones (Qualcomm, Google etc.) , Wearables (Apple, Fitbit) GPUs (Nvidia) and startups AirWare etc..

Here is a sample opening at Waymo - https://careers.google.com/jobs/#!t=jo&jid=/waymo/embedded-s...

Sure my experience may be skewed too but there are definitely great jobs with rewarding experiences of shipping tangible products for low level programmers. Not many people get the joy of shipping something your friends and family use and literally say "wow".

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

#116

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…

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).

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

#117

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…

Even if you work in domains where you don't need to do low level programming, knowing how the hardware works at a low level helps you do a better job.

When you know what the stack and the heap are, when you know how memory locality affects performance, when you know the full cost of allocations, you can write better Java/C#/OCaml/Haskell, you can check on the assembler they output, you will be ready to occasionally write small C libraries if portions or slow, etc.

Ignoring this stuff completely leads to text editors made in electron.

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

#118

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…

> Anyways, unless you deeply know what's going on inside of the microarchitecture of a modern superscalar, out of order, speculative, renaming, μop-cached, hyper-threaded, multicore beast then you shouldn't be fooling yourself by writing in assembler.

Assembly is useful for understanding early initialization code for embedded platforms (startup file). Depending on how aligned the vendor's board support package is with your actual target, you might have to touch this, and since this code runs at a time where there is neither stack nor heap (can't have a stack unless the stack pointer has been set up), this is easier in assembler than in the stackless C variant that you might coerce your compiler to support. The same applies to debugging issues bootloaders, where you'll have to inspect how the reset vector looks.

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

#119

Earlier quoted context omitted.

You're not the only one. My company is desperate for good low level hackers. We can find people who know Python and Java for days, but people with the skill set we need are very hard to find.

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

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

#120

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…

Someone has to write those compilers. Those with the skills to do so are vital to the industry. If we want more nice high-level languages and improved operating systems, we need new people entering this area of software engineering. Otherwise, where is the next iteration of systems software going to come from?

LLVM backend developers generally write in TableGen. Their assembly knowledge to say nothing of their microarchitectural knowledge is limited.

That may sound harsh but it's actually the point of a good compiler design (which LLVM has). You can write an optimizer pass without understanding the C parser. You can write a backend without understanding register allocation. You can get something working without really getting it tuned. You can specify superscalar machine instruction scheduling latencies without really understanding instruction scheduling itself.

https://github.com/llvm-mirror/llvm/blob/master/lib/Target/A...

Post reply on HN