Modern developers like Roger Deutsch (who goes by the handle Raddevus) have evolved with their field because of their love of learning. Fortunately, developers like Roger also love to share what they learn, in part to archive their own knowledge for themselves. Roger loves to challenge himself to learn new things as a developer and then write about it, which has led him to contribute several articles to CodeProject (CP), one of which has received over 300,000 views.
The quality and popularity of Roger’s contributions in articles and answers to community-posed questions earned him the CodeProject MVP award in 2018. Roger’s contributions are as wide-ranging as his interests. Most recently, in June 2018, he shared two prizewinning articles (second and third prize), exploiting the Internet of Things (IoT) to win the Arduino Challenge.
The Challenge
There were four challenges for participants to choose from, ranging from the fun and interactive to the deep and educational.
Build an Arduino LED binary counter
Using their own Arduino starter kit (or this nifty web-based Arduino simulator), contestants were asked to build an LED binary counter by wiring up a series of LEDs and connecting them to the Arduino.
Create Morse code using an Arduino
Contestants were asked to use the Arduino’s built-in LED to flash any Morse code message they wished.
Showcase working Arduino projects
Contestants were asked to showcase a working Arduino project that they were already working on.
Demonstrate IoT expertise
Contestants were asked to post an article on CodeProject that highlights a challenge of their choice featuring IoT development.
The Winning Articles
First Prize: Phil Hopley – $350
Rodney – A Long Time Coming Autonomous Robot (Part 1)
Second Prize: Raddevus – $250
GPS Walker: Get GPS Data with Your Arduino
Third Prize: Raddevus – $200
Monitor & Store Temperature Stats for Home Zones with Arduino
For a list of all the winners (Congratulations!!!) visit the Arduino Challenge and go to the Winners tab.
Words from the Winner’s Circle
I recently got a chance to speak with Roger. Like so many developers, Roger’s accomplishments have earned him recognition because he approaches software development with an attitude of humility. The position he has taken as a lifelong learner has paid off handsomely, because he willingly and repeatedly puts himself in the position of being a student. This means that his chosen career is never stale, because he’s always learning something new. It also means that when Roger writes about what he learns, he writes with the confidence of someone who has pushed his boundaries, discovering solutions through trial and error, not omniscience. Because he’s writing from experience rather than theory, his articles are engaging to his peers.
Tell me about yourself. Where did you grow up, where do you live now, and what do you do?
I grew up in Dayton, Ohio and the surrounding area, and I’m still here. I like Dayton a lot—it’s a great place. There’s a lot of industry here, actually. We have LexisNexis, and I’ve worked there in the past. Zip files were invented here: the guy who invented Zip files still lives here. There’s a lot of software work here. Wright-Patterson Air Force base is here, which has meant work for the DoD (Department of Defense). There is a lot of work [for developers] here, and it’s kept me employed for 25 years. Right now, I’m at Edict Systems. We provide EDI (Electronic Data Interchange) products for sales invoices and purchase orders.
I’ve had a very interesting career. I started out in a little shop, building computers, in 1993. Then I was in tech support, and while I was there, I started reading a “C++ For Dummies” book, and I wore that out. I really did. From there, I moved into QA (quality assurance). QA was interesting, because my job was to break people’s code. I did a lot of automated testing in 1995 before people were really doing that.
I did QA at LexisNexis, too; I did a lot of capacity and performance testing. We did load testing, because they built a search engine for legal data, and they had a lot of traffic every day—that was really interesting. All along the way I’ve been learning more about software development. I’m reading books, becoming a Safari technical books member, watching videos, taking classes. I’ve always enjoyed that; I’ve always enjoyed learning. Then, I started doing dev work for a small company doing C++, and really enjoyed that. Now I’m mostly a C# developer.
I’ve been really fortunate that I’ve gotten to work in so many companies. When I work with my support people now, I don’t want to write code that makes people yell at them.
How did you get interested in programming?
We had a family friend living with us when I was 11, and he had a Radio Shack computer (TRS-80), and I learned how to load games from cassette tapes onto the computer by looking over his shoulder. That’s kind of the hacker mentality, right? I wasn’t really supposed to learn it, and that made it a little more exciting, right?
When he left, I would load games and play ‘em. And, one day I beat the game, and I couldn’t tell any of my friends, because they wouldn’t really understand. But, it was really exciting to me, that I got smarter than my computer, even though it was just checkers. It meant something to me, and it was a lot of fun. It gave me an awareness of how I could do different things on a computer. You can learn in a different way, it’s very hands-on. That kind of excited me.
Then I had a Commodore 128, and it was weird loading games onto that, too. I would try and type games from Family Computing Magazines, and it would always fail, and I would try and figure it out.That’s how I saw how you could always make things better in software. And I saw how it is always changing, which I like. I like trying to always make software better for the user. Being a developer, it builds humility.
How did you get interested in writing about programming?
See, I was never on a regular path. I was not a computer scientist. I kind of dove into things. And I was extremely excited about learning, but my public school education didn’t encourage doing those kind of things the same way. For example, they told me I needed to have all this math to learn computer science. And, I said, “I don’t really know math.” But I discovered you could just learn programming on your own.
And in that time also, I wanted to learn to write, and I wanted to write fiction. So I was reading tons of books about writing fiction. And as I started working with computers, I noticed that software was a story.
You know, software is trying to draw you in to use it intuitively, like a story. And where it fails to tell the story, that’s where the software needs documentation. And that’s really what drew me in. You know, people would say fiction writing is a lot different than non-fiction writing, like what you do for tutorials, but it’s really very similar.
How did you build a body of work and contributions including winning the Arduino Challenge) that led to winning CodeProject’s prestigious MVP 2018 award?
I found CP years ago, probably just a little bit after it started, and read articles there. I found great content there and started wanting to go back. One of the things I noticed about 7-10 years ago is that I had to go back and relearn things that I had learned in the past. I wanted to document what I did, and what I learned for myself, like an engineer’s notebook. That’s kind of how I saw CodeProject. The articles are targeted, they are very extensive.
A few years ago, when I was thinking along these lines, CodeProject happened to have an Internet of Things contest, an IoT contest. And, I had just moved into a house that had these two garage doors, and these old garage openers, and I thought I should be able to open them with my phone using Bluetooth. I got started down the Arduino path, and I built a little component that would receive the Bluetooth signal, and open the garage door. I thought it was so neat, that I wanted to share that with other people, too, and since they had that contest, it worked out. People responded to it so nicely, and it seemed like a great community. It was an ad hoc group of people that come together for what they like.
I wrote another article called “Destroy All Passwords: Never Memorize a Password Again,” because I hate passwords. So,I had this idea for how to never need to remember another password, but all your passwords are super secure. So it’s really exciting. Most of my articles get 6,000 views in six months. I wrote about that, and it got over 125,000 views over three days. It’s now had over 385,000 views over a couple of years. The big thing it brings out is that everyone hates passwords.
How did you approach your writing to create winning content that readers will value?
This is all part of what I’m interested in, too. I do have a process. The very first thing I do is I think of something I’d like to have. Like the garage door opener or password project. Other times it could be something I want to learn, like it could be a technology if it’s something I’d like to have, or a JavaScript library. It also has to seem like something amazing to me.
Like I said, it’s not always a product. Sometimes it’s learning a library. And, I’m like, oh, I’m going to write an app. That’s what I did with that old C++ book. It would tell me how to set a string, and I’d go and write a whole program to display strings. That has always kept me motivated. That’s really the beginning of the process.
Then, it’s a lot of iteration. It’s very much like the Agile process. You start adding some of those features. A lot of people don’t like Agile Scrum, but it’s a really good process, because you create a backlog of all the features you want. That’s what I do. Then, I’ll start to create those features. That leads to research, and then I document it so I remember it. Next, I get stuck, and then I have to try something different, and along the way, I make this engineer’s notebook. Finally, I’m at the end, and I’ve gotten to the thing I wanted.
Now, I ask myself, “How will I explain this to someone so it’s intriguing to them and it flows smoothly?” That’s when I think transitions, especially for technical topics, are really important. Because you can’t just jump from one idea to another when someone’s learning it, you have to flow to ideas. I’ll iterate and ask myself, “How do I create this article that will flow from beginning to end and tell the story of the technology?” Then, I do A LOT of editing. That’s what makes the best writing.
So, it’s the interesting topic, then the engineer’s notebook, with a focus on transitions and editing a lot. Most of my writing process is editing.
What did you do that you think was most important to writing a winning or compelling/popular/viral article?
It has to try and do something big. Even if you have to say at the outset, “Well, I failed at this.”
With the ”Destroy All Passwords” article, some people were really angry at the title. I made it catchy on purpose, because I knew a lot of people hate passwords. I wanted to get people’s attention. It worked! It did catch people’s attention, but it wasn’t misleading, because I gave a possible solution on how to stop having to remember all these passwords. When I started the project, though, I knew maybe along the way I might fail. You know the saying, “Shoot for the moon. Even if you miss, you’ll land among the stars.” [Norman Vincent Peale]
There are many times I get so far with a technology, and then I can’t go any further. I can’t finish. I develop apps for Android and iOS, and they are all different. There are so many gaps in their technologies. With both platforms, you can try to build something, and then you get to a point where the API just doesn’t support it. And, you’re done. But, you learn about those frustrations by doing that. You’ve got to push on those edges. That keeps it exciting.
Sometimes you try something really hard, and you fail. But I never see it as a failure, because I learned everything until I got there. I see that as a resource. Then I create an engineer’s notebook and show someone everything I learned to get to that point. And, they might be able to take it further. It’s disheartening at times, but you need to do it. It gives you more energy to try to do something that no one has ever done. It makes it exciting.
I notice you used a combination of written text, code, images, and video. How did you decide what media to use to communicate an idea?
I really do think about that a lot, because of what I’ve read about the brain and how you absorb information. Because of modern distractions, I try not to give readers a wall of text. I like to write, and I like to give strong transitions that guide you from one thing to the next. I also try to break up the text, and I choose images, GIFs, or YouTube videos to break up the wall of text and give you relief as you are reading an article. So I like to combine writing with images, GIFs, video, and smoothly transition through those points in knowledge.
Breaking up the wall of text and smoothly transitioning between those points of knowledge are what helps me decide how to use different kinds of content in an article. And, I really think about attention span nowadays. I read a book called “The Shallows: What the Internet Is Doing to Our Brains,” by Nicholas Carr, about what the internet is doing to our attention spans. The book is fantastic. It shows how just being distracted, among other things, lowers your IQ. I think about that a lot with my articles. I know people are in a hurry.
I know a lot of people will scroll through the article looking for an image. I try to give the reader images so people can see what it’s going to look like. Because if they can’t see what benefit they are going to get after they read the article, they won’t read it. For example, I feel really strongly about not texting while driving. So, I wrote a program to read my wife’s texts to me out loud while I’m driving. Last year, I wrote an article about this for CodeProject, so it made sense to show a 12-second video of the program reading the texts aloud.
How do you inspire yourself to complete projects, whether writing or coding?
It loops back to this whole idea that the project really has to be about something that I want. I concentrate on how someone will get value from it by the end of the project. When I want to use it, when I want to share it, that keeps the energy high enough that I’ll fight through frustration to get it done.
Did you set a goal to become a CP MVP?
No, I did not. I wanted to contribute and interact with people who were like-minded. And also, I enjoyed the articles there so much, I just wanted to see if I could provide something that other people there would find of benefit. It all came out of that, wanting to solve things, wanting to learn things, wanting to give back.
Is there anything else you think our readers should know about you, your experience, or your process—words of wisdom?
This a phrase I’ve made up: “Keep on learning and keep on writing.” That’s really what I try to do. I’ve done software development for over 25 years now, and I’m still excited about it. That’s the “keep on learning” piece. The “keep on writing” means to keep a record of what you’ve learned. I think that’s important.
That’s a Wrap
There are so many ways to approach writing winning content. Whether it is your first try, like Oana Mancu, or a body of work, like Roger, you owe it to yourself to write about what gets you excited, where you feel you could add to a body of knowledge. Roger has been programming for 25 years, and in some ways nothing has changed since his early student days. He’s still as excited about software development as he was as an 11-year-old kid loading games on the sly on a borrowed computer. This curiosity has led him to set himself challenges to follow his interests. Because of the real possibility of failure, his writing about his projects is of interest to others. By creating a public engineer’s notebook, he has lived his own advice to other aspiring developer authors: “Keep on learning and keep on writing… keep a record of what you’ve learned.”