Lack of Engineering Blogs/Community

Why are there no engineering blogs? Or engineering meet ups?

There is a literal overflow of information about programming. Stack overflow is huge. There are hundreds and hundreds of blogs written by developers who are leaders in their field. You have to look really far and wide for an engineering blog.

I don’t really understand the nature of the ‘secretiveness’ of engineering. Perhaps engineering is too confidential to write about? I’m thinking about people like Kent Beck, Martin Fowler and David Heinemeier Hansson. They all blog and they are all groundbreakers in their industries.

Why don’t we hear blogs from people working in engineering, blogging about engineering stuff. Maybe the corporate stuff is a bit too ‘secret’ to talk about. What about how a new issue tracking system was implemented. Or how a 3d printing has changed the way things are designed in the workplace. Perhaps an in depth discussion on negotiations and contracts, supplier management? Outsourced pros/cons?

I guess for software engineering, you can share details of your work without fear of compromising the confidentiality of the project. An algorithm or a data problem (in most cases) can be discussed without the broader project picture.

I recently read a book called Peopleware that discusses the human side of software development. Over 80% of the problems and solutions are directly applicable to any aspect of engineering. So why did software engineers write the book? They certainly were not here first.

Perhaps software engineers are more curious beasts? Perhaps by their very nature they are more sociable and community driven? This seems unlikely. I reckon the spread of sociability for a sample of mechanical engineers compared with a sample of software engineers is pretty similar. Not too sure about curiosity though.

I’m starting to wonder if all of the idea sharing and community of software comes from the rapid change nature of the industry. Software changes so much, so often. It is a given that you have to keep developing your skills and learning, or you become obsolete. Maybe the community the community is strong because everybody has to share to learn and stay relevant?

Software development is still a very tricky problem. Compared to building roads or making widgets, perhaps there is more to discuss. My mental jury is out on this one. I don’t know.

Advertisements

Book Review: Peopleware

Peopleware-Cover

This was a wonderfully quick read. It is funny. It is sad. It hits way too close to home. Halfway between Seinfeld and Dilbert, Peopleware is fundamentally a book about how not to do silly things. Silly things that companies do to make life crappy for employees. Companies don’t (always) do it on purpose. In fact I think that there is an entropic state that all companies tend towards. This state is not ideal for the company or the employees. It takes conscious thinking managers and directors to steer things in the right direction.

The first third of the book talks about environment. A whole third! The findings can be summed up as follows:

  1. Give your employees space.
  2. Don’t interrupt them.

That’s it.

In fact the undercurrent of the entire book is this: A manager needs to give their employees what they need and then get out of their way.

So, is this sensible? Don’t managers have to follow their minions like a hawk to make sure they are doing what they are supposed to? No. I have an experience that says otherwise. I shall digress:

I have had one ‘golden’ experience in my career as an engineer where I was loving what I did so much I would have worked for free. I was given a nearly impossible problem. I was given a set of crappy tools/constraints. Whenever I complained about the crappiness of the tools/constraints, I received empathy. I also received clear reasons for why our tools/constraints existed.

This part was really important. My manager explained his reasons, his budget constraints, his time constraints and how they dictated our approach. He explained this well, in terms that made sense to me. So in turn, I empathised with him and resolved to do my best to make us both look awesome.

Julz hard at work

This is the face of a very productive & happy worker (looking awesome)

And I did. The next 4 months were a flurry of activity. Prototypes, dead ends, hack nights and ‘flow’. I remember going into work and spending the entire day uninterrupted, no lunch, no Reddit, just pure, pure problem solving ‘flow’. I loved these days! I spun a golden solution out of straw. The framework and process that came out of those 4 months was scaled into a team which operated smoothly for the next 3 years!

So what made me work so hard? Was it endless supervision? Was it a timesheet? Was it an incentive bonus? Nah. It was the challenge. The freedom and the belief instilled in me by my manager. All he had to do was: set the direction and get out of my way.

