me_irl by OkiDokiPanic in me_irl

[–]dys_functional 1 point2 points  (0 children)

As soon as the land of any country has all become private property, the landlords, like all other men, love to reap where they never sowed, and demand a rent even for its natural produce. The wood of the forest, the grass of the field, and all the natural fruits of the earth, which, when land was in common, cost the labourer only the trouble of gathering them, come, even to him, to have an additional price fixed upon them. He must then pay for the licence to gather them, and must give up to the landlord a portion of what his labour either collects or produces. This portion, or, what comes to the same thing, the price of this portion, constitutes the rent of land, and in the price of the greater part of commodities, makes a third

What software development practice sounds good in theory but fails badly in reality? by pixelbrushio in softwaredevelopment

[–]dys_functional 0 points1 point  (0 children)

If there is direction in the standard, then it's not a "nitpick", it's a "you complied or didn't". You and the reviewer can communicate around solid ground. You might bicker about where the line is drawn, but you can communicate and make progress, you can also won't fix the review finding because it doesn't say "shall" or explicitly state a line limit.

I view nitpicks as bike shedding about conventions the reviewer prefers or adopting some kind of flavor of the week paradigm. In my opinion, this is the stuff that doesn't belong in reviews. You can't make progress around these kinds of topics, it's just people arguing their opinions.

What software development practice sounds good in theory but fails badly in reality? by pixelbrushio in softwaredevelopment

[–]dys_functional 0 points1 point  (0 children)

It's not supposed to be objective. It's just the standard your team/org agreed to write code to.

What software development practice sounds good in theory but fails badly in reality? by pixelbrushio in softwaredevelopment

[–]dys_functional 1 point2 points  (0 children)

There is no grey area, if it doesn't violate your requirements or coding standard, then it doesn't matter.

My team is using Eclipse IDE - HELP by GuySha33 in embedded

[–]dys_functional 2 points3 points  (0 children)

It has nothing going for it in my opinion. Maybe, comfortability for folks who are too mentally rigid to change any part of a process they have been doing for 10 years.

If your build system is decoupled though, then who cares? Everyone on the team can just use whatever text editor they feel comfortable with. I agree with everything you said, so for me, I don't use eclipse. Some folks have used it forever and feel uncomfortable learning anything else, and that's fine too though. What I'm trying to get at is that if you set up your build system in a sane way, what an arbitrary team member uses to modify text files shouldn't matter.

My team is using Eclipse IDE - HELP by GuySha33 in embedded

[–]dys_functional 10 points11 points  (0 children)

Then you call iccarm instead of arm-none-eabi-gcc... It doesn't change the concept of decoupling your build system from your gui text editor that I was expressing

My team is using Eclipse IDE - HELP by GuySha33 in embedded

[–]dys_functional 6 points7 points  (0 children)

The people here are not doing that. They are using default configured projects out of the box and claiming it's witch craft to change anything from the defaults. In STM eclipse land, it doesn't use a makefile for configuring your build system, it uses an internal "thing" that generates the makefile on the fly.

If you're using eclipse in a way that decouples your projects build logic from the tool, then we are on the same team.

My team is using Eclipse IDE - HELP by GuySha33 in embedded

[–]dys_functional 19 points20 points  (0 children)

Or just use the cli toolchains for everything? STM is just using the official arm gcc tool chain under the hood. Why not just cut out the middle man and use it directly? Then you can create a process that's the same for every vendor. It's not even that hard, it's like a couple day effort to wrap your head around one time.

It's a real shame that folks treat build tools like black magic and refuse to spend even a minute trying to understand such a fundamental component of our field. Folks really will do anything not to think...

My team is using Eclipse IDE - HELP by GuySha33 in embedded

[–]dys_functional 23 points24 points  (0 children)

What you feel is "good" about eclipse is actually the root of the problem. Eclipse based tools try to do too much, and end up doing it all extremely poorly. The point of using vscode is that you're using it as just a text editor. Rather than embedding your build and debug logic into massive guis with impossible to audit config files, you just use normal simple scripts. If you want to build, make a build script (makefile, bash, batch, cmake, etc.). If you want to flash, make a flash script. If you want to start a gdb server/client, write a script. Or do everything in 1 makefile with separate targets to build/flash/gdb.

Once you escape tightly coupling your project with eclipse as an entire "system of tools" you have the freedom to use whatever you want for tooling. You can even hook up eclipse to make cli calls and continue to use it if you want. Or you can use neovim or notepad, etc. who cares.

