BillJellesmaCoding

AboutBotPalsQuick Tip Tweets

The resourceful programmer

by Bill Jellesma
2019-11-30 23:00:00
The resourceful programmer

As a youthful and handsome fledgling software engineer, I've found, by far, the most valuable tool: Google. That answer may come as a shock to some of you who picture programmers as being one with the matrix. Programming the matrix However, throughout my travels on Google, I've developed a list of resources. Some of these resources I'll use to stay up to date with technologies and some resources I'll use to find an answer with the specific setup that I'm using.

Podcasts

Podcasts are a really great way to stay up to date on modern trends in the tech industry.

Somehow, whenever I search for developer podcasts, this podcast always comes up as The podcast. For good reason, this podcast is a technical walk through anything and everything to do with development. This show has been around since 2012 and in that time, they've had time to look at the typical format of their show. They'll have guests from prominent companies on, they'll have Q and A episodes, and they'll have episodes talking about the latest and greatest ways to build a site. The two hosts, Dave Rupert and Chris Coyier, are well known throughout the tech industry. Chris Coyier is the founder of CSS Tricks and Co-Founder of Codepen. Dave Rupert is a lead developer at a web design shop, Paravel, and has been a guest at a number of podcasts and conferences including JAMStack_Conf

Soft Skills Engineering, as the name implies, discusses the skills in your career that aren't technical. I've been listening to these guys for a couple of weeks and am not disappointed. Dave Smith and Jamison Dance have a 30 minute humorous and informative discussion on topics ranging from salary discussion to eating lunch with the dev team (Episode 182: Lunch and switching to product management). The topics are submitted in by listeners so they're real world questions. If you like the idea of listening to a podcast rather than sitting across from HR uncomfortably, then listening to these guys may help.

For anyone following me on twitter (all six of you), you may notice that I'll retweet these guys or mention them fairly often. I first heard about this podcast from one of the State of Javascript Surveys and they quickly became one of my go to podcasts. They have an interesting format where they release a 20 minute "Hasty Treat" episode on Mondays and a longer (usually 40-50 minute) "Tasty Treat" episode on Wednesdays. The hasty treat episodes are usually about some new framework or some other small item they think would appeal to their viewership. The larger tasty treat episodes are usually a deeper dive into something like the fundamentals of JavaScript/CSS. Some tasty treat episodes (about once a month) are a potluck episode in which they'll take several viewer questions. I first heard of netlify, the platform this blog uses, from Syntax. I've learned about more formal debugging tools than just console.log() and a lot of technologies that I've taken a deeper dive into like GraphQL. The shownotes on the website are key since I listen in the car and often need to look at it later.

JS Party takes a more casual/hangout approach to interesting topics about everyone's favorite programming language. This hangout approach enables the show to try on different formats. One format they try is YepNope where they each take sides in a debate of topic such as whether or not modern websites should work without Javascript. One format is the typical technical overlook such as using React and Webassembly to create a game. One format is just hanging out and talking about other aspects of software engineering such as going to conferences or avoiding burnout. Rather than have two or three dedicated hosts, JS party uses a rotation of hosts. One week, JS Party may have Jarod and Emma, and another week may have Jarod, Divya, and Suz.

Admittedly, I don't listen to every episode of security now because it is 2 hours long. Some of these podcasts do go over my head because my area is more focused on software development. Nevertheless, Steve Gibson and Leo Laporte both do a great job reporting on the most recent developments in security. Steve Gibson is always on top of news stories and has the technical prowess to do a deep dive into the security developments. While Steve is able to deliver the security news in a factual manner, Leo Laporte's skill is in offering humorous commentary and more applicable circumstances. While computer security is not my area of expertise by any stretch, I do have a keen interest in security as I imagine you do as well and would definitely recommend giving them a listen.

Youtube

Youtube is huge for modern web development. It's always good to be able to follow a tutorial on something like building a tasklist in Vue JS or building a backend in GraphQL. These tutorials are great way to learn new aspects of a language/framework. That being said, you should be aware of getting too used to following tutorials and using them as crutch so that you're unable to apply these skills without the help of a youtube video. This is a very important concept and I think Brad Traversy said it best in his video on escaping tutorial hell.

Brad Traversy (as mentioned above) puts out some of the most comprehensive and useful content I've ever seen. One of the first videos of his that I took and ran with was a To Do list app in Vue JS. I followed the video and went a little further like adding state management with Vuex. My project is still available (as of November 2019) on https://taskifyio.netlify.com/. He currently focuses on creating videos on the frontend but has mentioned in a recent video that he hopes to use more Java/PHP.

