PyCon: The Good Bits

A week month ago, I was flying back from PyCon 2013 in lovely Santa Clara, California. You know, Silicon Valley. I had just finished spending the last 6 days in tutorials, talks, parties, and meeting neat people who love to hack on Python.

2500 men, women, and kids spent over a week learning about python, sharing python projects, and hacking on Raspberry Pi.

Here are just a few highlights of PyCon.

The Oprah Moment

Everyone gets… A Raspberry Pi! Eben Upton, the chairman of the Raspberry Pi foundation, gave a keynote at PyCon, and along the way helped to spread the reach of Raspberry Pi by giving every attendee a Raspberry Pi.

Speaking of Raspberry Pi, the folks at PyCon set up a free 2 day session for young kids that wanted to learn to program.  They spent Wednesday and Thursday programming games on the Raspberry Pi in a hacklab set up especially for the occasion.

While this was going on, I was partaking in three of the many tutorials that preceded the conference.  My favorite? The Pygame tutorial by Richard Jones.

PyCon Proper

There were 121 talks spread across 6 tracks over 3 days, with the tracks ranging from education and outreach to web development, with everything in between. With that much video, it’s no surprise that I didn’t get to see a 10th of what I wanted to in my time there. Luckily, PyCon made the talks available on Pyvideo.org.

The 10 Talks you Should See

1. Boundaries – Gary Bernhardt (Note: For some reason, the actual video from PyCon is not available)
1. What makes Python Awesome – Raymond Hettinger
2. How the Internet works – Jessica McKellar
3. Python at Netflix – Netflix
4. Teaching with the IPython Notebook – Matt Davis
5. Who’s there? Home Automation with Arduino and Python – Rupa Dachere
6. Blame it on Ceasar, What you need to know about dates, times, and time zones – Lennert Regebro
7. Composability through Multiple Inheritance – Łukasz Langa
8. Transforming Code into Idiomatic Python – Raymond Hettinger
9. Python Epiphanies – Stuart Williams

Teaching Kids to Code – Python Young Coders

PyCon had an entire track devoted to teaching others how to program, with a focus on teaching kids to program. Not only that, but they had a 2 day tutorial for kids set up in a Raspberry Pi Lab.

Everything As a Service

I was taken aback by how many startups are promoting X as a service, where X is continuous integration, error logging, error analytics, mail, authentication, and just about anything else you can imagine.

PyCon 2014

PyCon 2014 will be held in Montreal, Canada. Get your passports ready, and Change the future!

Your User Experience Matters

I’m leaving Gearhost. I’ve been a Gearhost customer for years (since at least 2008), and I’ve always been impressed by their excellent customer service and willingness to embrace new technologies (they were one of the first to put ASP.NET MVC beta on their servers, and they did it just because I asked them nicely).

I’ve since used them for my personal websites and as a demo playground for any consulting work I’ve done.  Whenever I’ve had a problem, it’s been really easy to get someone on the phone or in email to help me fix it.  Tickets have been resolved in hours, and sometimes minutes.

Once, after they had migrated my site to their “CloudSites” technology, the site went down randomly.  I emailed them, and within an hour someone called me back to personally apologize and let me know what the problem was. He even threw up a static page for me while the site was being migrated.

They really do have the best customer service I’ve ever seen from a company, bar none.

So why am I leaving them?

Their user experience is horrendous.

I visit Gearhost once every six months or so, and it’s usually not on the computer I’ve used previously with their site.  Like most techies, I have 6 separate devices I use to get work done on: My work PC (Dual boot Windows/Ubuntu), Home PC (dual boot), Laptop, iPad, and my iPhone (normally for urgent things).  That means that I can’t just bookmark a page and be done with it, but even more than that, I don’t bookmark sites any more. The ones I visit I remember their URL, or they’re in my internet address bar auto-complete.  So when I want to log into Gearhost, here’s what I have to do:

Click on “Customer Portal” (1 click)

Gearhost1

Then, find how to log in:

Gearhost2

