Welcome to the May 2018 Newsletter, the first of its kind. In the past, I had been writing weekly updates that generally served more as diary entries than actual site updates. While that’s not exactly a problem, it did take a lot of my time. By switching from weekly updates to monthly updates, I can be much more effective with my time.
Table of Contents
May 2018 Digest
Now that updates are monthly, I want to start sharing a summary of each article written in the previous month. This won’t simply be a list. In fact, I want to actually summarize each of my articles. Depending on how much effort it takes, I may end up cutting down on this segment, but I want to give it a shot. Let me know how you like it in the comments below.
In this article, I talked a bit about my internal linking strategy. After all, one of my articles started to take off, so I wanted to leverage that to spread some of that love to the rest of the site.
In addition, I mentioned that I made a major update to my support article. In particular, I’ve reduced the number of ways you can support me, and I’ve removed the deprecated methods such as Patreon. Moving forward, I’ll be using my shop, PayPal, and ads only to earn an income.
As for the added value, I mentioned that I’ve walking a lot, and it’s been improving my health overall. And naturally, the article closes out with some my plans.
For my next to last weekly update, I spent a lot of time complaining about the requirements to change your name. Morgan and I are in the process of merging our last names, and the process couldn’t be anymore complicated or expensive.
Also, I spent quite a bit of time talking about added value. Specifically, I mentioned The Wonder Years new album and—ironically—critics.
Of course, the article closes out with my upcoming plans as usual.
Issue #52: The End to an Era
For my last weekly update, I shared a lot of random information:
- An introduction to Sample Programs in Every Language
- A code snippet which adds text to the bottom of all my “in Every Language” articles
- The elimination of the Java and Python categories
- The announcement that I’m holding off on tutoring
- A small rant on anti-intellectualism
How’s that for an update? If you are interested in any of those topics, perhaps its worth a read.
Sample Programs in Every Language
If you haven’t heard yet, I released a master article for all the Sample Programs. Basically, this article provides high-level information about the project and links to each project page.
In addition, the article contains information about how you can support the project as well. Of course, you can find all the same information on the GitHub page.
Don’t worry about reading this article now. I’ve added it to the menu bar at the top of the page (see: projects).
Hello World in Every Language
At the risk of blowing up this post, I’ve decided to consolidate the digest to only include a high-level description of everything I’ve accomplish in terms of the Hello World in Every Language series. Up first, here’s a list of all of the articles published in April:
- Hello World in Lisp
- Hello World in Scheme
- Hello World in Racket
- Hello World in Haskell
- Hello World in Perl
- Hello World in Scala
- Hello World in Elixir
- Hello World in Pascal
- Hello World in Hack
- Hello World in Elm
- Hello World in Wren
- Hello World in Red
- Hello World in Julia
- Hello World in Crystal
- Hello World in Kotlin
As you can see, April was a month of new and functional languages.
Reverse a String in Every Language
In addition to the Hello World in Every Language series, I launched another series called Reverse a String in Every Language. The following is a list of articles released in that series:
As an FYI, I have rewritten the rules for this series a couple of times already. I think I like where they’re at not, so I plan to continue this series a bit.
Make sure you check out the Reverse a String in Java article. It shows off two implementations, and they’re both extremely thorough.
The Sinister Start
For those of you who don’t know, I quit my job as a software engineer at GE Transportation. Of course, for me, that was a long time coming. In the preparation for the resignation, I wrote an entire 15-part series essentially complaining about my experience.
Now, at the end of March, I released the first article of that series titled The Proactive Preface. That makes The Sinister Start the second article of that series. Since this is my first monthly update, I’ll share a brief digest of both of those articles.
The Proactive Preface is an article that serves its implied purpose; it clarifies what the series is, why it was written, and why it is important. As a result, it’s a rather short, but critical article in the series.
Meanwhile, The Sinister Start is an article the introduces a lot of background information need to fully grasp the remainder of the series. It includes information like where I’ve worked in the past and how I got the job I eventually quit. In addition, The Sinister Start covers topics like how I originally got interested in engineering and how I got into writing.
The Bewildering Bureacracy
At this point in A String of Unfavorable Roles, I start to dive into the various reasons why I left engineering. First up, Bureacracy!
The bulk of this article is split into two distinct parts. First, I present a typical engineering scenario and follow it to its logical conclusion. In this section, I talk about the struggles of having an entrepreneurial spirit in corporate engineering.
In the second section, I break down a few personal examples of bureaucracy. For instance, I share an anecdote in which a product was facing scrutiny simply because of its name.
Then, of course, I wrap up the article and share a link to another great article in the same vein.
The Miserable Management
For the fourth article in the series, I decided to pop in a little management satire. The first portion of this article reads sort of like a BuzzFeed post with a bit more angst. In this section, I address the various types of managers and share an accompanying GIF.
Like many articles in this series, the remainder of this article shares personal anecdotes around my experience in engineering. In particular, I rant about every manager I’ve ever had.
The Everlasting Exertion
Following my management rant, I released an article discussing the struggles of being required to work all the time as an engineer. For some reason, the corporate environment equates time to productivity. As a result, hard workers are punished.
As you can probably imagine, I spent much of this article frustrated with this concept. Obviously, I view the corporate environment as a form of extortion.
That said, I did spend some time writing up some tips to get an actual good job. After all, I don’t think all companies are inherently bad. I just think the corporate environment breeds corruption.
May 2018 Community
In addition to sharing stories of my own articles, I’ve also decided to share some of the best articles I’ve found online. Sounds fun, right?
Obfuscating “Hello World!”
Recently, I stumbled upon a fun article on obfuscation. In this article, the author shares a code snippet of an obfuscation of Hello World in Python.
You might recall that I did a version of Hello World in Python. Of course, the versions are quite different. In mine, you can clearly tell what the program is supposed to do. In the obfuscated version, you have no idea what you’re looking at.
Of course, the author goes through great detail to explain how they came to their solution. I love it because they do fun things like extract letters from class names to build strings. By the time the solution is finished, Hello World in Python goes from one line to 42 lines. I think a lot of us would like to be able to do that for essays!
Why Programmers Are Not Paid in Proportion to Their Productivity
The other day I was browsing Twitter, and I happened to stumble upon a tweet which shared a snippet from an article on programmer productivity. The article was so good, I figured I’d give it a share.
With my engineering rant series slowly unfolding, I’ve noticed that a lot of other bloggers in the industry have had their own share of complaints. The author of this article, John Cook, is no different. Here, John shares the programmer’s struggle to be compensated for their productivity gains.
Delivering on Something That Doesn’t Exist
Just like the last article, I found this article about delivering on something that doesn’t exist while perusing Twitter. Again, I’m noticing a general displeasure for the engineering industry showing up in a lot of blogs lately.
In this article, Tim Cull describes the disconnect between sales and engineering and ultimately the effects on programmers. Primarily, the author focuses on sales incentives and how they motivate sales teams to close sales by any means necessary. Often, that means selling a product that doesn’t exist.
May 2018 Added Value
Toward the end of the weekly updates, I started an added value segment which I stole directly from The Minimalists. I’m a big fan of this segment, so I figured I’d keep it rolling for the monthly updates.
To be honest, I’m not sure why I never mentioned Duolingo sooner because I’ve been using it regularly for about four years. But anyhow, I can’t recommend Duolingo enough. It’s a great tool if you ever want to dabble in language learning.
Personally, I’m on an 80-day streak in Spanish. To be fair, I don’t study a lot—maybe 20 minutes a day—but, I refuse to give up the habit. Maybe my Spanish skills will come in handy some day. ¿Por qué no?
Lately, I’ve been getting a lot of value out of playoff hockey. Of course, I’m a Pittsburgh Penguins fan, so I’ve been fortunate over the last couple years.
That said, that value is decreasing rapidly. For one, the Penguins only have two games left to lose. If they lose them both, I’ll probably be done watching hockey for awhile due to reason #2.
Secondly, the NHL and clearly many of the fans seem to think brutal physicality during the playoffs is okay. In fact, not only is it okay, it’s praised. After watching close to 10 players receive horrifying high hits in the last couple weeks, I noticed only a handful of them received disciplinary action:
Tough to wake up in a world where:
1. This hit could be easily legislated out of the game
2. Every NHL player studied post-mortem has had #CTE
3. The NHL refuses to fund research into how to fix these broken brains https://t.co/WXLtEXhmJu
— Chris Nowinski, Ph.D. (@ChrisNowinski1) May 2, 2018
Is that not insane? I watch the sport because I enjoy watching the Crosbys, Ovechkins, McDavids, Mathews, Mackinnons, etc. I don’t watch the game, so I can see players bleeding on the ice. That’s inexcusabe, and NHL player safety has completely lost control of the game.
These aren’t the playoffs; these are The Hunger Games.
The Practical Dev
On a lighter note, I’ve been getting a ton of value out of the dev.to community. In fact, I’ve even been getting some exposure thanks to them. All I had to do was share my Sample Programs repository, and people started starring it.
So, I’m definitely thankful for that community. It seems much more positive and upbeat than many of the other elitist developer communities I’ve explored, so thanks!
May 2018 Discussion
Something I’d like to try this month is launching a discussion question which we can chat about below in the comments. Of course, I’ll give you my take here.
So, my question this month is the following: what makes a good coder?
Honestly, this question can be interpreted and answered in a lot of different ways, so I’ll defer to a quote from one of the articles I recommended:
The romantic image of an über-programmer is someone who fires up Emacs, types like a machine gun, and delivers a flawless final product from scratch. A more accurate image would be someone who stares quietly into space for a few minutes and then says “Hmm. I think I’ve seen something like this before.”
To me, the best coders are not the ones who have memorized solutions to problems. They’re the critical thinkers who demonstrate the following:
- Strong problem solving skills
- The ability to handle feedback
All these qualities and more are what I hope to exhibit some day. For now, I’ll tackle them one at a time!
Coming Soon to The Renegade Coder!
Well, right now it’s early May 2018. I am heading back to school in early August, so that gives me about three solid months of full-time creation. After that, I’ll be reducing my creation drastically.
At any rate, my current focus is on the Sample Programs in Every Language series. As a result, I’ve reduced how often I’m posting to increase my GitHub contributions. My current posting schedule is now roughly every other day.
However, I will still be posting articles for the A String of Unfavorable Roles series every Friday until early July. So, clearly, I can’t keep a strict every other day schedule, but I’ll try to limit the gaps between articles to a day.
As for the big picture, you can expect me to keep chipping away at the site until August. After that, we’ll see what happens. Hopefully, I can recruit some students to start using my material.
As always, thanks for stopping by! Don’t forget to give this article a share, and feel free to join the discussion below.
Kicking off a new series of reverse engineering content inspired by VirtualFlatCAD. Today, we're trying to roll our own uppercase function.
When it comes to capitalizing strings in Python, you have a few options. Use the tools Python provides or roll your own.