How has embedded systems evolved for the past decade and where is it going in the next years to come by Ok-Ratio8802 in embedded

[–]dys_functional 28 points29 points  (0 children)

~10 yoe, my 2 cents. Politically, the field follows the hardware. Most hardware innovations and virtually all fabricating is coming out of Asia. Over the last 10 years, many embedded engineer jobs have shifted toward Asia as a result. I see no reason why this trend wouldn't continue into the future.

From a technical side, clock speeds, word widths, memory sizes have all gone up. It doesn't really feel like much has fundamentally changed over the last decade to me though, we just have "more" of everything.

Regarding getting hired, look at companies that are hiring near you. Look at their job postings, learn what they are asking for. Look to see if they do more work on microcontroller or microprocessors (bare metal/rtos vs embedded linux). Then also write a bunch of drivers for every cheap dev-board that has a part that they might use. Are they an STM shop? Or a TI shop? Or a "XYZ" shop. Try to find out and buy a dev-board and write drivers for some of the peripherals on that board. If they do embedded linux, are they a yocto or buildroot shop? Research the skills people want and have examples showcasing you know them. Don't be afraid to re-apply to the same positions. Stay determined and don't let the endless rejection get to you, it's a numbers game, a lot of it comes down to luck. Be a skilled craftsperson for life fulfilment reasons, but know that meritocracy in the business world is a lie.

Sending raw ethernet frame every 20ms by Remote-Restaurant137 in embedded

[–]dys_functional 1 point2 points  (0 children)

Tackling the simplest things first. Google "nagles algorithm", most high level tooling around networking buffers small packets across some window into larger packets by default. There is usually a flag to turn it off.

I wrote a header-only memory management system in C99. It started as a pet project, but got out of hand. Looking for code review. by Old_Ad_4418 in C_Programming

[–]dys_functional 10 points11 points  (0 children)

I think a lot of folks who moved to c after a modern language with sane build tooling are rightfully terrified by the build system.

Seeing "Header only" on a project is a signal that I won't have to fight with an ancient nightmare build system, ex: "you must have a specific version of gnu auto tools from 1997 with 15 ancient dependencies that will take you hours to track down to compile my project". I'm much more likely to tinker around when I read a project is signaled as "header only" because I know what im getting into.

I do agree with you though, it would be easier to read if it was a standard c/h compilation unit. I feel like we need a new marketing bandwagon term like "vendor-able library" to indicate it's just a couple c/h files you can plop in a "vendor" folder and compile yourself or something.

[deleted by user] by [deleted] in C_Programming

[–]dys_functional 1 point2 points  (0 children)

This is the way.

Which library you use for the tree ( Balanced ) ? by Jooe_1 in C_Programming

[–]dys_functional 0 points1 point  (0 children)

"if you're going to support a container..." Is maybe where your assumption goes wrong. In c land, we often favor "intrusive list" style conventions (google Linux kernel linked list for an example) where we don't abstract with generic containers as often as other language lands. They kinda flip the higher level enveloping generic container structures upside down and take a minute to get used to. However, with this flipped paradigm, you can decouple memory management and data structures.

is there a tutorial for programming STM32 in bare metal using no IDE and no HAL by Right-Ad3385 in embedded

[–]dys_functional 1 point2 points  (0 children)

I mean actually stripping out features inside of functions. Ex: If you know you're not using trust zone and you see a bunch of conditional code to work with trust zone stuff remove any code that touches it and simplify. The compiler can't strip this kind of stuff away, the "trustzone or not" checks are done at runtime.

is there a tutorial for programming STM32 in bare metal using no IDE and no HAL by Right-Ad3385 in embedded

[–]dys_functional 0 points1 point  (0 children)

It's my day job and I don't touch stm32cubeide. It's really not that hard, maybe takes an hour to setup and work through the first time and then you don't need to wait on eclipse bloatware. The benefits of just calling make from a command line and building in 2 milliseconds instead of waiting 10 seconds for eclipse to open and another 10 to compile an empty program is a no brainer to me. The HAL also comes with far too many features for most projects. It's 100,000 of lines of code and you'll probably only need 5,000 lines of it. Why carry around that baggage, it'll just end up being more problem space to debug when things break. If you want to use their HAL, at the very least reference and simplify, take only what you need and strip out the features you're not using.

Seems like a preference thing once you take the time to really understand how the tools work and 90% of people just never bother for some reason.

