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.

PDX Tech Talks Monthly #5 - PADNUG

It seems like most tech meet-up enthusiasts have a favorite group. It’s the one you go to most often. The one where they talk about the tools and techniques you use every day to get your job done. It’s your go-to group, your community. For the last several years, my go-to group has been PADNUG, the Portland Area .NET User Group.

Microsoft’s .NET programming framework is used quite a bit locally, especially in enterprise software companies. Many of those companies are on the west side of Portland’s tech scene (i.e. Beaverton & Hillsboro), so PADNUG is conveniently hosted at Intel’s Hawthorne Farms campus, mere blocks from my work. Intel kindly lends us one of their huge auditoriums, and it’s an awesome facility for speakers and large audiences. I usually attend a few times a year when I see a particularly intriguing topic. Last week I was in luck. Xamarin was in town.

PADNUG crowd at Intel's Hawethorn Farm auditorium

The Event - PADNUG (Portland Area .NET User Group)

Last week’s PADNUG topic was Xamarin, a company that helps .NET developers deploy their apps on all sorts of devices. Microsoft certainly makes it easy to write C# code in Visual Studio (the Cadillac of IDE’s) and deploy to a Windows PC or Windows Server, but what if you want to build an iPhone or Android app? Not to worry, Xamarin offers some cools tools that allow you to compile C# code so it runs on your phone as if it was written in the "indigenous language" (Objective-C for iPhones, Java for Android).

Bryan Costanich talking about code reuse

The speaker was Bryan Costanich, Xamarin’s Director of Education. Dude is also listed in IMDB and just kick-started a movie called Slumptown. He’s a great presenter who also happened to be on the Windows team back in the day, although he now slangs code on a MacBook. Bryan started off strong by demoing an app he wrote for his watch. His Agent Watch, built by the makers of Netduino, runs the .NET Micro Framework. He also wrote an Android app for his phone that communicates with his watch over Bluetooth, sending it notifications (e.g. "Destroy Mr. Bond!"). Both apps were written in C# using Xamarin’s tools. It was an intriguing proof-of-concept. See his full write-up about it here.

Hold up though, why is it cool to write in one language and deploy to a bunch of different devices? Does that just mean you’re too lazy to learn the tech stack native to each platform? Bryan did a good job of describing the benefits of code reuse, but warned against the desire to "write once, run anywhere". He mentioned that popular tools were built with that goal in mind (PhoneGap was mentioned), but it turned out users didn't always want the exact same app on every device. The major phone platforms (iPhone, Android, Windows Phone) each have their own unique design languages, user experience metaphors, and capabilities. For example Android has a native back-button that apps can use, but iPhones don’t. Xamarin's solution is to offer a custom C# library for each device that leverages that device’s unique assets and capabilities.

Here’s Xamarin's suggested architecture for using their tools to build apps:

Xamarin's recommended architecture

Xamarin's recommended architecture

Common libraries are shared (e.g. a SQLite adapter), and then you write a custom UI for each device. It was a well-articulated vision. I think folks were interested because they are being asked to port their company’s app to all the cool new phones and tablets, and Xamarin definitely offers one solution for that challenge.

Who I Met

PADNUG is well attended by local .NET recruiters. If you need help growing your team, or if you’re a .NET dev between gigs, PADNUG is great place to network. I met Scott Patton, an energetic new recruiter at TEKSystems. I also met Ken Westin, a car enthusiast who has driven a Corvette with an experimental heads-up display (surprisingly useful at high speeds!). After the event I spent a long time chatting with Santos Cash about Internet of Things trends. Santos feels like Android is going to be a very important IoT platform, and is interested in helpful things we can do with all the personal data our devices collect.

What I Learned

Should we be trying to write all of our apps with one set of tools, in one language? Should I find a similar toolkit that allows me to write all my apps in C++? JavaScript? Well, I think there’s definitely a case to be made that folks become very proficient with one particular language and framework, and it’s understandable if they want to leverage those skills on lots of devices. Xamarin allows C# experts to write iPhone apps without having to learn Xcode and Objective-C, and it’s nice to have that option available. I've heard of architectures where separate native apps are built for the main platforms, but all use a common web service to fetch data. Xamarin offers a slightly different approach that allows code sharing at a deeper level: the apps’ native business logic.

Wrap Up

It’s good to have a go-to tech meet-up full of folks who build great software with the same language as you. It helps you to discover options and best practices for your preferred platform. Portland also has meet-ups for Java, JavaScript, Objective-C, Python, Ruby, and Node.js (am I missing any?) that I hope to visit in the next year.

Next Month

Wow, next month seems a long ways away. Why wait? It looks like the pdxdevops folks are planning to meet next Monday at Cloudability to talk about Ansible and other IT orchestration tools. Sounds interesting!