Do all the things like ++ or -- rants, post your own rants, comment on others' rants and build your customized dev avatarSign Up
Get a devDuck
Rubber duck debugging has never been so cute! Get your favorite coding language devDuckBuy Now
Search - "embedded c"
wk87 is a dangerous topic for me, i've been through a lot. I apologise for what I am about to inflict on this network over the coming week.
Most incompetent co-worker, candidate 1, "T".
T was an embedded C developer who talked openly about how he's been writing code since he was 14, knew all the C system libraries and functions like the back of his hand. For the most part, he did ... but not how to actually use them, as (based on his shocking ... well everything) he was inflicted by some sort of brain disorder not yet fully understood by medical science. Some highlights:
- Myself and the CTO spent 4 days teaching him what a circle buffer was and how to build one.
- His final circle buffer implementation had about 3 times as much code as he actually needed.
- When the code was running too slowly on the device, we didn't try find any performance improvements, or debug anything to see if there was anything taking too long. No not with T, T immediately blamed TCP for being inefficient.
- After he left we found a file called "TCP-Light" in his projects folder.
- He accused the CTO of having "violent tendencies" because he was playing with a marker tossing it up in the air and catching it.
- He once managed to leave his bank statements, jumper and TROUSERS in the bathroom and didn't realise until a building wide email went out.
- He once .... no hang on, seriously his fucking trousers, how?
- He accused us all of being fascists because we gave out to him for not driving with his glasses, despite the fact his license says he needs to (blind as a bat).
... why were his trousers off in the first place? and how do you forget ... or miss the pile of clothes and letters in a small bathroom.
Moving on, eventually he was fired, but the most depressing thing of all about T, is that he might not even be top of my list.
Tune in later for more practiceSafeHex's most incompetent co-worker!!!11
At a friend's party, I met one of the guys I've known from High school, and talk about what we've become:
Him: ...so yeah, now I study CS, I code some C, I dislike Java, blablablablabla I'm coding some OS and embedded software, blablablabla, and you, what do you code in?
Him: but those aren't programming languages? I mean, you can't manage memory, and blablablabla-
Me: Ó_Õ * Quickly dashed my ass off to talk with some ladies and boozed myself to forget what I just heard *31
"We see you have JS experience, how about a job as a Senior C Embedded systems engineer, we can only pay 30$ an hour "2
So I got a call from a recruiter this morning, about a job for a C++ developer what experience developing for embedded systems.
He sent my resume off to the company and they actually want an in person interview the same day.
I'm going to this interview in 2 hours, I'm really nervous, I haven't had an interview in years...
Wish me luck!12
I’m on the bus going to my first day at a new internship as a embedded C developer. Feeling very excited abou it .8
Soooo I think I have finally come to the point that I may have to create a YouTube channel, to teach software engineering from the ground up... and teach it the way the universities and everyone else should be teaching it, so that they have a solid foundation.... throwing hello world, and loops and variables at folks out of the box without any of the environment context or low level embedded register, even logic gate understanding
That lack of understanding is why, soooo many college students and younger folks, are actually pretty shitty engineers. Everything is high level languages and theoretical concepts to them. Nothing practical, that’s why there’s sooo many python and java developers that can’t for the life of them understand memory management, low level hardware interfacing etc, because the colleges don’t teach it the way it use to be taught.
I seriously fear 30 years from now or sooner when there are few embedded engineers only left till retirement, as without those folks the whole pyramid of electronics falls to pieces.
Java, C#, python, all that shit don’t run on the bare metal... there’s this magical layer of C, and assembler that does all the work just so folks can abstract their thoughts.
Either 1 of two situations will happen.. price of electronics will rise because the embedded guys are few and far between therefore salaries skyrocket... OR everything starts running shit like java on the metal, where there are a over abundance of developers, their salaries will be low because there are soo many but the processing power, space, and energy needed to run java natively causes electronics cost to increase
but regardless 30 years from now if those script kiddies are building everything I fear it cuz there’s gonna be memory leaks, and overflow issues everywhere.. shit be blowing up more than 4th of July.. lol
Soooo in effort to prevent that and keep the embedded engineers up, or atleast properly educate the script kiddies, I’m gonna make that YouTube channel.. 1 maybe 2 videos a week, 1-2 hours sessions each.. starting at the fucken ground and building up.42
So I've written the c part for deploying the NN to the drone. Now I have to wait for the guys who are actually the creators of this platform to fix a tiny bug in the quantization process. Then I can test my code and see the 100000 bugs that I have.
Today we presented our project in Embedded Systems. We made our so called "Blinkdiagnosegerät" (blink diagnosis device) which is used to get error codes from older verhicles which use the check enginge light to output the error. (for reference: http://up.picr.de/7461761jwd.jpg ) This was common for vehicles without OBD.
We made our own PCB, made a small database for 2 vehicles and used a Suzuki Samurai instrument cluster for the presentation (hooked up to an Arduino UNO and a relay for emulating some Error Codes)
Got an 1.0 (A) for the project. Feel proud for the first project done in C++ and making our own PCB. So no rant, just a good day after all the stress in the last weeks doing all assignements and presentations.
Next week we hopefully finish our inverse pendulum in Simulink and then the exams are close. :D20
To my fellow 🐍 charmers:
You should see in C to understand C, else you'll never see what's in C. It's a big sea, you better start C. 😍16
There is special hell for people using GOTO in C and even more special hell for people using it in *this* context.11
I am sitting knee deep in Woocommerce/PHP/Wordpress, becasue "you're a programmer, you should know it!" Actually no, I am writing embedded software for devices. In C. I know shit about Wordpress. God help me! Anyway, I found an interesting topic on a forum, go through all the posts to be punched at the end by "never mind, I managed to fix it" without any explanation! I want this guy to be doxxed and punished! Aaaaarghhhh!4
Designer decide to have a meeting with stakeholders about UX/UI workflow for control panel of our new embedded system (no framework, no library, gui is bit per bit rendered on frame buffer).
A week later, still nothing on my table, not a mail, not a call. Meanwhile I wrote a framework, the control system, renderer, and messaging queues between tasks.
Wrote some widgets, a layout system and a view swtching mechanism, and a separate stack control to use a "back" button.
Now I am stuck for I do not know what should happen when clicking on various (non obvious) items on the touchscreen.
Fine, I'll ask the designer.
"Oh, I will write the workflow next week" (ETA time, 2 weeks. Seriously? You take a week to draw on Adobe Illustrator 20 screenshot with text and I have another week to write it from scratch in C?)
Ok, while you write it, just tell me what should happen when I click an active item.
"Well, we didn't talk about that. We just decided the colour of the icons on the screen..."
For fuck sake...8
! exactly dev
I'd ditched Windows and spent a while exploring the Linux ecosystem for content creation. And I have to say, it was not a nice experience.
As much as I respect the Linux mantra of "free as in freedom" and "you need to roll up your sleeves and figure out stuff on your own", it just isn't good enough for non-dev work. Sorry guys, but I need software that gets out of my way and at least does what it's supposed to do. I can't stand a horrible UI or delays and random crashes, which is exactly what happens with most things under Linux.
To replace my Windows workflow I used the following:
1. Windows -> elementaryOS (because Debian/Ubuntu repositories seem to have the best software support, and elementaryOS is the least horrible looking thing that supports that) and then Arch, because, well, Arch.
2. Blender + Maya -> Blender + Maya on Linux.
3. Reaper + FL Studio -> Ardour + LMMS.
4. Photoshop -> GIMP + Krita + Inkscape.
5. ZBrush -> nothing :(
As you can see, my use cases are pretty much all over the spectrum.
Firstly, installing and configuring stuff. A pleasure on Windows, an absolute pain on Linux. Everything just worked on Windows, I had to wrestle with library versions and patches and unstable audio layers (Linux audio just sucks, except for JACK) on Linux.
Out of these, Blender and Maya were the best experience. But even then, both would suffer from random crashes that just didn't happen on Windows.
Ardour is actually really nice when it works. Its use of JACK for routing makes it really really flexible, but it just isn't stable enough to depend on. LMMS is utter crap. I'm sorry, but I just hate the UI. Can't stand it.
GIMP, Krita, and Inkscape can't beat Photoshop, even when you consider them together. Adobe software workflow is just so much better and more intuitive.
Blender 3D sculpting is not bad, but it's nowhere as good as ZBrush.
Also, if you're a C++ dev like me, nothing beats Visual Studio 2017. Nothing. That IDE just blows everything else out of the water. Even VSCode. And it's not slow at all, it handled a fairly large project (PBRTv3) just fine on my Windows development VM. Yes, a VM.
So...I ditched Linux and went back to Windows, but I keep Linux as a VM for when I actually want to mess with Blender or Ardour. Or some dev stuff which Windows sucks at (which is becoming less frequent because of WSL).
Out of all the above, the only one I'd consider ready for production use would be Blender. Developers of open source software, please learn from Blender. Kickass UI and user friendly operation is extremely important, you can't make a random window with GTK buttons and text boxes and arcane config files and expect people to use it for serious work.
Also, Windows beats Linux hands down as an everyday OS. It's always been rock solid, if you take care of it properly (and that goes for any OS). Updates hardly take any time because I run it on a SSD. As for all the advertising and marketing bullshit, you can block a large amount of stuff. And for what can't be blocked, well, I just have to live with it, because the alternative is compromising on my creative output, which is too much for me.
I still run Linux on my server, though. And on my embedded devices (Pi, BeagleBone, etc.). It absolutely rocks there.
I realize that Linux software is not going to improve unless we do something about it, so I'll be contributing fixes and code (the joys of being a C++ dev, yay). Still, I feel that the platform and software as a whole is just not mature enough.18
Next month I'm starting my master studies in embedded systems. Currently I have not any knowledge in this topic (made my bachelor in an other part of IT). Any tips or tricks?
Currently I'm starting learning C++ 😅13
Got an assignment in school to make an easy project in c for embedded real time processors with a free complexity level (it was really early in the course and many had never been programming before).
Since I've been working a few years in development I decided to create an own transmitter and receiver for an own protocol between processors (we had just spent a week to understand how to use existing protocols, but I made my own).
The protocol used only 1 line to communicate with half-duplex and we're self adjusting the syncing frequency during the transmission. I managed to transmit data up to 1 kbps after tweaking it a bit (the only holdback was the processors clock frequency).
Then I got the feedback from our teacher, which basically said:
"Your protocol looks like any other protocol out there. Have you considered using an UART?"
Like yeah, I see the car you built there looks like any other car out there, have you considered using a Volvo instead?1
I felt like being the cause for “that dreaded legacy code“ and wrote 250 lines of C preprocessor macros for generating bitfields in a large header file automatically, with the goal of simplifying and clarifying register access for all peripherals in the end. Then, I found out that SDCC's optimisation for bitfields is absolutely awful (if existent at all), and I don't really want to use these abstractions if they have a performance impact.
Did I deserve that?7
Many people here rant about the dependency hell (rightly so). I'm doing systems programming for quite some time now and it changed my view on what I consider a dependency.
When you build an application you usually have a system you target and some libraries you use that you consider dependencies.
So the system is basically also a dependency (which is abstracted away in the best case by a framework).
What many people forget are standard libraries and runtimes. Things like strlen, memcpy and so on are not available on many smaller systems but you can provide implementations of them easily. Things like malloc are much harder to provide. On some system there is no heap where you could dynamically allocate from so you have to add some static memory to your application and mimic malloc allocating chunks from this static memory. Sometimes you have a heap but you need to acquire the rights to use it first. malloc doesn't provide an interface for this. It just takes it. So you have to acquire the rights and bring them magically to malloc without the actual application code noticing. So even using only the C standard library or the POSIX API can be a hard to satisfy dependency on some systems. Things like the C++ standard library or the Go runtime are often completely unavailable or only rudimentary.
For those of you aiming to write highly portable embedded applications please keep in mind:
- anything except the bare language features is a dependency
- require small and highly abstracted interfaces, e.g. instead of malloc require a pointer and a size to be given to you application instead of your application taking it
- document your ABI well because that's what many people are porting against (and it makes it easier to interface with other languages)2
Ye, so after studying for an eternity and doing some odd jobs here and there, all I can show for are following traits:
* Super knowledgeable in arm/Intel assembly language
* C-Veteran with knowledge of some sick and nasty C-hacks/tricks which would even sour the mood of your grandma
* Acquired disdain of any and all scripting languages (how dare you write something in one line for which I need a whole library for!)
* All-in-all low-level programmer type of guy (gimme those juicy registers to write into!)
After completing the mandatory part of my computer science studies, all I did was immerse myself into low-level stuff. Even started to hold lectures and all.
Now I'm at the cusp of being let free into the open market.
The thing is: I'm pretty sure that no company is really interested in my knowledge, as no one really writes assembly anymore.
Sure, embedded programming is still a thing, but even that is becoming increasingly more abstract, with God knows how many layers of software between the hardware and the dev, just to hide all the scary bits underneath.
So, are there people in here who're actually exposed to assembly or any hands-on hardware-programming?
Like, on a "which bit in which register/addr do I need to set" - kind of way.
And if so, what would you say someone like me should lookout for in a company to match my interest to theirs?
Or is it just a pipe dream, so I'd need to brace myself to a mundane software engineer career where I have to process a ticket at a time?
(Just to give a reference: even the most hardware-inclined companies I found "near" me are developing UIs with HTML5 to be used in some such environment ....)14
So, I'm still not certain if it's actually a bug or merely my lack of experience, but I've been working on a 2D platformer game (using only C++ and SDL2) for roughly 2 years now (on and off; sometimes off for months) and I'm extremely embarrassed about this, but for the life of me, I cannot seem to get the player character's movement and collision physics working properly. It's driving me absolutely insane.
I've read articles and tutorials, referenced books, and posted about it in game development communities (e.g., gamedev.com, Discord servers, etc.), but even though the fundamental structure and explanations made sense, getting the code to work has been unsuccessful, albeit not completely so, but if I get one thing working, another thing breaks. It feels like I'm trying to repair a vase that fell off of a skyscraper and turned to dust on the street below.
I've always been a very tech savvy person with a fiery passion for programming, electronics and game/software/embedded/web development, but to be honest, having such a difficult time with things like this that — in theory, at least — seem like trivial bumps in the road have made me feel like I'm never going to be successful in this field. But regardless of the depressing thoughts of worthlessness, my passion doesn't let me stop trying. Who knows, maybe it'll have to remain just a hobby. 😕6
There are several categories of software development that I know of: front-end, back-end, full-stack, game, mobile, embedded etc., but what is the term for developing libraries and/or CLI utilities in languages like C++, Python, Go etc. that are not related with any of the above? System development doesn't seem wrong but I was wondering what's the correct term for it in the industry because I need to mention it in my resume and on LinkedIn.
Also, if there's a lesser-known category that you work on then do tell us all about it 🙂5
I love the first weeks after a job change. It's just like falling in love, everything seems to be perfect until you take off the pink glasses.
Have to wait until I'm assigned a burning project to have a full picture.
Actually I am in a burning project. Deadline in 2 weeks. Doing Bugfixes which do not require in-depth project knowledge, and... It's fine. All a matter of perspective. I also think that project based work suits me more than usual 15y old legacy enterprise shit. And I'm able to switch. From embedded C++ over hardware dev to fullstack .NET (I consider myself as a full-fullstack dev, able to do everything from hardware to frontend).
Topics such as IOT, medical, device engineering, machine learning. Wow.
It's my first company having >50 employees and multiple offices in multiple countries. I used to jump every 2 years from one shitty garage company to another.
Wish me good luck ✌️2
Any embedded systems software engineers out there with practical experience in writing/designing safety critical applications? (think DO-178B/C) I've got a few years embedded experience under my belt between internships, my projects, and now my relatively new job at a major aviation company, but I feel like I'm behind on this topic of safety and code that can't fail. It's simply not taught and I really want to learn more. Partially it is out of personal pride because I want to make a great product, but more importantly, what I work on is protecting a human life. I really really really want to feel confident in what I build. Is there anyone out there who's got some years under their belt that can point me to some good references? Or maybe some helpful tips? Much appreciated. If it helps, all my work is in C.10
Just read a job posting for a junior .Net software dev. 2 years experience in C#, Visual Studio, .Net. Usual suspects right, though two years experience for a junior seems off. But they also want embedded systems experience. wat?4
I am about to try TDD for embedded C. Does anyone around here tried that? What are your experiences with it? Thanks!10
Anyone here worked a whole lot with low level programming?
I have always worked with high level languages like Python and C++, but I’ve also had an interest in working with embedded systems, real close to the metal.
Any directions on where I should go to start learning low level programming? Sites, languages, etc?
Appreciated devRant fam!😊14
Now that I have your attention. My problem is with "IAR embedded workbench", not so much with windows but I'll get to that.
I've used that IDE for a few years.. 2 years ago. Since then I apparently forgot how to even create a project from scratch with adding all the necessary libraries and all that.
My initial deal with a client was to give them a solution using whatever tools I deem necessary. As I recently moved to linux and IAR is not available for that os.. and I also enjoyed working with CLion and PyCharm which Are available I decide to use CLion to write my C project.
A problem was that to compile code for microcontrollers I need tools unsupported by CLion.. oh well. I can do all the compilation and uploading of the code through terminal .. so I make a bash script that does it all. Super convenient. Development is going well and all.. until they ask me for the project.
I sent them the project so that they can see my progress. They can't do shit with what I gave them because they don't even have make on their machines let alone the compiler. All they have is IAR. But the guy that wants to see the code is not really a programmer.. he is a hardware specialist so I can't expect him to do anything more than use what he knows. He doesn't need or want to learn more right now.
So I go to windows and start porting my code to an IAR project and 2 days later I am still stuck with it. FUCK. Not only was the installation process horrible but the tools I wanted to install additionally did not work as promised either.
I know it took me about 2 days to setup all I needed on linux but I was enjoying it every step of the way. While this garbage is frustrating me so much. The fact that I used to do it before adds to the pain.
I am this close to telling them to just look at my code in notepad and I can setup a vm for them in which they can compile it if they really really need to.
If they just told me from the very start that they want me to work with IAR that would have been fine. I would have never seen the easier way and would have gladly figure it out then. Not now.1
Project Manager: "C++ has become much better for embedded now so we're gonna use it in the new project."
Me: "I didn't C that coming."
I know it's silly but I'm proud of it 🤓
Is there any hope of getting a job that isn't web related? Every embedded job I've seen requires years of experience. I just want to write C dammit.2
I just had to quit a part time programming job because I couldn't do it. I'm not really sure how I feel, there were alot of factors.
I took an internship about a year back to do some embedded C. I kicked ass and developed a system that really solved alot of problems for the company and so people started giving me "the hard back shelf problems". Like those problems that are really valuable if someone can get it working but not so important that it blocks anything day to day. Totally fair work for an intern, that is both complex and interesting.
When school started I took a part time remote role working on one of these problems. Fast forward to now (few months of remote work at school); i can't handle the stress. If I devote more time to work I fail a test. If I ace a test my work duties go neglected. On top of that my boss misses scheduled calls with me left and right, I even reminded him everyday 3 days before hand once!!!
Naturally I started feeling like I should quit. I was no longer interested in the work from a pure academic view, and emotionally hated doing it. However, since I was a good performer this place offered to interview my little brother!! Fuck, so do I choose my happiness or my brothers. It feels evil to choose myself over my brother. My brother, he's just a freshman so I know his odds are very low of getting an internship this year are low. And the place I worked at had some weight in the name so I could seriously jump start my little bros career. I do know however that if I don't quit that I will fail school, and do it while being miserable.
And so I quite my first remote job, from my first internship. I feel happy about, but also like I let someone down (them?, Me?, BROTHER?).1
I'm new around here and I'm part of the niche of embedded software developer.
Is there any fellow MCU programmer around here?
Have a great night everyone!7
I've been noticing that without any specialization development can become repetitive, as in, a bunch of fancy ways of doing the same CURD operations.
Something that just calls me is low level development, wether it is embedded development (microcontrollers and such) or Linux Kernel and device drivers. I've been polishing my C skills for a while now and started to look into kernel development and uff, is it overwhelming!
I just wanted to see if some of you guys are or had experience in system development and how you got there. Thx!3
I've just started freelancing on PeoplePerHour. I'm in talks to secure a job migrating a C# webapp to a desktop scenario using HTML5 embedded within WPF, but I've never done this as a solo project before. What sort of price is sensible to charge for this? I'm working in GBP1
I haven't chimed in on this spaces vs tabs war at all on this platform, mostly because I personally don't care and adapt to my work's/project's conventions, but I just have to put this out there now.
I am honestly so confused about the entire thing since seeing a lot of recent rants on the topic. I was originally conditioned to believe that the majority of devs in the world were FOR spaces over tabs. Thus, whenever I start a project, I default to spaces.
Contrary to that, it seems most devs here (or at least those who enjoy instigating some banter) actually prefer tabs. Now, I recently binged Silicon Valley and can't help but wonder if people around here are simply jumping on that band wagon for the sake of the joke.
Side note: I also thought Vim was more widely used over Emacs but Richard Hendricks asserts otherwise there too.
I know the main arguments for both sides - spaces yield code that looks the same in all editors while tabs produce smaller code. Anybody who argues that spaces are less efficient because you need to physically press the space bar 2/4/8/etc times is just retarded. If soft tabs weren't a thing, I don't think anybody would be on the side of spaces and for that reason I believe that episode in Silicon Valley was just trying to be overdramatized and push peoples' buttons.
I'm actually interested to find out what kind of environments breed these opposing mindsets so what do you guys think?2
Not much tops the orgasm from powering thru 500+ lines of code in the zone... in vim...no debugger.. and without compiling just visually seeing in your mind the assembly be generated... and code being stepped thru.. and then compile and test and everything works as expected.. not sure anything tops that feeling ... definitely have to be in the zone.. one distraction and boom gotta compile to make sure nothing broke3
Debugging is not about process, it's about end.
(I just finished two week long debugging session - approx 5 hours a day. It was nasty bug appearing only with optimalizations in embedded C, you can imagine joy when it came to life tonight. So now I am resting at pub with glass of cider knowing I am loosing needed sleep but I simply do not care right now. Sweet careless.)2
Definitely landing the first real gig.
I've been writing software since I was 12 (full disclosure: early code consisted of C=64 BASIC). I learned C in high school. Contributed to a MUD in my 20's. But I never got a CS degree and didn't really understand how hiring works, so I limped along doing technical support for years. Years turned into decades.
About 2 years ago, I became an embedded support person inside a development team. I got to show off my skills, and the year effectively became a live interview. Last October I finally got the title.
On the positive side, by taking the long way around I missed out on some of the insanity of the software world in the 90s/00s.2
I'm thinking of designing a programming language.
I want it to have easy to read syntax like python. Inheritance and interfaces like java. More advanced concepts like pointers and memory management like c++.
I was originally going to write my own compiler but I figured it's not worth reinventing the wheel. So the current plan is to basically just create a parser that turns a source file into c++ code and then that is compiled with g++. The only problem I can think of with that is catching runtime errors.
How does this language sound?
My purpose is to have a language that is as easy to read as python but with the speed of a compiled program and the ability to use it for embedded projects. I feel like reading larger C++ projects can be quite time consuming. So I figure the trade off of taking a little longer to write the code to make it more obvious what is going on is better than having a lot of syntax that can be tough to walk though the logic of (I find this often with c and c++, not like I don't figure it out but It definitely takes longer than it does to read and understand python)4
After debugging my embedded code for five hours my teammate just sent me a message "I just commited the latest PCB". Well thanks, after looking at the new layout I got the initial code working by just changing one variable!
A lecturer for an Embedded Systems module who gave out drivers for an LCD display with no documentation at all, and about 4 functions for writing to the display and 3 initialisation functions, spent ages trying to actually decide what each function did by which memory addresses it was changing and how (made even better by the fact a good bit of the functions were written in Assembly since it was Embedded C)🙃
Hey remote workers.
What would be your advice for someone with experience that's interested in exploring remote work.
I'd like to target this question to remote workers that live outside USA/EU/UK. Say South America, South Asia.
A little introduction.
I'm a full stack engineer, did one project in embedded systems with QT/C++/RPI can do backend in Python, Node, Java, C#. I have some experience with React Native (just 2 apps)
I currently I do full stack with Node, React, postgres and caching with couchdb.
I gather requirements, write the projects, proposals and then I do the implementation. (Really full stack, I kinda like it though, when I'm bored with code I pick up an issue and contact the client to socialize/get answers. I found out that nondevs like to feel they talk to a human not a robot)
I'm making about 600usd/month (dev in a poor country) working 30hrs /week. I'd like to ramp up my income, working remote part time to fill up about 50hr week.
What can I expect?
Where do I start?
Are there part time opportunities for working remote?
What kind of roles are in demand?9
Pardon the rant; some of it can probably attributed to me, but please indulge me of you could.
Moral of the story: don't take the easy way out.
Fixed moral of the story: don't take the easy way out, unless you should.
"Language is the amber in which a thousand precious and subtle thoughts have been safely embedded and preserved. " - Richard C. Trench
Vent-rant. Fuck Wordpress and PHP and overly limiting css frameworks in their greasy unstable fucking assholes. I find embedded and / or game-dev C++ waaaaay more fun and pleasant, and logical than this fucking pile of cuntfuckery. I think I'm gonna switch my job, hopefully there's some C/C++ companies in my area.1
I did some cool projects with node JS.
We had this project where we had several embedded sensor box components communicating via a node js server backend with some fancy visualization.
And one of the guys was a total idiot. His part was to write some embedded code for a sensor box. He also wrote some data receiver in C# which was a totally over patterned mess and nothing worked.
For some unknown reason this guy made me his arch nemesis. He also never liked the team. While the rest of the team actually was super cool.
So in the final presentation out of a sudden in his part of the presentation (He had a Mac and had his slides done in some nasty whatever incompatible format) he pulled out some slides with code metrics. The best part was where he compared the embedded C code with my js code in terms of cyclomatic complexity. I will never forget this moment. Some nice bar chart.
Good I loved that guy for this moment.
And that made my year!
There’s somewhat of a magical moment when you teach the interns how to turn their huge switch statement into a function Pinter branch table....
Eliminating shotgun surgery as the project advances and new features are added to a module.
Colleges definitely don’t teach students certain things... and when I end up teaching them... the excitement and ideas they come up with are always great.. and they always end up with a stronger understanding of things.
(Embedded company .. all software here is C or C++) yes we use the optimizer.... sometimes you gotta do seemingly complex things to improve readability and maintainability.
Oh... I dont know what to pick...
So i will pick 3 projects from my 3 stages of my dev "carrier"
1.Right after i discovered programing and learned how ,if, while and similar structures worked. The launguage was object pascal with delphi 2007
That was a "safe" with a stupidly complicated lock (text inputs, sliders, ect) it opened a secret folder in the end.
2. It was a embedded code for a Atmega8 AVR, Atmel studio, pure C but without memory managment (i didnt even know that it even existed)
It was a Pip boy knockoff, 16x2 display and a small keyboard connected to the arduino like board that i made on a proto board.
It wasnt that much of a pipboy, it was more of a showoff of atmega8 internal systems, (ADC, timers, interrupts and such)
3.DataLab, after helping my friend with his master thesis, (we meet on discord long story, i was in high school) i decided that mathlab is shit and i created a visual scripting enviroment, launguage C# .net 4 (in the latest version)
I remade the whole program from scrach 1 time, significantly improving everything (code reuse, better algorithms, data processing, code redability and edge cases) I have learned good practises from everywhere. I learned how to use git.
DataLab project looks just like LabViev (i didnt notice that it even existed...), it is frozen now because of my mental status but im planning on using it on my CV when i will be looking for jobs on holidays. There are many things that i can improve in that program but ... first i have to fix myself.
TLDR, need suggestions for a small team, ALM, or at least Requirements, Issue and test case tracking.
Okay my team needs some advice.
Soo the powers at be a year ago or so decided to move our requirement tracking process, test case and issue tracking from word, excel and Visio. To an ALM.. they choice Siemens Polarion for whatever reason assuming because of team center some divisions use it..
Ohhh and by the way we’ve been all engineering shit perfectly fine with the process we had with word, excel and Visio.. it wasn’t any extra work, because we needed to make those documents regardless, and it’s far easier to write the shit in the raw format than fuck around with the Mouse and all the config fields on some web app.
ANYWAY before anyone asks or suggests a process to match the tool, here’s some back ground info. We are a team of about 10-15. Split between mech, elec, and software with more on mech or elec side.
But regardless, for each project there is only 1 engineer of each concentration working on the project. So one mech, one elec and one software per project/product. Which doesn’t seem like a lot but it works out perfectly actually. (Although that might be a surprise for the most of you)..
ANYWAY... it’s kinda self managed, we have a manger that that directs the project and what features when, during development and pre release.
The issue is we hired a guy for requirements/ Polarion secretary (DevOps) claims to be the expert.. Polarion is taking too long too slow and too much config....
We want to switch, but don’t know what to. We don’t wanna create more work for us. We do peer reviews across the entire team. I think we are Sudo agile /scrum but not structured.
I like jira but it’s not great for true requirements... we get PDFs from oems and converting to word for any ALM sucks.. we use helix QAC for Misra compliance so part of me wants to use helix ALM... Polarion does not support us unless we pay thousands for “support package” I just don’t see the value added. Especially when our “DevOps” secretary is sub par.. plus I don’t believe in DevOps.. no value added for someone who can’t engineer only sudo direct. Hell we almost wanna use our interns for requirements tracking/ record keeping. We as the engineers know what todo and have been doing shit the old way for decades without issues...
Need suggestions for small team per project.. 1softwar 1elec 1mech... but large team over all across many projects.
Sorry for the long rant.. at the bar .. kinda drunk ranting tbh but do need opinions...
So I was working on Nex Robotics's Firebird V,
Was doing some graph traversal thing...
And was breaking my head for 28hrs... I was passing the bot an structure of direction and no. Of times it had to take that direction...
something like for(int i=0; i<dir.times;i++)
And after 29 hrs I realized it also had negative values...
that effing abs() was missing 😫4
Why those f***ers in Freescale was unable to keep architecture same across their product lines? Why has KL25Z completely different archtecture than KL28Z? Registers are renamed randomly, peripheries removed and added with different architecture... That naming is just happy coincidence not same line in their products...
This porting is gonna be fun.
We have a C++ for embedded systems training at work this week.
References are a good thing but after looking for the reason why one object has no reference to the other for half of an hour just to realise that my member wasn't a reference so that i got an copy gave me the urge to use pointers instead. But unfortunately we'd to use a reference in this simple exercise which cost me a lot of time because that damn reference.2
memcpy to fill a struct in an environment that should run on both big and little endian HW...
Yep that guy went on to project management. 😂
Any c++ embedded system programmers here.what kind of work do you do ,what are your daily tasks etc.and what boards do you use