the further adventures of

Mike Pirnat

a leaf on the wind

Next Page »

PyCon 2018 & 2019 Dates

IMG_1630.jpg

Since I've been asked a few times about the dates for the upcoming PyCons in my lovely city of Cleveland, Ohio, and there is surprisingly little about it in Google results, and I wouldn't mind an SEO bump, here is the scoop, along with photographic proof from the closing keynote of PyCon 2017:

As usual the first two days should be tutorials, followed by three days of conference proper, and finally four days of sprints.

I hope to see you there!

Read and Post Comments

Daypack Shootout: North Face Borealis vs. Osprey Quasar

Once upon a time in 2016, I was getting ready for my first trip to the United Kingdom, and I found myself in need of a proper daypack. It would need to not be awful to carry through airports, manage a laptop, a small camera, and limited supplies like a water bottle and small snacks, stow a light jacket, hold some modest souvenirs that the kiddo would inevitably insist on, and stand up to the springtime rains. Bonus points would be awarded for not looking horrible or presenting me as a theft target. I spent a week or so agonizing over online research and eventually narrowed the field to two final and very similar contenders: Borealis by The North Face and Quasar by Osprey. I ordered both from Amazon and spent an evening doing an in-depth comparison, the results of which, dear reader, are at long last yours to behold.

Buckle up--there's going to be a lot of pictures.

IMG_4752.jpg

So that's the Quasar on the left and the Borealis on the right. Both bags are 28 liters and are remarkably similar to one another.

Both bags feature a bungee cord for external storage of things you might want easy access to. The Quasar's matches the rest of the bag, for a more subtle look, while the Borealis offers a splash of color (and in fact comes in a nearly ridiculous number of available colors).

IMG_4753.jpg IMG_4769.jpg

Both bags were easily capable of corralling a light jacket that I jammed in not very neatly for a quick test, giving me confidence that they could support my layering needs. I really didn't want to wear a wet rain jacket indoors, so this external, easily accessible storage was a huge win for me.

IMG_4754.jpg IMG_4771.jpg

Both bags terminate this cord with a little plastic hook that you can attach to this webbing to keep things nice and neat. The Quasar's hook is a little larger and seemed both more robust and easier to work with. I also preferred the mechanism on the Quasar that's used to adjust the tightness of the web.

IMG_4755.jpg IMG_4770.jpg

Both bags fit a modest water bottle with ease in the stretchy side pockets. But we have a major point of differentiation here: the Borealis has only one compression strap per side, while the Quasar has two. On the Borealis, the compression strap and its hardware interfere with the top of my bottle, while on the Quasar the bottom strap goes over the outside of the pocket (meaning you can over-tighten it and make the pocket difficult), and the top compression strap is far out of the way. Points here (for me at least) go again to the Quasar.

IMG_4756.jpg IMG_4777.jpg

The side pockets are also a great place for an umbrella--another late March London necessity. This also gives us another look at the placement of those compression straps.

IMG_4757.jpg IMG_4776.jpg

The Borealis has a little molle strap sewn into three segments that you can use to hook stuff onto the bag. The Quasar has two mount points featuring a sort of rubber tube. I kind of liked the molle material better, and it was easier to clip things on there, but I can also see the value in how Osprey has arranged things on the Quasar.

IMG_4758.jpg IMG_4772.jpg

Both bags have an adjustable waist strap that you can use to shift some of the bag's weight onto your core and hips. (Also great for feeling self-conscious about the proportions of your belly.) These straps need to be fairly snug for you to really enjoy any of their benefits; to make this easier, there are nice little loops on either end that. While these are functionally equivalent, I thought the loops on the Borealis were finished a little better, and the waist strap on the Borealis was a little wider/thicker, and so slightly more comfortable when worn and also slightly nicer to adjust.

IMG_4768.jpg IMG_4782.jpg

The Borealis and the Quasar both feature sternum straps that can be raised and lowered as well as tightened. They're basically identical, and both have whistles built into the clips. You may not think that's all that novel, but I hadn't shopped for backpacks since the 90s, so I commend bag makers for this very cool safety addition. Good job, y'all!

IMG_4760.jpg IMG_4781.jpg

There are some additional mount points on the shoulder straps of each bag. I found the little molle straps on the Quasar easier to work with.