In hindsight, the easiest way to screw this up is with management ego. It would be very tempting for an egotistical manager to demotivate me when I started this project.

Whos your leader- ponty haired boss

These people exist. Sadly true.

When I asked about better tools I could have been told: “Those decisions are above your pay-grade”. This has happened to me at a different, much more corporate engineering job. The key is two way empathy and trust between manager and worker. Not “old boys” style management where seniority comes with contempt. Unfortunately, “old boys” management is rife in lots of industries and companies, governments, hospitals and large engineering corporations.

So, back to PeopleWare. PeopleWare is written with managers in mind, but this is the second time I’ve read it and I’m yet to be a manager. I love the book and all the insight that comes with it. I reckon all final year uni students should read it, despite it having a strong software bent. It was written 25 years ago and it is all still very relevant. There is some sage advice withing!

Not all of it will make sense at first, but it will give graduates an idea of the constraints and pressures that your manager faces. If you can better understand your manager, that will gives you a huge headstart towards a happy career. Build that relationship of trust and empathy.

The other reason I would recommend PeopleWare to graduates is for scouting. You want to find the organisations that use these best practices. And to recognise good practices with happy employees, you have to know what they are. Fog Creek software reflects all of this stuff at the core. So does ThoughtWorks. In Australia I have recognised it in places like Octopus Deploy (small/medium size) and TechnologyOne (medium/large size). I’m pretty sure Atlassian deserves a mention too.

Anyway, its a good read. If you find yourself working for a company/manager that follows these practices, you have done very well indeed!

My Current Pet Project: Cinema Subtitles (pt 2)

So, in the previous post I laid out all my ‘pain points’ and annoyances with the existing service for cinema captions.

It was around October that I thought about making an iPhone app to solve all these problems. After all, an iPhone can do all the things that the Capti-View can. Perhaps it can even improve on the Capti-View system?

I did some research and uncovered some interesting facts:

The online subtitle community is incredible

How incredible?

One week after cinema release, there were subtitles online for the new star wars movie.

In less than half an hour after airing the final game of thrones episode. There were subtitles in english, spanish, farsi and french!

Basically, like most healthy online communities, people do it for the love of it. They do it for the “karma”. Some of the best subtitle authors enjoy a very good reputation for their work.

So, sourcing subtitles was not going to be an issue. They are already out there, hosted on quite a few large platforms.

There are existing subtitle apps

If subtitle apps already exist, should I bother developing one? Well, I downloaded one and checked it out. I worked pretty well except for one key point. Synchronisation.

Have you ever watched a movie where the audio slipped out of time with the video? It is very annoying and can be downright confusing. Having correctly synchronised subtitles is a total “must have” feature for any application providing this service.

The app that I downloaded used a slider bar. This is a terrible solution to “scrubbing” the subtitles into sync.

UISlider

Representing an entire movie with 4 inches of screen is very silly. Sliding across 3 pixels is equivalent to about 2 mins of movie time. So, in its current format, I think the existing app in the App Store is pretty useless.

So what’s my idea? I have Two!

I have two different approaches that I’m going to use.

Idea 1: A better UI

One approach is to develop a UI that solves the problem of “scrubbing” or syncing a sub. This should be interesting.

I think that selecting subtitles using a scrolling table view would be a much better solution. But I will have to experiment.

Idea 2: A clever algorithm

The other idea is a bit more outlandish. Could an algorithm sync the subtitle by listening to the movie?

I’ll expand on this idea: Perhaps the application could use the iPhone microphone and “listen” to a sample of audio. There are plenty of open source algorithms that do a pretty good job at this.

The actor might say: “Lets get out of here. Its going to blow!”

The application would hear: “Lets get our beer Its going to snow”

But remember the application would be able to assign a weighting of certainty to the words that it heard. So perhaps “beer” and “snow” get replaced with wild.

Now we just have to search our subtitle file for the pattern “Lets get our *@#* Its going to *@#*”

It might take a few lines before it gets a possible match, but when it does it can time shift the subtitles.

