Sometimes I don’t know why I write blog posts. It’s not like people read them. I get some traffic, but it’s really just spam bots trying to get me to post their spam.
See, that’s a nice compliment. The robot is being nice to me. I’m still not going to post your spam link, bro. (Brobot?) It’s a wa… woah, hey, let’s not make this personal, okay?
The problem is with how many spam comments I get. I’ve got more than six hundred waiting for approval, like I’d just say “yeah, okay, whatever”. It’s obnoxious and the links would probably compromise your computer if you were dumb enough to click them. That’s why Flashblock and Adblock are critical to your computer’s safety. It bothers me to no end that they now have a war between the ad companies and Adblock. Look, if the ad companies secured their systems and made their ads less obnoxious, it would be fine. Neither of those things are true.
There was a security breach at my ISP a few years ago and attackers took my address book and use it to spam my name to my contacts with links to unknown sites. That’s awesome when you’re looking for work. (Lucky for me, I use a different email address when looking for work, but still, it’s a little embarrassing, like someone Photogimping your face onto someone else’s body.
It would be nice if I had some human readers though. Maybe I’ll post the next one 01101001 01101110 00100000 01100010 01101001 01101110 01100001 01110010 01111001 and save everyone some time.
Since I’m looking for work, I take a little time to look up what people are saying about me online. I know that businesses do, and with a name like mine I’m generally pretty careful about what I say and use logins instead of my real name. There aren’t a lot of people named “Magnus McElroy”. On the upside, “Magnus Charles McElroy” looks awesome on a certificate. The downside is that when your names gets onto something, it’s there for quite some time. (Like the time my brother used my dial-up account to post bass guitar tabs for a song.)
I was lucky enough to have my stupid phase before everything you said was documented forever online. Thus it was a bit of a surprise when my latest search found a letter I’d written to Camosun’s paper when I was 18 years old. I’m not sure why their editor felt like dragging up a dumb letter I wrote 20+ years ago and making it the showcase of their monthly review. I don’t remember what I was thinking. Apparently I thought I was both funny and being discriminated against because I was a guy. Man, was I stupid. Maybe just young and naive. But wrong, that’s for sure.
A lot has happened in those 20 years. I’ve completed school, I’ve had kids, been married and divorced, I died, I started teaching yoga. By default I’ve become a responsible adult. Not one time in my life have I faced any problems by being a man. Back in February I even organized a counter-protest to those men’s rights / pro-rape idiots that were meeting in town.
But that’s what we do, right? We grow, we learn, and we get better. I wonder how stupid I’ll sound 20 years from now.
Well, it’s not money but it’s something. The last time I was working for an employer, I found out about some dangerous welding practices being used on submarines. The client knew that the welds were failing new tests and asked us to sign off on them anyway. The meeting was quiet, and I said the only thing I could. “I’m legally obligated to report that.”
When I started in that group, they said they “were happy to see me join, someone with design experience, someone who can mentor our younger engineers, help guide the design” and I joke that I looked around for who he was talking to. Once I called them on endangering people’s lives, I became a PNG PDQ. They brought in people to discuss “The Role of an Engineer”, not realizing (or caring) that I was contracted with the Engineering Association to teach that to engineering companies. Not one word was said about how to fix the welds. When my probationary contract ended, it wasn’t renewed. I haven’t been able to find engineering work since.
Then a year later, all the submarines are beached. They never fixed the welding practices, and we’re all lucky nobody died. I don’t think those subs will ever get into the water again. They’re out millions of dollars and the country’s out a bunch of submarines because they didn’t want to listen to their engineers.
This isn’t the first time for me. Victoria’s CREST radios have a bug that makes them hang. The problem is in a while loop; if it misses the handshake it’ll wait forever. It’s an easily fixable bug with one line, adding an “emergency_timeout” integer and not letting the while loop iterate more than 25 times (a SWAG number). Basically, this
should become this:
emergency_timeout = 0;
}while( emergency_timeout < 25 );
The bug never got fixed, to the best of my knowledge. Guess what happened when my contract came up for renewal? They are now out of business, bought by another company.
I don't understand why businesses would hire an engineer and ignore them, or worse, fire them for mentioning "hey, you've got a problem". Every time it's happened to me, the place is either out millions of dollars or they go out of business.
Does anyone even say snazzy anymore? I don’t know.
I had to get cards. I struggled to get a decent printing done by myself and ended up making a mess of it (I blame my printer) and instead laid out the cards with Scribus instead of OpenOffice. Lucky for me, years ago I’d volunteered with the paper at Camosun, so I knew a little about layout.) The problem was that I couldn’t find a good printer. In another stroke of luck, while waiting for my haircut at Victory, I saw that the place next door was a print shop. MetroPol Printing had decent stock and a quick turnaround.
It’s been a while since I’ve been able to find work in town. I’m in the awkward phase in my career where I’m either “overqualified” or I don’t have 10 years in some niche skill (lately it’s been Altium Designer, very weird) so it’s been a struggle. Anyway, at the prep session I realized I didn’t have any introduction cards so I could just pass along my contact info. A few scrap bits of paper here, a few there, and I was convinced there was a better way.
Plus I just got a set of free headshots from VIATeC, which was kind of awesome. I never really know what to do with my face or hands when I get my picture taken, but the photographer seemed to have an idea.
I took the new cards and went to a job fair. I brought both kinds so I could give the silly ones out to personal contacts instead of business ones. I gave out a bunch, handed out resumes, and one place seemed angry that I was there. They were probably having a long day. I did get a few good tips for some of the bigger places like VIHA and BCP.
(The superhero thing is true. I volunteer with the Superheroes of Victoria. We do charity work for other charities; setting up events out of costume, or putting on superhero outfits and entertaining people, answering phones, whatever it takes.)
“Hey, we’ve got two outlets that are out. I checked the fusebox, opened them up for loose cords or wires and everything seems legit. Any thoughts on what could knock them out?”
That’s funny. Receptacles are supposed to work. It’s amazing how often they just work, flawlessly.
The timing was weird because it was just after a rainstorm, so I thought maybe water had gotten into one of the junction boxes. There had to be some kind of short or break somewhere. If it was one, I’d figure it was a broken receptacle. It had to be something fixable; if I couldn’t fix it, then what the hell was going on?
Tools on. First, a circuit tester to see what’s loose, what’s wired…
Well, that’s just not right. Red lights up only when hot is mixed with ground or neutral, and all three shouldn’t be lit for any reason.
This calls for more precision. Let’s see what’s going on numerically.
LL is 95V, which isn’t within the right parameters. BC Hydro will give you 120V, give or take a couple of percent, under as many circumstances as they can think of. 95V means that something’s in-line and consuming power. How? This got weird when the NG voltage was about 22V, and LG was 120V.
I called an electrician I know, Mike at Groove Electric, to see if he had any thoughts. I figured it was water or critter ingress, somehow shorting juuust enough that the breaker wasn’t responding. (It happens, that’s why the new code requires arc flash and ground fault protection.) We thought along the same lines, hot touching something else, and some high-resistance thing doing the touching.
I checked in the air space, sort of like an attic but on the side, and saw an unlidded junction box, pointed up. Case solved, so I went to Home Depot, picked up a lidded plastic enclosure, and went back the next day. I also replaced the older receptacles with newer TR versions and plastic plates. (I never trusted the metal ones.)
Now, I’m a bit of an arachnophobe, so I don’t like going into spaces full of spiders, but hey, I can deal with it, and house fires and kids without heat are worse than me dealing with some spiderwebs. I crawled in, and found that the box I’d mentally convicted was dry as a bone. A couple of cobwebs, but that wasn’t the culprit. I found the junction box powering the receptacles, and this had to be the problem.
The top right is the source, which then feeds the round box. The top right box splits to the bedroom receptacles. The round orange box splits to the kitchen fan and lights. (I thought the orange box was the source based on the cable age.) So, disco on all the stuff going in, power up, and measure the voltage on the hot wires. (Don’t try this at home; I am a professional.) It read 120V, so whatever I disconnected was causing the problem.
It was the fan. It was old, wired in backwards, and vented into the attic. When the circuit was energized without the fan attached, everything was back to normal. The solution was to just coil it back and leave the fan in place. (Otherwise there’s a hole. I guess I could have installed a ceiling cat, but that seemed a little silly.)
My guess is that the insulation in the fan coils was in rough shape and was slowly shorting out. The coils would isolate the fault from the circuit, causing the breaker to stay active. It slowly got worse until the receptacles failed one day.
I wonder how much longer it would have been before the fan caused a fire. I’ll dissect it when it gets removed. This afternoon I remember replacing a shaver outlet with a GFCI. The house owner noticed that it was often warm; when I pulled it out, the insulation had started burning away.
It’s all Leading up to this moment. My whole life.
I’ve basically been an electrical engineer my whole life. Just after I turned five, the local paper wrote an article on Site C, and “Holding Back Hydro”. The cover has a nod to the story of The Little Dutch Boy, with his finger in the dyke, holding back the flood. Except there was a small problem — the newspaper used a receptacle, and that’s where I came in. Just look at how unsafe that is:
I wrote to the paper. Here’s the letter, which they printed as an photo, probably because it’s hilarious.
When I got my Professional Registration, my dad gave me the letter he’d been keeping all those years, and I went down to the archives to get a copy. When I framed it and put it in my office, one of my co-workers said, “ah! A Sparky from the start!”
Which is true.
I skipped a party in grade school to wind motors once. Party animal. I learned that you could also get electricity from forcing the motors to rotate, which was really cool. It does bother me just a little bit that nobody seems to know the mechanism behind how a rotating magnetic field produces electricity, but hey, I don’t refuse my dinner because I don’t fully understand the process of digestion. (That’s a quote from Oliver Heaviside.)
But that’s not all. When I was eight, I won a computer. It was a CoCo2, basically a TRS-80 compatible machine. It came with the thickest book I’d ever seen (up to that point) and it was all mine. I still remember the “Don’t Byte Off More than you can Chew” section at the end, where they moved from the basic BASIC to the “harder stuff”. There was also the incident wherein they didn’t tell you that ‘preceded comments, and you couldn’t put in comments because you’d run out of space. Hey, it was a mid-80s compiler. It would be a long time before something like CCS came along.
You could easily run out of memory on those things, because you couldn’t just add more space. I could barely type, and sometimes I had to get my mom to enter some of the code. I’ve been programming ever since — more than 30 years — on everything from that first computer’s footprint to a workstation we jokingly called “the freight train” because of the way the fans cycled. Long story, tl;dr version is “Intel does weird things sometimes.” I’ve used interfaces ranging from the intuitive Visual Studio to a magnet and a reed switch.
One of my favorite bits of programming was the trackers for Project Lifesaver / We Rage, We Weep. I met someone who was wearing one, we talked for a while, and knowing that they’re still out there is cool. The chip is a 10F202 from Microchip, one of the smallest ones they made. It’s 2mm x 4mm (plus legs), boasts a 4MHz processor, and an astonishing 24 bytes of RAM and 750 bytes of Flash. (I think this got bigger, I could have sworn it was 512 bytes when I worked on them.) There was a problem with everyone’s setup. CCS (the compiler company) used the initial run of the datasheets, where the register was at 0x1FF, but it got moved to 0x3FF. I had to get a patch from CCS and Quickwriter to get them programmed properly, but they were really cool about it. (My supervisor said, “well, you didn’t just tell them there was a problem. You told them what it was, and how to fix it. That gets pretty quick answers.”)
I’d bought a house, and took a week of vacation to reno it before moving in. When I got back, one of my co-workers was writing code for every variant of pulse rate, and every ID number. It would have been somewhere around 10,000 versions of the code. (255 ID numbers, 10 pulse rates, 2 pulse modes, and a salt water variant for the 10F204) “Can I try something first?” I rewrote the code with global variables so the compilier would put them in the same place. I changed the numbers and compared versions to see where the changes where. (When that same co-worker walked in and saw what I was up to, he said, “now that’s programming. Just a page of HEX.”) Then I whipped up a quick HEX editor in VB that changed that value, and sent it to production. The 10F204 version got cancelled, and it turned out that the manufacturer could program them directly into the chip for $0.37 per chip when they bought them by the reel. $1100 for programming versus what I was making, so that was the end of my job there.
My other favorite was proving that there’s no such thing as self-documenting code. I got a contract to upgrade a system, and they required a viterbi decoder. I’d never heard of it, so off to the Internet, then reading the specs, and figured out what I was supposed to do. What it does is only allow changes of state from one sequence to the next, so if you can’t find a valid pathway, one of the steps you took was incorrect and you have to find a new pathway. Once you have a complete pathway, you know the original message, because you erase the mis-steps and replace them with the only possible parts. So it’s like a rock path over a pond. There’s only one path, and if your foot gets wet you know that was a mistake, so you should have been on rocks the whole time.
Nobody told me it was supposed to be impossible.
It ended up being about 10-15 lines of code, all with decently-named variables that spoke about what it was supposed to do. In order to explain what in the world I was thinking, it ended up requiring another 120 or so lines of comments. Turns out that you can damage the transmitted message by up to 18% and still get the sent message out. I understand that it’s being used in first-responder radio stations now. That ended up saving them six figures in licencing costs. I never found out if that was per-year, or one-time.
They didn’t renew my contract.
It took a while to get over those rejections. I’d also had to deal with some serious personal issues at the time.
I spent five years working on [REDACTED] for Navy projects. I helped move the entire refit 6 months to the left when I tracked down another supplier for some parts. It was a lot more of the “bigger” work; line diagrams, inspections, parts procurement, that sort of thing. Eventually I got enough work experience that APEG-BC let me call myself a professional. I still remember the song playing when I got the phone call. (Caro Emerald — Back it Up)
In 2015, Engineers Canada awarded me a Fellowship, an honourary title that’s a little like an Engineering knighthood. I went to Vancouver to pick it up (because hey, how often do you get a luncheon in your honour?) I felt really unqualified compared to some of the other people in the room. It was probably the smartest room in the country for those couple of hours.
Which brings me to where I am now.
Every morning I listen to Joe Rogan’s motivational speech on “Be the Hero of your Own Movie.” This year I’m going to work on myself, my public presence, and my reputation. The last two have been mostly blank, with all my non-disclosures and desire to keep a low profile. But what’s the point of that?
I’ve done a lot of work, beautiful work, and nobody knows about any of it. The country might be a little different if I hadn’t taken this path. I’ve moved huge projects months to the left; I’ve saved thousands of lives and probably a lot of tigers. But that’s all … “what have you done for me lately?” I’ve been laid off, let go, not renewed, too many times to count, but in the wake of my career failures, I’ve built incredible things. I just haven’t talked about them.
But a hope without a plan is just a wish. So, my goals for 2016 are:
- Find a career path that works with me and what I can do. Something stable.
- Find someone that I want to spend time with.
- Donate blood 3x. (I promised the nurse last time.)
- Fitness goals: 300# on squats and deadlift, bench my body weight.
- Get at least 26 blog posts.
Engineering makes a lot of paperwork. Unshockable Engineering is OQM certified, which means we have documented procedures for handling paperwork, whether electronic or “dead-tree”. We have policies for document creation, document retention, document destruction, and everything in between. That’s great for legally handling all your engineering paperwork, but what about the things you do in the middle of your project?
Should you have removed that component? Added that breaker? Maybe.
You make changes. You make mistakes. You’ll want to rewind.
You have to use some kind of source control. Real life doesn’t have a rewind button, but when you’re using source control, you can get one for your work. Amazing, right?
There are free solutions available through SourceForge. They’ll work with source code, documents, and other files. When they were first available 15+ years ago, they could only handle a few select types and were clunky. Now they’re tied right into your Windows interface. OpenKM integrates into platforms like OpenOffice, Microsoft Office, and AutoCAD. They’re as easy to use as right-clicking your document.
Add-on programs like WinMerge easily detect mistakes, typos, changes, and anything else that’s different between the two files. (Although as far as I know, there are no programs that detect the difference between 3D models.) While writing code, I’ve mistakenly removed a bracket, and in ten seconds WinMerge showed why the code wasn’t compiling.
I’ve always said that if you’re not using source control, you don’t have any code, you just have a pile of files. It’s one of the things that separates the gifted amateurs from the professionals.
Having a document history can also help with funding applications. Programs like SR&ED credits want to know how you got to where you are. If you have a complete history of ever revision of every piece of code, you can prove your entire development cycle from start to finish.
Importantly, document and source control will help you when you’re working with other people. One person can work on part of the project, another person can work on another part, and when they check out the files, they will both be able to save, commit, and collaborate. Some programs will auto-merge files when there is no change. Sometimes you’ll have to do the work manually… but that’s why they pay you the big bucks. This is how one company handled their document control with multiple people:
Installing and configuring a document management system is the best way to keep your computer organized. It basically hires a robot to work for you, watching your files, keeping track of what you’ve done, and keeping a record of it. It’s frankly wonderful.
If you’re not doing it, you’re running on borrowed time. You will make a mistake, you will delete something, and you won’t be able to fix it. Do your work professionally. Do it like an engineer.
Building prototypes is fun, and it’s one of the most rewarding things about engineering. It’s not without its pitfalls, and here are a couple of common mistakes. At Unshockable Engineering, we’ve made a lot of prototypes over the years. They’ve evolved into systems in use all over the world.
1. Spending too much
Your prototype shouldn’t be expensive. Don’t rely on exotic materials. Your first prototype can be made out of cardboard if that’s what’s in your budget. (I’ve made several initial “to-fit” pieces out of cardboard, then remade them in ABS or metal.) Which is easier to adjust – a recycled shipping crate or a custom-milled titanium brace? Will a new technology be on the market in time? I’ve said, “if your best friend, that you trust with your life, promises that you will get the new software tomorrow, believe it when it’s installed.”
Use COTS (commercial, off-the-shelf) parts when you can. Don’t custom order anything, and don’t rely on someone else’s R&D to pan out.
2. Expecting Perfection
Prototypes are not supposed to be perfect. They’re supposed to take your idea and bring it into the real world. They’re a first draft. Parts of the prototype can and will break. You will make bad choices. Performance will be flaky. You’ll learn how to make your product better, or maybe find out that parts of it are totally impractical.
Prototypes aren’t supposed to work all the time. They’re supposed to work the majority of the time. Getting them to work all of the time is a later step.
3. Relying on your prototype
Once you’ve built the prototype, you have to move on. Do you want to refine it? Do you want to make iterative improvements? Learn from what you’ve built.
Your prototype isn’t the entirety of your business. Sure, it’s a cornerstone but one cornerstone doesn’t make a building. How will you get these to market? What’s the ROI for investors? How long is the lead time and supply chain? Can they be made cheaper? Can they be made tougher?
A prototype is a good start, but it’s only a start. There are a lot of prototypes in a lot of basements, earning dust instead of dollars.
4. Emotionally Investing
We get it, it’s your baby. You saw it in your mind years ago, and you finally got to see it in real life. The prototype represents your dreams, your goals, and it’s what you’ve been waiting for for your whole life. It really is just an object, though. You have to be willing to burn it to the ground and start over. What would you do differently? Do that. Maybe you can keep it in a shadow box later and have it as a great story when you’re on the cover of TIME or Wired.
Listen to criticism. You should be able to answer good questions with good answers, and bad questions with better answers. If you don’t know the answer, find someone who does.
“I made this work” feels great but it’s the first step. What can you do to get people to use that product? How can you get it to market?
5. Organic Growth
This is twinned with “emotional investment”. You can’t keep adding on to your prototype. Once you’re happy with it, leave it. If you want to improve on it, it’s a better choice to make a new and improved prototype based on what you learned building the first one. Would it work better with the flange removed? Should this part be stronger? Organic growth means that you’re stuck with all the bad design choices you made before you knew how to build it. It’s a bad choice with code, and it’s even worse with hardware.
Don’t let your design decisions come out of what seemed like a good idea at the time. Figure out the problem you’re trying to solve, and then solve it.
7. It might not work
One last thing is that your design just might not work. Sometimes it’s because you’re trying to break one of the Laws of Thermodynamics. You’d be surprised by how often that happens. Or it will turn out to not work, or not solve your problem, or even to make a harder problem show up. I’ve lost track of the number of non-functioning circuits I’ve had to rebuild or recycle because they didn’t work half as well in real life as it did in my head.
It happens. Go back to the drawing board or pack it in. It’s your choice. Like the t-shirt says, “fail early, fail often.”
If you’d like Unshockable Engineering to work on your prototype, let us know.