IMG_4761.jpg IMG_4783.jpg

Both bags feature a small pocket near the top that's suitable for sunglasses and small electronics. The pocket on the Borealis is lined with super-duper soft material to prevent scratching up your specs, while the material on the Quasar is adequate but not quite so luxurious a home for its contents. These pockets are essentially identical in terms of size, so if pampering your stuff is a goal, the Borealis gets the points here, but I'd be willing to bet that this pocket on the Quasar does a little better in wet conditions.

IMG_4759.jpg IMG_4773.jpg

Each bag has two major compartments, accessible from a panel-style zipper that goes up and around like an upside-down U. The outermost of these compartments features each maker's take on some organization features, while the innermost is home to the bulk of the bag's storage.

Looking at the Borealis first, we have a nice variety of pockets in various pratical sizes, some padded and some mesh, with one zippered. The zippered pocket includes a little strap and clip to attach your keys; I appreciated being able to conceal keys in this pocket. The narrower of the two padded pockets is just right for a mobile phone, and the wider is a lovely home for a tablet (like my old, old iPad 2). There are also a couple more molle strap mount points to let you customize things a bit. Down at the bottom are spots for pens and pencils and mesh pockets just about right for a little pocket notebook.

IMG_4763.jpg IMG_4765.jpg IMG_4764.jpg

The Quasar, by contrast, is a little more barebones. Yes, there are some pen and pencil slots; yes, there are a couple of miscellaneous pockets; yes, there are a couple of stretchy mesh pockets; yes, there is a clip for your keys. But the clip doesn't hide away with the elgance of the Borealis, and nothing feels quite as well thought out as on the Borealis. I like that the color here makes it easier to find things, but the Borealis seems better organized in practically every other regard. That said, the Quasar does one thing here far, far better than the Borealis--access. Remember those compression straps? On the Borealis, the compression straps interfere with the zippers of both compartments. By contrast, the Quasar's straps only impede access to the main compartment, making access to this organized compartment far easier than on the Borealis.

IMG_4775.jpg IMG_4774.jpg

Finally, we come to the cavernous main compartments. Both bags have plenty of room here for you to load them up however you see fit. Here, though, the Borealis is the more spartan of the pair, with just a single, fairly plain laptop pocket with no additional padding. Even then, this slot was a disappointment, barely capable of holding my 13" Macbook Air clad in a neoprene sleeve. The Quasar shines here, including not only a padded laptop sleeve, but a second slim pocket for papers or a notebook, and a zippered mesh pocket that's great for power cords and video dongles. It was a breeze to insert or remove my Air, neoprene sleeve and all, and that mesh pocket is just the right size for my 7-inch Grid-It organizer. The Quasar wins here, and it wins by a lot.

IMG_4766.jpg IMG_4778.jpg IMG_4779.jpg

