What is the daily life of an embedded systems programmer?

What is the daily life of an embedded systems programmer?

Attached: Atilia.png (2000x1533, 3.3M)

Other urls found in this thread:

sandia.gov/
twitter.com/SFWRedditImages

debugging shit

Like yours except with less slacking around

Yeah but is it full of stinky autists?

>roll in 45 minutes late
>log in
>get coffee and smoke
>take morning shit
>get coffee and smoke
>respond to an email or two
>wait for "manager" to come rolling in
>bullshit with co-workers for a while
>buy some bullshit online
>turn off volume when phone rings
>have lunch
>go to stupid meeting
>get "emergency call" and leave around 2:00.

Government contracting will change one day, but I swear to you this is how it is at 80% of the sites.

>2:00
Please not be AM. Also do you get paid more than $60k with that shit?

what a great thread OP, really stirring discussion were having here about technology...

Yes, we can make much that. Funny how much money you can make when rich idiots need you to do stuff they don't wanna learn.

>$60K is much
That's what coding bootcamp kids make...
I'm talking about embedded systems in an R&D environment.

I do both the hardware and software so it goes something like this:
Get idea/product spec/feature request.
Dig around for compononents which might solve the problem.
Design schematic.
Layout pcb.
Usually takes a week or two.
While waiting for prototype pcb fab, start with the software, typically make use of the same mcu's (ST cortex m0-m4) so I have a lot of ready code for most things (peripherals, communication stacks, etc). Make it working on simulator.
When board arrives, hand mount and solder.
Try the program on real hardware, see it never works out like the theory, start tweaking and debugging until it works.
Ship prototype to customer.
Spend endless time on the phone and emails.
Either they like it as is, or want more features/better performance.
Eventually get final version ready, mass produce, ship.

>shit on deborah's desk
>like a boss

its been a while since Ive heard that

It's just like regular programming except:
1) you write the application layer in C
2) you spend a couple of days every other month writing code to interface with hardware

It's easily outsourced. Find something where you can be at the top of the food chain.

Like what? I want to do cyber security but there's not a single such company in my country I know of.

any suggestions?

Then start a cybersecurity consulting business and approach companies that could need you

You feel like shooting yourself after countless hours of verilog. Get paid for barely working things because pajeet would sooner learn Java or C.

No thank you, I don't want to end up in a ditch.

>Wake up at 5am in the same clothing you plan to go to work in.
>Brush white beard with your fingers.
>Feed all 4 of your cats, presumably on the kitchen counter.
>Enter your Prius for the daily work commute
>Listen to a combination of AM conservative talk radio, NPR, and Rush (the band, and the commentator).
> Proceed to coast at about 63mph in the 2nd-left lane of freeway.
>Chuckle sensibly when irate Audi javascript brogrammer swerves past you doing 90+.
>Get to cubicle, smelling of chinese food, cigerette smoke and despair
>Hit the filthy spacebar a few times to awaken a mid-2000 desktop pc (open case).
>The CRT illumates Windows 98 desktop that is littered with folders and files, covering an F-35 wallpaper.
> Launch a fully licensed version of IDA.
>crack knuckles and sit down in a computer chair that likely gets 2 star reviews at Staples.com
>Launch Real Audio player and connect to stream of John C. Dvorak show talking about computing trends.
>Get up and fill moldy coffee mug with bland coffee and some carcinogenic laden creamer powder.
>Gawk at the intern UXD intern, in her perfectly fengshui cubicle.
>.....


Shall I continue Op?

Is there not a single sensible lab with serious engineers anymore?

what kind of cyb/sec do you have experience with?

None, that's the thing. I want to get a job to learn cyber security. I just know the foundations - networking and OSs. No idea how to learn pen testing.

I'm just starting. My strat is to basically:

Networking: understand the OSI model as deeply as possible. Get more familiar with Linux distros. Get very good with Kali linux.

Programming: basically just get C down, and get into more advanced Python.

>New project
>Get spec
>Hardware designs a board, software picks the micro/fpga/whatever.
>Lots of meetings about design.
>Code gets written, slowly, in C.
>Prototype gets built, inevitably someone fucked something up
>Fix bugs, new prototype
>UL testing
>FCC testing
>Failures left and right, add shielding and cutouts until pass.
>Awesome. Make 1,000 boards.
>Turns out some asshole in management decided to switch some shit out to lower the BOM.
>The 1,000 boards don't work above 80F
>Some poor bastard has to solder bodge wires and/or bypass caps on all 1,000 boards to fix it.
>Ship it

>The CRT illumates Windows 98 desktop that is littered with folders and files, covering an F-35 wallpaper.

Fucken lmao

