ElixirConf 2018 Notes

After attending ElixirConf I am as confident as ever that Elixir is a language, community and ecosystem I want to continue to personally invest and participate in.

About two years ago I made the decision that I needed to diversify my technical skills outside the Apple ecosystem. I then went on to experiment and research lots of different languages and frameworks, including EmberJS, Go, Rust, Elm, HTML5 updates, React and Elixir.

The Elixir interest started from a broad recommendation from Dave Thomas who I had years before followed heavily while doing Ruby on Rails development. Elixir also had gotten momentum from my interests in Functional Programming and looking to solve problems outside of traditional Object Oriented Programming design patterns. Over the last few months I’ve gotten deeper into Elixir and I really like what I’ve found.

I’ll do a post in the future about why I’m liking Elixir so much. It’s a potentially large topic and I want to give it the space it deservers.

ElixirConf was a great event. Two days of training and two days of conference sessions; I took it all in. My personal estimate would put the training day attendance at around 150 and the full conference at around 500.

While educational, I found the class pacing to be mixed. I felt one went a little too slow and the other a little too fast. There was a wide gamut of Elixir experience in the audience so I think it’s challenging for the instructors to find a pace everyone can agree with. That said, I learned a ton in each of the two more introduction-based classes I attended. I was envious of the more advanced classes that were covering GraphQL and hardware development using Nerves — I heard people were very impressed with them. Maybe next year.

For the conference days we had some great keynotes and session. I loved hearing José Valim (creator of Elixir) talk about the future of the language including the core teams failed experiments with adding a type system and why it’s not on the horizon. Chris McCord (creator of Phoenix) did a closing keynote, reviewing progress with the framework including a preview of Phoenix LiveView which was very impressive and has an opportunity to shake things up in the single-page app space. Aaron Renner had a great talk on taming complexity which mirrored some of my previous iOS code patters with way better naming. Aaron Votre’s excitement about GraphQL is contagious and I’m anxious to get my hands dirty. Andrew Bennett has some great tips in his Sustainable Testing talk. Daniel Azuma did a great job showing how we can mix and match Docker with traditional OTP deployments for unique benefits. Some time slots were competitive for my attention. I sadly missed Boyd Multerer’s Introduction of Scenic and Eric Oestrich’s Going Multi-Node session which both were well received from chat in the hallways. I’ll be sure to watch them on YouTube in the week ahead. In fact the majority of the conference keynotes and sessions are already posted on YouTube if you want to take a look.

Despite my general shyness, the community was very welcoming and friendly when I put myself out there. I had some great conversations during breaks and lunch. Hopefully these will continue on the community Slack and forums — I need to spend some more time with those.

Finally, everyone is hiring. Almost every speaker who represented a company said they were hiring. While I’m not looking for full time employment its relieving to see such hiring interest in a more niche language than say my current source of income, iOS.

Next year ElixirConf will be in Denver and assuming I find a way to keep Elixir active in my development schedule (I have a potential Elixir subcontract in the fall as well as some personal projects) I plan to be there.

For more on Elixir check out its homepage.

Photos

WWDC 2018 Social Recap

I just got back from my WWDC 2018 Social trip and it was a lot of fun. I figured I’d do a quick recap of the social side and leave room to talk about the tech stuff as I get deeper into the session videos in the weeks to come.

Costs

With a nod to Manton’s lead I thought I too would share my costs in order to help others understand what is possible despite WWDC generally being a large cost these days.

  • Plane fare (Southwest, Philadelphia to San Jose Roundtrip taking the early and late times to save a little bit extra): $564.00
  • Hotel: ($125/night, 4 nights + taxes & early checkin fee). Booked early on event date assumptions, was cancelable.: $642.00
  • Airport cab fair: $25 each way.
  • WWDC conference ticket: $0 (Big savings here obviously. If you can get value from the labs, the $1700 ticket cost can pay for itself but if you just want to watch the sessions, enjoy the free video streams on delay).
  • AltConf conference ticket: $0 (I’ve bought the $300 Hero ticket in the past but held back this year since I’m on my own again and trying to keep costs down. Kind of feel bad considering how well I enjoyed the talks there this year.)
  • Food and drinks: ~$300 Made a point to get some supplies at a grocery store early in the week so I could supplement eating out with some in-room breakfast mornings and snacks.
  • Podcast and other event tickets: ~$50