I don't have photos of the next bit, but I zipped both bags shut and sprayed them with water from a spray bottle, with particular emphasis on soaking the zippers themselves. Both bags admitted a little water, but the Quasar's zippers fared noticeably better than those on the Borealis. I was planning to get a rain cover regardless of which bag I selected (and I'm glad I did, because I needed it on a soaker of a night in London!) so this wasn't a big deal, but was definitely a point in the Quasar's favor.

At this point I was still vacillating between the two bags, mainly because of how both bags were great at one compartment but not at both. The deciding factor turned out to be something I can't capture in pictures: the carry. The feel of the bag, properly fitted and holding a typical load, on my body. The Borealis has much thicker padding for your back, but both that padding and the straps felt much stiffer than the Quasar. I'm sure that the Borealis would improve with time, or that I'd get used to it, but I was a little over a week out from flying to the UK, so that was time I didn't have. By contrast, the Quasar felt broken in from the moment I put it on. The straps were just right, and the padding didn't press into my back in weird ways like the Borealis did. So the Borealis went back to the warehouse and the Quasar went with me to England and Wales, where it performed marvelously.

I was so pleased with the Quasar that I've since picked up similar Osprey bags for my wife and daughter: the Questa for Liz, better fitted to feminine anatomy, and the Pogo for the kiddo, because the other child bags lacked the waist strap. The Pogo in particular has been nothing short of a miracle for the kid; the sternum and waist straps mean that she can carry her bag through the airport without complaint. As a parent, this is huge.

Ultimately, though, both of these bags are great choices, and I am not at all surprised by how many of each bag I've seen at tech conferences in the past year. It's a lot like the photographer's dilemma of choosing Canon or Nikon--it's hard to go wrong with either one, but you should try them out and decide for yourself.

Good luck, and happy daypacking!

Read and Post Comments

I Should Maybe Blog Sometime

Is this thing still on?

Gosh, I should maybe blog sometime. I actually do have a couple things that I've been meaning to write about, and it's a little embarrassing that I've barely posted a handful of updates over the past four years. FOUR YEARS!

So... Stay tuned, I guess, and we'll see how poorly this post ages.

Read and Post Comments

Text Me Maybe: Smarter Real-World Integrations with Python

Gosh, it's been a year since I last posted! Let me try to make it up to you...

I took some existing talks on the road last year (to CodeMash, PyCon, and OSCON!) but I've once again put together something new for PyOhio.

So my family likes to know when I'm on the way home from work, but I'm lousy at remembering to text or call before I leave. Some basic "out of the box" geofencing solutions are available, but none of them are smart enough to understand situations like going to lunch where sending a "coming home" message wouldn't be appropriate. Luckily, we can assemble our own solution pretty quickly and cheaply with Python at the core, and we don't even have to run our own servers to do it!

In this talk I showed how I created a cloud-hosted, location-triggered SMS notification service with some decision-making smarts by combining IFTTT (If This Then That), AWS Lambda, Twilio, and just the right amount of Python.

The talk seemed to go really well, and I have been flattered and humbled by the volume of positive feedback I got about it. I hope it will inspire you to go have some fun making your smart things a little smarter.

Here are the slides:

Unfortunately there's no video due to a variety of AV issues, so you'll either need to use your imagination or convince the PyCon program committee to accept it for 2017. ;-)

And who knows, maybe I'll start posting more often (hahahaahhahaahahahahahahaha *wipes away tears* whoooo wow, who am I kidding?).

Read and Post Comments

Using Python to Get Out the Vote