Perhaps this process only needs to happen once? Maybe the first person who uses the app in “Spiderman 7” can rate the sync quality and send a small signature back to a server. This signature could be a pattern of the first minute of the film. Future viewers of “Spiderman 7” would use this signature to sync their subtitles before any audio is even spoken?

Anyway, there are lots of idea here. Before I could explore them, I would need to be able to program yeah? So that’s kind of how I got started down this road.

 

My current pet project: Cinema Subtitles (pt 1)

I’m going to tell a little story that requires a lot of back story. Ready?

I’m deaf. Not just a little bit deaf, but really deaf. I can mow the lawn without my hearing aids and enjoy complete silence.

I love seeing movies. But I can’t hear the dialog. So, I love foreign films. They have captions.

A year ago I found this thing at a cinema near me:

p09

It is awesome! My wife and I enjoyed a movie date. Usually after a film, we spend about half an hour “debriefing”. I miss a lot of plot, so she explains it all. For this date however, we just discussed how awesome the film was! (Actually the film was not very good, it was Superman, so we spent an enjoyable hour discussing the various appalling aspects).

Excellent, empowering, equalising use of technology! How cool. What problems could it have?

Pretty soon, I didn’t want to see any movies without this awesome “CaptiView” gadget. This is where I ran into trouble.

Big Problem #1: Scheduling

If you go to the website, you discover that there are about 7 sessions per day of various movies. They show the movies for TODAY and TOMORROW. Would you like to plan a fun group movie event on the weekend, 4 days from now? Too bad. You won’t know the scheduled times until the day before.

The available movies rotate around quite frequently. So you are forced to just pick what is available. This is a real shame. I would use the service a lot more if I could plan ahead.

Big Problem #2: Availability

I already sort of covered this. But not all of the showings are available with CaptiView. There were no weekend spots for the new Star Wars film, I had to take my son on a Tuesday evening. Very late bedtime for both of us!

Big Problem #3: Reliability

