Below you will find pages that utilize the taxonomy term “General”
Our Engineering Process
I haven’t been active on here lately just due to how busy we have been in getting our product on the market. That being said I did end up writing a post for our company blog about the engineering process we have built up over the last couple of years. I figured I would share it on here as well. Check it out here: https://wndyr.com/is-what-were-doing-driving-value-as-engineers/
I am a strong proponent of Agile development and I like the mind shift about thinking about value creation and who is the ultimate customer for what I am building. I hope that it is useful for you as well.
Happy New Decade
The 2000s
With the turn of the new year it got me thinking a bit about the change in the decade. Hard to believe it has been over 20 years since I was celebrating the change of the century with my friends in Minneapolis. Things have changed drastically since then. At that time I was 6 months into my career. I had joined a telecom startup and moved to Texas after graduating from the University of Minnesota. The 2000s were a decade of change and growth for me. It had me working really hard to get established in my career. Going through a couple of acquisitions and finally moving into my second startup. I met my wife then and got married, and we transitioned from apartment life to having a house. We traveled as much as we could. Mexico was much safer back then and we explored a lot of central Mexico as well as trips to Europe every year.
Site Upgrade
My site was down for much of today as I finally took the plunge and rebuilt my image from ground up. This was something I had considered doing for some time now. The old site had been through a couple of ubuntu upgrades and was chugging along, but I always thought it would be good to do a fresh install. However I never really wanted to dump the time into it. Then I saw this article: https://www.anandtech.com/show/14284/amazon-offers-another-amd-epyc-powered-instance-t3a
Themes for 2019
I am late to the party. Normally I tried to take off until Epiphany before I return to work, but I needed to start working on the 2nd so I wasn’t able to get to this post until now. As is my tradition I set my themes for the year that I want to focus on. I find doing so helps me stay on track and make sure that I am growing and improving myself.
Coursera Stanford Machine Learning Course
I just signed up to take the Stanford Machine Learning Course for free on Coursera. Anyone who wants to take the course with me is welcome to join me over here: https://www.coursera.org/learn/machine-learning. They are only accepting enrollments until January 12th I think it said so not much time left to sign up.
2018 Year End Review
Recap for 2018
As is my tradition it is time to review 2018 and see how my year unfolded. The first thing that I always do is review my themes for the year and see how many of them I hit.
In general 2018 was an interesting year. The year started out with me on vacation. When I was on vacation I realized that I would have to change jobs in 2018 and luckily it all worked out for the better. I can say making that move was one of the best decisions I have made in my career. The difference between the first half of 2018 and the last half was a study in extreme opposites on the career front. Probably the biggest takeaway from that whole situation is that company culture may be the most important thing when it comes to choosing a position.
Site Upgrade
I decided to upgrade my site to the new version of Ubuntu as I haven’t done that for a couple of years. It is always a nice thing to work on when I am on vacation as it is the sort of thing that I don’t really get around to normally when I am busy. What a pain that ended up being.
The Upgrade for the OS itself went very smoothly as it seems to normally do so for Ubuntu. But the upgrade to the newer version of PHP broke everything with my site. As I think back actually I think this happened last time when I went from Ubuntu 14.04 to 16.04 as well and it jumped from php5 to php7. I ended up with about a 3 hour outage trying to sort everything out.
Go lang
It has been a crazy few months in startup land. The interesting thing for me about startups is no matter how crazy it is compared to corporate work, I find myself really content amidst the chaos. The big change here is we have decided to build our backend architecture in Go instead of Java. Having done Java for 19 years this is a big change, but for business decisions we decided that the trade offs with Go were better for our long term business needs than the trade offs with Java. Now that I have been using it for a few months I figured I would discuss some of the differences between the languages and what I like and dislike about each.
Here I go again
This isn’t just a reference to an 80’s hairband song, I have decided to go to work for another startup company. It was just over a year ago when we sold Choose and I took my previous role. When I joined that company I expected to be there for a while. I was given a position to lead the architecture of a new system that had been built by a consulting company to replace a legacy system. Technology wise there were a lot of great decisions made with the new architecture that they had. It was a modern Spring Boot stack, composed of micro services.
Apple Watch Series 3 Review
I have been watching the Apple Watch for a couple of years now debating about whether I should get one or not. Initially they looked too limited. The battery life on the initial model was very short and then there was the whole lack of being able to get the watch wet, among other limitations. I decided to sit back and wait a few years and see how it evolved.
The Series 2 started looking interesting, but I still didn’t find it compelling enough to give up the freedom of nothing on my wrist. Finally they announced the series 3 last fall and it started to sound like something that might potentially work for me. First it is setup for swimming with. While I don’t swim very often, for me having a watch on in the pool was always a nice way to keep track of the time. Then factor in the ability to track your workout and get texts and take a call without having to get out and dry off, it starts to look really good for someone who is more active than I am.
Themes for 2018
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.
2017 year end review
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.
HTTP Location Header
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.
Bose QC-35 Product Review
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.
Microservices as the way to onboard a new engineer
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.
Last Choose post
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.
My Last Day at Choose
Today was my last day at choose. What a ride it has been. Thus far it has been my favorite job in my entire career. The quality of the team was top notch and I can’t believe how much software we shipped. The turn around was epic and we just had a ton of fun at work. We took a couple of pictures from our last happy hour.
Stories about the acquisition
When I posted my previous post, I left out most of the details about our acquisition as I was not sure what information was public and what wasn’t. Now that there has been some press around the acquisition I figured I would share some of it to provide some details.
First off we had a story in Fortune about Red Ventures acquiring us. After reading that story, I found another story trending on linked in from Green Tech Media. I liked that the Green Tech story had more detail, and since I can’t really talk about anything that isn’t public it is nice to see more details in a public forum.
Wow! We were acquired!
Wow! That was unexpected after my last post talking about my first year, but we found out on Monday that we were acquired. It is the goal of every startup to be acquired so I am proud to have taken part in a huge turn around of a business to have made that possible. We took a startup company that was losing money when I joined to one that was profitable today, and I was able to work with the strongest engineering team that I have ever worked with in my career which was hugely rewarding.
Reflecting on my first year at Choose
My First Year
I just celebrated my one year anniversary in my current position, which is a great opportunity to look back on the last year of work. This role has been unlike any other that I have had in my career starting from the interview.
When I was interviewing with my boss and we were discussing what I did in my previous role, I discussed the architecture that we had built. It was a traditional Spring application that was a monolith. It was a very well designed layered architecture. We were doing a mix Trunk Based Development and feature branch development depending on how large and invasive the feature was using git as the repository. We had a great unit test suite and did weekly deployments. We tried to commit early to master and use feature toggles to role out new features and mitigate risk. They were still largely a waterfall model though, just a company that moved faster on waterfall than any I have ever worked with.
Lent and Easter fasting recap
As we are at the end of the Easter Octive I realized that I have been remiss to give an update on how the intermittent fasting went for Lent. From Ash Wednesday through Holy Saturday I only ate between the hours of 6pm and 10pm.
Overall I found that after a day or 2 your body adapts and you don’t really get hungry during the day. The exception to this was Saturdays. Since Catholic’s can’t eat meat on Friday’s during lent the food that I consumed did not keep me as full. Additionally I have more time on Saturdays and I think there is a natural habit to munch sometimes when bored or just hanging around the house.
Bring on the intermittent fasting
Lent
Lent is here and I decided to go with the intermittent fasting that I had been considering. First as previously mentioned, I was doing the slow carb diet. Between January 9th and March 1st I went from 251 pounds to 228.8 pounds. And that wasn’t adhering too closely to the diet. For example the diet has you eating smaller meals every three hours and that is something I struggle with. It doesn’t really work for me. So I was just eating 2-4 meals a day depending on the day. At the beginning close to 4 and by the end just 2. Also in that time frame, we celebrated my wife’s birthday, our wedding anniversary, and my daughter’s birthday all of which involved breaking the diet to some degree. I think if I had stuck close to the diet I could have lost that weight in 6 weeks based on the rate that I was losing early on before family obligations came into play. But at the end of the day if you can’t cheat here and there to celebrate the important things in life, that is no way to live. And Slow Carb is definitely a system that if you stick to it most of the time will work for you even with the built in cheats.
More fasting benefits
I came across another article on hackernews about the benefits of fasting. It seems that as more and more time goes by the evidence grows that intermittent fasting has enormous health benefits. This story is even more amazing from the diabetic standpoint and the regenerating your pancreas.
Then my coworker sent me this video which I also think is good food for thought:
This got me thinking that maybe I should try the one meal a day thing throughout lent this year and see how that goes. I was already considering closing it out with another 72 hour fast. Though this year I am not going to fast from coffee I found that I was too mentally foggy in the afternoons without it. So given that I like to experiment anyway spending a bit over a month just having maybe supper every day and coffee (black) in the morning I think will be a good test to see how this actually would work lifestyle wise. I haven’t decided for sure whether I will go with that or not (I don’t have to decide until Wednesday morning), but that is the direction that I am leaning right now.
Why starting a blog will change your life
Introduction
I came across this post on linked in and it was too good to not share. The author highlights all the benefits of starting a blog. The key thing he mentions is that you accrue all these benefits even if no one reads your blog. I have found all of this to be true in my personal life. I have very few readers of this blog, but in the end I write this blog for me and not for someone else.
Slow Carb Diet and Book Review
Shortly after Epiphany I started doing the slow carb diet as outlined in the Tim Ferriss book The four Hour body. Basically slow carb is a high protein low carb diet. It seems friendly to fat in general, but I would say not as fat friendly as Paleo is. In the past I did paleo (the Primal version by Mark Sissan) and successfully lost a lot of weight, but I wanted something that I thought was a little more flexible. In the month and a half of slow carb I have lost 20 pounds. I think the rate of weight loss is slightly slower than doing paleo for me, but I think it is sustainable longer term. One interesting aspect of the diet is you can eat whatever you want on one day of the week (your cheat day). On my cheat day (Saturday) I tend to gain a pound or 2 but the weight loss the rest of the week eats this away and still leaves you with gains. I think it is an interesting aspect of the diet because now instead of saying I can’t eat X, it becomes I need to wait till Saturday to have this. Waiting a few days is much easier on the will power than saying I can’t eat this as eventually people tend to cheat. The other thing to note is even though I have been doing this diet on the weekend of my Wife’s birthday I ate whatever she wanted and we had Valentines where we ate fondue so I haven’t been entirely faithful to the diet like I was with Primal. Given how well it is working with all those aspects I will keep going with it, I would like to lose at least another 30 pounds so I am almost halfway to where I want to be.
Sorry for the lack of updates
Sorry for the lack of updates. We have been busy working on a game changing micro service for our business. It has been a blast but a couple of crazy sprints. I hope to get back to more writing in the near future.
Themes for 2017
Introduction
As is my tradition on this blog this is my annual post for my Themes for the year. Why themes and not goals? I feel like if you don’t hit your goals that feels like a failure, but as witnessed by my recap of last year I did a poor job of hitting my themes and was still very happy with how the year turned out. Themes are designed to be open ended and the idea is just an accountability tool for myself to make sure I am working on personal and professional growth. In the case of last year my life changes resulted in many of the themes not making sense anymore, but I still felt like there was a ton of growth so I call it a successful year.
Recap for 2016
End of year recap
It’s that time again. Time to reflect on my themes for the year and see how I did on them. This is an annual tradition of mine to see how I am doing in general. I find it is a useful accountability tool for myself to make sure I am not wasting too much time on unimportant things and am spending the time that I would like on personal development.
Upgrading from Ubuntu 14.04 -> 16.04.1 under Amazon EC2
The Upgrade Process
I finally got around to upgrading my web server from Ubuntu 14.04 to Ubuntu 16.04.1. I decided to jot down my experiences in case anyone else runs into these issues.
Preparation
The first thing I did prior to doing the upgrade was to run updraft plus to backup the Blog’s database and files. After that finished I logged into the Amazon EC2 console and created an image of my AMI. This way in the worst case scenario that I trashed my image I could just boot the backup image and be where I was before I began.
TIL: debugger Javascript statement
Today I learned is just going to be me making a note of something interesting that I learned that might be useful for other people. I actually learned this two days ago from a coworker, but it is something I don’t want to forget.
Apparently modern browsers (at least Firefox and Chrome which is what I tested on) support putting a statement anywhere in your javascript file that is just:
MacOS Sierra massive slowdown in Java networking
I upgraded to MacOS Sierra, and have really been enjoying the shared clipboard. I haven’t really noticed any other new features that impact my day to day development, however I would advise Java developers to avoid it for the near future. I have searched and searched and I wasn’t coming up with any results. Then I found this blog post. This is definitely part of the problem. I made the host file changes and got a slight boost, but not enough to explain the whole thing.
An appeal for help
Normally I only post about technical things on this site, but today I am going to talk about some friends. When I first started out at the University of Minnesota I lived in Territorial Hall. Down the hall from my lived a couple of people I became Friends with Jason and Jill. We became friends along with many others in a large group and it made for some amazing memories of my college years.
A Two Month Recap
It has been a crazy couple of months. Since I last posted I made a trip out to San Francisco to meet the rest of the team I work with (and had a great time). If you live in Texas there is no better time to visit San Francisco then at the end of July. It was a welcome break from the heat. I had a great time and realized when I was out there that I hadn’t been out there since 2005, so I was over due for a trip. I had forgotten how much I love that city it is a really fun place to hang out (though not a place I would really want to live).
And now for something completely different
I need to apologize for the lack of posts for the month of May. It has been a hectic month or so. In April several interesting opportunities were presented to me and I decided to make a change and go back to working for a startup company. It is no secret to anyone that I really enjoy startup work, but it is always hard to make a change like this, as I was very fond of the people I worked with, and had an amazing boss and loved the project I worked on. One of the things I love about working for smaller companies is that you have this amazing opportunity to have a huge impact. You can make the difference between no revenue coming in and the company prospering down the line. When you find yourself part of a 13,000 employee organization that brings in say 3 Billion a year no matter how great your efforts you can never really move the needle and for me shipping something that really impacts the company is immensely rewarding.
Internet of Things coding workshop
The Event
On Thursday afternoon I attended a free Internet of Things Coding Workshop put on by AT&T and Texas Instruments at AT&T’s M2M/CD Foundry in Plano, TX. While this type of programming isn’t really relevant to what I do in my day job I am interested in the topic so I asked by boss if it was okay if I attend and he was fine with it. The hosts were kind enough to provide us with a free lunch and I think there were about 50 attendees. This was the 3rd session they had done and it sounds like the others were even busier. They had a 4th session that evening on the topic as well.
The downside of automatic updates
I have sort of taken for granted how easy all the updates are for a Wordpress site. If there is a security update Wordpress just goes up and updates itself without me doing anything and the plugin community is so active there are frequent updates to all of the plugins I used. Because it always just works I don’t really hesitate to run any of the updates when I see them on the site.
The 72 Hour Fast
Recently I read this article about health benefits of doing a 72 hour fast. I thought the idea sounded very interesting. A few years back I tried the Primal Diet (a less restrictive paleo diet) and had great results with it. I think I did that for an entire lent, and continued it past there. I ended up losing 40 pounds and it was the easiest weight loss I have ever done. At some point though I sort of moved away from primal as my favorite food in the world is Mexican Cuisine and after that Italian, so it is hard to enjoy my favorite foods with that as a lifestyle. That being said I do eat many fewer carbs now than I did previous to that. I have also experimented with Bullet Proof Coffee, but the version with coconut oil and butter, not the medium chain triglycerides. When I tried that out I didn’t notice as much of a benefit like I did with Primal. Though I could see the Bullet Proof think combining with Primal very well.
Update for the last month
Sorry for the lack of updates, but I was on the end of project march and then off on paternity leave. I am hoping to resume regular posting soon. The project was very successful, we had a big push and brought another 120 tables online in our new Cassandra Cluster and migrated that data from SQL Server. Along the way it has given us a few fun design challenges.
Initially we were working around some limitations in keys in Cassandra. In SQL server often you will query on a column that may be null. In Cassandra none of the columns in your primary key can be null, which means you can’t query on that column since Cassandra doesn’t allow you to do adhoc queries. One work around we started with the obvious solution is to use a secondary index. However Datastax will tell you in general not to use them. We found in playing around with them in production we have just had issues with them. They seem to either get corrupted or be out of sync in some way with the tables very often so end up having to run a repair on that index to get the correct data. As a result of this we are completely moving away from secondary indexes. In the end it gave us some interesting data design problems, but I think we will end up with a much more resilient system in the end.
IPv6 and Amazon EC2
I saw a bunch of people discussing this article. Basically it is saying that after 20 years IPv6 has only reached 10% deployment rate. I actually expect that number to start growing faster now since IPv4 addresses have been exhausted. At a certain point the cost of rolling out IPv6 will be less than horrible solutions like Carrier Grade NAT if the ISP doesn’t have enough IP Addresses. I always expected them to start rolling out IPv6 on Cell Phones given the number of devices and the growth rate, but I haven’t heard about anyone doing that yet.
Amazon EC2 Nano Instances
About a month ago I got an email from Amazon that they had introduced a nano instance. This was a very timely email as I was just nearing the end of my free year of AWS (your first year they give you enough of an EC2 budget to run a t2.micro instance for free). I had been running this site on the micro instance (as why not when you aren’t paying for it), but yesterday I got a bill for my EC2 usages. It was $11.46 for the month of December.
Themes for 2016
As my holiday vacation winds down I decided it is time to figure out what my themes are going to be for 2016. Last year I did a fairly good job at hitting the themes I laid out for the year, so I Am curious to see how it will turn out this year.
- The first theme is going to be the same. Regular updates to the blog ideally once a week, though as I saw last year I Didn’t quite make the weekly thing but I did average it given 52 posts. Hopefully I can keep the content somewhat regular this year.
- I want to continue with reading like last year, but that number will for sure drop as we are expecting a baby in February and I know depending on my sleep situation reading may go right out the window.
- At work I would like to migrate to Spring Security 4. This is going to be a bit of an annoying upgrade for us based on some of the changes, but I think this year is the year to bite the bullet and figure it out before we are dealing with Spring 5 in 2017.
- At home I would like to play around with Swift and write my first iOS app. I have been programming Java for 17 years now and I feel like mixing it up a little bit to keep things interesting. I was actually going to work on that over my vacation, but I ended up getting Fallout 4 on the Steam winter sale and messing around with that instead.
- I would like to restructure our webapp at work from an EAR Structure to a WAR structure. If that is successful I would then like to move away from JBoss to Tomcat. And if I got really crazy I would like to end up converting our Spring App to a Spring Boot App which would be a massive restructuring our our application. I think if I could accomplish all of that we would be in a great place going forward, but this is pretty ambitious as a side project and not sure I will be able to find the hours to get us all the way there.
- I think it would be cool to contribute some sort of patch or something into the openjdk or Spring just to say I have contributed there. It just depends if I find enough time to find a small issue and work it out and do so.
At the end of the day whether or not I do any of these things doesn’t matter too much to me. It is sort of just setting some sort of milestones to track how my year is going. The main purpose of this blog is just keeping myself accountable so that I am always sort of improving a little bit each day, so if I find that I have nothing to write about then I can see I am not pushing myself hard enough to learn something new. Here is to another great year.
Recap for 2015
At the start of the year I posted my Themes for 2015. I decided now is a good time to look at what I was thinking at the start of the year and see how my year turned out. I think it is sort of pointless to set out some ideas of things you want to accomplish if you never stop and assess what you actually did, so this is sort of an accountability post to myself to see how things played out for the year.
Ask and you shall receive Swift edition
I had mentioned previously that I wanted to learn Swift over thanksgiving. I ended up taking the Objective C course instead at code school as I didn’t see an option for Swift and I find code school a fun way to get an intro to something. Lo and behold this week I got an email from them and they now have a free Swift Course. Today is my last day of work for the year so I am planning on playing around with this course and messing around with a basic app over the Christmas break. So Code School thank you for the early Christmas present. I will follow up with my thoughts on the language and on iOS development after playing around with it.
Twitter Cards
I noticed that a bunch of people when they post to Twitter have much cooler looking posts than what the Jetpack plugin seemed to be doing for me on my blog. Over Thanksgiving I was looking into this a bit and discovered Twitter Cards. I am probably the last person on the internet finding out about them, but I hadn’t really paid that much attention to it previously. I decided maybe I should create a plugin to add them to the blog. But this being Wordpress I did a search first and it looks like there is already a great one out there. This post is just me testing it out and seeing how it works. I often see people say that a great way to develop a little side income is to create a Wordpress plugin and sell it. I actually wonder how people do that because it seems like every time I need some sort of plugin to add functionality to the blog I can find an amazing free plugin that does it for me. Anyway hopefully this test post works and I get a Twitter Card for it.
Blogoversary - the 1 year anniversary of my blog
I hit the one year mark of my blog while I was on thanksgiving break. I had intended to post on the day of the event, but I was busy with family in Minnesota and never got around to it. Back when I started this my intention was to try to write something about once a week. While I haven’t been completely successful with that when life intervenes and keeps me busy, I do see that I have exactly 52 posts so I at least averaged it over the year. All in all I would say this has been a successful venture for me. I learned a lot playing with some SEO things and seeing how things would show up in search engines from here. I was also able to learn a ton about SSL configuration of the site. On that note I have considered actually dropping TLS 1.0 support. While that would drop a bunch of old browsers I think consensus is that is the next protocol to fall since SSL 3 has pretty much been declared as insecure. Probably if I was a busy people would say not to do that since you want to be accessible to the maximum number of users, but since I maybe have 3 readers who are all technology people they would see no impact and it would allow me to crank the security down to the next level.
Objective C
Over Thanksgiving vacation I was thinking I should maybe play around with Swift and maybe try to create a basic iPhone app just to see what the programming model was like. I headed over to Code School to see if they had a free course I could play around with. Unfortunately they didn’t, but I did see the Objective C course over there. My thinking was given that most iOS apps were written in that, why not do that course.
Cassandra Days in Dallas 2015
I may have mentioned this before, but I love going to software conferences. When I got the email mentioning that Cassandra Days was coming to Dallas with a free 1 day conference on all things Cassandra, I signed up immediately. The event was sponsored by Datastax who sells a commercial version of Cassandra called Datastax Enterprise. They had 2 tracks an introductory track for people who are just exploring Cassandra, but haven’t yet taken it to production, and track 2 which was a deeper dive for people with experience with Cassandra.
New computers
I have been thinking for a while that a MacBook Pro looked like the ideal Java development machine. That being said I didn’t really want to drop $2500 to actually confirm my idea. I had suggested it at work, but corporate policy had us on Dell machines. Anyway last week I mentioned that I think the ideal developer setup would be buying us all MacBook Pros and one of my coworkers was kind enough to mention that there was an unused on the front end team occasionally needs to debug issues on the mobile devices but otherwise I could use it. Thus began my first week trying it out as a replacement machine.
Kegs & code
I attended the kegs & code last night. It was a code challenge and party with cash prizes that was hosted by Saltt Ventures. I had never attended a code challenge or hack-a-thon or anything like that, but I figured it is good to get out of your comfort zone every now and then and try something new. Plus when they have free beer that is a pretty big perk. The beer was supplied by BrainDead Brewery which I hadn’t had prior to this event. The event started out as a happy hour with pizza and beer and then at some point we setup and the challenge began. It was a race to solve 10 problems in the quickest amount of time with first place getting $500, second $250 and third $100.
Duolingo
I saw some friends on Facebook discussing Duolingo. While I had briefly heard of it I had never paid attention to it. So I decided to log on and check it out. It is pretty cool, as an intermediate level Spanish speaker I wanted to see how I did on their placement test and what the classes were like.
First off it is free which is a good way to get people interested. They follow the things that it seems like all the popular sites are doing and gamify learning a foreign language. So you see your friends, and you see how much experience they have earned in the last week, month and overall. You have a streak counter (like stack overflow) to track consecutive days you are practicing (which is also important for foreign language learning so you are getting repetition daily). When you level up role playing game style you receive their virtual currency which you can save up and use to buy bonus courses. And you see all your friends events which encourage you to keep working at it so you pass them in the rankings.
Codeschool and Angular.js
I took advantage of the long weekend to go through CodeSchool’s Shaping up with Angular.js free course. I have to say it was very well done. They very quickly get the major themes across in the video and then you apply the stuff in your browser where you can see how it actually affects the page in the preview page. Anyone who has worked on the knockout.js tutorial will recognize this style of learning. Having taken the class on CodeSchool I now feel like I know enough to actually start using Angular so I would definitely recommend the course to anyone wanting to get started with Angular. I remember that first aha moment I had when learning knockout, where it was just sort of mind blowing how much more productive you could be in that framework than just using jQuery. And I had the same sort of thing with Angular, I can see why I would prefer to use Angular over knockout as well as it seems to take the great things that knockout does and take it up to the next level. To get someone who isn’t a super front end person interested in a front end technology is an impressive feat so well done Angular.
Angular.js first go
We had some workshops over the last couple of days at work on an intro to Angular.js. I have to say I came away from them pretty impressed with the framework. I can see why it is taking the development world by storm.
I think the controllers make it very relate able for anyone coming from the Java world as it is like dealing with Spring or Struts at that point. The way you do URL parameters in your $routeparams is just like doing any sort of rest URL parameters.
AT&T Uverse vs TimeWarner Cable
I have had it with AT&T Uverse! We have been having some internet issues lately. We have been AT&T Uverse customers since 2008. I started out with 6mbit service then upgraded to 12mbit and then to 18mbit (upstream is only 1.5 mbit.) When we first got it installed it was very cheap but as the years have been going on they have been increasing the prices and not necessarily the speed. The first time they installed it they had to do like a 4 hour install which pretty much involved rewiring the house from the Node in the alley all the way to the jack they installed for the gateway. Given that my house is over 100 years old this probably isn’t too surprising. When I initially did the upgrade from 6 to 12 mbit the speed only went up to 8 mbit. They sent a tech out and he fixed the wiring apparently the first installer had done a few things wrong and he had to replace our 2-wire gateway as that also seemed to have issues. At some point I upgraded from 12 to 18mbit as the price differential was so small there was no reason not to. When we first got 6 mbit service it was amazing, videos streamed perfectly, downloads were fast I was very happy. When I upgrade to 12mbit I was blown away I was downloading songs from iTunes in 3 seconds everything was great. We could watch Netflix without having to wait to buffer again life was good. When we went to 18 I didn’t notice a big difference but everything just got a little bit better. But as time has gone on the service quality has gotten horrible, even though I still have my 18mbit clearly AT&T has some backbone issues, as I can’t hardly play a YouTube video now without it choking. I tried doing some Amazon streaming a couple of months ago and it was almost unusable.
Wordpress auto updates
I am always a little amazed when I get an email from my blog that tells me it upgraded software versions. Even though I have had auto-updating operating systems and other software for years, something about a website updating itself just seems like a bigger deal. I am sure most people think like whatever, but I think what a cool time we live in, when all this stuff just manages itself.
Google page ranking favors responsive websites
Google has changed their algorithm to favor sites that are more mobile friendly if the user is coming from a mobile device. So of course wanting my blog to show up in search results I ran google’s tests on it. The first one they have is Mobile-Friendly. I ran that and am happy to report that Wordpress automatically took care of that for me. The other tool that you should run against your site is Google Pagespeed. When I ran that it actually had a list of a few things that I should fix to make my page faster. Some of them I wasn’t quite sure if I can change inside of Wordpress easily but one that it highlighted was that I didn’t have GZip compression enabled for my site. They also give instructions on how to fix the issue. So now because of Pagespeed my site will now compress files it sends across. Anyway wanted to mention them both as they both seemed pretty useful to me.
The nuclear option
I have been using open source software now for about 20 years. One of the things that I always saw discussed back in the day was if you don’t like the way a project is being run you can always fork it and do things differently. In all my years I have never actually felt the need to do such a thing because lets be honest running an open source project is a ton of work. As readers of my blog know I have been wanting to update to Spring 4.1. What has been holding us back was a change in aspectj 1.8.2 where it would automatically process annotations found in the code. This ends up generating the hibernate meta-model and dumping the files wherever maven was invoked. So trying to work within the project I opened up a jira for an enhancement which would allow me to pass a flag to the compiler to not process the annotations. There was a quick response at the beginning of January and I was left with the impression that this would be handled in a couple of weeks. Finally in the middle of February with the work still not done Ralph Engelmann submitted a patch which would actually implement the feature.
Free book on SEO
I came across this book: SEO Like I’m 5: The Ultimate Beginner’s Guide to Search Engine Optimization
Anyway it is free I think through tomorrow on kindle, so if you want to learn some more about SEO strategies this seems like a good way to do it for free. I downloaded it, but haven’t had a chance to check it out at all yet.
Cassandra Data Modeling
I ended up having to miss the JHipster webinar last week as I was invited by my company to attend the Datastax DS220: Data Modeling with Datastax Enterprise class on Monday and Tuesday. The company came out and taught the class onsite. The instructor was Andrew Lenards and he did a great job.
I have been using Cassandra for a little while, but I hadn’t done anything serious with it. The CQL query language is all at once a great blessing and a curse. On the upside it is immediately familiar so anyone who has done SQL work can get comfortable creating tables and executing queries quickly. On the downside it sort of abstracts a few things about the data store away from you and I think at a certain point for performance you sort of need to understand what is going on under the hood. This class gave us that. It starts out presenting a data model like you might see in relational databases and then you work through the ways you might model that data in Cassandra and the trade offs of different models (which questions you can ask, which fields are required to ask those questions, etc). One of the biggest things I was missing prior to the class was the whole concept of partitions vs rows and what the partition key is vs the collating keys. I had been using the data store like a SQL database so that my partitions always had at most one row. We did a lot of looking at instead what if we model the data so the partitions have many rows and what are the advantages and disadvantages of doing so. On day two we got very deep in the technical aspects of what was going on under the hood, how data was stored on disk and how to do things like estimate partition sizes. We were also able to ask a lot of questions specific to how we have been using Cassandra in our organization and what the limitations are going to be as we expand its usage to even more areas of our product.
Cobertura is gone and Clover is here
I have spent most of this week working on integrating Clover into our environment and ripping out Cobertura. I ran into a couple of issues along the way, but we are up and running now. First one thing I dislike about Clover is by default they will mess with the maven artifacts that you may intend to ship. I think this is actually a poor way to instruct people to configure it out of the box because you are basically saying you only run it every so often on different builds or you end up having to invoke maven multiple times or other associated hacks. I didn’t like any of those options as the idea is to fail the build if coverage drops below the acceptable level and not accept the commit until that is addressed. Luckily I stumbled upon the clover2:instrument option that you can use instead of the default recommended clover2:setup goal. But then I hit a second problem, the way it names the instrumented classes with the clover2:instrument option seemed to be clashing with the JPA 2.0 Metamodel generator that we were using. I had sort of been looking for an excuse to rip that whole thing out of the project for a while and now I finally had that so I removed it from our software and replaced it with just reflection on the classes and used unit tests to verify at test time that the code wasn’t broken instead of the compile time checks we would get with the metamodel. With that gone clover integrated greatly and I got it wired into our Jenkins configuration. Today I was able to get our configuration manager to install the clover plugin into Jenkins instead of using the publish html report option and we have much nicer integration. With the Sonar Clover plugin we now have integration with Sonarqube. The Sonar plugin brings in the coverage but it no longer lists technical debt like the Cobertura does. So aside from that I think this is going to be a much better solution for us going forward and was glad we could finally switch.
TLS in HTTP/2
I came across this blog post on Hacker News this morning. I thought it was a great blog post so I figured I would share it. Here there is a group of people that were trying to weaken the HTTP2 standard by not requiring TLS encryption in the standard as originally proposed and Google and Mozilla are working around that by requiring it for HTTP2 standard in their browsers. I think they are taking the right stand here as there is no excuse to not be encrypting anymore, and by them taking this stand it will encourage more people to get on board with TLS while at the same time getting the performance benefits of the new protocol.
Clover and Wikitree
Good news this week. Our purchase of Clover was approved and we will have our license keys in a matter of days. As of tomorrow it is going into our build and Cobertura is getting ripped out. You may recall I previously wrote about my issues with Cobertura. One problem was the latest version at the time 2.0.3 didn’t work with Powermock, even though 1.9.4.1 did. And the second issue I was having with it was the lack of Java 8 support since we are close to upgrading on our project at work. Well oddly enough early in this week I saw Cobertura had a new maven plug and a new release 2.1.1. I immediately updated to the 2.7 plugin to give it a go and it promptly failed on Powermock like 2.0.3. So I didn’t feel bad at all when 2 days later I found out our Clover purchase request had been approved.
Spam Comments
My blog must be getting noticed by the bots. When I first started writing I had more posts than attempted spam comments. Then for a while I was at parity. I would write something new and I would see another spamy comment in the quarantine area. Now they are starting to kick into overdrive and have greatly eclipsed the number of posts I have. Luckily the Wordpress tools and plugins are great and seem to catch them all. So there is that to be thankful for.
Project Estimation
The thing I dislike most in software development is when they ask me to estimate how long a given project will take. I am about to start a new project so of course the first thing that is asked for is to do some research and try to figure out what the high level tasks of the project will be and estimate how long they will take. This seems like a reasonable thing to do as obviously if the company is going to invest a lot of money into a project they want to have sort of a guess how much the project is going to cost. Additionally if the scope of the work is outside the time frame in which they need the feature they can decide whether or not to limit the scope of the project or add resources to the project. So all in all I can see the need and the point of it, but I think I dislike it cause I am not very good at it.
Calling all Dr Who fans
For all the other Dr Who fans that might come across this I am taking a Massively Open Online Course about the show that starts in a week. If you are interesting in the show you should join me. You can sign up here. A link to the Facebook page is here.
Themes for 2015
As my Christmas vacation draws to a close I am starting to think of themes for 2015. Why themes and not goals or resolutions? Well I think resolutions are sort of setting yourself up for failure and goals are very rigid so I am going with more general themes.
- Obviously the first theme I am working towards will be updating this site at least once a week ideally with something technical that I have learned during the week or thoughts on a problem I am solving.
- Next on the agenda I would like to try to read more. I haven’t been reading as many books as I like to during 2014. But at the end of the year I have been picking up the pace a bit so I hope to read at least 2 books a month. My system I have been using is to try to get through 10% of a book a day on my kindle.
- I would like to spend more time doing stuff in Spring Boot this year. I have been reading Greg Turnquist’s Learning Spring Boot and it is a great book which I strongly recommend. He seems to lay out the information right when I want it in the book and has saved me tons of time that I would have spent digging in the docs for answers otherwise.
- Anyone who knows me know that I am not a big front end person, but as a full stack developer I need to know all the layers of the stack, so I think 2015 is the year that I need to learn Angular JS. I learned Knockout JS in 2014 and appreciated how much more productive it was for things than just jQuery and it seems to me that the market is all going Angular and people say it is more productive than knockout so it is time to give it a try.
- I am hoping to do some architectural updates at work. I am ready to get our stack upgraded (I want to be on Spring 4.1 and Java 8 at a minimum and ideally JPA 2.1 as well instead of 2.0). I always prefer to run the latest stuff so I will be working hard to make sure that I can do so. On that note I submitted a Jira for the issue holding me back on Spring 4.1 related to the aspectj-maven-plugin. With any luck I will be on Spring 4.1 at work within the next 2-3 weeks. Java 8 may take a bit longer as it is going to mean a container upgrade.
Anyway that is what I have come up with so far I am sure more things will apply as time goes on, but this is a good start to my year plan. Now to enjoy my final 2 days of vacation before I return to work.
Bulletproof Coffee
I have been hearing a lot of talk about Bulletproof Coffee lately. I decided to take the plunge and give it a shot this morning as who doesn’t like a good body hack. I made mine with 1 Tbsp of Kerrygold butter which is the normal butter I eat anyway and 1 TBSP of virgin coconut oil. I ran it through the magic bullet to blend it and gave it a go.
Google Apps for Business
So when I finally resurrected my domain after it being idle for probably about 10 years I was thinking oh I should just roll out google apps to host my email. Back in the day I ran haskovec.com off of a Sparc Server I had running I think Solaris 10 maybe, but I am not 100% sure on the version of Solaris anymore. I just ran it off of my DSL and I used dyndns to map the dynamic dns to my home DSL as I was too cheap to pay for a static IP. At that time I was running a postfix smtp server for email.
Why a blog now?
Here I am again messing around with wordpress. Why? Well I have been sitting on my domain name forever and not doing anything with it so it is one way to extract some value from it. Another thing I was considering was that as I have moved up in my software career I find myself more and more in the role of mentoring newer developers and I feel like I can solidify the things I am learning myself by documenting some of the things I have come across. It also allows me to ramble on about anything I want and who doesn’t like that? So anyway I have decided to give this a go, we shall see if I stick with it, but here goes nothing…