Total: ~$1600

TL;DR: Make your decision about WWDC early and keep an eye on the rumored dates. Book early with hotels that are cancelable. If you need some more help, find a roommate to split hotel/cab costs with.

Events

On Sunday night I attended the sjMacIndie party and saw a lot of conference friends. Venue was a little on the warm side but plenty of space so it didn’t get too stuffy. I did not recognize much of San Jose from my earlier WWDC trips (2002-2004) but I did recognize this venue as the previous pool hall where the student scholarship winners once had a party. In fact it was at said party where I won an iPod which I later sold to help cover my plane fare back in the day.

You can check out some of the old WWDC 2002 Student coverage we did via Wayback Machine and this video, with footage from the pool hall, I was able to find and re-upload.

On Monday I watched the Keynote and State of the Union with friends at the hotel. We had to jump wifi networks a few times but overall was very successful. Afterwords I headed to the live recording of ATP podcast which was a lot of fun.

On Tuesday I took in a few AltConf talks and also attended the Micro.Blog meetup. Really enjoyed the Setapp talk about their growth/recommendations and the detailed talk on improving app startup times. I also took some time on Tuesday to work on my own project, finally breaking down a long list of tasks into a new Pivotal Tracker project so I can start to track things better.

On Wednesday did more AltConf stuff. Really enjoyed Paul Hudson’s review of new iOS 12 additions. Also had a good time in the Finding Product Fit lab. At night I attended the Relay FM podcast recording which went great. Afterwords I went to the Breakpoint / AppCampForGirls event. I didn’t stay too long though, place was really dark and loud. Also kind of irked me that there was a separate VIP section. I really dislike the social cliques that pop up at industry conferences and seeing the VIP thing put a bad taste in my mouth.

Aside: I’d love to see some options for non-bar night events at conferences. A 24 hour hacking lab with whiteboard grouping around ideas; maybe with room corners for Mario Karting or boardgames/poker. I like hanging out but I don’t like drinking too much and I can’t hear people over the crowds. I miss MacHack in many ways. Maybe I’ll lead by example some day should I ever dawn my event organizer hat again.

On Thursday I got to attend a few morning talks at AltConf before heading home. Of them I really enjoyed the review of what Firebase is offering these days. I’ve been watching them since before they were bought by Google. Like any third-party component you have to accept some risk but I welcome the opportunity to use them to bootstrap a new idea some time in the future.

The journey home took a long while. I didn’t sleep much but did enjoy a bunch of podcasts.

Overall WWDC 2018 Social was a great success. It was awesome to say hi to some internet/conference friends and hear how everyone is doing. Now that I’m home it’s time to jump into the technical content and see what the WWDC sessions have to share. I’ll post more on that as I experiment.

Say Hello at WWDC!

A short message to say, yes I will be in San Jose for WWDC next week. No, I will not be in the conference itself but I will be hanging around AltConf and other events. If you see me, please say hi.

Speaking at 360iDev, Come Join Us.

I’m happy to report some recent talk proposals were accepted and I’ll be speaking at 360iDev this August in Denver. I was already going to go to 360iDev regardless of the talks, I’ve heard great things from recent years, so this just makes the week that much more exciting.

360iDev Logo

My Talks:

Overcoming the Stress Surrounding Code Review, for the Betterment of Your Project and Career

