How to Select Software Engineering Tools without Inciting Team Rebellion

Lately I've been thinking a lot about how we choose the tools we use to build software, and how important those choices are. I figured it might help others if I wrote down my own thought process for selecting development tools, so I published this post on Medium: "Choose Your Weapon: How to Select Software Engineering Tools without Inciting Team Rebellion".

This was my first post on Medium where I received help from others using their editing tools. Reviewers can add private comments using the same mechanism that reader use to make public comments. I received some great ideas from Tyler Fitch, and wording advice from my wife. The collaboration features worked great, although my wife missed the power-tools for tracking changes offered by Microsoft Word. This is also the first time I wrote the whole post in Medium, instead of saving drafts elsewhere then pasting it in, so I must really trust their editor.

Thus concludes my obligatory annual blog post. At this point I'm just writing on Medium and using my blog for editorial. Am I doing it wrong? Also, if you have any thoughts about selecting development tools, I'd love to hear them :)

My Advice to These High-School Interns

Last month I gave some advice to high-school interns at a "speed networking" event organized by Saturday Academy. I summarized my recommendations in this post up on Medium:  "My Advice to These High-School Interns".

Do you have standard advice that you give to students interested in tech careers? I'd love to hear it. I feel like programming can feel a little overwhelming when some people start considering it as a career, and a little encouragement can go a long way.

PDX Tech Talks Monthly #7 - FutureTalks at New Relic

Dearest reader, I have neglected my duties to write about PDX Tech Talks for many months. Have I been attending tech talks? Yes. I’ve made it to a few of my favorites like PADNUG and AgilePDX, but didn't ever get around to posting the summaries. Why so busy? Well, in the fall I was heads-down hacking on an IoT side project. Since then I’ve been hard at work helping to build some teams at Surescripts. Now that we’ve filled most of our newly-built office space and assembled some great teams, I can get back to some leisurely blogging.

The FutureTalk series, sponsored by New Relic, has been on my radar for a while. When I noticed this month’s talk was about Next Glass, a start-up that uses software and science to make great beer recommendations, I decided it was time to go check it out.

The FutureTalk crowd at New Relic

The FutureTalk crowd at New Relic

The Event – FutureTalks at New Relic, with Next Glass

New Relic, a Portland and San Francisco based start-up that makes software analytics products, hosts their FutureTalks series monthly in their downtown office. The talks are given by tech luminaries like Ward Cunningham, Amber Case, and DevOps guru Gene Kim. The presentations focus on “examining the code of tomorrow, celebrating and meeting the people who write it, and looking ahead to the future of modern software.” Their shiny new workspace is up on the 29th floor of the Big Pink building downtown, and features amazing 360-degree views of our fine city. I could see my neighborhood from up there! I wandered around a bit afterwards and discovered a very long table full of Legos to play with. Awesome :)

This month’s presenter was Trace Smith, the COO of Next Glass, who made the trip all the way from Wilmington, North Carolina where their start-up is headquartered. Trace recounted the founding story of their company, which strives to make wine and beer recommendations that are accurate and personalized. They do this by rigorously analyzing wines and beers (over 35,000 so far) then creating a “DNA profile” for each product.

Who I Met

It was a full house at New Relic, with plenty of folks to chat with. I met quite a few students and alumni from Epicodus, a 4-month program that teaches coding skills. One recent Epicodus graduate, Natalie Blackburn, mentioned that she really enjoyed the program and is now busy applying to entry-level dev positions. I also met Paul Burkett who had made the trip down from the ‘Couv, where he is CEO of the custom software shop AgileCore. Paul was full of interesting tech ideas, some involving Google Glass, and was excited about future entrepreneurial possibilities.

What I Learned

I’ve been reading a lot about the role of “data scientist,” a job title that scarcely existed three years ago. It’s gaining popularity as online retailers and service providers (e.g. Amazon, Netflix, Pandora) strive to make use of their hordes of data. They want to recommend a product, song or movie to you that you’re statistically likely to love.

Next Glass Chief Science Officer Connell Cunningham 

Next Glass Chief Science Officer Connell Cunningham 

Next Glass is definitely riding this technological wave. They added a CSO (Chief Science Office) to their team in addition to the traditional CTO role. Like Pandora's Music Genome Project, the first thing Next Glass did was devise a way to create the “DNA profile” for beverages. Now, I’m no biologist, but it sounded like they used something called a mass spectrometer to analyze the wine. Apparently it uses Thermo Scientific Orbitrap technology and records 22,000 data points for each wine sample. Here’s the “for dummies” video about how it works. After building their “Genome Cellar” database, they started testing recommendation algorithms, comparing them with user taste tests. Users get to rate beverages on a four-star scale, and their preferences are thrown in the data analysis too. The end result: a wine suggestion that users agree with 86% of the time. Not too shabby!

