Recent Posts

Let's Encrypt Wildcard Certs

encryption , security

Recently Let’s Encrypt announced that they would be supporting wildcard certs. I was pretty excited to hear about this as many times I would like to get certs for machines that might not be accessible on the internet. Currently I didn’t see an easy way to do this. With the new certs you could get a cert on your web server for your domain and use that cert on all the other machines in your domain that need TLS as well.

Read more →

Java 9 Upgrade

java

After upgrading my test app to Spring Boot 2.0 yesterday I decided to see how difficult the Java 9 upgrade was from there. I am happy to report that it was fairly trivial. I upgraded my maven pom to set the Java version to 9 and did a mvn clean install.

Immediately I see some no class def exceptions around javax.transaction.Transaction. I did some quick google searching and discovered the problem seems to be in the Maven Surefire plugin. I found a work around that said to set the version to 2.20.1 and added a command line flag of –add-modules javax.transaction. After doing that I was seeing errors around java.xml.bind. Doing some more searching I then added a second –add-modules java.xml.bind. This fixed the issue. In the course of doing so I found a link to the issue on apache’s website. Reading through the comments I ended up with a final configuration of 2.21.0 with the following options:

Read more →

Spring Boot 2.0

spring-boot

Spring Boot 2.0 has finally arrived. Unfortunately we aren’t yet in a position at the office to be able to begin the upgrade so I decided to start playing around with it on one of my projects at home as I didn’t want to wait until we were ready to update our app.

The first thing I noticed about it they removed findOne() from CrudRepository. This to me is a bad change for all the users of the framework. It is one of the most commonly used methods in Spring Data, and not people either have to refactor their code to use findById() which returns an Optional<> of the type and deal with the optional instead of a null or you have to add a findOne with an @Query to all of your repositories. I have worked on projects in the past that have hundreds of tables and Repositories. This change is forcing them to update hundreds of classes just to upgrade to Spring Boot 2.0. It seems to me a better choice would have been to @Deprecated on findOne and encourage people to upgrade to the new findById method.

Read more →

Upgrading to Java 9

java

Upgrading to Java 9

Ever since Java 9 was released last fall, I have been wanting to upgrade our software at work to the new platform. I am not interested in the new module stuff, mostly I just want the convenience methods like List.of(), and the platform improvements. I think G1 by default looks good, the new representation for strings to save memory looks like a huge win, and all the performance numbers that I have seen show it to be a big win. Unfortunately this is not as straight forward as one should hope.

Read more →

Themes for 2018

general

Introduction

As is tradition on this blog I always lay out some themes to focus on for the upcoming year. These were last years themes if you want to get an idea for the types of things I usually do. I haven’t spent as much time as usual pondering my list this year as I was very busy over my holiday break (at the start with sick kids, and at the end with lots of family activities). Given that today is my last day of vacation I decided it is time to get some things written down. Here are my themes for 2018.

Read more →

2017 year end review

general
Recap for 2017

Now that I am off of work for the rest of the year I decided that it was a good time to work on my annual year end review for 2017 and see how my year went. This is the post I did at the start of the year for my plan on what I was going to focus on: Themes for 2017.

I am going to start with just an overview of my year and then I will drill down into my themes. 2017 was a whirlwind of a year. In the 4th quarter of 2016 we made a push to make Choose a profitable company. We achieved that by the beginning of the year and in my mind we were going to run hard for another year and really grow the revenue and hopefully sell the company in 2018. Instead the board decided to sell the company in May which led to major changes for me.

Read more →

HTTP Location Header

general

I came across this blog post today about using the HTTP Location Header in REST API responses when creating a resource. I have been doing Web development now since 2008 and in all that time I have never actually seen anyone use this header on any of their endpoints.

That being said it makes a lot of sense, traditionally when I would create a new resource I would return the json for that object back in the response so the caller could pull the ID out of the object, but this seems like a better way to do it, as now you could just return your 200 like normal and set this header and not have to send the response body back when the caller knows what they just sent you.

Read more →

Bose QC-35 Product Review

general

Bose QC35 Box

Today I received my new Bose Quiet Comfort 35 headphones that I ordered, so I figured that I would do a review on them.

I have been a long time Bose Headphone user. It all started back in 2007. Sofi and I were about to fly out to Scotland to celebrate our wedding anniversary and I had recently received a small amount of inheritance money after the passing of a grand parent. Faced with an 8 hour flight to London (before we flew to Edinburgh) I was thinking man some noise cancelling headphones would be nice for the flight. So Sofi and I ran over to the Bose store at the mall in our area and bought 2 pairs of Bose Quiet Comfort 3 Headphones for our flight.  We quickly charged them until it was time to head to the airport. Previous to this I had never owned any premium headphones before, and I was immediately hooked. They were night and day better than anything I had ever used before. They cut out so much noise from the jet engines that I could actually play my iPod at a lower volume level that I would otherwise which lead to much more comfort when listening to music as well as much more comfort on the flight just having the headphones turned on with nothing playing. At that point I decided that these were the way to go going forward.

Read more →

Microservices as the way to onboard a new engineer

general
Microservice onboarding…

It has been a crazy couple of months since I took my new role. I have had so much new stuff to learn I haven’t been making a lot of time for other technical pursuits in my spare time. But that being said I am on paternity leave right now, so I figured it was a good time to sit back and reflect on my first couple of months. Similar to Choose the first project that I was asked to work on was to write a new Micro Service. This got me to thinking maybe this is the way to on board a senior engineer.

Read more →

Last Choose post

general

I haven’t had a chance to update my blog lately as I have been so busy in my new role. That being said I did want to highlight the writing of some of my former coworkers as I think they are writing some great stuff. First check out Kevin Stephen’s blog over at: http://kevindstevens.com/ Kevin is talking about Technology, Growth, and Venture Capital all topics that I find interesting. Also our former Chief Revenue Officer John Tough is blogging over at: http://johntough.com/ John has provided some great stories about the whole acquisition process and even as an employee I learned things that I wasn’t aware of at the time, so I have really enjoyed his writing. My final reading recommendation is Jonathan Crowder over at: https://medium.com/@jonathan.m.crowder He is also writing some great business content. Though JC you really need to host on your own site and not on medium. Own your content man! Anyway check out their posts there is some good stuff there. Going forward I have been playing around with some new stuff in my new role and I plan on discussing some of that going forward.

Read more →