This channel, besides being hard to find again until you realize there are three Ss, is a fairly new and under viewed channel that has taught me a lot about Gatsby, GraphQL, and ES6 in general. You may notice that the blog I'm using is very similar to the blog found in his series and it is almost identical. I've made a few tweaks here and there to attune the blog more to my liking such as add a few custom graphql fields, syntax highlighting, and an image resharper; but if it had not been for this tutorial series, you may be reading this on Wordpress still.

TheNewBoston is an older youtube channel but his videos have helped me immensely when I first starting playing with code in college. When I first started coding, I used Java (before I found the extreme ease of use of python) and I would often use these videos. In fact, I can specifically remember a project for my sophomore programming with objects class. I was scouring the internet at 3am trying to figure out how to use web sockets when I came across a series of TheNewBoston videos. Bucky, if you're reading this, this linkback is my small way of saying thanks for helping me pass my college programming class.

Editors/IDEs

A very important part of any software engineer's tool belt is a useful text editor/IDE.

VSCode is probably the editor that I use for a lot of my coding and have used almost exclusively for the past two years. I say almost exclusively because I also write a fair bit of C# in my day job and, to my knowledge, this requires a more sophisticated Integrated Development Environment (IDE) to compile. Still, when I'm using python/javascript, VSCode is more than sufficient. Formally, VSCode is a text editor so its specialty is being lightweight as it doesn't have the extra features that a full IDE like Visual Studio has. Don't let this being lightweight fool you though, it has plenty of extensions to make writing code faster/easier. Prettier is an extension to automatically format your code to be readable. ESLint is an extension that will automatically detect errors as they're written as well as ensure that you conform to your custom coding rules. For example, if you create a variable using snake casing and have specified that variable names should be camel cased, it can throw and error. Language specific tools like Python extension for Visual Studio Code will provide IDE like capabilities such as intellisense and unit testing.

If you're thinking that an IDE like this would cost an arm and a leg, then you're sorely mistaken. Visual Studio has a community (free) edition on which to write and compile code. As I said, when I use C#, I use Visual Studio to compile my code. Visual Studio does also make it very easy to quickly create a certain type of project such as a console app or class library, and also to choose the runtime environment for .NET apps.

Blogs/Sites

I'd probably get strung up if I didn't mention stack overflow in a discussion about coding resources. Since stack overflow has been around so long and so many developers have asked questions on this website, the chances are really good that any question you may have is listed on stack overflow.

General Tech

If you couldn't tell by my recommendation of Security Now above, I've always had an interest in computer security. In opposition to Security Now which is more a news broadcast of what's happening now, Darknet Diaries will take a deeper dive into a specific story. The stories also aren't necessarily current but can also be a story about a cyber security event from years ago. Darknet Diaries also has a wide breadth of the types of stories; they may tell a story about a recent Microsoft patch Tuesday, a hacking tool stolen from the NSA, the underground market of cybercrime on the dark web, nation state hacking, or more. The goal of this podcast's creation is to make everyone aware of the dangers of the internet as well as how to protect yourself.

Do you remember how unicode works? How about binary trees or hashing tables? If you're like me, you remember hearing these terms mentioned in computer science class but don't remember the specifics of how they work. BaseCS podcast is a good refresher on the basic concepts that you'd learn in a computer science curriculum.

Another reason that I don't remember these esoteric concepts from computer science is because I don't use them very much in my daily work. Most of these algorithms are abstracted out in the programming language/construct that you're using. Nevertheless, these concepts are important as they allow you to make informed decisions about how to structure your programming code. If you have several terms in one list that you want to compare with several terms in another list, you can use two for loops to easily iterate and compare every term from list A to every term in list B, but knowing the time complexity might not make this a very good option if there's a chance that these lists can get big. Maybe if you're able to sort these lists, you'll be able to take advantage of something more efficient such as a Binary Search.

Command Line Heroes is a podcast from Reddit that I've started listening to recently and would highly recommend it. The podcast centers around the history and evolution of tech. The current season (season 4) is about how computer hardware, such as the minicomputer, came to be. Season 3 of the show was about how programming languages used today came to be. As a programmer, I found it really interesting to gain insights into languages such as COBOL and Perl, some languages that I knew nothing about. Focusing on COBOL, I never knew how prevalent it still was in banking. This is just one example of how the podcast has proved itself as a valuable resource and I imagine it will be a nice resource in any techie's tool belt.

Other

Anyone who knows me will tell you that I am a major fan of using Markdown. I've previously written about markdown and my deep affinity for it. In fact, these blog posts are all written in markdown. I also use markdown a lot for documentation for work. I write the markdown into VSCode and use a plugin to convert my markdown to a PDF.