Scala Up North was a blast

I hope I said this enough in person, but I'll say it again here:

THANK YOU · THANK YOU · THANK YOU

to everyone who came, participated, sponsored, and encouraged us through the planning of the first instalment of Scala Up North.

Thanks Macho Paka for providing the logistical support we needed to put together this event.

And a big thank you to my good friend Marconi, who insists on pushing me to think big. I always have fun and learn a lot when working with you.

It feels great to contribute to the Scala community in Canada, since there are many people doing exciting things with this platform.

Planning for 2016 has already started, so stay tuned!

The HumanIT Project

This has been brewing for a while, and I've been dying to share this publicly - The HumanIT Project is up and running!

As you may know, I'm currently on a mission to make more meaningful contributions to the world through my work. And The HumanIT Project is the materialization of this focus. At the core, we're a small group of community builders on a social innovation model. We work to enable mission-based organizations by leading high quality technical teams provided by our partner organizations.
 
What started off as a conversation in a pub has quickly evolved into a first project with major global charity, Right to Play, and a presentation at GTEC - a very important technical conference for government and business.

We have worked hard to get this initiative up and running, and we're incredibly excited with the validation we've received, from technical and non-profit organizations alike.

Please check out our website and follow us on Twitter - and show some love, we need all the encouragement we can get!

Exciting times!

Thinking big

I can look back at my life and identify a few times where others have challenged me to think big - to take on projects or ideas that seemed larger than my current reality. For example - when I took my first teaching job, spurred by professor Wilmer. Or when I was offered a position of responsibility at SGI for the first time. Or when my friends proposed we created a technology company (we weren’t even out of school yet!). Or when I got recruited from a stable company doing Java into a tiny, risky startup to learn Scala.

In all of those crucial moments, I felt completely unprepared, and doubted my ability to succeed. But every single challenge led to tremendous growth and helped me widen my vision and trust myself even more.

I still need a nudge once in a while, but with time I find it easier to think big and see the possibilities instead of being blinded by the difficulties or paralyzed by the unknowns.

One of those nudges just became a reality - Scala Up North is the first Scala conference organized in Canada. It is exciting and scary, but I’m really looking forward to seeing a community fired up about building great software with Scala.

I’ve never been particularly attracted to the fame and glory that comes attached to becoming super-successful. I’m not looking to become the next Elon Musk. But having the confidence to take on challenges and find some measure of satisfaction in the process has helped me get to the point where I’m at - figuring out the best way to have a meaningful, positive impact in other people’s lives through my work.

A big thank you to those who’ve challenged me to think big.

Automating habits

I’ve started many habits in the past, most of which didn't stick.

Exercise, eating patterns, sleep, reading - you name it, I’ve tried it.

Like most of us, I struggle with my willpower. It takes a lot for me to start a workout session if I’m tired or stressed. It's very hard to go to bed when there's a long TODO list waiting to be tackled.

But one of the big lessons I’ve learned from great writers like Tim Ferriss and Leo Babauta is that we can greatly increase the chance of creating a habit by automating some part of it.