The demo of Next Glasses app was very cool. Interestingly, they ended up using algorithms that work super-fast on a mobile device, despite being about 2% less accurate than the ideal but slower-running versions. Speed matters to mobile users. For me, the most impressive part was their augmented reality feature. While using their app, you could point at beer label with your phone’s camera, and their recommendation rating would hover over the image on the screen, allowing you to click and drill down to find more info. They showed their app scanning a restaurant wine list, then transforming it into a formatted page with hyper-links, high-lighting the wines and their recommendation rating. “Oooohhh,” I said. Very impressive indeed.

Wrap Up

I definitely recommend checking out the next FutureTalk at New Relic. By my estimate you are 87% likely to enjoy it, and I don’t even need big data analytics to back that up. You also might like the Next Glass app, which is scheduled to launch around October.

Next Month

Keeping on the big data topic, I’d like to check out the Portland Big Data User Group. I’m also interested in learning about Docker, and it looks like there’s a local meet-up for that too. Neither of those appear to have anything scheduled yet for September though. If you have any recommendations for next month, please let me know!

PDX Tech Talks Monthly #6 - pdxdevops

A few weeks back, despite my busy late-summer schedule, I finally made it to Portland’s DevOps user group: pdxdevops. It’s been at the top of my "must check out" list for quite some time. Why? Well, a big game changer in software development over the last decade has been the commodification of hardware. We can now spin up dozens of Amazon EC2 web servers at a reasonable price, but who will configure them all? Traditionally someone from the Ops department would build a server or two, then install your company's web app. If you have to manage 50 servers, that could take hours of clicks and manual effort!

So, what can we do? Eventually, developers and operations folks started conspiring to automate this type of work. Some organizations historically separated these departments, but others have brought them back together, because automating this stuff requires expertise from both specialties: coding, scripting, network/server administration and monitoring. The hybrid role, dubbed "DevOps", is starting to appear in job postings. There are also tools and best practices emerging, and I’ve been curious to hear what local DevOps gurus think about the options available today.

Carl Hall describing DevOps tools

The Event - PDX Dev Ops

The meet-up was hosted at Cloudability, a local start-up and PIE graduate that helps companies track their cloud spending. They use cloud servers (Heroku, AWS) to run their service, and use the DevOps tools and techniques to automate the provisioning of their servers. Being a new start-up, their office downtown is packed with cool stuff:  shiny new iMacs, framed articles from the tech press (TechCrunch, WSJ, etc), and tasty beverages on tap in the kitchen (beer and Kombucha!).

Last month’s topic was Ansible, a new DevOps framework that Cloudability had been evaluating. Carl Hall presented and compared Ansible to the other popular infrastructure orchestration tools: Puppet, Chef, Salt, and custom scripts. Carl posted his slides up here, which include great comparison charts that explain the different approaches and features of each platform. 

Who I Met

I "stole" this from the Cloudabilty t-shirt rack

I met Brad Heller and Carl Hall from Cloudability’s dev team. Both had fun cloud-management war stories from the trenches of the start-up battle. Their summer intern, Colby Aley, showed me his awesome "company dashboard" project. My team’s summer intern also made a corporate dashboard, so apparently it’s the new hot side-project. I also met Lindsay Smith, a fellow PDX tech meet-up enthusiast, and we compared notes on the most interesting local user groups.

What I Learned

The two main styles of DevOps platforms are Imperative (listing out each step for building a new server) and Declarative (say what you want on the new server, the tool will figure out how to make it happen). Some tools like Puppet and Chef have a custom DSL (domain specific language) and a steep learning curve, but are very powerful once mastered. Other tools, like Ansible, are helpful additions to existing custom scripts. They do a few things well, and are easy to integrate if you already have scripts that automate your deployment.

One example of how these tools are different was the management of secret passwords (SSH keys). The more mature tools like Puppet and Chef had solutions for moving around private keys, which ensure access security on your brand new servers. For the more light-weight tools like Ansible, they had to use "Sneakernet" to walk the keys over to a co-workers workstation.

Wrap Up

I’m a DevOps novice, so I learned a ton. Most of the tools discussed helped with automating deployment on Linux. Even though my company develops mainly for Windows server, the high-level DevOps concepts are applicable to any OS. Also, I noticed that Puppet and Chef both offer Windows support.

It’s nice that Puppet Labs, another local company, is such a major player in the emerging DevOps tool market. Several employees from Puppet attended and offered their insider perspective on various tools and features. If you’re a DevOps newbie like me, I highly recommend swinging by pdxdevops. Their monthly meetings are listed on Calagator, and they announce the agenda on their Google Group. They also mentioned that the upcoming DevOps Day conference (Nov. 4-5th) will be a great place to learn more.

Next Month

I’m presently touring around Romania, but right after I return to the states TAO is hosting Ignite Health at OHSU. All the lightning talks will be related to healthcare software.  I’m definitely planning to attend and several of my Kryptiq co-workers will be there too.