After taking a year off from PyOhio due to a scheduling snafu (off-by-one errors apparently aren't just for software), I was delighted to be back this year, and with a fresh talk to boot.

This spring, I helped my wife with the data munging aspect of a school levy get-out-the-vote campaign. We mashed up school directory data with Ohio voter registration records to produce targeted contact lists for phone calls, mailings, and door-to-door visits, reducing redundant contacts and eliminating wasted contacts.

The technology involved is pretty straightforward, involving a little bit of Python and some pretty basic SQLAlchemy and Alembic (in fact, it was my first serious dive into both SQLAlchemy and Alembic).

The talk seemed to go pretty well, and I had some great conversations about it afterwards. Hopefully it will be inspiring or at least of some value to folks looking to do some useful things with Python.

Here are the slides:

And you can watch the video too.

Read and Post Comments

PyCon 2016 Dates

I blanked on the dates for PyCon 2016 the other day, and Google was strangely silent on the subject, so here, for your reference (and my SEO benefit), are the dates for PyCon 2016:

  • Tutorials: May 28–29, 2016
  • Conference: May 30–June 1, 2016
  • Sprints: Starting June 2, 2016

This means the tutorials will be over a weekend, and the conference will be during the week instead of the other way around, and it'll be a holiday weekend. I'm looking forward to finding out what this does to the dynamic of the conference.

Hopefully I'll see you there--if I can remember the dates, that is.

Read and Post Comments

Announcing Procatindex

Replacements

If you're even a little bit like me, you think Procatinator is one of the Internet's greatest achievements. (If you don't know Procatinator, pop on over there for a minute or two and you'll know whether the rest of this post is for you or not.)

If, like me, you have favorite cat GIF/music mashups but can't recall their exact URLs when you're trying to wow your friends, then my latest silly website project is for you.

Behold: the Procatindex!!

Procatindex.com keeps a list of all the Procatinator cats, with titles pulled from the music videos used. The list is automatically refreshed when there's a new cat, and you can subscribe to the RSS feed to make sure you never miss the latest additions.

The site and the script that refreshes it were built in a couple of hours with Requests and Flask, which made short work of the task. (If you aren't familiar with these, you should check them out. Though I have mixed feelings about Flask, it's a wonderful go-to for quick web apps like this. And Requests has become something I can no longer live without.)

Hopefully this improves the effectiveness of your procatination. Enjoy!

Read and Post Comments

Since You've Been Gone

All Gone

To everyone who now has Kelly Clarkson stuck in your head, you're welcome. (I know what it is you see, for it is in my mind also.)

Thanks largely to last year's 365 project, I posted a record 382 entries here on the old blog in 2012. So it feels strange that this is only my third post for 2013--and I missed February entirely!

What the heck happened to me? Life!

  • The first half of January was dominated by CodeMash and the eight-hour Django tutorial that I helped put on.
  • Mid-January through mid-March were consumed by preparations for the half-day web app security tutorial that I presented at PyCon.
  • I've also been crazy-busy preparing for and running our company's annual Hack Day event. We did a whole secret agent theme, going so far as to produce some extremely low-budget but nonetheless epic video segments in the style of the Bond films. Our audio team even made us a theme song, which I'm not ashamed to admit I enjoyed playing on a loop on my phone while I walked around the office in a tuxedo during the event.
  • I've been building lots of Legos with my daughter! She rocks the Lego Friends sets on her own, and helps me with my Star Wars and Lord of the Rings sets.
  • Speaking of Lego Lord of the Rings, I kind of got hooked playing the Xbox version. So good...
  • I got a RaspberryPi at PyCon! So the kiddo and I have built a case for it out of her spare Legos, and I've shown her a little bit of Python and Scratch. Now we need to find a project, because she's really excited about building something with it. (Thanks, PyCon!)
  • I made a little URL shortener for my pirn.at domain before I realized that bit.ly does it all for free and then some. That's okay. It gave me a chance to learn about Flask. I'll probably write a little bit more about it at some point later.
  • I made a little RSS-to-Twitter gizmo to automatically tweet links to my blog, using my pirn.at shortener for links. I'll probably write a little bit about it too.
  • I got all excited at PyCon and made PythonIpsum, a lorem ipsum generator with a Python-flavored vocabulary. Patches welcome!
  • I've been bitten by the site refresh bug and have started tinkering on a responsive-ish layout so that this place won't look so daft on a phone.
  • I've got a photography backlog from CodeMash and PyCon that I hope to address shortly. And then I want to get back to shooting regularly (though I've got a case of gear fever, so right now I'm mostly obsessing about which lens I'd like to pick up).
  • The kiddo and I have been watching Clone Wars and Dr. Who together. She's been really enjoying watching them with me, and I've really enjoyed helping to counter the influence of the Princess Industrial Complex.

In short--death by bullet points! Hopefully with the big conference season behind me, I'll get back into the swing of things shortly and won't be quite so much of a stranger here.

Read and Post Comments

Shiny, Let's Be Bad Guys

A couple of weeks ago at the amazing-beyond-belief PyCon 2013, David Stanek and I presented a half-day tutorial. We used a deliberately-vulnerable web application to walk our students through the OWASP Top 10, giving them hands-on experience exploiting these problems and offering advice on how to mitigate them.

While we had concerns about the amount of material and the time available, not to mention the size of the class--we had about 80 people show up!--it seemed to go well, and we got a lot of positive feedback both during the tutorial itself and throughout the rest of the conference. One attendee even told us that thanks to our class, he'd fixed a security problem over lunch immediately after the tutorial! It was immensely satisfying to hear that we'd been able to catalyze some actual improvement in the world.

If the official feedback is good enough, we may look to run this again in the future, whether at smaller venues like PyOhio or next spring at PyCon 2014.

You can clone down the tutorial app if you'd like to follow along with the slides.

Read and Post Comments

Web Development with Python and Django

I had the honor of working with Mike Crute and David Stanek to produce and deliver an all-day tutorial session at CodeMash 2013, where we got folks up to speed on Python and then ran them through a series of iterative exercises as we built a small Django site together.

We promised slides, and though we took a bit of a break to celebrate and then enjoy the conference, I wanted to make sure we didn't wait too long before making them available. Hopefully they will be a useful reference in spite of their lack of the interactivity inherent in a live tutorial session.

You can clone down the sample code repository if you'd like to play along at home.

I think it's safe to say we had a great time presenting at and attending CodeMash and are looking forward to continuing to make sure Python is represented there.

Read and Post Comments

Next Page »