As we say goodbye to 2019, I wanted to make a little record of some of the cool things I worked on and learned this year.
I made a web app in React!
I’m very far from a React expert, but I really wanted to at least get my feet wet (kiddie pool, not ready for the ocean yet) in it because React is so popular.
Looking back on this project, I wish I’d documented my trial and error, but it was a lot of trial and error – I’m nowhere near ready to write a tutorial on it.
I used React to build a webapp that checks a blog post you give it for defunct Amazon links:
It scrapes the post you give it for Amazon links and feeds them through Amazon’s advertising API to see if a product comes back or not. If a product does not come back, the link is marked as suspicious in the report it generates. (Some products exist on Amazon.com but are not in their API for some reason – so it does generate some false negatives. Hey, it still beats manually clicking each link.)
- Here’s the server code: https://github.com/MJGrant/amazin-link-checker-server
- And the front-end code: https://github.com/MJGrant/amazin-link-checker
It’s live – I deployed it to a free Heroku server (hence the slow startup).
I got my start in web development setting up and running affiliate marketing blogs, and I always thought it’d be neat to have a tool that can check for dead links instead of periodically clicking them all myself.
You have to be an established affiliate with Amazon with at least a small amount of monthly sales to get access to their product API, so I made a video demonstrating how it works for those who don’t have credentials and/or just want to see it in action.
The biggest thing I got out of this project was the experience of revising my initial approach several times. My initial idea was to scrape the blog post for Amazon links, then basically run automated tests on each link to see if an Amazon page loaded and scraping it for data to determine if the product is actually there. Whoops – Amazon does not like being scraped. They direct you towards their API instead, which was a whole new project-within-a-project.
There were many times during this tool’s development where I hit a wall and thought I’d abandon it, only to have an idea later that day for working around whatever limitation I was up against.
I made my first WordPress plugin!
I started using WordPress way back in 2013. I have lots of experience using plugins, but I’ve been frustrated and disappointed in many of them – they just didn’t do quite what I wanted, or they had an overwhelming amount of options that I didn’t need, or they were too expensive.
This year, I decided to stop being intimidated by the idea of building my own and made a very simple (okay, it wasn’t simple, but it looks simple when it’s on the site) “product box” plugin. I documented the entire process in a series of detailed TILCode posts, starting here. I learned a lot from making this, and – most importantly – I realized I’ve finally skilled up enough to take on a novel challenge and carry it through to completion.
You can see its repo here: https://github.com/MJGrant/amazin-wp-product-box and download it if you want to use it.
I completed five classes towards my CS degree!
I’m almost done! I’m on track to graduate in June of 2020.
I completed nearly 1/3rd of my degree this year. I took:
- CS340 – Intro to Databases – basically “web dev, part 2” on a somewhat dated tech stack that didn’t go as deep into SQL as I’d hoped it would
- CS344 – Operating Systems – a challenging class that deepened my understanding of bash, Linux, and sockets through four large projects
- CS475 – Parallel Programming – a great class on an intimidating topic I’m not sure I would have studied on my own
- CS372 – Intro to Networking – an incredibly detailed deep-dive into the inner-workings of the Internet, there’s no way I would have slogged through all those calculations on my own
- CS362 – Software Engineering II – lots of automated testing practice that, unfortunately, left out a lot of standard industry tools and best practices
A common theme to the classes I took this year was “stuff I don’t have much experience with and probably wouldn’t have done on my own”.
One of the most valuable things about this degree program, to me, as someone who already has some professional programming experience, is when it exposes me to things I would not have found (or pushed myself through) on my own.
Some of these classes were very much outside my experience and quite challenging, particularly operating systems and networking. I appreciate learning about these things in a structured academic setting as opposed to on the fly at a job where people are counting on me to already know the basics.
I am still very happy with my choice to attend OSU. I’ve learned so much.
Here’s to a wonderful 2020!