When Phil Hopley retired from a 40-year career as an engineer, he added adventure travel to his life. Oh, yeah, and he started a home robotics project. In the process, he’s won a developer challenge (or two). Welcome to Phil Hopley, Version R.0.
In the “Summer Fun with Arduino Challenge” where Phil took first prize, there were four challenges for participants to choose from, ranging from the fun and interactive to the deep and educational. They included building an Arduino LED binary counter creating Morse code, showcasing a working Arduino project that they were already developing, and demonstrating IoT expertise by posting an article that highlighted a challenge of their choice featuring IoT development. You can read more about this challenge and other prize winners like CodeProject MVP Roger Deutsch.
Phil also took first prize in the AI TensorFlow Challenge. You can learn more about first-prize winner, Oana Mancu, and the details of the challenge. Like the Arduino challenge, this challenge was also comprised of three smaller challenges including taking a fun survey about using AI for world domination, completing a TensorFlow tutorial, and demonstrating knowledge by submitting an article about a topic in AI.
The Winning Articles
Phil won the first prize for the Summer Fun with Arduino Challenge IoT expertise demonstration, for his entry, Rodney – A Long Time Coming Autonomous Robot (Part 1).
In addition, he won third prize in the AI TensorFlow Challenge with his entry Adding Object Detection with TensorFlow to a Robotics Project.
Words from the Winner’s Circle
I had a chance to catch up with Phil and delve a bit into his secrets for creating winning content for developer challenges. Here’s what I learned:
Tell me about yourself. Where did you grow up, where do you live now, what do you do?
I grew up in Rugeley in Staffordshire, which is in the Midlands in sort of the central part of England. When I left school in the late 70’s I did an electrical and electronic apprenticeship at North Staffordshire Polytechnic. I always liked to say that it was the last year they listed my apprenticeship as “indentured.” I worked as a testing and commissioning engineer after that for a few years, then in Barrow-In-Furness. That’s northwest of England, near the English Lake District. I moved to change my job, and I went to work in the local shipyard there. I still live in Barrow and I retired last year. I like adventure travel: walking and kayaking. But even though I’m retired, I like to keep my hand in the profession with my home robotics project.
How did you get interested in programming?
When I was doing my apprenticeship, around 1979, my father was also an electronic engineer, and he had great foresight. He suggested I start looking at computers because he thought it would be important for engineers in the future. I got a TRS 80 computer, sold by Tandy in the UK (called Radio Shack in the U.S.). I read that Roger Deutsch had the same in one of these interviews. Well, I taught myself to program using BASIC and Assembly language on that computer. That started me off in computers, and throughout the 80’s I bought a variety of computers. I eventually bought a PC, and I learned C and C++ programing. At the same time with my work, with the interest that I had in computing, I became what is known here as a mature student with The Open University. I’m not sure if you know what that is, but it is a distance learning organization in the UK. I got my degree in computer science and was able to transfer within my company to software engineer. So I worked about 19 years as a test and commissioning engineer and 21 years as a software engineer.
How did you get interested in writing about programming?
At the time I started my career in software engineering, it wasn’t considered a mature engineering discipline. That was because people were hacking things together, not doing proper documentation or following processes. People couldn’t repeat the process without the documentation. So, I took the documentation skills I learned as an electrical engineer, and I applied them to my software engineering.
When I retired and started my home project, I wanted to at least be able to document it. I was thinking about the best way to do that. I originally thought I would start my own blog, but no one would read that. Then, I thought about how I had used CodeProject (CP) all my career, and I thought of submitting a series of articles to document it and give something back to CP, so that I would be putting something back into that community as well as documenting the project.
Why did you participate in the AI TensorFlow and Arduino challenges?
The Arduino win is really embarrassing. Obviously, that was about the time I was retired. I saw the challenge flashing on the website, but I hadn’t visited. So I wrote the first part of my article as part of my articles series. It included Arduino, so I just tagged my article as Arduino and published it. Because my article submission was tagged Arduino, it got entered into the competition automatically. I didn’t know I was entered until I got the email that I’d won.
So after that, I continued to develop my own project. I’d been adding my articles in CodeProject as I completed significant parts of the project. I had a lot of notes of things I had to do for the project, and things I found on the internet. At some point I wrote a note saying “AI TensorFlow.” I don’t know why I wrote it down. When I saw the AI TensorFlow competition, I remembered the note, and I thought I should do it. So, I slotted it into my project, wrote the article, and came in third on that challenge. That was quite nice.
How did you approach your writing submission part of the challenges?
That’s a hard one, really. I think for all the articles I’ve written on this project, I wait for a natural break in the work, in what has been accomplished. It’s a point where I want to write things up. I don’t even think of the next part of the project. I like to stop and write up what I’ve done. With the TensorFlow article, I didn’t start writing anything until I had all the code worked out, written, and tested. Then I started writing the article. I get all the code done, and I then I document what I did.
Describe your writing process.
I answered that a little bit in the last question. I get all the code done. I know I’ve tested it so I can show how it works before I start writing about it. I use the draft feature on CodeProject a lot. The first draft is a bit of a brain dump of what I want to say and what order it will be in. I review it for technical accuracy, and then I flesh it out. Another thing is, as a writer I feel that C++ is my first language, and English is my second. So to combat that, I put all the text in a Word document and have my wife read it. She doesn’t make technical corrections, but she edits my English.
What did you do that you think was most important to writing a winning entry?
I think both the articles that won showed a practical use of the challenge subject. It wasn’t a theory of how to use the subject. You could actually see that the robot was doing something practical.
How did you develop a strategy and decide on the media to use to communicate an idea?
I’m not sure if I consciously developed a strategy. I think over the years we’ve all read technical articles, and we know what we like to keep reading and what makes us want to shut it down. I do like embedded video in the article, especially to show the testing. It demonstrates that it really works. I saw the other two winning articles; they have images early on, which shows people what’s going on. It gets the reader’s attention. Images help. All my articles have lots of images––either screenshots or actual photos of the project. The code is also there, it’s important to show, but I don’t explain every line of code. I’m sure most people just want a general description of what’s in the code.
How do you inspire yourself to complete projects, whether writing or coding?
I think to answer that one, I can go back to the question of why I became a software engineer in the first place. Right in the early days of writing code for the TRS 80, I found that fun. That was all the interest I needed, really. I always found writing code fairly easy, I can always see the bigger picture of what a system is supposed to do. I’m not trying to sound conceited here, I sometimes get stuck like the next person, and I have to debug things. But if it’s something you enjoy, you’re happy to carry on to complete the project. I guess I’m just lucky in life that I found something that I enjoy, that I’m good at, and better yet, that people were willing to pay me to do it.
Is there anything else you think our readers should know about you, your experience, or your process?
I’d encourage everyone to give a challenge a go. Especially if you can weave the subject that you’re interested in into that challenge. Like the TensorFlow challenge; I didn’t know anything about TensorFlow, but it was on my radar as something I wanted to look at. I was able to learn something new and share it. So, I would advise taking on a challenge that you are interested in and weaving it into a larger project you are working on. I watch out now for what challenge is coming, and I’ll take one if I see how I can work it into my project.
That’s a Wrap
In Phil Version R.0, he’s taken on the challenge of an ongoing robotics project and committed to documenting it publicly by posting articles on CodeProject. Recognizing the value of sharing what he has done and giving back to the CodeProject community that has helped him in the past has paid off in unexpected ways––an accidental win and an intentional one.
By entering the AI TensorFlow challenge as part of an existing project, he has been able to meld his curiosity with his drive to document. Using articles to document the project once he proves it is working, he has been able to mix video, images, code, and explanatory text to give a full picture to those who want to repeat his work. To others considering entering a developer challenge, he advises that they weave the challenge topic into a larger project or larger problem they are working on in order to write winning content.