On two occasions I have missed out on a captioned session. I drove my son 45 minutes away to see Star Wars on a weeknight and all the CaptiView dongles were flat : (. I was gutted.

The other disappointment happened when the session times were wrongly displayed on the website. I turned up for the film and it was in a non-CaptiView cinema. So I didn’t get to see my film with subs. : (

Big Problem #4: Discretion

When I ask for the dongle at the front desk, the attendant usually has no idea what I am talking about and they have to get the manager. I don’t think many people use them. This is embarrassing. Deaf people loathe bringing attention to their disability. I hate making a fuss, but there is little choice.

I am a confident deaf person, but when I was a teenager, I would have found this experience mortifying!

So, I plan to solve all these problems with a mobile app.

(more to come)

 

How to get a free trip to Dallas in less than 3 years

Recently I was lucky enough to present to an audience on an international stage! Yep that’s right.

SOLIDWORKS_World_2016

Whee! Props to me.

Like most amazing things that happen to me, it did not happen overnight. It was a culmination of lots of work and a bit of luck. Lets look at the events that set this in motion.

In 2013 I was given a ridiculously difficult task. In simple terms, I had to learn how to be a CAD wiring harness designer. Here’s a few pictures to show you what I was aiming for:

spaghetti router.JPG

This was a mockup with some dummy equipment.

trunk1.JPG

Pretty sweet hey. It took years of sweat and tears to get to this quality.

I needed to route up 24 designs of racks for a huge defence project. I made the model for a few reasons. All the cables were pre-terminated, so very accurate lengths were required. Also, in many instances, further mechanical design was needed to route the cables. My models would support the design of any widgets to be made or holes to be cut.

So why was this so hard? One simple reason: First release software. I really need to say no more.

I was the first user of SolidWorks Electrical in Australia. I was one of the first users in the world. SolidWorks Electrical was actually designed for a completely different application. It also had little documentation. I had to reverse engineer the workings to suit my needs.

I hit hardware roadblocks, file size limitations, workaround after workaround after workaround! But I did it! In the process, I became one of the more knowledgeable users on the forums. To my surprise, the developers (from France) reached out to me for input. I was over-excited. This was the first time in my career that that any kind of ‘recognition’ had come my way. It was a huge ego boost too! It felt like Linus was asking me what I though of Git! Or if Jony Ive had sought my input on the next macbook!

So, I was feeling kind of special, when an opportunity came my way. A SolidWorks user group was looking for guest speakers. I volunteered without thinking twice. And to my surprise I had a great time.

I really enjoy presenting. My writing is ‘okay’ but my preferred medium is the stage. I come across as very confident, enthusiastic and bordering on the evangelical when I talk about something I love.

So at the next SolidWorks product launch in my small town of Brisbane, I was delighted to be asked to speak. This went off! My jokes were received with roars of laughter. I connected with everyone in the room. I had managed to make my project entertaining and engaging. And they even asked me to speak again for the Sunshine Coast product launch!

Each year SolidWorks has an conference in the States. It is filled with speakers who instruct people about best practices and niche workarounds. I decided to apply as a speaker.

IMG_2268

Winning!

My presentation was simple. SolidWorks Electrical is built on a SQL platform. To get reports and information out of the program, some serious SQL knowledge is required.

I was lazy/sneaky/clever (take your pick). I asked someone to latch onto the backend with MSAccess. Then I used the query builder to “drag and drop” my tables and joins and imported these queries back into SolidWorks Electrical. It was a pretty empowering solution, especially if you were pressed for time and had no SQL skills. I titled my presentation: SQL free reporting: How to make code free BoMs!

It was accepted! I was off to Dallas.

So where did it start?

Most evenings I spend about 4 hours studying app development and related stuff. I’m not a developer. How did I end up here? How did I get from engineer to computer science student? It started a while ago, with a problem.

TimeTravel2

Flashback to 2009 folks!

Back in 2009 I was a humble materials engineering graduate in my first job. I did estimates. Estimates are very repetitive. Specifically my job involved producing drawings for underground box culverts. Not very exciting. The drawings were always pretty much the sme.

I started to fix little problems with macros.

record-macro-option

It all started here…

Just simple stuff. My very first macro would iterate through each drawing in the document and convert the format of the date from MM/DD/YYYY to DD/MM/YYYY. I remember vividly the first time I got that little macro working. It was the most awesome feeling of accomplishment. I had brought something into existence with nothing more than a little mental mettle! Magical, magical macros! Oh happy day.

So, when my inbox was full, I would do my work. When when my inbox was empty, I would automate my work. All of my tasks were eventually replaced with calls to the SolidWorks’s API’s. It was simple scripting. I would update fields, resize drawings and even change minor file references.

Naturally at some stage I decided that I would stitch all these macros together into an application. I called it “TheProgram”. (The year was 2009, if I did it today I would call it: “TheApp”). My glorious creation involved about 6 months of feeling more or less completely lost. I loved every second. There were brief moments of clarity, but mostly I was just hacking away horridly.

I had two strong mentors at the time: My dad and my roommate Adam.

Dad’s first job was programming council rates into one of these: DEC VAX 11/780 back in 1980.  He is old school. Being my father he is also very patient. Both of these qualities are useful in a mentor (especially the patience). He introduced me to Visual Studio and helped me set up a proper IDE. He answered endless questions. He also gave me this book to read:

CodeComplete1stEdSmall

Read this.

CODE COMPLETE (Steve McConnell) is amazingly readable. Despite my very rudimentary experience, I read it cover to cover and absorbed a great deal. It was very formative and really piqued my interest in the wider area of software development. (I will have to write a proper review of this book in due time).

My roommate Adam was also a computer wiz. His weapon of choice was Java. He had a lot of experience and had worked on some huge multimillion dollar projects for very large companies. I think annoyed the hell out of him actually! I was like a little mosquito every evening wanting to discuss the latest cool idea I had just read about. I was all like: “OMG PROGRAMMING!!!!”

Between these two resources and a lot of reading, my final application could:

  • Receive a data from a spreadsheet
  • Transmit the data to SolidWorks (Cad program)
  • Configure the drawings
  • Resize the models
  • Save the drawings
  • Add all the details to the drawings

It took about 10-15 mins for it to do this. I still had an hour or so of “cleanup work”. But how much time had I saved? DAYS! yes. DAYS. I was doing a whole day of work in an hour or so. I felt so powerful!

Around this time I was playing with sketchUp a lot. I had a very enjoyable, brief fun filled fling with Ruby. I wrote a few little apps that automated 3D drawings. It was a lovely affair!

I enjoyed automating things far more than I enjoyed doing the engineering or the drawings. So why didn’t I become a programmer and take a development job?

I think it was a lot of things. Slight lack of confidence. I didn’t have a CS degree. I had only just graduated. Plus things looked a bit different back in 2009. Stack overflow was barely a year old. Hiring self trained developers was a bit of a rarity.

Anyway, I’m back on track now!

Programming and Parenting

The biggest challenge I’ve had with learning programming has been time. Long stretches of uninterrupted time. I need a good couple of hours to get in the “zone” and really stretch my mind into new areas. This is especially true when trying to learn tricky concepts for the first time like ‘recursion’ or ‘swift optionals’.

Now, anyone who is a parent will find themselves in a constant state of hyper alertness. You can’t ask a 6 year old to give you 2 hours alone. Its not gonna happen.

I have tried:

  • Super early starts. I trialled getting up at 5am and doing work while everyone is asleep. Two things can go wrong here. Sometimes I will be on an awesome streak that gets cut short, my two hours is up. Sometimes I get only half an hour, my munchkins all decide to wake up at 5:30.

    IMG_0297

    Once these guys wake up, I have no chance of getting any work done!

  • Carving out blocks of time at the library on the weekends and taking the family along. The theory with this is that they are still hanging around nearby but I can do my work. But it doesn’t really work. My wife needs me to mind the baby for 5 seconds, or Myles (my 6 year old son) will pester me to read him a book. When that happens, I WANT to read him a book. There is a constant nag in my chest between my urge to study and my will to be a great parent.
  • Studying at home in the evenings. This is the worst of all the options. Dinner time and bath time is chaos. Rather than enjoying bath time and story time, I feel compelled to rush. The clock is ticking in my head and I want to get to my study ASAP! I view my kids as annoyances instead of the wonderful little ragamuffins that they are. Terrible!
  • Staying at work and studying till around 9pm. This one is a winner! I made a deal with my wife. No weekend study for me. I will be fully focused on having fun with the family and helping her get the house ‘reset’ for a new week (laundry etc). In exchange I stay late at work and get a decent 4 hour block smashed out. This really works. I’m never trying to sneak half an hour here or there to do some study at home any more. Much better for everyone.

Staying at work is the best plan at the moment. I take a brisk walk at 5pm, reset my brain and hit the books and tutes. I manage to get about 15 hours a week this way. Most importantly they are LONG stretches of time that let me go far, far down the rabbit holes of learning that I love.

Last week I did an entire Udacity course: Intro to iOS App Development with Swift. The suggested time is 1 month at 6hrs a week. I had it done in 3 evenings. Evening study at work is turning out to be a really solid tactic.

Obligatory post number 1

So this one kicks it off.

I’ve been on this education trip as a developer since roughly October 2015, nearly 6 months now. It started with an idea over a few drinks. The idea refused to go away. Then something awesome happened.

I started learning, and learning and learning. Until my mind was full of books and my ideas became the world all around.

IMG_1998

Okay. That’s a bit off topic. But in all seriousness, I wanted to build an iPhone app that played subtitles in the cinemas. I will explore and explain this app idea in detail in later posts. But for now, lets just say that I have been studying iOS development for a while.

It is the most engrossing fun I have had in years. I’m happier for it. I’m 31 years old. This is what I want to do with my career.