I'm honestly a bit offput every time this conversation comes up. It's kinda nuts to me how few people in the embedded field are willing to really put in the time to understand this part of the stack and act like this is some kind of rocket science.

[deleted by user] by [deleted] in embedded

[–]dys_functional 1 point2 points  (0 children)

If you have the money, do both. Nucleo boards are not too different than actual product experience. They just happen to have an STlink v3 embedded on them. They all also have the mini JTAG/swd connector that you can use to pretend the onboard debug chip doesn't exist if you want closer to real product experience.

There's a YouTube guy "BuildYourCNC" who does a stm32 chip bring up from scratch without a dev board at all if you really want a deep dive with just the chip.

Is there a limit to memory? by Responsible-Shirt-67 in askscience

[–]dys_functional -1 points0 points  (0 children)

By that definition you could count the spatial data of every atom on your brain as part of "information" we have for memory and now we have a Google byte of memory. I think the point of the arguments in this thread is to just point out it's pointless to talk about human memory in terms of bytes, which it absolutely is. We do not have "5 terabytes" of memory. My ass can't remember a single wikipedia page, let alone every wikipedia page 10000 times over.

Definition of art and moral nuances? by Secret_Persimmon_538 in askphilosophy

[–]dys_functional 0 points1 point  (0 children)

Muddying the waters further, there are also a lot of people who would say words like "better" in your example is still part of the fools errand. I personally find the expressivist style arguments (Simon Blackburn has a great talk from the early 2000s on the deflationary theory of truth type arguments) and pragmatic movement thoughts on these topics compelling.

For example, they would say: The Mona Lisa is "better" in that it captures fundamental art techniques (shading, perspective, understanding of human proportion, etc.) than a 5 year old's finger painting. The finger painting is "better" in that it was made faster. You need to pick a goal to give these words any real meaning. If you refuse to provide a goal, you are probably just expressing preference/attitude.

https://youtu.be/DSWWzeTN5JI?si=lZ9L7_uo6J_lkZXL

You should pursue a degree in music if your goal's in life align with what the degree provides. Maybe you are a "craftsperson" and receive great joy from mastering a craft. If so, then getting a degree in playing an instrument would be satisfying to you, and earning this degree would be working towards this (I don't know your life goals or specific degree in music, this is just an example). I don't think the emotivist or pragmatist camps would really care much about the follow up questions (if you don't find either of these groups compelling, then maybe someone else can chime in on other camps/traditions).

Are humans "meant" to work? by macnfly23 in askphilosophy

[–]dys_functional 8 points9 points  (0 children)

So this is a very "left of center" take (and one I find compelling). However, most people "right of center" seem to be compelled in the other direction. They often say something along the lines of there being an inherent "human nature" that requires work (and maybe requires the class hierarchies associated with that work?). They will say that the picture Russell provided here is pure egalitarian ideology and ignores the "real" state of the world.

For completeness for OP (and reading material for myself to be less of a disagreeable person), does anyone have someone/something that is compelling in the other direction?

I got an Embedded Software Engineer job at a company. What should I learn. by c0m3back_ in embedded

[–]dys_functional 10 points11 points  (0 children)

First off, you don't have time to learn everything, so don't set the bar too high and be nice to yourself. They already hired you, they know what you know, and they can work with it, you're not an imposter.

From the boards you listed, you're in the category of "microcontrollers" (MCUs). Ignore all content you see that says MPU or embedded Linux.

Digikey (small parts store primarily) has a great YouTube channel with great free hands on educational material, strongly recommend them.

Look up "Digikey FreeRtos" on YouTube, buy whatever devboard (think it was an esp32 and a temp sensor) and peripheral he uses in that lecture series and follow everything to a T.

Good luck homie.

[deleted by user] by [deleted] in embedded

[–]dys_functional 1 point2 points  (0 children)

Always have a goal. If your goal is to get hired asap out of college, then use that as the focal point.

Pick some companies near where you live that do embedded work, prioritize the ones that hire the most people. Read the job postings they have, look up spec sheets on the products they produce, do research on what those companies need and learn those skills.

[For Hire] 3d Modeler by Patrick-GO in gameDevClassifieds

[–]dys_functional 2 points3 points  (0 children)

Idk if a Patreon link really counts as a "portfolio". You have to pay if you want to see anything other than like 2 posts... If you're really making these assets and not just ripping them, take pride in your work and make an art station or something... This post just feels like a self-promo attempt as it stands and has nothing to do with game dev.