From what I've seen so far, yes.

eat. sleep. program embedded systems.

sounds comfy

Attached: 1525808701555.jpg (900x868, 126K)

>i hate my life starter pack

Embedded systems are a thing of the past, most new devices have full operating systems because programmers are lazy and costs are low.

Sounds great

Too detailed to be false.

That sounds terrible.

There are practically no jobs in this area in my country :(
The closest is some PIC programming and it is less everyday.
Where do I move to with an Electronics Technologist degree?

What?
Pen testing is easy.

Get a copy of Virtualbox or VMware(workstation if you can). Network a bunch of VM's together to make a pentest lab. XP, Win7, Win10, Linux servers, etc. If you don't feel comfortable doing that yet, just install metasploitable 2 and Kali. Point Kali at MS2 and fire away. Don't know what to do? Google a guide on how to break into it. Repeat with new techniques and new boxes ad infinitum.

If you get bored of those, start doing Vulnhubs or hackthebox.

I'm a red teamer at a university at this is our training track.

tl;dr buy Hackers Playbook 2. or download the pdf. Just follow the book. It breaks down a pentest step by step. piss easy.

you won't get shot unless youre in a super 3rd world country.

Attached: 1401676487468.gif (256x256, 27K)

embedded software is the most boring type of software development. I'd say that even frontend is more challenging and interesting than embedded

>>Turns out some asshole in management decided to switch some shit out to lower the BOM.
>>The 1,000 boards don't work above 80F
>>Some poor bastard has to solder bodge wires and/or bypass caps on all 1,000 boards to fix it.
>>Ship it
Why would management care at all if there are more components on the boards or not?

>searches 500 pages cryptic documentation
>Can't beg for help on the internet because of exotic hardware
>get assigned a project from department scraps
>"What the fuck eh?! The sample programs don't compile!?!"
>Turns out the manufacturer hardcoded the compiler version back in 2009

Attached: DdKXswLV4AAoBPh.jpg (382x385, 18K)

reading chapter 9 of USB spec

>use the seat area in front of your nutz to scrape the cheeto ink off your fingers.

Sandia National Lab
sandia.gov/

Because a penny saved per board is a sawbuck now available for their bonus.

well if you are an embedded systems programmer in the UK, you are doing worthless things for worthless people, that go nowhere

Oak Ridge and those other national laboratories

Attached: 1432847736231.png (1070x601, 463K)

If you still use C on a 32-bit MCU instead of C++11 or newer with -fno-rtti and -fno-exceptions, you should kys. The world doesn't need more of your bugs and unreadable code.
And anyway, we are obsolete now with all these graphical tools that allow even a complete moron to generate code that configures every low-level peripheral. Soon they will put full-blown Python or Javascript on top of something like FreeRTOS and then all will be fire.

do you not have real life experience with stuff you should not/cannot talk about?

Management has to do something. If management (visibly) did nothing they'd get shitcanned. They find a number of something, anything, maybe its saving money maybe not, Middle Management doesn't know what any of it means anyway. They lower that number. They take credit for personally lowering the number on the project. Upper management doesn't understand what any of the words mean and assume that's a good thing and thus bonuses.

this thread made me realize, what a nightmare this shit is...
I want to thank the embedded devs who posted here.

off-topic: wtf recaptcha? I had to solve 8 (EIGHT) FUCKING CAPTCHAS!

>learn cyber security
>No idea how to learn pen testing

Newsflash for all the 20 something year old college kids on here who want to be le 1337 hax0rz: there's more to the computer security industry than penetration testing. Pentesting is the IT Helpdesk of the infosec world, a monkey can do it, and since you all hate Indians, a lot of Indians do it. DARPA is trying to make AI that completely automates a pentest (no, not like a vulnerability scanner). Pentesting is a dying field.

If you're trying to get into pentesting professionally, you're better off not doing so. Instead, learn malware analysis, CND, or forensics, you'll get paid more and not be an idiot. Once you've really hit the big time, you can move on to serious consultancy.

Attached: 1521918157579.gif (209x213, 1.73M)

What was the best thing you guys saw in errata? Mine is "SD Card slot signals connected to incorrect pins. No workaround. Fixed in version 5." for a dev board (only version 3, 4 and 5 were public but I still don't get how they could miss it at all).

Sepples is fucking garbage, mate.

Yes, but C is even worse.
Compared to the worst C++ code any C program would seem elegant though.

i just wanna make robots man
what did i get myself into

can C++ be used in real time apps? I heard that C++ add runtime code that can ruin real time requirements

The goal of C++ is ZERO COST abstractions, which are optional. C++ can do anything C can though,

>Filled to the brim with landmines
>Missing basic shit like designated initialisers
>In-built bloat generator
No thanks.

there is already serious effort to bring a lightweight javascript runtime and eliminate c bullshitry

boring and horrible, two of embedded dev changed to js and came to work with me on a fucking react redux saga webapp.

Hackers Playbook 3 came out

That's fine too. "Landmines" are pretty subjective, C++ goes with constructors, built in bloat generators are extremely optional.

>S-sepples is g-good if you ignore all of the features...
Great argument, fag.

Is it true that webdevs, fullstack and serverside makes twice as much compared to embedded

Attached: 7a5.gif (482x800, 29K)

There are more features in sepples than can possibly be used at once. Ignoring some of them is how shit works.

kys

>I have Msc in embedded engineering
Yet the guy is creating apps because even a java monkey can do his old job with pic related

Attached: java_logo.png (259x259, 7K)

Tfw going for a Msc in embedded systems
Is it a bad choice?

Who knows

If you love it go for it regardless of the market status, believe me nothing worse than doing something you don't really love because it sounds cool or it generally pays better

>a fully licensed version of IDA.
I wish.

Attached: 1527425565530.png (998x1096, 888K)

Embedded engineers, how future proof do you think the field will be?

it will always be there, but things are slowly going to higher levels. but in the end, embedded software is mostly about testing not design like other software branches, most of the code is already reused from project to another, integration & system testing is what takes time

Wont lie its a lot fucking better than my Java codemonkey job

>come in, log in, talk to coworkers
>talk to
>70% of productive time is spent reading datasheets, programming manuals, and reference manuals (fuck you STM for that god awful documentation)
>talk to electrical engineer faggot because his filter/power supply/amplifier is fucking up
>tells me to handle everything in firmware because he knows fully well that's the cheaper way out and his shit is working exactly as intended
>okfuckyoutoo.png
>go to signal engineer bro, get him to solve math for me, try to understand all that voodoo
>manager comes in, whines and throws buzzwords around, occasionally a tantrum about how we need to change everything from "ground up"
>reply in buzzwords to keep him happy, its not like the guy could explain what a transistor is if his life depended on it
>go home and work on personal projects with 100x the passion

>It's easily outsourced
Not if you make actually quality shit, and not poorly written bullshit that Indians can create.
Talent in embedded is extremely scarce. You can find a lot of univ grads who can work the basics, but there aren't many who can do shit that takes experience and dedication.
The best thing about the core disciplines (that is, not computer related ones like IT or CSE) is that the talent pool also contains extremely autistic people who are really fucking good at what they do. We get them once in a while

I'm not going to bother with reading through this thread, but I went from a well-paying back-end webdev gig to a shitty paid embedded job, basically because I got memed by Jow Forums into believing that embedded programming is the pinnacle of programming jobs.

Oh boy, were Jow Forums wrong....

The entire field is filled with people with EE degrees that think they understand how microprocessors work because they took a course in C programming.

Here are some bugs I've come across during my first 6 months as an embedded developer:
1) The CTO basically learned himself C++ on the job, so the 5000+ line code base is written as "C with classes" and with memory leaks everywhere. Unironically, he doesn't "trust" the standard library, so all collection classes and string classes that exist in the code is his own, no use of templates whatsoever and all class names are prefixed with his first name. String functions are naive implementations that have horrible performance, compared to the optimised variants from the standard library.

2) Some time before I begun at the job, the devs finally agreed to move to git rather than subversion. The problem is that half of the dev team don't really know how to use git, so every change they make they copy the root folder and work on the copy before manually moving it back. Sometimes they forget to remove the copy, meaning that we regularly have massive commits with duplicated code.

