Categories
Florida Tampa Bay

Why you should attend Tampa Code Camp this Saturday

tampa code camp

What’s Tampa Code Camp?

tampa code camp logoTampa 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?

hands on laptops

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:

  1. Surround yourself with programmers
  2. Surround yourself with better programmers
  3. 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?

joe darkoTampa 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:

  1. Cloud
  2. Web/mobile
  3. .NET
  4. 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

Web/mobile track

.NET track

Miscellaneous and open source track

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…

…and of course, the presenters and volunteers who help run the event.

How do I sign up to attend Tampa Code Camp?

ohyesitsfree.jpg

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!

Categories
Uncategorized

It’s about time: I finally put an app in the App Store!

first but not last

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:

wine crush - first 4 levels

Aspirations Winery’s Wine Crush is free as in “it will not cost you a thing, ever”, and not free as in “freemium”:

south park 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…

download on the app store

…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.
Categories
Uncategorized

I’ll be presenting at Tampa Code Camp: “Just enough React to get you into trouble”

tampa code camp 2016

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:

just enough react to get you into trouble

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

Categories
Hardware

The 3rd-generation Moto G: The best bang for the Android developer’s buck

moto g 3rd gen 1

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:

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…

moto g 3rd gen 2

…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.

moto g 3rd gen front back side

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:

moto g in glass of water

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!

Categories
Humor Programming

Demonstrating map, filter, and reduce in Swift using food emoji

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:

map filter reduce in emoji

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.

Categories
Uncategorized

Map, filter, and reduce explained using emoji

Picture showing three functions: 1. the map function taking an array containing the cow face, roasted sweet potato, chicken, and ear of maize emojis and the cook function as its arguments and returning an array containing the cheeseburger, french fries, poultry legs and popcorn emojis; 2. the filter function taking an array containing the cheeseburger, french fries, poultry legs and popcorn emojis and the isVegetarian functions as its arguments and returning an array containing the french fries and popcorn emojis; 3. The reduce function taking an array containing the cheeseburger, french fries, poultry legs and popcorn emojis and the eat function as its arguments and returning the pile of poo emoji as its result.

Click the graphic to see it at full size.

I made the graphic above based on this amazing tweet by Steven Luscher (@steveluscher):

It’s a geeky t-shirt waiting to happen.

Categories
Uncategorized

Amy Poehler on…coding?

everyone lies about writing

yes please

This is from the preface of Amy Poehler’s book Yes Please, and it tells the truth about writing:

Everyone lies about writing. They lie about how easy it is or how hard it was. They perpetuate a romantic idea that writing is some beautiful experience that takes place in an architectural room filled with leather novels and chai tea. They talk about their ‘morning ritual’ and how they ‘dress for writing’ and the cabin in Big Sur where they go to ‘be alone’—blah blah blah. No one tells the truth about writing a book. Authors pretend their stories were always shiny and perfect and just waiting to be written. The truth is, writing is this: hard and boring and occasionally great but usually not. Even I have lied about writing. I have told people that writing this book has been like brushing away dirt from a fossil. What a load of shit. It has been like hacking away at a freezer with a screwdriver.

Coding is romanticized in the same way these days, thanks to the tech success stories we hear in the news, the increasing ubiquity of processors and the rise of the Internet of Things, concerns about job security and being “automated away”…and possibly because coding looks a lot like writing. “You must learn to code!” has been the battle cry of the White House, organizations like Code.org, tech titans, millennial entrepreneurs, and even that homeless guy:

I understand the urge to evangelize coding; in fact, it’s been a good chunk of my career. There’s nothing like the feeling you get when you run a program that you’ve written and seeing a computer or device turn your ideas into action. Even after coding for decades, I still give myself a Barney Stinson-style “self-five” when my code compiles and runs as I expect.

programmer punching through laptop screen

But as with writing, between the initial rush of setting out to code a program and the point that you declare the job done is a long journey of days, months, and even years. That journey has its moments of joy, discovery and wonder, but they’re punctuated with stretches of tedium, toil, and beating your head against your desk (usually figuratively, but sometimes literally) wondering why you can’t get the damned code to work. Like many writing projects, both professional and personal, many coding projects are abandoned. Writing and coding projects are never really finished; “done” is an arbitrary point determined by the writer or coder, and both are left with a lingering feeling that their project could benefit from just a few more changes. And that homeless coder is still homeless:

Thanks to the similarity between writing and coding, I’ve occasionally paraphrased Dorothy Parker: “I hate programming, but I love having programmed.

web horizontal rule

Want a coding-themed blast from the past featuring Amy Poehler? Here’s the pilot for a ’90s TV series called RVTV, in which Poehler plays a hacker who’s infiltrated the NRA database. She also breaks into some old-school rap: