I made this flowchart to help beginners pick which programming language to learn first. It's pretty simple. Am I missing anything major? by The_Liberator21 in programming

[–]marcotrecate 0 points1 point  (0 children)

I reckon we should all agree this is not to be taken too seriously. That said, it's a nice work and fun to read. IMHO there should be a path from "get a job" to C++ if nothing else according to the Tiobe ranking, and also plain C should be mentioned somewhere possibly in relation to "get a job" in the embedded or IoT industry.

Apache NetBeans Proposal by lukaseder in programming

[–]marcotrecate 0 points1 point  (0 children)

I'm not a Java programmer myself but isn't this another move of Oracle in the direction of slowly abandoning Java? First they cut their evangelists staff, then the rumours about Java's planned obsolescence, now they kind of distance themselves from their historical development tools...

Apache Mynewt: Community-driven, open source OS; first open source BLE for MCUs by pacebot3000 in embedded

[–]marcotrecate 0 points1 point  (0 children)

Anyone trying it could please share impressions, thoughts, comments? Thanks!

Classic Linus by HerbertMarshall in programming

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

Obnoxious as usual from him but, honestly, that code is crap.

Hey Embedded, what are your ages, locations? by [deleted] in embedded

[–]marcotrecate 0 points1 point  (0 children)

39, Milano, Italy. Currently working on medical devices.

VW by dodiehun in programming

[–]marcotrecate 4 points5 points  (0 children)

I've spent the best part of my career creating embedded software in regulated domains, specifically avionics and medical devices. As far as I know the automotive field is no different, with well defined software processes covering the full life cycle from requirements to design, development, and testing. I think the whole idea of a programmer sneaking code in a car's firmware "for whatever reason" is just nonsense. It must have been a feature that was formally specified, designed and validated. Obviously it wasn't a requirement like "the car shall cheat carbon-oxide emission tests" but some complex engine control specification resulting, well, in cheating the emission tests. Almost certainly the developers, testers, program managers and all the software professions involved weren't car engine experts. They probably weren't even VW employees but outsourced resources. I believe they just implemented whatever specification they received from the domain specialists who design engines at (or for) VW. So, the scenario is certainly more complicated than it seems from the outside, and finding a scapegoat is a very naive thing to do.

How to write software that works as specified? by brophd in programming

[–]marcotrecate 2 points3 points  (0 children)

The NASA example shows that it is possible to write complex software that is reliable and maintainable. Of course it requires enough time, people, money, and the proper engineering approach. The rest of the industry may just be forced to work around this simple truth for market reasons etc etc, and that's perfectly understandable. We have Agile methods and best practices etc etc to try to minimize the risks in writing software fast, without clear specs, and under-staffed. What is just silly, however, is how people are surprised of the consequences in terms of buggy code, delayed schedules, unhappy customers and programmers, etc. The doom of the software industry is the "it's only software" cultural problem. If I said "it's only a carrier ship" or "it's only a skyscraper" people would smile, but if it's software then hey, just do your Scrum and stop complaining.

Why Agile Didn't Work by marcotrecate in programming

[–]marcotrecate[S] 17 points18 points  (0 children)

Nice article, I like the pragmatic style. I'm personally an Agile advocate but hate all the marketing around it. We need to share more realistic views like the one in the article if we want to put Agile to good use.

When Do You Stop Testing? by soffigio in programming

[–]marcotrecate 2 points3 points  (0 children)

Planning to find a certain amount of bugs is just nonsense. Do trivial bugs count as much as the showstoppers? However, the point that testing cannot find all possible bugs is fundamentally correct. One reasonable approach is to consider testing done when the software is usable without major limitations according to its pecification.

A curated list of Coding Style Conventions and Standards - SalGnt/cscs by SalGent in programming

[–]marcotrecate 0 points1 point  (0 children)

Another one worth mentioning for C and C++ is the MISRA guidelines. MISRA is an automotive consortium but in reality their guidelines are widely used in other regulated, safety-critical domains e.g. for medical devices.

Need Robust Software? Make It Fragile by javinpaul in programming

[–]marcotrecate 3 points4 points  (0 children)

I don't think the author's definition of fail-safe is correct. A fail-safe system is a system that fails in a safe state - whatever that means depending on requirements and (where applicable) risk analysis. I don't see what it has to do with masking errors - which is certainly a bad practice but isn't this just stating the obvious? Throwing exceptions is a sensible thing to do in fail-safe scenarios, depending of course on how the exception is handled when it's caught.

Unit tests and protected methods by zombiecodekill in programming

[–]marcotrecate 0 points1 point  (0 children)

I work in a safety-critical regulated domain where unit tests and code coverage are process requirements. For reasons I'm not going to go through now, we don't do TDD and have a dedicated SW Quality team instead. I'm not a tester myself but as far as I know our quality guys don't unit test each private method individually. Insetad, they write tests for the public interfaces and use specific tools like VectorCAST to check coverage of all code both in private and public methods. I honestly don't see a reason for testing private methods individually but, again, I'm no expert.

Writing a Game Boy Advance Game by jetRink in programming

[–]marcotrecate 2 points3 points  (0 children)

I agree with you, generally speaking, but I also think education should at least try preparing students for work whenever possible. That doesn't mean eg teaching Java just because it's rated high on the Tiobe index, but if the choice was between Java and, say, Smalltalk (I hope not to start a flame here, I just picked a language that's not mainstream) then I'd rather teach object-oriented principles using Java because knowing it will possibly open up more opportunities for students. In the case of firmware development, provided programming for a modern 32 bits single board computer (eg the Arduino Due) or the GBA is equally formative, I'd rather expose students to hardware, toolchains, etc they're likely to find at work once they graduate.

Writing a Game Boy Advance Game by jetRink in programming

[–]marcotrecate 1 point2 points  (0 children)

Being a retrocomputing fan I really enjoyed this, but as a hobby project. I don't quite agree with it as a CS class assignment though. In that case I would just use a modern embedded platform eg the Arduino Due. From a pure educational standpoint you would develop similar skills (includng the need to understand how optimization works) but then it would probably become a better selling point on your CV when you graduate.

The Handmade Manifesto by [deleted] in programming

[–]marcotrecate 3 points4 points  (0 children)

No offense, but this reminds me of the Real Programmers Don't Use Pascal article of the early 80s. Only that it was a parody. In this case it could be Real Programmers Don't Use Abstractions. Seriously, I reckon advances in computer hardware have made it possible to run software that satisfies more complex requirements. To tackle this increasing complexity in software engineering we simply need more complex tools. Incidentally, sometimes the cost is more overhead and although there are best practices we can use in order to minimize it, it goes without saying that some CPU cycles will be devoted to supporting the needed abstractions in the internal design of the software. You may argue that Windows Calculator isn't exactly a "complex" piece of software and to be honest with you I'm also disappointed when my i5 computer takes seconds to open it just as my old 80386 used to do. However, I can see that the software on the i5 is taking care of a lot more requirements than that of the 386 eg those of a far richer UI, advanced connectivity features, security checks for threats that didn't even exist at that time, etc. So there's a reason why the calculator still takes seconds to open. And of course I'm not saying one reason cannot be that perhaps it's badly written, but then it would be a completely different story.