A couple months ago I started journaling (again) using a technique called the five-minute journal. You can read about it here (Note: I don't use the physical notebook, and rely on Evernote instead).

But the one thing I did differently this time was this: I automated the creation of the daily journal entries. I used IFTTT to create a new Evernote note every day at 1am. And then I set a calendar reminder at 6am and 9pm to fill in the journal entry. This is what it looks like:

==== MORNING ====
- 3 things I'm grateful for
- 3x What would make today great?
- 2 Daily affirmations

==== EVENING ====
- 3 amazing things that happened today
- How could I have made today better?

Now, this automation might save me 5 seconds a day. Not a whole lot. But somehow, there’s a small psychological push when I see that calendar notification - I know the note was already created on my Evernote account, so I might as well take a minute to fill it in.

I’ve been more successful with this attempt at journaling than ever before. And it's being helpful at staying focused, which is very useful at this point in my career.

In software, we talk about automation constantly, at all levels of the Software Development process. But we often talk about the value in time saved, rarely in terms of the willpower energy we don’t have to spend doing something that’s automated.

A good example of this is code formatting plugins, like scalariform. If code formatting is corrected at compile time, developers don’t need to worry about the exact formatting rules the team prefers - it just happens automatically.

Another interesting example might be Trello’s card aging feature - you can configure a board to show a visual indicator of a card’s age. Cards that sit around for too long are a bad sign, specially in Agile. Instead of relying on the users’ memory and willpower to identify them, make it automatically obvious.

I love automation, and I’m realizing how powerful it can be to help those of us that struggle with the willpower to do certain things.

Woke up at 3am - again

The night before my last training course, at 3 in the morning, I jumped out of my bed in terror, convinced I had overslept and was late for my teaching commitment.

The funny thing is this happens almost every time I teach on a different timezone. Luckily, I go back to bed and fall asleep within seconds. I love my brain.

In the end, I’m always early for my class, with more than enough time to prepare and greet students in a relaxed mood.

I’m reading Antifragile, and in the middle of the discussion about Overcompensation, it occurred to me that waking up at night can be my brain overcompensating for other insecurities. I’m spending precious brain cycles making absolutely sure I don’t miss my alarm clock and default on my responsibility, even though I’ve already set two or three phone alarms.

The idea of overcompensation and antifragility got me thinking about software - of course. It’s common to think about writing robust software, and we take measures like duplication, advanced error recovery techniques, restart automation, buffering capacity, etc.

But when posed with the challenge to build antifragile software, things get hairy. How can one possibly build a system that benefits from stress or disorder?

I suppose reading the whole book can help. 70 pages done, only 640 to go.

Hip openers and Agile Software

A 36 year old man gets into his lycra tights, hops on his bike, and rides to his yoga class. Once there, he's glad to hear the class will focus on hip openers, because his own hips have been quite stiff lately. Then he dedicates his yoga session to his 4 month old daughter, which makes him feel quite emotional.

If I could tell my 20 year old self that this man is me, he would burst out laughing.

Similarly, if I could tell my 15 year old self that I would be paid to share my technical expertise in front of a classroom, he would be happily surprised.

None of these two things were part of who I imagined to be back then. But whenever I’m open to change, I find tremendous joy in the learning process and wonderful situations that unfold.

Perhaps this is why I find Agile so compelling. The thought of planning every little detail of a software system upfront seems daunting, unnatural, and stiff. In contrast, taking work in chunks at a time, and making change a protagonist of the process, seems very compatible with real life. This is how evolution works, and it’s been very effective at producing incredibly complex and sustainable biological machines.

I’ve recently started to read Antifragile, and I suspect it’s going to be a very important book in my life. I’m only 20 pages in and I’m really liking where it’s going. There might even be a dedicated blog post to it!

Brainstorming Settlement Solutions

Last week, I attended the Brainstorming Settlement Solutions event organized by Datafest Ottawa. This one-day event brought together a diversity of people interested in leveraging technology to help solve issues related with immigration (specifically, immigrant settlement).

It was very meaningful to see CIC collaborating at this event, and several of their representatives participated in the brainstorming groups. There was even a discussion on Social Innovation, which was my personal favourite.

Less technical than a hackathon, we spent the day mostly discussing possibilities for technology-based solutions, their feasibility, and the challenges around implementing them. 

Some of the topics brought to the table were:

  • Information access for new immigrants about services and benefits available to them
  • Awareness and discussions around native heritage
  • Empowering SMEs to work with international talent

Overall, I am very happy to see these kinds of events happen more often in different areas of social concern. And I would love to see more of these, with a stronger focus on technical collaboration and continuity.

These are the seeds that innovation can use to produce wonderful solutions to the service of those who truly need them to make a meaningful impact in their lives.

I'm walking 50km

Starting now, I'm setting one big physical challenge a year, in an effort to push myself to exercise more. (Also, I gotta justify all that MEC gear I keep buying)

This year, I'm walking 50km. And I'm telling you so that you keep me on track. My hope is that, by telling you all, you'll help me stay motivated.

The details of the challenge are very simple: A 50 kilometre hike with no long stops - short rests and meal breaks are ok, but that's it. No camping, no naps.

Logistics are not very complicated, and fun to put together. I haven't figured out the exact trail, time of the day, meals, water, etc. That's the easy part.

The hard part is the training, of course. I can comfortably walk at 4.5km/h which means I'll cover 50km in about 11.5 hours. If you add breaks, it might go up to 14 or even 15 hours. I need to build my endurance greatly to achieve this.

I already have a training plan I put together with my personal trainer. Now it's just a matter of following it.

I've set the date to early August, so I have just over 4 months to get ready.

So, I'm asking you - every time we talk between now and August, ask me how my training is going. You'll be helping me greatly.

Scaladays 2015 was awesome

Scaladays 2015 was a fabulous experience.

As an attendee, I did not have to think about the organization of the event at all, which is probably the best compliment one can provide for the organizers. Nothing got in the way of my conference experience. Wireless just worked, the rooms were great, quality food when you expect it, and the scenery around the venue was incredible. Kudos to Typesafe and Trifork for organizing this.

Attending Scaladays with the Bold Radius posse was pretty awesome, of course. I'm incredibly proud of working with such a capable, positive crew.

And there was lots of time to connect, which was essential. I had great conversations with all kinds of wonderful people - some old friends, some brand new. It is incredibly encouraging to see interesting things being built with the Typesafe Reactive Platform.

As for he presentations, here are some of my personal highlights from the talks I attended:

  • Easy scalability with Akka by Michael Nash
    • A wonderful demonstration of using Akka's power to build a reactive application.
    • An excellent delivery by an experienced technical leader.
    • Showcase of some advanced Akka features, like Clustering and Persistence, allowing for the design of a strong CQRS based application.
    • Ok, maybe I'm biased since I kinda work with the guy. But all of the above are still true!
    • Download the Activator template here.
  • Scala - where it came from, where it’s going by Martin Odersky 
    • It was good to hear Scala is moving towards even more type safety, while keeping its flexibility.
    • Announcements about TASTY as an intermediate class format seems promising.
    • Seeing Scala.JS take such an important seat at the table was very interesting.
    • I'm also keenly interested in the use of implicit types to model effects, as opposed to Monads. I hope simplicity and readability are kept as a priority when designing these features.
  • Life beyond the illusion of present by Jonas Bonér: 
    • I really liked the comparison Jonas drew between handling communication errors in Real Life versus our (often impossible) desire for failure-free information systems. Confirmation and repetition are techniques we use all the time.
    • We can't force the world into a globally consistent present, so we might as well deal with the messy inconsistencies as a fact of life.
    • CRUD is dead, long live CR
  • Anatomy of a Play application by Marconi Lanna:
    • Essential tricks if you're building Play applications.
    • Hard to summarize, since there was many useful code snippets, so I strongly recommend you read the slides.
  • Leadership wherever you are by Diane Marsh
    • Very interesting points about leadership, not all of which I agree to.
    • In particular, the idea of the Genius Jerk is a bit disturbing, in that there was no mention of trying to work with this Genius to have his ability empower rather than discourage her team members.
    • However, I generally liked the thread about encouraging leadership in your organization, and being a leader yourself - even if you don't feel like one right now.
  • The unreasonable effectiveness of Scala for Big Data by Dean Wrampler
    • Loved the code samples comparing Java map-reduce with Scala Spark equivalents.
  • Akka HTTP by Roland Kuhn
    • Akka HTTP looks very promising, and I can already see implementations where it would fit very well
    • I'm looking forward to great documentation where many of the new (to me) concepts are elegantly explained and described.
  • If I only had a brain... in Scala by Julie Pitt
    • This one touches a soft spot, since I've always been drawn to AI and Machine Learning. Seeing work in this field with Scala is really encouraging.
    • Intrigued by why Akka was not a good fit - perhaps I should give them a call?

However, I had to miss many talks that I wanted to watch, which is why I’m eagerly looking forward to the videos being posted online.

If you couldn’t make it, I strongly encourage you to check out the videos whenever they become available.

Oh, and a quick tip: if you like a talk, ping the presenters. They looooove to hear their efforts are not in vain. We're all human, and these people do put tremendous passion into what they do. Give them some love.