1 / 3

3) The company makes network probes for multicast networks typically used by IPTV providers, that report things like packet loss, jitter, reordering, malformed content etc.
These probes have a web-based interface, but because the CTO who initially made the code had no idea how web works, apparently.
Every single probe has their own integrated webserver (which is also written by the CTO), and then the management server creates a gorillean iframes inside tables inside iframes that connect to each individual probe (from a list of manually typed IP addresses!!!) Our clients typically have hundreds of nodes with a probe connected to them.
The accumulated data for a collection of probes is gathered by some horrendous JavaScript monster that basically parses the DOM of all the internal iframes and extracts the values from the HTML text.
All this instead of just creating a protocol between the management server and the probes that reported data...

4) There was a precision with some rate (don't remember which) that I was tasked with fixing. Values below 10% were always reported as 10x more than they were. It turned out that a developer had decided that the proper way of reporting two different, but associated integer values, was to convert the two numbers into a single floating point, and use the decimal point for separating the different values. He then converted this double to a string (using the shitty homemade string functions), sent it to the client application, which used the shitty homade string functions to convert it back to a double, take the first number out by truncating it and the second number out by subtracting the first number and then multiplying the below with 100. The precision was lost because the first conversion to the string didn't account for the difference between 0.9 and 0.90 (duh)

2 / 3

5) Someone changed the members of struct, and rogue memory write that apparantly existed in the code since the begining always overwrote the spinlock so it would always appear as locked (and thus deadlocked the probes). As this was 5 days before release, there was no time to track down the memory leak that probably had existed since the begining, so the quick and dirty fix was to just pad the struct with additional char arrays that weren't used for anything, so that the rogue memory write would just offset into some arbitrary padding.