Code Review is a practice where before a change is made to a code base, the code is first posted somewhere for peer review and critique. Code Review is an extremely productive way to catch problems before they are delivered to users as well as help individuals mature as programmers. In this talk we’ll explore Code Review by documenting the responsibilities of those involved, the person posting the code, the person (or people) reviewing the code, and then again back to the poster, as they react to the feedback given. In addition to the raw process of these stages we’ll also review the very human side of Code Review using real world stories, the good, the bad and the ugly. We’ll close with more general tips and tools that can help, as well as cover some of the how and why you might want to utilize these practices even in your own solo work. The best audience for this talk are people who are looking to improve their personal or team code processes. Those who attend will leave with very actionable strategies to execute productive code review on their own projects.

Starting, Growing and Running a Successful Developer Meetup

One of the most rewarding aspects of my career has been attending and then helping to run my local Apple developer meetup group. Meetup groups provide great learning opportunities but more importantly they provide great relationship opportunities for its members. In this talk I’ll share the story and lessons learned from running my local CocoaHeads chapter. After a quick review of the benefits and challenges of running a local developer group we’ll jump into actionable items for people starting, growing or running their own group. From defining success, to time expectations, marketing, sponsorship, planning content, tools and more. To close the session we’ll invite a few other group leaders from the audience to the front for a broad question and answer session about your specific issues and concerns. This talk is targeted at those who are running or would like to run a local developer meetup. It may also be helpful to those who attend a current group that needs guidance and/or focus.

If you are an iOS developer you should consider joining us. It’s going to be a great conference. Per CocoaHeads, use the coupon code “cocoacommunity” for 15% off all tickets.

Closing Thoughts on Big Nerd Ranch’s Front End Web Class

I posted a few thoughts while I was attending the Front End Web class last week and I figured I’d put a cap on it with some final thoughts.

Disclaimer: If you happen to find this post and don’t know, I do in fact work for Big Nerd Ranch, so yes I’m partial but these are still my honest opinions.

Who is this class for?

Like other BNR books and classes, there is an expectation of some experience. You don’t need to be an expert by any means for this class but you should be comfortable with the basics of web design, hosting and how the web works. If you are looking for these beginner skills I’d recommend Code School and/or Code Academy.

With the basics taken care of, this class provides an accelerated but thorough tour of modern web development and the toolchains that you need to know. The class is great for people like myself, who have a history of web development but have been out of the game for a few years or mostly focused on the backend systems. Others who would find value include those who are looking to jumpstart a new web skill set for a new job or project.

Having a full week to escape the distractions of work and personal obligations really enables you to focus on the class at hand. Combine this with guided lectures and an experienced instructor to answer questions and discuss patterns, really elevates the value to “priceless”.

The Syllabus

The table of contents titles don’t really do justice to the details of each chapter. In total we build four separate projects:

  • The first had us work with HTML5, CSS and JavaScript to do a moderately complex layout of a slideshow like page that included animations, responsive layout and modern markup techniques.
  • The second project was a Coffee Order system the helped us use HTML5 forms, Bootstrap styles, and JavaScript to communicate with a backend via AJAX.
  • The third project was a chat app, that utilized web sockets. For this app we not only built the front end but the backend too, in Node.js.
  • The fourth and final project was an EmberJS app that would have us catalog monster sightings. Ember is a big framework but I think the book does a fair introduction. We got to work with a relationship of models, and executed all the big features.

I thought the chapter and project progression went really well. There are some who might prefer to end with Angular or React instead of Ember but the good thing to know is the early class concepts give you a great JavaScript foundation to build on so you’ll be empowered to experiment with all of those projects and more over time.

That is a core value of Big Nerd Ranch classes that I really agree with. They teach you from the bottom up so you can understand how things work and not just how to assemble/configure things.

The Extras

There is lots of open lab time at night. You are encouraged to bring a side project to work on. While I did make some progress on my own project, an Ember Wiki project (I have some basic models and forms working, all backed up my a Firebase persistence layer), I did have to dedicate some lab time to the book itself to make sure I kept up.

In the afternoons we’d have time for a walk around the resort and on some of the days we even arranged for a shuttle van to take us to some of the exhibits, like the Birds of Prey and the Butterfly Center. Considering how focused we are during the class, these excursions are very welcome and a great way to clear your head and get a second wind.

Final Thoughts

If you want to learn a new technology, in this case Front End Web Development, and in particular if there is a time-sensitive nature to your needs it’s hard to imagine a better environment than a Big Nerd Ranch class. The ticket price does include lodging and food for the week so keep that in mind when shopping around or putting together a formal company request. If you have any questions, feel free to contact training support. They’ll be happy to help you out.

CocoaConf DC 2016 Recap

Had the pleasure to attend and speak at CocoaConf DC this past weekend.

CocoaConf is a touring training conference for iPhone, iPad, and Mac developers. We bring some of the best authors, trainers, and speakers to the most passionate, engaged developers in a region—together, they make magic!

CocoaConf draws anywhere from 100-120 developers. It’s a very nice, comfortable size. Large enough to host a diverse collection of personalities and ideas, but small enough not to feel overwhelming. People actively mingle and you get to meet lots of new faces without much effort.

This was my third CocoaConf, and first as a speaker. My own talk was at the end of the first day and I spent ample time the previous weeks preparing to avoid the need to do last minute slide updates and miss sessions — and I’m glad I did so.

The sessions were really good at this CocoaConf. Sure it helps that iOS 10 is just out and there is still lots to learn, but even the talks that were version agnostic, covering patterns, architectures and bug hunting skills all got my brain spinning with ideas.

One cool benefit of my work scheduling is now I have a week of stay-home vacation and I can hopefully direct that post-conference enthusiasm towards my side projects and some extra experimentation. Specific items on my list:

  • Do more interactive prototyping of my side project and follow up with some user interviews.
  • Do some experimentation with Perfect to build a simple Swift API and host it on Linode.
  • Continue to polish up my RanchWeather app and start a blog series reviewing the code patterns.
  • Do some experimentation with Twilio authentication in preparation for a web app project.
  • Inspired by the journalling abilities of MarkD, dedicate the vacation week to a journaling experiment: Daily Journal, Project Journal, Tool Journal.

As for my talk, I think it went very well. One thing I really like as a speaker is the conference not only has a session review system but they encourage submissions of reviews with a raffle for prizes at the end so you get a lot of feedback. Most of my talk’s feedback was very positive and I appreciate the criticisms, both good and bad. Always room for improvement.

So yeah, if you are considering attending or speaking at a CocoaConf, do it. It’s very rewarding and worthy of your time. If it’s on the east coast you’re more than likely to see me there too — and if so, say hi!

Join Us at CocoaConf DC, Sept 9-10th

I’ve been to multiple CocoaConfs as an attendee and it’s with great pride I’m happy to say I’ll be a speaker at one soon.

CocoaConf Boston

CocoaConf is a traveling conference focused on Apple technologies that has been around since 2011. It’s big enough to have multiple tracks of content but small enough that you’ll have time to socialize with most of the other speakers and attendees throughout the event.

The 2016 “tour” is coming to a close. I’ll be speaking at the Washington DC CocoaConf (Sept 9-10) but if you are on the west coast you might want to consider San Jose, CocoaConf (Nov 4-5th).

When registering use code “COCOAHEADS” for 10% off!

I can’t wait to see everyone. If you will joining us, please come by and say hi. I’ll have some Big Nerd Ranch swag for ya.

How We Record Talks at Philly CocoaHeads

I came across this post from Rico Jones on how he records the Portland Ruby Brigade’s monthly meetings and thought I’d do something similar for how we record the Philly CocoaHead presentations.

Capture Setup

Why Only Main Talks

This first thing I’ll note is we do not record the entire meeting. Early on this was to due to the experimental nature of our recording setup but more recently, at a leadership meeting, we made the call to continue to only record our “main talks”. We do this for a few reasons:

  • Not recording the “show and tell” talks lets those be a little bit more free-form, with less pressure on the presenters (which is a big reason why they are in the agenda).
  • Many of the show and tells are in-progress app demos, and so there is benefit to keeping them non-public.
  • We expect a higher level of preparedness for the main talks, and to ask for people to put that much time into a talk, it would seem wrong not to capture it.
  • If the whole meeting were being captured / broadcast it would encourage people not to come.

