Domain: mathworks.com
Stories and comments across the archive that link to mathworks.com.
Comments · 188
-
Re: Tres Fucked.
You know that Simulink can link to software requirements.
https://www.mathworks.com/solu...
Requirements tracking with code gen is trivial. You can trace everything both ways.
-
Re:Julia anyone?
You can write code similar to Matlab
MATLAB is a terrible example of an "easy to learn" language. It's full of shitty hacks like "putting a semicolon after an expression suppresses output; deleting the semicolon causes the expression to dump its output to console." It's loaded with arcane semantics like the differences between a normal array and a cell array. For fuck's sake, it permits semicolons in the middle of a parameter list, like this.
MATLAB has the quintessential property of an overdesigned language, which is: if I leave it alone for a few months and come back to it, I have to re-learn the whole damn thing. The syntax, the library, and the UI are all unintuitive and illogical. I rely heavily on my cheatfile that I've built up from this iterative exercise to get back up to speed faster. I don't have to do that with Python or C.
or Numpy
Numpy is a terrible example of an "easy to learn" API. Numpy arrays use semantics that are logically similar to Python arrays - but of course they're nothing like each other, none of the libraries work the same way, etc. And And some core features are so poorly documented that you have to dig through sample code until you find something that vaguely resembles what you wanna do, and then shoehorn it into the shape you want. And if you want to stare into the abyss of insanity, try looking into using the Numpy array-sharing options to circumvent the cross-thread limitations of the Python global interpreter lock.
Don't get me wrong: both are powerful and fun when you're acclimated to them. My first Numpy experience was porting a super-simple image processing technique, and my amateur, first-attempt Numpy code finished 10,000 times faster, and that's not an exaggeration. But they're both crappy languages from a model-of-clarity-and-consistency perspective.
-
MISRA Comparison?
Can anyone compare this to what Embedded has been doing for a while in functional safety?
https://en.wikipedia.org/wiki/...
It's why Mathworks makes stupid money off of Polyspace Static Analyzer.
https://www.mathworks.com/prod...
https://www.mathworks.com/prod...
On top of that there's also the Barr Group's Embedded C Coding Standard.
-
MISRA Comparison?
Can anyone compare this to what Embedded has been doing for a while in functional safety?
https://en.wikipedia.org/wiki/...
It's why Mathworks makes stupid money off of Polyspace Static Analyzer.
https://www.mathworks.com/prod...
https://www.mathworks.com/prod...
On top of that there's also the Barr Group's Embedded C Coding Standard.
-
Re:Just Finance?
We share MATLAB code in my company all of the time. That's why Mathworks makes a compiler.
-
Re:Let's re-invent hammers and nails
If you're not even using C yourselves,
They are. Turns out Simulink writes perfectly valid MISRA code.
One of ESR's 17 Rules of Unix is the "Rule of Generation", states that:
Developers should avoid writing code by hand and instead write abstract high-level programs that generate code. This rule aims to reduce human errors and save time.
It's making us misrable.
How dare they force you to write better code.
-
Re: Jesus Christ...
I too work in embedded: automotive, industrial, and aerospace. How many of your embedded projects were AUTOSAR, ISO 26262, or DO-178C certified?
I have never, not once, seen Simulink or Matlab used in a final product.
Bragging about your ignorance just tells me more about your line of work than it does anything else.
Here's an SAE paper from 2004: https://www.mathworks.com/tagt...
-
Re:"Knowing" Rust without paying attention.
The magic is in Rust's type system.
While type constraints and iterator abstraction can avoid the need for run time checks of loops, there is still the case of calculated indexing. A tool like
Polyspace mightbe able to determine if the calculation result will be within bounds. Mathworks would be extremely interested in hiring anyone who could independently develop similar analysis capability.
Likewise for avoiding dangling pointers and null dereferencing.
If the Rust compiler really has the same kind of source code analysis capabilities as Polyspace, I would think that even the most miserly of employers would be paying $$$ to send their software developers to "Rust Academy".
-
Everyone is underpaid.
Oh, you hate your job? Why didn't you say so? There's a support group for that. It's called everybody, and they meet at the bar.
Also what is a 'developer'? I have a Mechanical Engineering degree and don't Identify with 90% of the stuff that comes up when Slashdot or most places discuss 'developers'. I write code for stuff like Simulink Embedded Coder, Vector CANape, dSpace boxes, etc.
Am I a developer? An engineer?
-
Re:$500 is Shocking???
And this is just for desktop development. I can't imagine what most people here would say about automotive/aerospace, embedded toolchains. Nothing opensource comes close. The money is still cheaper than engineering time.
Simulink Embedded Coder, VXWorks, Green Hill INTEGRITY RTOS, ByteCraft eTPU compiler, Ashware eTPU compiler, Vector CANape, and on.
That doesn't even touch on the cost of development boards.
-
Re:I was in the room for the first surgery with R2
The device filters out the movement caused by the surgeon's own heartbeat, among other benefits.
-
Re:Build your own
LEGO Mindstorm has Simulink Support.
They have cheaper home licenses. If your kid can play Minecraft, they can use Simulink. I could hand away half of my job to highschoolers if they knew Simulink. (Job search Indeed in any part of the country).
For younger kids I really wish they still sold Capsela. My parents swear it's why I became an engineer.
On the cheap end of the spectrum: Go to a thrift store. Buy a electronic thing for under $10. Take it apart. Google the chip numbers. (For some things it's a digital scavenger hunt to find a PDF of a part that has been out of production for 10 years). I started off, expensively tearing apart VCRs. You can usually find an old tower PC for $20.
-
Re:this does not need discussing here
we all KNOW this is a problem.
I really wish this was made more visible to non-geeks. taking to geeks is not useful, about this, as we all know about it already.
No we don't. Lets look at another field that's not computer science / coding / programming: Engineering.
Everything that the coders here are complaining about I've heard in Engineering but when I drill down to who is having the problems it's a particular set of people.
An engineer turning 60 this year would have graduated in ~'78. CAD wouldn't have taken off like it has now. I know managers with PhDs who are highly intelligent but moved out of actual engineering refusing to learn CAD. They insisted they didn't need it and wanted to do things the 'old way'.
Someone that was just a head of the game when they graduated may have bought themselves 5-10 years of maintaining the status quo for processes but there becomes a point where they are more of a hindrance to getting work done than they're worth.
I've been a sw/hw guy since my teens
How much Simulink do you know? A lot of Embedded development is moving to that. It's hilarious watching slashdotters complain about "Drag-and-Drop" CS and how it'll "never work" when I do that for a living.
The world of software and hardware has changed since you were a teen and if you're doing things as you were doing them even 5 years ago your skills are out of date. Learning is a life long endeavor most people finish college and think they can glide until 60 with their skillset.
I'm in the bay area
And if you insist on staying there while still saying you can't find a job that's a you problem. My small contract company has multiple positions open that sound like they fit what you claim your skill set is but they're not in the bay area.
So if you are everything you claim to be and can't get any of these jobs listed either 1) You don't have the modern skills you think you do. 2) You're limiting yourself to a geographic area both of which fall to you.
- Scope of Work An Integration Engineer is needed for electrical/electronic system integration on several test bed machines. This position works with machine system coordinators, sub-system engineers, and the OEA test bench to define and document electrical/electronic system & software test requirements, determine machine electronic system validation plans and ensures that each of the sub-systems works together via analysis, simulation, and test. This position determines machine integration requirements and develops the corresponding integration documentation and test plans. This position will also be involved in system and software coordination, configuration, and testing. Responsibilities may be adjusted further according to the candidate’s experience and capabilities.Technologies involved include wireless and wired Ethernet communication, Bluetooth Low Energy, cellular and satellite communication, embedded software (C/C++/model-based), advanced control systems, data link communications, and internally and externally developed test equipment.
- Scope of Work Develop, improve, and troubleshoot onboard autonomy software systems used for path planning on an autonomous hauling truck that is deployed at large mine sites. You will work closely with other system developers, support teams, and testing staff in multiple geographic locations and organizations. Main work efforts include Develop and code new or updated software algorithms using C++ for the onboard Path Planning systems on an autonomous truck to meet prioritized customer/system requirements. Support existing autonomy software by learning and documenting the existing Path Planning algorithms. Work with multiple teams across the globe to integrate software
-
Re:interesting
You and I seem to be in the minority on Slashdot. I'm not a CS major. I'm not a computer or software engineer. I'm a Mechanical engineer. Most people in my profession consider coding up there with alchemy and voodoo. I just see it as a tool to get a job done on par with a good hammer or wrench set.
I'm sure some CS guys would look at my code and say I did something wrong on improper, but at the end of the day if 20 minutes of code saved me 10 hours of messing around in Excel I count it as a win.
90% of the coding I do is just pattern recognition and figuring out how to do it in a loop. Freshmen year we were supposed to write our own linear regression tool. The teacher gave us bonus points if we extended it to x^3 and x^4, right off the bat I noticed the 'pattern' of going from x^2, x^3, x^4 and just made it x^n and left it. I have no problem calling myself lazy. I hate doing things twice, I'd rather find the pattern and be done with it. I've been converting a bunch of Matlab code to Jupyter Notebooks. After the first one I decided copy and pasting sucked and was time consuming, so ended up banging this script out in a hackathon. It's not perfect but it's saved me probably 3x as much time as it took to write.
I find it funny that all these guys (Slashdotters) that use coding to do their job can't see how coding can be used to do any other job. Every single article that talks about teaching kids coding has the exact same comments on how kids don't need to know how to code since they might not be interested in CS.
The one and only time I ever learned assembly was making a PID controller for 68k and learned enough that I never, ever want to do assembly ever again. Same with C. I do most of my 'coding' these days in Simulink which is exactly what most Slashdotters say will never work. A simple drag and drop way to make code.
-
This has always been the future.
I've been out in industry for exactly a decade. I know who they are laying off. I would bet heavily that these are the guys that like doing things the way they have always done things and are content on not improving it. They're the drafters that refused to learn "that CAD thing". You see it all over Slashdot. You guys sure like things the way you used to do them. "Why kids these days don't need to learn Assembly".
I spent a recent layoff learning Python 3.4. It's near impossible to get people off of 2.7 at work or Matlab. Why? Because that's what they learned during undegrad and grad school and that's where everything is written. And they do have a small point, I'm don't have time to go back and re-write 50 years of working software. Once we as a society figured out Linear Algebra in Fortran we stopped messing with it. Numpy, Matlab, et al are just pretty BLAS wrappers.
However at impedes a lot of progress. At this point I feel like I'm in Office Space half the time:
1st Bob: What you do at Initech is you take the specifications from the software engineer and bring them down to the hardware engineers?
Tom: Yes, yes that's right.
2nd Bob: Well then I just have to ask why can't the software engineers use the hardware engineer's API?
Tom: Well, I'll tell you why... because... software engineers are not good at dealing with APIs...
1st Bob: So you physically take the flash files from the software engineer?
Tom: Well... No. The project lead does that... or they're e-mailed....If you're doing things the same way you did them even a year ago, then some lazier person that does your job is currently writing a script to do it that way. So in 50 years we can all look back and laugh at "Those idiots used to do it by hand". If you write a script to save you 1 minute a day, that's 4 hours a business year. If you write a script to save you and all of your co-workers 1 minute a day. That's an additional 4 hours per head per year. Start adding that up over a decade or two.
It's entertaining to watch you guys not wanting to use new tools, I just started writing new tools to use the old tools I wrote. I could reduce my manager's headcount by 3-4 and keep the same work level output with an improvement in quality. Software engineers have already done that, it's what continuous integration is for. Then they got tired of dealing with merges, so they wrote tools to automatically do merges if everything tests out.
CGP Grey's "Humans Need Not Apply" is a good video on the current state of automation. While I don't share quite his outlook his statements about what is going on right now is dead on. (Humans' will just start building warp drives instead of dicking around with what we do now). If TensorFlow can pick those images out that accurately they sure as heck can read the graphs I used to have to read much, much better. Give me the picture of a tachometer trace and I could tell you what's wrong it your car. I don't need to hear it, see it or know what's going on.
Last night on SharkTank there was a guy that had a mobile app that could take your measurements 20% better than a professional tailor, just by taking some photos and doing some math. If you were hoping to be a tailor and spend time measuring people, I have bad news.
Engineers these days use Simulink. Finding Engineers that can Code is hard. So we taught the en
-
Re:Glue it, internet it, breach it
In many fields, including electronics, hardware, pyro, etc there are two classifications of materials and technicians: standard and "life safety".
Which is why we use tools to check our models for safety certifications. Including difficult ones like DO-178B "Software Considerations in Airborne Systems and Equipment Certification"
-
Re:Glue it, internet it, breach it
In many fields, including electronics, hardware, pyro, etc there are two classifications of materials and technicians: standard and "life safety".
Which is why we use tools to check our models for safety certifications. Including difficult ones like DO-178B "Software Considerations in Airborne Systems and Equipment Certification"
-
Re:Visual vs wall of code
You are correct. Not only that, the learning objective with drag and drop might be colloquially called "coding" but in reality it might be to teach the logic of problem solving and the logic of coding using graphics
I use Simulink for a living. This is exactly what it it is, the buzz word is "Model Based Control". It doesn't mean I spend any less time trying to figure out the logic of how things work. Our whiteboards at work are covered with sketched block diagrams on how we need to implement a strategy.
Almost every company I know of has moved on past C for their engineers and just has them design and implement algorithms in Simulink. It's why the are a lot of positions open for Simulink across the country.
It writes better C faster than I ever could. Including C that meets ISO® 26262, IEC 61508, EN 50128, and related functional safety standards such as IEC 62304 and it's cutting development time in half
I got an Arduino Robot the other day and I spent more time messing around with C than I ever have with Simulink. I can make a control system to run a 16 cylinder engine in a half an hour. Drag and drop an engine speed sensor, drag and drop injector block. Toss in some PID control and it's done. Right now I would kill for a Python equivalent of Simulink but nothing comes close, I'm about ready to just make an Arduino mako template so I can teach python to write my C for me.
Not that people that need to know C disappeared, they're just the ones writing our 'device drivers' for Simulink. When I drag and drop a "Digital I/O" block into the model I trust that they made it so it works. (And sometimes it doesn't, but that's all code). It validates the datatypes. Does fixed pointing in a straight forward manner. I know most people think autogenerated code is big and scary but I trust it better than I trust some guy that took a few C courses in college.
Additionally it's much easier to let engineers do stuff how engineers do them and programmers how programmers do things and not make the engineers learn programming or the programmers learn engineering. (Not that we don't exist, but we write the device drivers)
It's why a lot of dev boards also have Simulink libraries. It's not that I don't know C or assembly it's that I'm tired of dicking with it and just want to make a controller. I can take the same Simulink model and compile it for multiple vendors and even different devices for that vendor.
I can swap dev boards without changing any of my model logic in a few seconds. Even compile it for FPGAs and PLCs.
Further reading:
- http://papers.sae.org/2013-01-...
- https://www.mathworks.com/tagt...
- http://www.mathworks.com/compa...
[Meta: Speaking of taking a lot longer to write. This post took an extra 5 or so minutes because I had to format all of the HTML. Please switch to Markdown or Restructured text. There's a reason we use it in industry, it is faster.]
-
Re:Visual vs wall of code
You are correct. Not only that, the learning objective with drag and drop might be colloquially called "coding" but in reality it might be to teach the logic of problem solving and the logic of coding using graphics
I use Simulink for a living. This is exactly what it it is, the buzz word is "Model Based Control". It doesn't mean I spend any less time trying to figure out the logic of how things work. Our whiteboards at work are covered with sketched block diagrams on how we need to implement a strategy.
Almost every company I know of has moved on past C for their engineers and just has them design and implement algorithms in Simulink. It's why the are a lot of positions open for Simulink across the country.
It writes better C faster than I ever could. Including C that meets ISO® 26262, IEC 61508, EN 50128, and related functional safety standards such as IEC 62304 and it's cutting development time in half
I got an Arduino Robot the other day and I spent more time messing around with C than I ever have with Simulink. I can make a control system to run a 16 cylinder engine in a half an hour. Drag and drop an engine speed sensor, drag and drop injector block. Toss in some PID control and it's done. Right now I would kill for a Python equivalent of Simulink but nothing comes close, I'm about ready to just make an Arduino mako template so I can teach python to write my C for me.
Not that people that need to know C disappeared, they're just the ones writing our 'device drivers' for Simulink. When I drag and drop a "Digital I/O" block into the model I trust that they made it so it works. (And sometimes it doesn't, but that's all code). It validates the datatypes. Does fixed pointing in a straight forward manner. I know most people think autogenerated code is big and scary but I trust it better than I trust some guy that took a few C courses in college.
Additionally it's much easier to let engineers do stuff how engineers do them and programmers how programmers do things and not make the engineers learn programming or the programmers learn engineering. (Not that we don't exist, but we write the device drivers)
It's why a lot of dev boards also have Simulink libraries. It's not that I don't know C or assembly it's that I'm tired of dicking with it and just want to make a controller. I can take the same Simulink model and compile it for multiple vendors and even different devices for that vendor.
I can swap dev boards without changing any of my model logic in a few seconds. Even compile it for FPGAs and PLCs.
Further reading:
- http://papers.sae.org/2013-01-...
- https://www.mathworks.com/tagt...
- http://www.mathworks.com/compa...
[Meta: Speaking of taking a lot longer to write. This post took an extra 5 or so minutes because I had to format all of the HTML. Please switch to Markdown or Restructured text. There's a reason we use it in industry, it is faster.]
-
Re:Visual vs wall of code
You are correct. Not only that, the learning objective with drag and drop might be colloquially called "coding" but in reality it might be to teach the logic of problem solving and the logic of coding using graphics
I use Simulink for a living. This is exactly what it it is, the buzz word is "Model Based Control". It doesn't mean I spend any less time trying to figure out the logic of how things work. Our whiteboards at work are covered with sketched block diagrams on how we need to implement a strategy.
Almost every company I know of has moved on past C for their engineers and just has them design and implement algorithms in Simulink. It's why the are a lot of positions open for Simulink across the country.
It writes better C faster than I ever could. Including C that meets ISO® 26262, IEC 61508, EN 50128, and related functional safety standards such as IEC 62304 and it's cutting development time in half
I got an Arduino Robot the other day and I spent more time messing around with C than I ever have with Simulink. I can make a control system to run a 16 cylinder engine in a half an hour. Drag and drop an engine speed sensor, drag and drop injector block. Toss in some PID control and it's done. Right now I would kill for a Python equivalent of Simulink but nothing comes close, I'm about ready to just make an Arduino mako template so I can teach python to write my C for me.
Not that people that need to know C disappeared, they're just the ones writing our 'device drivers' for Simulink. When I drag and drop a "Digital I/O" block into the model I trust that they made it so it works. (And sometimes it doesn't, but that's all code). It validates the datatypes. Does fixed pointing in a straight forward manner. I know most people think autogenerated code is big and scary but I trust it better than I trust some guy that took a few C courses in college.
Additionally it's much easier to let engineers do stuff how engineers do them and programmers how programmers do things and not make the engineers learn programming or the programmers learn engineering. (Not that we don't exist, but we write the device drivers)
It's why a lot of dev boards also have Simulink libraries. It's not that I don't know C or assembly it's that I'm tired of dicking with it and just want to make a controller. I can take the same Simulink model and compile it for multiple vendors and even different devices for that vendor.
I can swap dev boards without changing any of my model logic in a few seconds. Even compile it for FPGAs and PLCs.
Further reading:
- http://papers.sae.org/2013-01-...
- https://www.mathworks.com/tagt...
- http://www.mathworks.com/compa...
[Meta: Speaking of taking a lot longer to write. This post took an extra 5 or so minutes because I had to format all of the HTML. Please switch to Markdown or Restructured text. There's a reason we use it in industry, it is faster.]
-
Re:Visual vs wall of code
You are correct. Not only that, the learning objective with drag and drop might be colloquially called "coding" but in reality it might be to teach the logic of problem solving and the logic of coding using graphics
I use Simulink for a living. This is exactly what it it is, the buzz word is "Model Based Control". It doesn't mean I spend any less time trying to figure out the logic of how things work. Our whiteboards at work are covered with sketched block diagrams on how we need to implement a strategy.
Almost every company I know of has moved on past C for their engineers and just has them design and implement algorithms in Simulink. It's why the are a lot of positions open for Simulink across the country.
It writes better C faster than I ever could. Including C that meets ISO® 26262, IEC 61508, EN 50128, and related functional safety standards such as IEC 62304 and it's cutting development time in half
I got an Arduino Robot the other day and I spent more time messing around with C than I ever have with Simulink. I can make a control system to run a 16 cylinder engine in a half an hour. Drag and drop an engine speed sensor, drag and drop injector block. Toss in some PID control and it's done. Right now I would kill for a Python equivalent of Simulink but nothing comes close, I'm about ready to just make an Arduino mako template so I can teach python to write my C for me.
Not that people that need to know C disappeared, they're just the ones writing our 'device drivers' for Simulink. When I drag and drop a "Digital I/O" block into the model I trust that they made it so it works. (And sometimes it doesn't, but that's all code). It validates the datatypes. Does fixed pointing in a straight forward manner. I know most people think autogenerated code is big and scary but I trust it better than I trust some guy that took a few C courses in college.
Additionally it's much easier to let engineers do stuff how engineers do them and programmers how programmers do things and not make the engineers learn programming or the programmers learn engineering. (Not that we don't exist, but we write the device drivers)
It's why a lot of dev boards also have Simulink libraries. It's not that I don't know C or assembly it's that I'm tired of dicking with it and just want to make a controller. I can take the same Simulink model and compile it for multiple vendors and even different devices for that vendor.
I can swap dev boards without changing any of my model logic in a few seconds. Even compile it for FPGAs and PLCs.
Further reading:
- http://papers.sae.org/2013-01-...
- https://www.mathworks.com/tagt...
- http://www.mathworks.com/compa...
[Meta: Speaking of taking a lot longer to write. This post took an extra 5 or so minutes because I had to format all of the HTML. Please switch to Markdown or Restructured text. There's a reason we use it in industry, it is faster.]
-
Re:Not going to help.
but where does one start with the list?
Start with Simulink. Model based design is everywhere. Simulink is the only gorilla in the room at this point. With what I've seen people do with Python it shouldn't be hard (technically) to make something similar. You're going to have to make sure it meets industry standards like ISO 26262.
Pick a RTOS. ChibiOS, FreeRTOS, etc
A decent CANape replacement for calibration.
Then you're going to need hardware. You just need an open source version of the Caterpillar A4. Something that takes 18-28V, is hardened against lightning strikes and random stray voltages. Can handle thousands of hours under the hood of a diesel engine. It needs to have a eTPU or FPGA made for timing diesel injection events accurately. The rusEFI project has started their own ECM and in the last year gotten the absolute basics but is nowhere close to what engineered OEM ECMs provide.
Any one of those on its own would be a grad school level project (and should be).
-
Re:Not going to help.
Who exactly made the choice of tools to use in the first place?
Lots of people, here's a brief SAE technical paper on it: Caterpillar Automatic Code Generation
Why not choose non-proprietary hardware in the first place? Too simple?
As much as Slashdot hates to acknowledge it money makes things work. We pay a company to develop a compiler instead of hoping some volunteers do it for us. We pay a company to have parts of a toolchain in place so we don't have to.
Too simple? Too hard. There's no piece of open source hardware that comes close to what tractor ECMs could do a decade ago. The OSS community seems to be more interested in dev boards than actual finished products. This ECM is what drives a lot of the world of tractors. There are a dozen or so variations that have different pins populated with different IO but at its heart it's a 40(?) MHz Freescale MPC56XX chip with an eTPU to do all the fast timing.
But it exists because we paid engineers a lot of money to develop it. We paid more engineers to test it and even more engineers to write software for it all while paying outside companies for their tools to cut prototyping time. Vector CANape for CAN based calibration, Mathworks Simulink for model based control, Wind River for their diab compiler.
I would love to tear the ECM out of my VW TDI and replace it with one of our own. I could write a new controller for my car in an hour or two with our toolchain. Without the tool chain it's a PITA and I haven't bothered.
We treat our tools as tools. I don't question how or who designed my hammer when I use it to hit nails. I just care that it doesn't break and works as it is designed. The 'toolbox' I'm sitting on right now is the sum result of decades of development ahead of where open source is.
IF anyone wants to help develop a completely OSS ECM and toolchain for ECM development I have a laundry list of what is needed to catch OSS up with where industry was in 2005, but I'm not holding my breath.
-
Re:Not going to help.
Who exactly made the choice of tools to use in the first place?
Lots of people, here's a brief SAE technical paper on it: Caterpillar Automatic Code Generation
Why not choose non-proprietary hardware in the first place? Too simple?
As much as Slashdot hates to acknowledge it money makes things work. We pay a company to develop a compiler instead of hoping some volunteers do it for us. We pay a company to have parts of a toolchain in place so we don't have to.
Too simple? Too hard. There's no piece of open source hardware that comes close to what tractor ECMs could do a decade ago. The OSS community seems to be more interested in dev boards than actual finished products. This ECM is what drives a lot of the world of tractors. There are a dozen or so variations that have different pins populated with different IO but at its heart it's a 40(?) MHz Freescale MPC56XX chip with an eTPU to do all the fast timing.
But it exists because we paid engineers a lot of money to develop it. We paid more engineers to test it and even more engineers to write software for it all while paying outside companies for their tools to cut prototyping time. Vector CANape for CAN based calibration, Mathworks Simulink for model based control, Wind River for their diab compiler.
I would love to tear the ECM out of my VW TDI and replace it with one of our own. I could write a new controller for my car in an hour or two with our toolchain. Without the tool chain it's a PITA and I haven't bothered.
We treat our tools as tools. I don't question how or who designed my hammer when I use it to hit nails. I just care that it doesn't break and works as it is designed. The 'toolbox' I'm sitting on right now is the sum result of decades of development ahead of where open source is.
IF anyone wants to help develop a completely OSS ECM and toolchain for ECM development I have a laundry list of what is needed to catch OSS up with where industry was in 2005, but I'm not holding my breath.
-
Re:It won't, and note microsoft is always involved
> Knowing theoretical CS allows you to be flexible, but it won't give you the necessary background to do much that is interesting in the economy.
Knowing how to program allows you to automate your job. Programming is the new 'keyboarding'. You're looking it like CS is the 'job'. The 'job' is something else that needs to be automated.
I'm a mechanical engineer that spends 80% of my time coding, why? I automate my job. I automate report generation. I automate mechanical tests. The job that I did when I started is now 100% automated. Now I spend my time working on other, harder problems.
This initiative isn't going to crank out thousands more CS graduates. It's going to turn out a Doctor... that knows Python. A mechanical engineer, that knows python. I'm using deep learning and visual recognition to classify test results. No more flipping through 10 graphs to determine what is going on, I can run through 10,000 and have the results on my de
Coding is not a jobsktop in the morning.Coding is not a job to me, it's why I became an engineer instead of a CS student. Coding is a tool I use to get my job done.
Is it always the most optimized, fastest, most logically correct? No. But if I can do anything at my job 100x faster with a few lines of code, I'll do it in a few lines of code.
And that's not to say hard core theoretical CS is going away. I thank all of those theoretical CS students for giving me tools like deep learning and modern image recognition. That stuff didn't exist years ago when I started, but my job (and interests) weren't in doing that. I've been writing algorithms and software to go in heavy equipment.
> If half of CS and IT doesn't require a college degree, then teaching it to little fellers and claiming it is somehow preparing them for the workplace is isn't a career path to anything except obsolescence.
It is and they already are. Vocational schools of the 21st century aren't vocational schools of the 20th. A highschool near me has a Internet, Network and Security Technologies track. I'm friends with the principal and he said he can't graduate students fast enough. Most are hired straight out of high school. You don't need a college degree for the work they're doing. It's mostly hands on training.
Does that mean that that PhD CS students are just going to disappear? No, they're going to be working on the 22nd century trades. In 10 years you won't need a PhD in ME and EE just to debug an automated driving car. It'll be standard training at any dealership.
If you haven't spent the last 20 years of your career learning what the new grads in your field were doing then you haven't kept up with progress. Your job is now done people with high school displomas. "Skilled trades" aren't just plumbing and welding anymore. The only reason companies are replacing you with cheaper Indians instead of cheaper Americans is we didn't spend the last 20 preparing to backfill those positions.
It's happened in every industry since the beginning of time. Nurses do more now than Doctors did 200 years ago. Nurse Practitioners do more now than Doctors did 50 years ago. And at the bottom end of everything it's unskilled labor or automation. Engineering Technologists are doing what Engineers did 20 years ago. Engineers are doing now what Engineering Technologists will be doing in 20 years.
This is how progress happens, teaching kids how to do the 'hard' stuff and let them grow up with it as normal and go on to discover something else. Calculus used to be the stuff of PhD mathematicians too. I don't remember their outcry when we started teaching it as an AP highschool course.
-
Re:If we just use some buzzwords
-
Re:You know what would REALLY motivate kids?
While you can do neat things with a cheap board programmed by block diagrams, that's not going to cut it in my job, where we control machines that cost in six figures.
Right now I program 6 figure machines with block diagrams.
I make my living by addressing the hard parts of getting processes automated. I've only been in industry for 10 years and I've already automated away a few internships. I'm learning Python explicitly for the purpose of automating dSpace + Matlab + hardware and reducing the need for 2-3 full time people.
Programming is one of them.
Programming is a tool. Engineers use programming to automate away their engineering. Photographers use programming to automate away their photography. Farmers use programming to automate away their farming.
Your job isn't programming, it is automating what ever task you are trying to complete. What would have taken Hugin a few minutes to complete can now be done in a cell phone.
-
Re:You know what would REALLY motivate kids?
I've met a few people who had Masters degrees but were terrible coders
... which means they were useless as coders, and somehow expected to have a job in which they could just think of cool things. And I don't think that's a real thing. Those people generally serve no purpose in industry.It is, and that is where industry is going. I work with PhD and MS Engineers that couldn't code their way out of a wet paper bag. Coding is a tool, not a profession. Engineers use coding to automate something else. Now we're designing entire control systems for vehicles with Simulink.
Cost of entry has come WAY down. Now you can buy a $12 board that interacts with the real world that can be programmed with block diagrams. People that don't or can't learn C can now make their "cool things" that they think of without having to learn C.
"Programming" is not a profession any more than a "hammer" is a profession. It's a tool to get something done faster and more efficiently.
If you asked a normal 5 year old to print out the string "Hello World" 5000 times they might actually type it out 5000 times. If you teach a 5 year old how to program they will make a program to print it and then focus on "something cool".
The cost of entry to program has come down since it required a separate employee to enter your punch cards. Kids that grow up with programming will take that skill set into where ever they go in the future. My wife works with doctors that don't know how to use a keyboard because "You're going to be a doctor, doctors won't type". Now all doctors type. Now doctors enter all of their own notes. In 20 years Doctors will be programming their own disease identification.
And as the cost of entry comes down so does the salary. A job that a 10 year old could do isn't going to garner 6 figures.
-
Already done for many yrs - MBD
Model based development.
You design the model, simulink makes the code.
http://www.mathworks.com/produ... -
Is Xoctave obsolete?
I'd be interested in seeing the GUI and seeing if it is good enough to stop using Xoctave, which gives it a MATLAB-like interface. Xoctave is nice, but pricey, which is why I am still using the free beta version.
-
Is it a competitor?
In the past year, I've never seen a time when Mathworks wasn't hiring hundreds of people. They even run sponsorships (read: ads) on NPR all the time about how many jobs they have.
How does Octave or any other open source tool hold up against something with so many resources behind it?
I'm asking honestly. I know Apache and Firefox certainly do pretty well, but the former has a huge business community using it, and the latter has an enormous consumer user base. How do smaller projects compare to big software tools? For example, isn't it generally understood among graphic artists that Gimp doesn't measure up to Photoshop?
-
Re:oh man, what a mess
Could also be a problem with an overly aggressive hole filling algorithm. http://www.mathworks.com/help/images/ref/imfill.html
I'd expect there's nothing nefarious going on. It's very likely an overly aggressive image processing algorithm.
-
SELinux isn't claimed to be secure
SELinux isn't claimed to be secure. NSA's defensive side, the Central Security Service, created it because they wanted application developers to start writing applications that would run under a mandatory security system. Once all major applications could run under SELinux, it would be possible to swap out the Linux kernel for something smaller, with far less trusted code.
That didn't work out. Not enough applications were redesigned to run under the tight restrictions needed to make most of their code untrusted. A good example of commercial developer incompetence in this area is Matlab, which won't run with SELinux enabled. So Matlab's official instructions tell users to turn SELinux off. There is no justification for Matlab requiring security privileges.
There is also a new "backdoor" to SELinux in Linux installed recently to support a competing "security" package.
-
Re:MATLAB?
And if the OP really needs to work in Excel (due to the boss ordering it or the like) there are two toolboxes that can help limit the VB-ness. MATLAB Builder XL lets you translate a MATLAB program into an Excel add-on and Spreadsheet Link EX lets MATLAB and Excel directly communicate with one another, so you can have MATLAB and Excel send data to one another and have Excel execute MATLAB functions on Excel sheet ranges.
Disclosure: I am a MathWorks employee.
-
Re:MATLAB?
And if the OP really needs to work in Excel (due to the boss ordering it or the like) there are two toolboxes that can help limit the VB-ness. MATLAB Builder XL lets you translate a MATLAB program into an Excel add-on and Spreadsheet Link EX lets MATLAB and Excel directly communicate with one another, so you can have MATLAB and Excel send data to one another and have Excel execute MATLAB functions on Excel sheet ranges.
Disclosure: I am a MathWorks employee.
-
Re:Wishlist
I would like to see is an editor that automagically makes the comments on any given lines a tooltip when you mouse over that line.
I make editors, but I'm not sure what your feature suggestion is. Do you mean something like this?
Or perhaps your wish has already been granted via collapsible code & comments? If not, please clarify.
-
MATLAB has it's origins in academia
From Cleve Moler's "The Origins of MATLAB" --
"In the late 1970s, following Wirth’s methodology, I used Fortran and portions of LINPACK and EISPACK to develop the first version of MATLAB."
http://www.mathworks.com/company/newsletters/news_notes/clevescorner/dec04.html
-
Re:How is it different from, say, Wicket or ZK?
For one thing, ML-oid languages have Hindley-Milner type inference.
This is a formal ("mathematical") guarantee at code safety/correctness (in the web scenario it means code injection attacks do not type-check). All C-oid languages (and Java, Python, etc.) cannot offer a true (i.e., *formal* guarantee), simply because, compared to the theoretical background of ML-oid languages, they are merelly hacks, with lots of corner cases, ad-hoc "featuritis" and many loopholes - which, BTW, spawned a whole industry (anti-virus software). Talk about giving you a problem and then selling the solution...
Even though ML-oid languages were developed by true brainiacs, we're now witnessing inroads at mainstream programming (F#, for example, from Microsoft, or the use of OCaml in the financial sector (*))
Being statically-typed, these systems are also good for performance (**)
For a nice layman-friendly explanation of Hindley-Milner you may like: http://www.codecommit.com/blog/scala/what-is-hindley-milner-and-why-is-it-cool
-------
(*) Many years before these new commercial uses of ML-oid languages, the French Aerospace industry used OCaml to formally verify C programs that were deployed in at least one model of Airbus aircrafts. Also, the makers of Matlab (Mathworks) sell a code-checking tool that relies on SML (Standard ML) (see: http://www.mathworks.com/products/polyspace/index.html)
(**) This guy claims his OpenGL bindings for MLTon whole code optimizing compiler yielded faster than C++ performance at 10% of the code. MLTon may be found here: http://mlton.org/. -
Re:Have they checked yesterday?
That was absurd, dear coward.
Engineers have messed up precisely simple stuff like Doppler shifts!
The Huygens mission to Titan would have been essentially lost if it weren't for one guy (Popken IIRC) who had a hunch that the Doppler shift wasn't correctly set up for receiver testing, and has done additional testing on the system while it was still enroute with Cassini to Saturn.
The Huygens telemetry receiver was based on a design that had operated successfully on several earlier space missions. That receiver was able to cope with a Doppler shift at data rates of up to 2 kilobits per second (Kb/s). The data rate between Huygens and Cassini, however, was 8 kb/s—four times faster.
Due to an implementation error, a scaling parameter in the Huygens receiver’s embedded software was not adjusted to accommodate the higher data rate. As a result, the bandwidth of the receiver’s bit synchronizer was too narrow to compensate for the Doppler shift of the data stream frequency.
(source).
What about engineers messing up units of measure, resulting in a loss of $300M mission:
The MCO MIB has determined that the root cause for the loss of the MCO spacecraft was the failure to use metric units in the coding of a ground software file, “Small Forces,” used in trajectory models. Specifically, thruster performance data in English units instead of metric units was used in the software application code titled SM_FORCES (small forces). The output from the SM_FORCES application code as required by a MSOP Project Software Interface Specification (SIS) was to be in metric units of Newtonseconds (N-s). Instead, the data was reported in English units of pound-seconds (lbf-s). The Angular Momentum Desaturation (AMD) file contained the output data from the SM_FORCES software. The SIS, which was not followed, defines both the format and units of the AMD file generated by ground-based computers. Subsequent processing of the data from AMD file by the navigation software algorithm therefore, underestimated the effect on the spacecraft trajectory by a factor of 4.45, which is the required conversion factor from force in pounds to Newtons. An erroneous trajectory was computed using this incorrect data.
-
Re:great!
CONV2 (i.e. convolutions) are very useful in many applications
Your error is with the "i.e." part. Convolutions are very useful, but CONV2 is almost never the right function to call. Most convolutions are separable. Those that aren't can usually be made separable. If you're really stuck with a non-separable large 2D convolution, you can use 2D FFT in some cases. And if you have a non-separable small 2D convolution, there's usually some other known trick you can use to speed it up. Anybody who has any business working with image processing should know these things; it doesn't take an "expert".
Expert convolutions on the GPU (that work well for both separable/non-separable cases, arbitrary input matrix sizes, and arbitrary kernel sizes) are extremely difficult
CONV2 in Matlab is defined to use "straightforward convolution", with no optimization.
http://www.mathworks.com/help/techdoc/ref/conv2.html
If you are benchmarking CONV2 against a GPU implementation that checks for separability and does other optimizations, your benchmarks are a fraud.
You might say at least your customer are getting a good 2D convolution function for their money and they don't need to know the details. But your customers already get optimized 2D convolutions in Matlab (e.g. FILTER2), so they don't need to pay for your code to realize that speedup, they just need to call a different function.
(And please stop referring to 2D signals as "matrices"; 2D signals and matrices are totally different mathematical objects; the name for the common supertype is "array".)
-
Re:And software development?
Problem is, you force an scientist or engineer to use FORTRAN or MATLAB and you will get code written with hate
Not everyone hates to program. I was borderline CS/ME and chose ME (mechanical engineering) because I wanted my code to "do" something. Code to me isn't an end, it's a means. If you're an ME that knows Matlab/Simulink, you automatically have a leg up on almost your entire class. MEs for some reason hate to code. People in my class just didn't get a for loop, let alone recursion.
Matlab is a rapid prototyping language. For the most part it's quick and dirty and is a tool. They have a near repository of useful stuff, the Matlab File Exchange. But Matlab is much more powerful than just writing some code. You could do that in C, Python, etc. They actually hire controls engineers, there is some VERY high level control theory behind some of their toolboxes. Pole placement design, root locus, bode plots and that's just scraping the surface of what it can do. They also have aerospace, hydraulic, motor toolboxes and there is absolutely nothing that even comes close to what Simulink is.
The only thing that really grinds my gears is that indexing starts at 1.
-
TI LaunchPad too
If someone is thinking about getting into this, I would suggest you weigh the options between this and the TI LaunchPad
The LaunchPad doesn't have any 'shields', but if you're just looking for basic IO, it's MUCH cheaper with a full dev kit for under $5.
You also program it in real C, not the pseudo-C that is the Arduino language.
---------
If you have an Arduino and are lucky enough to have a copy of RealTime Workshop for Matlab laying around. (Most universities should have this installed on their computers. I know the ME department where I go has FULL Matlab on all computers).There is a Simulink Arduino target: http://www.mathworks.com/academia/arduino-software/arduino-simulink.html Meaning no coding needed on your behalf, just setup your Simulink model and go. Great for controls engineers that may know how to sim something in Simulink, but not how to convert that to Arduino.
-
Re:Really not new
ACO was formalized in 1996
-
Re:Haha
I learned VBA using the "Record Macro" function. Learned how it changed different properties, etc.
Used it to create a Matlab script to save plots directly to powerpoint and do some powerpoint manipulation.
It's how I learn. I could read every book in the world about a language and not pick it up. I either need to either be taught it directly (Like I was with Java/C/C++ in classes) or just copy and paste (as I did with PHP and the limited Perl I've done).
-
Re:It's not that big of deal
-
iPhone/iPod calc does 64-bit integers
If you really want this support, get the user contributed package from matlab central. That wasn't too hard was it?
Disclaimer: I'm the dev, but I'm surprised that an iPhone/iPod calculator manages to do what MatLab does not:
Perpenso Calc, decimal arithmetic, 20 decimal digits, fractions, complex numbers, RPN -
Re:Numeric Python
One of the reasons to use MATLAB is it's huge collection of algorithms in the toolboxes. Another reason to use it is Simulink. Details on the Mathworks website: http://www.mathworks.com/access/helpdesk/help/helpdesk.html Someone else mentioned it's 2D and 3D plotting capabilities. Python may well be nice as a number crunching environment, but for algorithm design, it is very hard to beat MATLAB.
-
Re:Especially since someone has implemented it....
The point is that very few engineers currently want or need this functionality -- if they did, the Mathworks folks would surely be on to it. The native type is defined, abstract methods are waiting there to be defined, and someone who needed it has implemented it and made it available. Incidentally, that package has had 38 downloads since july, perhaps indicating the level of demand. From this thread, it looks like the company is waiting for the demand before implementing it themselves.
-
only half true
While this is not implemented natively, (or at least not until you use the fixed point tools to auto-generate some code for a 64bit machine), you can do a lot of fixed point math with the fixed point toolbox:
For example:
>> x=fi(5,1,64,0,'SumMode','KeepLSB');
>> y=fi(23,1,64,0,'SumMode','KeepLSB');
>> x+yans =
28
DataTypeMode: Fixed-point: binary point scaling
Signedness: Signed
WordLength: 32
FractionLength: 0RoundMode: nearest
OverflowMode: saturate
ProductMode: FullPrecision
MaxProductWordLength: 128
SumMode: KeepLSB
SumWordLength: 32
CastBeforeSum: trueThe documentation is here:
http://www.mathworks.com/products/fixed/It is true that you need the fp toolbox to do that, though.
-
there's a llibrary to do this...
Just use the int64 user contributed stuff: