Missed it last week, but back with a weekly update!
Howdy internet friend, and welcome back to my blog! In this post I want to share what I’ve done over the last two weeks, as well as what I hope to accomplish this week in the form of a list (which is mostly just for myself to refer to later). I’m going to end the post with something I learned last week about programming that I’ve found very valuable and hopefully you’ll find value in it too! Without any further adieu, let’s begin.
I started to write this post last week but it came out all wrong - the first draft was super negative and spiraled in to a political rant, so I shelved it for later (though if I’m being honest with myself I will probably never release it). In the second version I wrote what ended up being a cover letter, and by that time it was Friday and I try my best to not do computer work on the weekend. One thing that was interesting about the week before last was that it was my first time attending a (virtual) Spokane 2600 meeting since I left. This was great because it meant I got to spend time with one of my best friend, Acetolyne, and we spent some time improving our skills, which is always great! It was also the week of my wife and I’s anniversary, and even though we were stuck in self-isolation we managed to make the best of it. Last week was also great because I attended a virtual meeting of my favorite local hacker group, Irvine Underground! I spent most of the Zoom call hiding my face since I shaved my beard a few weeks ago, but overall it was great to hang out with that group!
Last week I set really lofty goals for myself and accomplished almost none of them. One of my mistakes was not writing these goals down (something I’ve remedied this week below). I’ve written before a number of times about my desire to improve my programming skills, and to do that I reached out to one of my best friends and the best programmer I know, Acetolyne. While we were chatting and working on HTB together he gave me some good ideas about how to improve my programming skills. He suggest finding easy contributions to make to open source projects and while this is an awesome idea, it also gave me another idea!
In addition to contributing to an open source project, I’m going to work with another buddy to write some new tools. One tool I hope to write is a scanner that will output enumeration information about a target. So in addition to the open ports, this tool will attempt to discover all software that is installed on a system, as well as version of the software, OS, and any other interesting information. Ideally this would work for the major operating system times starting with Windows then MacOS, and finally, different flavors of nix (Linux and Unix mostly). If you are asking yourself, “why would he focus on Windows first, when he hates Windows” there are a few good reasons for this, but primarly because nearly all corporate environments rely almost exclusively on Windows. Since that OS has the biggest market share, it makes the most sense to focus on it first. Regarding the other software project, a friend and I started work a few months ago on a replacement of Burp Suite. We were originally writing it in Python, but we’ve both been bitten by the Go bug and he is doing the heavy lifting on refactoring the code in Go. Finally, I’m going to continue working on my personal project to build a multi-user dungeon (MUD) in Go.
This time last week, I had goals but no direction and this week, I have both. I’m excited for the opportunity to work on new projects and expand my programming skills. I’m also looking forward to contributing to larger software projects and giving back to the community. So I’m hoping to write some code, go through a few more Go tutorials, and start writing some outlines for the MUD I’m going to code up. I realize these goals are very lofty, but putting them out there in the form of this blog will help me try to be accountable to these goals and hopefully move me forward. Just for myself, I am going to list out all my goals here so I can come back next week and look at how I did. This list will likely carry through to the coming weeks as well, as I can’t possibly accomplish all this during the ten hours or so I have available this week for these projects. So don’t be surprised if you see a version of this list in the next few weekly updates as well!
- Start work on the enumeration project
- Contribute to the project I’m working on with Acetolyne (if possible)
- Look at fixing the issue with the blog on mobile
- Put in more work building out the outline of the MUD
- Work through more Go tutorials
- Write an outline of next week’s blog post
- Find a free and open source project to contribute bug fixes to
Finally, I want to end this post by sharing with you one of the best programming tips I’ve ever heard. I was listening to an interview with Bryan Cantrill, who is one of the co-founders of the Oxide computer company and former employee of Sun Microsystems. In the interview he mentioned that he learned early in his career to make extensive use of comments to explain what the code is doing. This is something I’ve spent the last weekend thinking about in my spare time and, like the other really good tip I got about spending more time up front designing software before writing it, the more I think about it the more I like this idea. When I’m finished with a project (or to a point where I want to share) I would like the code to be so well commented that anyone reading it could understand exactly what is happening. It seems to me that this would also have the benefit of making code easier to debug as well. Ultimately, I think the benefits outweigh the additional overhead in commenting the code. I will add that I have only been programming for a few years, and I would be interested to get the opinion of more experienced programmers on this (and really any other) subject. So if you are reading this post and want to weigh in, please tweet at me or send me a DM. For everyone else, I hope you enjoyed this post and found some benefit or tidbit of information, and I hope that you have a very nice week!