The Setup

Starting from the presenter’s laptop we provide an HDMI cable. If they want to present or demo from an iOS device we have an HDMI to Lightning adaptor.

The HDMI cable then feeds into our capture device, an Elgato Game Capture HD. This device is targeted at the streaming game market but is just as viable to capture normal HDMI signals. The device itself is an HDMI passthrough with no frame drops or anything. The device is even powered through the USB cable so no need for a power cord. The video / audio is then compress into mp4 (on device using hardware encoding). The compressed signal is sent to a Macintosh running some custom Elgato software. I use an older Macbook Air to act as our dedicated capture computer. While there are many other features for dedicated streamers, we simply press record.

We then take the other end of the HDMI cable and route it to our projection system. Now the Apple Store that hosts us has a very impressive setup but sadly it’s not as easy as it should be. They have an HDMI connection, and while it works for the Apple TV it doesn’t register when we plug it into a Mac. To get around this we used to use an HDMI to DVI adaptor and the alternate DVI input. It worked fine but doing it this way lost the audio. Recently we’ve fixed this by buying a converter box that splits the HDMI into both DVI and an audio jack. Again, the Apple Store does have a in-house roof speaker system but for us sadly it’s been down. In the interim we’ve been getting by with a Beats Pill Speaker the Apple Store is nice enough to provide.

While not part of the capture, I will give a friendly nod to Fin, an iOS performance timer we run on an iPad mini to help the speakers know how much time they have left. Works great.

I’ll also recommend the presenter remote I use. It’s a Kensington, with a nice simple to use USB dongle that slips into the remote when not in use. It has a laser pointer too but I can’t say I use it much. Battery life has been very good for this device.

So that captures the video and audio from the presenter’s laptop or device but what about the speaker’s voice? For that we use a lapel clip on mic and Digital Audio Recorder. The recorder can work without the mic if you are looking to capture a room discussion but for 1 person, adding the mic is a real quality difference.

After the meeting we combine the video and audio captures using ScreenFlow. Editing is fairly simple for most cases, usually as simple matching up the action and adjusting some audio. The finished product is exported and then uploaded to Vimeo Pro, which acts as our library of sorts. (We pay for Vimeo Pro to keep ads out and to make sure we have API access.) People can watch the talks through Vimeo itself or our new Apple TV app, “PhillyCocoaHeadsTV” (search for “CocoaHeads” on the TV).

Future Improvements

Overall I’m pretty happy with the current setup but I do have some ideas:

  • It would be nice if we could get the Apple HDMI connection to work, that would simply our wires a bit.
  • At work we use a Catchbox to help capture Q and A. It would be nice to work out something similar for us.
  • While it might save a bit of editing time to convert to a wireless mic, it’s pretty low on my list. Would have to improve some other aspect to make it more worth while.
  • There is a lot of equipment to carry in, setup and carry out. It’s very reliant on me personally at the moment. I’ll probably be missing a meeting or two this year so I hope to train someone else to run this while I’m gone.

Hope you enjoyed my rundown. If you help capture stuff like this and have any tips or tricks, let me know. Thanks.

31 Days, 31 Products: Launch Post

At CocoaLove 2015 we had the pleasure of listening to Jaimee Newberry speak and from my notes I recollect the following from her talk:

Just Do It! and more specifically, don’t let your high taste of quality hold you hostage from creating and shipping. Get it out into the world and improve it over time.

Even before the talk, I was already inspired by Jaimee’s “31 days” series of writings and video posts. I’ve been wanting to get more writing practice and have been kicking the can on starting my own series but no more!

Today begins 31 Days, 31 Products — a blog series where once a day for 31 days I’ll post a short story sharing some of the products and services I’ve come to enjoy using. I hope you like it and discover a new helpful tool along the way.