3 / 3

Nice writeup anono. Out of curiosity I have to ask, do EEs in embedded usually have Bsc or Msc background?

>tfw EE student
>tfw recognise your pain, because 95% of my classmates can't program for shit

In my country, they all had MSc except for one (he was actually not an EE either, he had a bachelor's degree in physics and the CTO was just so impressed with that he was hired, despite the fact that he had no previous programming experience and had worked as a high-school physics teacher).

But that's because higher education is """free""" in my country, which means that employers would assume that you were a lazy fuck if you didn't bother with doing an MSc. I'm sure things are different in countries where university tuition cost a shitload.

I wanted to get into this stuff, but since I basically need windows for any of possible projects that would mean designing a goddamn x86 mobo and that's downright impossible for any single human being from what I understood, so I gave up.

Even small companies I'm following have too much trouble even booting this shit, and they're pros.

Binland?

It's the pinnacle of hobbyism though, Jow Forums wasn't exactly wrong. People who do things for a job are at the other end of the skill curve where they only care/learn enough to get their paycheck.

Close, but no cigar. Pic related.

Attached: norway-no.png (586x640, 228K)

oh shit I think I remember you user, wasn't there a time where 2 numbers were squeezed in to a double or some shit?

>People who do things for a job are at the other end of the skill curve where they only care/learn enough to get their paycheck.
Yeah, that's particularly a problem with embedded stuff actually.

All our clients had invested heavily into our hardware and relied on our software and IP to basically have any form of monitoring at all, so throwing all that out and replacing it with an entirely different solution was basically not an option at all, so they would rather live with our buggy mess, because it at least was known bugs.

And when it eventually breaks or ruins something they have a convenient scapegoat.

Correct, I mentioned this in too.

The sad thing is that I made maybe 150k NOK more as a web developer, and I accepted a lower pay because I thought I would put my masters' into good use and do something challenging and rewarding.

ah I skipped over that part, I just remember reading in another embedded systems thread about an user telling others just to avoid it altogether because everything is a shitshow

hope you can move to a better job soon user

I actually did, 3 years ago. I just write it as more recent for dramatic effect. I ended up going back to do a PhD after only 7 months, because I couldn't take it anymore. It was even more of a drop in income, but it was totally worth it for my sanity.

>tfw im in that 95%
What could or should I do within one year and 18-22 schedule?

Join a hackerspace at your uni and contribute to some project with other people.

There are no worthwhile features in C++ for embedded programming though.

I'd try and do some of those programming challenges to make you think more like a programmer/CS student

At my uni we basically got taught the C syntax, but not much about actually solving problems using programming. Going to teach myself some data structures stuff this summer to try and fill the gap.

Template specialisation and being able to solve branching in compile-time to a certain level of abstraction is pretty neat though.

I wish, im getting conscripted for the year or a half. I will just get weekends off, usually

It's too ugly and syntactically noisy to be really useful, I'd rather make use of a custom preprocessor to generate C code where I can use something like Python or w/e scripting language I want.

>It's too ugly and syntactically noisy to be really useful
"I don't understand the syntax" is not an argument, user. It just means that you're too lazy to learn it.

>I'd rather make use of a custom preprocessor to generate C code where I can use something like Python or w/e scripting language I want.
That sounds absolutely awful, and potentially hell to maintain. In addition, it adds an additional level of abstraction that needs to be tested and evaluated and debugged.

Yeah they make like 90-120k, software developers with a few years experience make more than a senior embedded systems engineer

Literally this lol, embedded is only harder because there isn't an enormous wealth of information readily available and the standards aren't up to snuff

>"I don't understand the syntax" is not an argument, user. It just means that you're too lazy to learn it.
I unferstand it, that's why I say it's disgustingly ugly.
>That sounds absolutely awful, and potentially hell to maintain. In addition, it adds an additional level of abstraction that needs to be tested and evaluated and debugged.
It's less awful ompared to using C++.

It's at the same abstractionlevel as C++ metaprogramming, just with nicer syntax.
Same level of testing.