“We’ll fix it in the next sprint.”
What’s Tampa Code Camp?
Tampa Code Camp is an annual community learning event for programmers in the Tampa Bay Area. This year’s edition takes place this Saturday, July 16th at the KForce offices, located just on the edge of Ybor City.
This year, Tampa Code Camp will feature 28 presentations across 4 tracks — cloud, web/mobile, .NET, and miscellaneous and open source — presented by local developers who are volunteering their time to share their knowledge. Tampa Code Camp is free to attend (but you need to register) and provides free donuts in the morning and a free lunch to attendees, thanks to the generosity of its sponsors.
Why should you attend Tampa Code Camp?
Developer and author of AngularJS in Action Lukas Ruebbelke wrote in What I Wish I Could Tell My Younger Programmer Self that the three things he wishes he could tell his younger self are:
- Surround yourself with programmers
- Surround yourself with better programmers
- The community’s success is your success
He’s right. Learning to program is enhanced when conversing and collaborating with other programmers. It’s even better when you can find peers from whom you can learn, and who challenge to become better (Mom was right — you should choose your friends carefully). And finally, the time and effort you invest into the local developer community often pays off with interest.
For Tampa Bay developers, Tampa Code Camp is a great way to follow Lukas’ advice to his younger self. It’s a great way to meet your industry peers, and from my experience at past code camps, you’ll always find people from whom you can learn. The connections you make at code camps can greatly benefit both your personal and professional life. And finally and most importantly, events like this — events that educate, support, connect, and strengthen the developer community — help to build Tampa Bay’s tech social capital and make it a better place for developers to live and work.
What’s being presented at this year’s Tampa Code Camp?
Tampa Code Camp opens with a keynote by a person of note. Last year, it was Mayor Bob Buckhorn, who talked about the importance of helping grow Tampa’s technological sector, especially for small businesses and startups.
This year’s keynote speaker is Joe Darko (pictured on the right), Program Manager Evangelist with Microsoft. He’ll open this year’s Tampa Code Camp with a talk about community and what it means to Microsoft.
The day’s 28 technical presentations will start at 9:00 a.m. and will be arranged into four tracks:
- Cloud
- Web/mobile
- .NET
- Miscellaneous and open source
A free lunch (usually sandwiches) will be served from 11:50 a.m. to just before 1:00 p.m., and there will be an after-party sometime around 6:00 p.m. at a nearby location to be announced.
Here’s the schedule, broken down by track:
Cloud track
9:00 a.m. – 9:50 a.m.
|
Build apps in Azure DocumentDB leveraging your C# and SQL skills – Santosh Hari |
10:00 a.m. – 10:50 a.m.
|
A lap around Azure Service Fabric – Keith Wood |
11:00 a.m. – 11:50 a.m.
|
Riding Microsoft’s Service Bus, To Azure Cloud And Back –bayer white |
1:00 p.m. – 1:50 p.m.
|
Apache Spark on Azure HDInsight – Hands On Lab – Adnan Masood |
2:00 p.m. – 2:50 p.m.
|
jQuery and jQueryUI: going beyond .hide() – Colin Borrowman |
3:00 p.m. – 3:50 p.m.
|
Developing High Performance Websites in ASP.net –Michael Ritchie |
4:00 p.m. – 4:50 p.m.
|
Introduction to REST – John Wang |
Web/mobile track
9:00 a.m. – 9:50 a.m.
|
Speed dating with front-end JavaScript MV* frameworks –Tyrone Davis |
10:00 a.m. – 10:50 a.m.
|
What’s New in ECMAScript 2015 – Sasha dos Santos |
11:00 a.m. – 11:50 a.m.
|
Windows App Studio: Data, Graphics & Installable packages– Russell Fustino |
1:00 p.m. – 1:50 p.m.
|
I Hate Managing Servers Web Develop.m.ent with Visual Studio Team Services and Azure App Services – Jeff Ammons |
2:00 p.m. – 2:50 p.m.
|
Machine Learning for Non-Data Scientists – Jay Kimble |
3:00 p.m. – 3:50 p.m.
|
SharePoint Develop.m.ent in the Cloud – Gary Blatt |
4:00 p.m. – 4:50 p.m.
|
A first look at U-SQL on Azure Data Lake – Jason Brugger |
.NET track
9:00 a.m. – 9:50 a.m.
|
Real World Software Architecture – Daniel Siebert |
10:00 a.m. – 10:50 a.m.
|
Factoring Your Code – Yale Cason |
11:00 a.m. – 11:50 a.m.
|
Intro to Dependency Injection – John Callaway |
1:00 p.m. – 1:50 p.m.
|
Integration Testing with Citrus Framework – mark lybarger |
2:00 p.m. – 2:50 p.m.
|
Migrating an existing WebApi 2 concept to a Node.js concept – Phil DeVeau |
3:00 p.m. – 3:50 p.m.
|
Moving Quickly Without Breaking Things in .NET – Matt Wagner |
4:00 p.m. – 4:50 p.m.
|
Memory Management Funda.m.entals – IDisposable and the Dispose Pattern – Scott Dorman |
Miscellaneous and open source track
9:00 a.m. – 9:50 a.m.
|
YOURS TRULY SPEAKS! Just Enough React to Get You Into Trouble – Joey deVilla |
10:00 a.m. – 10:50 a.m.
|
Introduction to Angular2 – Sebastian Castaldi |
11:00 a.m. – 11:50 a.m.
|
Introduction to Tools For Apache Cordova ( TACO) – Wael Kdouh |
1:00 p.m. – 1:50 p.m.
|
React, Mongo, WebAPI, VSTS, HockeyApp: Building A Web and Native Pipeline Status Application: Part 1 – Donald Bickel |
2:00 p.m. – 2:50 p.m.
|
React, Mongo, WebAPI, VSTS, HockeyApp: Building A Web and Native Pipeline Status Application: Part 2 – Donald Bickel |
3:00 p.m. – 3:50 p.m.
|
A New UI Era: Electron – Brian Deragon |
4:00 p.m. – 4:50 p.m.
|
TypeScript? – BJ Fink |
Who’s behind Tampa Code Camp?
Tampa Code Camp is a volunteer, labor-of-love effort by and for the Tampa Bay developer community. It’s pulled together every year by Greg Leonardo and Kate Leonardo, with the generous help of these sponsors…
- Accusoft
- AgileThought
- Cardinal Solutions
- Chase
- Code Career Academy
- DevEvolved
- KForce
- Mercury New Media
- TampaDev, Inc.
- Webonology
- Wolters Kluwer
…and of course, the presenters and volunteers who help run the event.
How do I sign up to attend Tampa Code Camp?
Go to Tampa Code Camp’s registration page to register. Please do so — it helps the organizers plan for space, food, and other amenities, and it’s the least you can do since the event is free.
I’ll see you there on Saturday!
One of my goals for this year was to finally build a finished app (well, as “finished” as any software development project gets, anyway) and put it in the App Store. That happened this week when I finished coding Aspirations Winery’s Wine Crush — like Candy Crush, but with wine — and submitted it to the App Store for approval Tuesday evening. The approval came Wednesday afternoon, and by Wednesday evening, it was available from the App Store!
The app runs on iPhones, iPads, and iPod Touch devices running iOS 9.0 or later.
Rather than tell you what Aspirations Winery’s Wine Crush is like, let me show you in a video that runs exactly one minute and thirty seconds:
Here are screenshots of the first four levels in the game. Each one is slightly more challenging than the last:
Aspirations Winery’s Wine Crush is free as in “it will not cost you a thing, ever”, and not free as in “freemium”:
If you’d like to get your hands on this app, you can click on the graphic below, which I am now allowed to use…
…or you can simply fire up the App Store on your iPhone, iPad, or iPod Touch and search for Aspirations Winery or Joey deVilla.
My thanks to:
- Bill and Robin Linville of Aspirations Winery for going along with my “Hey, let me make an app for your business”, and for rewarding me and Anitra with their friendship and a fair bit of free wine to boot,
- Robin Linville for creating most of the game’s graphics, and
- my wife Anitra Pavka for her testing, occasional prodding to finish the app, and suggestions.
Tampa Code Camp takes place next Saturday, July 16th at the offices of KForce, located just on the edge of Ybor City. It’s an annual, free-admission, community-run learning event for programmers of all stripes, from beginner to expert, from people who code for a living to programming students to hobbyists.
Every year, Tampa Code Camp features speakers presenting developer topics — largely focused on Microsoft technologies, but there’s also a “Miscellaneous and Open Source” track — and the chance for local developers to meet and hang out with their peers. It’s an all day event, starting at 8:00 a.m. and concluding at 5:00 p.m., followed by an after-party at a nearby restaurant. They typically provide free donuts in the morning, and free subs and drinks for lunch, thanks to the support of sponsors, and the work that organizers Greg and Kate Leonardo put into it.
I’ve attended Tampa Code Camp for the past couple of years, and this year, I’ll be giving the opening presentation in the “Miscellaneous and Open Source” track:
My presentation, titled Just enough React to get you into trouble, will be a quick introduction to React, Facebook’s library for building user interfaces. I’ll explain what React is, why you might want to use it in a web project, and how to set up your computer for React development. I’ll follow up by walking the audience through a very simple single-page app written in React, giving them enough of an understanding to start their own React explorations.
Just enough React to get you into trouble will take place during Tampa Code Camp’s first time slot — 9:00 am. to 9:50 a.m. — in the “Miscellaneous and Open Source” track. I promise that it will be packed with useful information and my trademarked entertaining presentation style.
If you’d like to attend my presentation or any other the other ones at Tampa Code Camp, please register! Once again, it won’t cost you a thing to attend; registration helps the organizers plan for space, food, and other logistics matters. Be sure to check out the agenda, sessions, and speakers lists.
The details
- The event: Tampa Code Camp
- When: Saturday, July 16th, 2016, 8:00 a.m. – 5:00 p.m.
- Where: KForce — 1001 East Palm Avenue (plenty of parking!)
- Admission: Free, but you should register!
Inside this terribly unsexy box is the best Android bang for the buck. Whether you’re dipping your toe into the wild and wooly world of Android development like I am, or just need a decent smartphone for under $200, you should consider the 3rd-generation Moto G.
The 3rd-generation Moto G, which was released in July 2015, comes in two different models:
- The base model, which has 1GB of RAM and 8GB of flash storage. At the time of writing, an unlocked one lists for US$160 on Amazon.
- The better model, which has 2GB of RAM and 16GB of flash storage. At the time of writing, an unlocked one lists for US$180 on Amazon. This is the one you should aim for.
If you don’t mind refurbished electronics, you can get one at a really low price online. I got the 2GB RAM/16GB flash storage model listed on Best Buy’s site at US$120; with free shipping and taxes, the total came to US$130. It arrived yesterday in a plain white box along with the kind of USB charger whose cable doesn’t detach, and nothing else…
…but at this low price, and since I already have a stash of USB A-to-USB micro cables, I’m not going to complain.
The 3rd-generation Moto G, viewed from the front, back, and side.
Click the photo to see it at full size.
Engadget summed up the 3rd-gen Moto G very nicely in their August 2015 review, titled Motorola wins the ‘best cheap phone’ crown, again. Although it’s priced like a starter phone, its Snapdragon 410 chipset help it to perform like a mid-range phone, and its display is surprisingly bright for a phone at this price point. The camera uses the same 13 megapixel sensor as the Nexus 6, which means nice photos in good light, grainy photos in low light, but a clear improvement over the previous year’s version. Battery life is very good; it played continuously looping video with the screen at 50% brightness for 10 hours and 40 minutes in Engadget’s test. It’s also waterproof for up to 30 minutes in depths of a meter (39 inches) or less:
As for software, my 3rd-generation Moto G came with Android 5.1.1 (Lollipop) installed, but a short over-the-air update later, it was running 6.0 (Marshmallow). Motorola have always been quite quick with the OS updates, unlike many other more popular, pricier vendors.
Motorola do a very good job of not covering up Android with crapware — it’s as close to plain old Android as I’ve seen on any phone. The very few software add-ons that Moto added were subtle and nice; my favorite’s the hand-gesture detection, which switches on the camera app if you twist the phone twice, and turns on the flashlight if you make a “karate chop” gesture while holding the phone.
If you’re a reader of this blog, there’s a good chance that you’re a developer with an interest in mobile platforms. If you’re looking for an Android device for development and testing, and especially if you’re looking to target middle-of-the-road devices (which are high-end devices in emerging markets), the 3rd-gen Moto G offers the biggest bang for the buck, especially if you opt for a deal on a refurbished model.
I’m going to be doing a lot of development on my Moto G in the upcoming months; watch this space for some of the results!
In my last article, I posted this graphic, which uses emoji to make it easier to understand what the map
, filter
, and reduce
functions do:
Since then, I’ve been asked by a couple of friends if what’s in the graphic is just pseudocode or if it could actually be implemented. I told them it was the latter, and here’s my implementation in Swift:
// Map func cook(_ item: String) -> String { let cookupTable = [ "🐮": "🍔", // Cow face -> burger "🐄": "🍔", // Cow -> burger "🐂": "🍖", // Ox -> meat on bone "🐷": "🍖", // Pig face -> meat on bone "🐽": "🍖", // Pig nose -> meat on bone "🐖": "🍖", // Pig -> meat on bone "🐑": "🍖", // Sheep -> meat on bone "🐐": "🍖", // Goat -> meat on bone "🐔": "🍗", // Chicken -> poultry leg "🦃": "🍗", // Turkey -> poultry leg "🐸": "🍗", // Frog -> poultry leg (no frog leg emoji...yet) "🐟": "🍣", // Fish -> sushi "🐠": "🍣", // Tropical fish -> sushi "🐡": "🍣", // Blowfish -> sushi "🐙": "🍣", // Octopus -> sushi "🍠": "🍟", // (Sweet) potato -> French fries "🌽": "🍿", // Corn -> popcorn "🌾": "🍚", // Rice -> cooked rice "🍓": "🍰", // Strawberry -> shortcake "🍂": "🍵", // Dried leaves -> tea ] if let cookedFood = cookupTable[item] { return cookedFood } else { return "🍽" // Empty plate } } let cookedFood = ( ["🐮", "🍠", "⚽️", "🐔", "🌽"].map { cook($0) } ) // cookedFood == ["🍔", "🍟", "🍽", "🍗", "🍿"] // Filter func isVegetarian(_ item: String) -> Bool { let vegetarianDishes = Set([ "🍟", // French fries "🍿", // Popcorn "🍚", // Cooked rice "🍰", // Shortcake "🍵", // Tea ]) return vegetarianDishes.contains(item) } let meatFree = ["🍔", "🍖", "🍟", "🍽", "🍗", "🍿", "🍰"].filter { isVegetarian($0) } // meatFree == ["🍟", "🍿", "🍰"] // Reduce func eat(_ previous: String, _ current: String) -> String { let qualifyingFood = Set([ "🍔", // Burger "🍖", // Meat on bone "🍗", // Poultry leg "🍣", // Sushi "🍟", // French fries "🍿", // Popcorn "🍚", // Cooked rice "🍰", // Shortcake ]) if (previous == "" || previous == "💩") && qualifyingFood.contains(current) { return "💩" // Poop } else { return "" } } let aftermath = ["🍔", "🍟", "🍗", "🍿"].reduce("", combine: eat) // aftermath == "💩"
I put this into a Swift playground, which you can copy from this Gist or download here.
Click the graphic to see it at full size.
I made the graphic above based on this amazing tweet by Steven Luscher (@steveluscher):
Map/filter/reduce in a tweet:
map([🌽, 🐮, 🐔], cook)
=> [🍿, 🍔, 🍳]filter([🍿, 🍔, 🍳], isVegetarian)
=> [🍿, 🍳]reduce([🍿, 🍳], eat)
=> 💩— Steven Luscher (@steveluscher) June 10, 2016
It’s a geeky t-shirt waiting to happen.