Hint (it’s in two places, the dropdown under ‘Account’ (2 clicks) or the button in the lower right hand corner (1 click):

Gearhost3

This takes you to a new page to log in (1 click):

Gearhost4

Once you’re here, you’re still not finished. You now have to find what it is you’re looking for. In a normal use-case, changing settings for a site I already own.  Now, is that under ‘Domains’ (What I own) or ‘Services’ (What I bought?)? (2 – 5 clicks)

Gearhost5

Oh, it’s under services:

Gearhost6

Now that I’ve found my service, I have to log in, again. Guess where that is? “View Details” (1 click)

Gearhost7

Oh. That didn’t log me in, it just showed me the page where I now need to log in to my cloudsite.  Helpfully, it shows me my username and password for the cloudsite, in plain text.

Once I click “Launch myCloud”, The system will log me in (1 click).

Gearhost8

And finally, I’m somewhere with penciled drawings that make it appear I can do things (1 click).

Gearhost9

Huzzah! I found my sites!

Gearhost10

It takes a minimum of nine clicks to get from the front page of gearhost.com to the reason I visited their site in the first place: to administer it. If I screw up (as I’ve done half a dozen times on half a dozen computers), then it takes around 13 clicks to do the same.

That’s way too much mental effort to visit a site I only need to visit every few months, at most.

No desire to make the experience better for users

I’ve spoken with Gearhost representatives on the phone before about their user experience (a little over a year ago), and when I talked with them, I told them what problems I was encountering with their user interface, and I expressed a hope that they would take it into consideration when improving their site.

More than a year later, that hasn’t happened.  If anything, the status quo has become entrenched.  In my most recent support ticket, I once again brought up the clunky interface, to which they responded:

Second, just to smooth misunderstandings here, we have three portals for a good reason, granular control. While I appreciate that you may not be utilizing some of the compartmentalized features, we separate the customer portal because many of our users require more than one type of service (Virtual Machines, Shared Hosting, etc) to build the hosting environment they’re looking for. Sometimes there are reseller environment configurations as well, and this configuration allows these users to manage the services they provide while still adding additional administrative access to the Support Portal for tickets and service needs. This is also why domain renewal and domain hosting are handled separately.

There are a lot of issues here. Too many to go into long detail for each. Here are some bullets:

  • “Shared Hosting” – If you look at the screenshots, there is *nothing* that tells me I’m a shared hosting client, nor are there any headers that alude to “shared hosting”
  • Compartmentalized Features – Gearhost knows what service every person who subscribes has. They know whether or not that person has domains, shared hosting, VMs, or anything else. By not showing me information I know they have easily, they’re making it hard for me to use their site.  ”Compartmentalized features” is a minimum viable product — a way to get the product out the door and say, “We know this is a sub-optimal interface, but we need to launch”.  There’s no technical reason to keep it that way more than a year later.
  • “Billing and Support separate” – There are multiple ways to provide authorization without needing multiple usernames and passwords. Custom tokens, OpenID; Single Sign On through other methods;  There’s just no need to require multiple user names.

Which brings me to the final reason why I’m leaving Gearhost:

Three Separate logins

Gearhost requires three separate logins to interact fully with their site: The gearhost login; the technical support login; and the ‘myCloud’ login.  That’s two logins too many. One of those logins is also stored in cleartext (or at best, encrypted using symmetric encryption, which is also a security no-no).

I’ve only got so much time to waste on website administration. With sites out there like WordPress.com for blogs, and Heroku for easy deployment and spinning up of new sites, there’s very little reason go through this much headache just to maintain a blog and sandbox.

 All of this is a long explanation for a very short truth:

Your User Experience Matters

User experience is not an intangible thing, it’s something that can be measured, quantified, and studied.  There’s even a really popular book out there about it.

You don’t have to have the best user experience in the world — there are lots of sites out there that are successful despite their appearance (Craigslist being one), but you can’t actively throw roadblocks in your users’ path.

Before you launch your next product, take a moment and think about your user experience. You may not be able to have an amazing experience out the door, but five minutes with a customer should show you what you need to fix the most.

Why I don’t vote

I woke up this morning to being bombarded by messages to vote. From Twitter to Facebook to the local news. Most of the messages urging me to vote included some form of the following:

Exercise your civic duty, Vote!

Get out and Vote!

Okay people, get up and go VOTE! No matter your candidate or cause, just do it!

ELECTION DAY!!! Please go vote!

Just remember, voting for Gary Johnson, or writing in Mickey Mouse, only helps The chances of Obama staying in office. Romney, and a Republican majority taking over the Senate, is our only hope to save this nation. And if you are not voting for Romney because he is Mormon, then remember that you are saying you would rather keep an Islamic terrorist as our President. Maybe not a terrorist that straps bombs to himself, but he is a Political and Economic terrorist. You make the choice.

Yes, the last one is an actual message, and I had a hard time pasting it into this post without laughing. It’s not as bad as what they did in the early 1800s, but it’s pretty bad:

It’s your Civic Duty!

Is it? My civic duty is to cast a piece of paper into a box? That doesn’t even sound right. My civic duty (and the oath I took as a soldier) requires me to support and defend the Constitution. It does not require that I vote (and sometimes voting is detrimental to that oath, as I’ll touch on later). But let’s say I was never a soldier, do I have a civic duty to vote then? The answer is again, no.

Voting is not an act unto itself. It should be the culmination of years of study, thought, and soul searching. Voting says, unequivocally, that I want person X to become president. That’s it. It has nothing to do with anyone else.

The Constitutional Reason to Not Vote

It stands to reason, then, that if I vote for somebody, I better have a rock solid understanding of what they stand for, and more importantly, whether the can be trusted with what has essentially become limitless power.

If I were to vote for Barack Obama, I would have to be ok with the idea that he is willing to kill American citizens without due process, or that he is ok with torture. Or that he is able to arrest Americans without charge, or that he is able to start a war without congressional approval. And this is to say nothing about his economic plans.

Likewise, if I were to vote for Romney I’d have to worry about all those things I mentioned above, combined with the fact that his tone has changed considerably in the past few months alone. He doesn’t know who he is.

In short, neither candidate believes in upholding the constitution (unless they somehow believe the Constitution says they can do whatever they want). So what do I do? Do I violate the oath I took and cast a vote for either major party candidate? Or do I recognize that neither candidate plans to uphold the Constitution, and not vote for either candidate?

“If you don’t vote for Romney, you’re voting for Obama!”

I’ve gotten this argument from some friends lately. That somehow, by not voting for Romney, I’m assuring an Obama win. Well, no. That’s not how elections work. If there is a tie, there’s a certain set of things that happen; none of which is, “Current President keeps his Job.” Likewise, not voting also doesn’t mean that I want Obama to lose. It means precisely what it should mean, “I choose not to participate in this process.” The arguments also pre-suppose that every single Democrat out there will vote for Obama, and that there will be a substantial number of Republicans that won’t vote for Mitt Romney. Of course, this isn’t true.

Let’s say that a significant number of Republicans are choosing not to vote for Mitt Romney. Should they be harangued into voting for Mitt even though they don’t want to? So that the Republicans can “Win” again? Of course not. If there are a significant number of registered Republicans that believe that Mitt is not the right choice for President, then it’s up to the Republican Party to select a candidate that better reflects its values. The same is true of the Democratic Party.

I don’t care who you vote for, Just Vote!

I hear that from time to time as well. Ok, I’m voting for “Mickey Mouse”. What’s that? My vote will be thrown away? Oh, you mean for me to vote for one of the two pre-ordained choices for President! Why? If Hitler and Stalin were the only choices for President, should I ‘hold my nose’ and vote for the lesser of two evils? Or would it be better for me to work tirelessly to make sure that doesn’t happen again?

You get two choices for President, but 23 choices for bagels

Another good reason not to vote comes (again) from George Carlin:

He’s a bit pointed, but he’s not wrong. As Lawrence O’Donnell points out, third parties aren’t covered because they can’t win:

Some ‘democracy*’, huh?

In short, I’m not voting because there are no candidates running that represent my views. On the off chance that there were, they are quickly marginalized by the establishment.

If voting changed anything, they’d make it illegal

I think this sums up what I’m trying to say, rather nicely:

*No, we’re not a democracy, we’re a Constitutional Republic. Or we were. We’re some weird amalgamation now that has elements of Fascism, Socialism, and Corporatism. It’s been a bi-partisan effort to make it this way.

That Conference Day 3

 

Keynote

Richard Campbell’s talk was So What About Tablets?. In 90 minutes he took us through the history of the PC and left us with a startling revelation: the days of the computer that you sit at is numbered. All those things that we know about computers, from the mouse to the current state of the GUI is very transitional.  I’ll try to find a link to his talk on the internet, but in the meantime, just listen to .NET Rocks!, his podcast.

Morning Session

After more delicious potatoes wrapped with bacon, I went to hear Jimmy Bogard talk about functional testing in ASP.NET MVC.  At the Motley Fool, we use our tests written in Gherkin to do functional testing, but we also have to create the syntax for our DSL, a weighty process. Hearing him speak on the powers of WatiN and selenium (we use WebDriver for our automation) was pretty neat, and I picked up that if we weren’t invested in Gherkin and Sherpa (our test runner), then there are viable alternatives, though no silver bullets.

Afternoon Session I

Matt Milner talked about ASP.NET HTTP Web API.  How glorious a thing. It essentially does the same things that you can do in MVC when creating a web API (BTDT), but it does them better.  It’s like BASF for your web APIs.  And even better than WCF, it talks barebones HTTP and is easy to configure.  I’m definitely going to spend some time porting some of our internal APIs to it to give it a look see.

Afternoon Session II

Keith Dalby finished out the afternoon sessions on his talk Git More Done.  Don’t know Keith Dalby?  He’s the guy behind PoshGit, a Powershell Git client. As someone who uses just the essentials of Git, I’m impressed with how much there is underneath the surface.  Were it not for the fact that Kiln started out with Mercurial, I probably would have started with Git.

Closing Time

Heading out from That Conference, we decided for one final hurrah and went for dinner at the Ishnala Supper club.  It sits overhanging Mirror Lake, and has some of the best views of the lake at Sunset.

They also make a mighty fine Wisconsin Old Fashioned.

That’s to say nothing of their delicious prime rib.

 

All in all, it was a great conference, and I’ll definitely attend again.

That Conference: Day 2

 

Keynote

Scott Hanselman started out the day with his keynote, Information Overload: Scaling Yourself. As usual, Scott brought it. Spoiler: Twitter has little productive value.

Morning Session

For the morning session I checked out Jon Galloway‘s talk on using the various frameworks inside of ASP.NET (MVC, Web API, *shudder* Webforms) together.  I’ll link to his materials when they’re out, but short story:  MVC 4 is dropping today and Visual Studio 2012 makes this much easier (also dropping today for MSDN people). It makes it possible to not only use the two together, but finally gives an easy ‘upgrade’ path from Webforms to MVC.

Afternoon Session I

I was fortunate enough to catch Leon Gersing‘s talk on Truth and Myths of Software Development.  In his talk, he went into the various myths and truths that he’s encountered, such as TDD being a silver bullet (myth), or that Agile is still alive (myth).  As someone who works at a company that practices Agile development, this rocked my world:

 

 

I won’t attempt to mangle the great talk he gave by summarizing it here, but needless to say if you have a chance to see him talk, go. His talks alone are worth the price of admission.

Afternoon Session II

Jason Bock‘s talk on Roslyn filled up the mid-afternoon speaking time, and he filled his talk with really neat examples, like how to use Roslyn to remove regions in code.

As someone who hates regions with a passion, I salute his efforts.

Roslyn is still only a CTP, but the number of things that can be done with it are mind boggling. Imagine being able to have your code automatically sort properties and methods alphabetically? Or have custom warnings based on internal code standards?

Afternoon Session III

The final session of the afternoon was Html5 Game Development with JQuery with Burke Holland.  He built, from scratch, Pong in front of a live studio audience.  He’s putting up the code later this week on his Github account. Even better is that he used CoffeeScript and Node.js’s Jitter to transpile the CoffeeScript into JavaScript for us, so we could see the awesomeness of CoffeeScript  (this may actually get me to use JavaScript more often).

The evening closed out with a Pig Roast, a Groupon sponsored waterpark party, and lots of fun.  The sort of things you’d have to be here for.  But, in keeping with my earlier promise, here is a drink that sums up the evening (iPhone included for scale):

 

 

That Conference: Day 1

That conference started (as any good conference should) with breakfast. Delicious breakfast that contained the four basic food groups: caffeine, bacon, ketchup, and sweets.

That conference kicked off today with Leon Gersing @rubybuddha talking about You. Not you, me. But you too. The royal you. You as a person. You as a developer. But not just you, everyone around you.

His talk centered around the person and how we interact with each other.

I won’t attempt to do try to summarize his talk (more than I’ve already done) but I will share just one quote from his talk:

After the morning keynote, it was session time. With too many sessions and not enough me to go around, I settled on attending Scott Hanselman’s talk: “One ASP.NET”. In it, he detailed Microsoft’s vision for ASP.NET. Again, I won’t try to summarize his talk here, especially since it’s helpfully on his blog.

Lunchtime approached and looked exactly like breakfast time (only this time without the bacon wrapped potatoes and cheese curds, much to my disappointment), and then came the afternoon sessions.

I caught Ryan Niemeyer’s Knockout.JS talk (I’ll link to the video once he posts one), and let me just say that there is some cool stuff that can be done with Knockout. Definitely on my list of things to learn.

SignalR – Jeremiah Billman


Jeremiah Billmann showed the power of SignalR by re-creating Rampage in SignalR. Yes, that Rampage

While impressive (really fracking impressive), he unfortunately couldn’t release the code because Warner Brothers doesn’t take too kindly to such things, so sadly it is left in the aether.  

Libations

The Kalahari Resort (as you may already know) sits in Wisconsin.  The same Wisconsin that has (as Lewis Black put it) professional alcoholics.

I thought he was kidding, until I saw the resort selling a glass the size of The Stanley cup:

 

I haven’t yet been able to get any pictures of these in the wild (and at the $23 asking price for the drink, haven’t been able to get The Motley Fool to agree to let me expense it — for research purposes, of course), but when I do, you’ll be the first to see them.  

That Conference: Day 0

I’m on the ground here in the beautiful Wisconsin Dells at That Conference. I’ll be spending the next four days conferencin’, learnin’, and waterparkin’.

Getting ready for my flight into Wisconsin, I started doing my research on the area. Lewis Black enlightened me on the ways of Wisconsin (warning: salty language):

Landing into Miluakwee (Algonquin for “the good land”) , we took on brunch at The Packing House (which has a pretty good brunch, if my taste buds have any say in it), and then we drove the 2 hours to the Dells. Upon arrival, we came upon this:

and this:

After a quick excursion to the waterpark, it was registration time (or, as I like to call it: Free Swag!), and did they ever deliver:

From L to R: CODE training $100 gift certificate, Give Camp advert, Conference handbook, two free drinks for the happy hour or pig roast, iPad stand, CODE magazine, Tshirt. Did I mention that the iPad stand was handmade? Our final stop for the night was dinner at Damon’s Grill, where I happened upon the most awesome thing I have ever encountered… Cheese Curds:

These little gems of deliciousness are Cheese curds lightly battered and fried, and served with a tangy ranch dressing.

There are not words to describe how delicious this jewel of the midwest is. If this ever caught on nation wide? We’d all be fat.

Next time: Conference, Day 1: Kickoff, Recap, and the Stanley Cup of Drinking glasses.