Yan Cui
I help clients go faster for less using serverless technologies.
This article is brought to you by
Don’t reinvent the patterns. Catalyst gives you consistent APIs for messaging, data, and workflow with key microservice patterns like circuit-breakers and retries for free.
Joy of Coding has totally exceeded my expectations and proved to be one of the best conferences I have attended this year (and there has been a few already ). Rotterdam is also a city I’d like to visit again – it’s quiet, clean, packed full of beautiful architectures and the people are so friendly and helpful!
“happy speakers, happy attendees”
– Felienne Hermans
The event organisers have certainly gone the extra mile to look after the speakers – from picking us up from the airport/train stations (thanks Martin!) to those gift bags waiting for us in the hotel room, and not to mention the gorgeous nhow hotel they checked us into. Check out the view of Rotterdam from my hotel room
I met up with some old friends and made some new ones too.
@silverSpoon wear it with pride! #joyofcoding pic.twitter.com/wYwiQc2Tbm
— Yan Cui (@theburningmonk) May 29, 2015
Venue & Food
The venue is a little out of the way, at the former Van Nelle Factory which is now a world heritage site. We had some sandwiches for lunch, which is pretty standard and nothing special. But for dinner, they served shawarma, chips and freshly-baked pizza, plus plenty of alcoholic drinks. They even gave us these tasty stroopwafel as part of the goodie bag everyone got.
The Talks
At the end of the day, it’s the talks that made me want to come to Joy of Coding in the first place and they duly delivered. There were some great keynotes, and all the sessions I attended were of high quality too. It was also a great pleasure to meet Chris Granger and Laurent Bossavit and hear their thoughts on programming.
Keynote: Programming as Distributed Cognition (Chris Granger)
Chris started the day by talking about his recent post, coding is not the new literacy and how there are so many systems are not built simply because the people that could have built them don’t know how to program. Programming as a skill is not accessible enough to non-programmers and we as professionals have too often forgotten how difficult it was to learn to program.
“Coding is not the new literacy.” Code is an accident of history; it’s the ideas that matter. #JoyOfCoding pic.twitter.com/csvglnjgiP — Bonnie Eisenman (@brindelle) May 29, 2015
In short, we need to do better at teaching people and get back to thinking about computers as a medium for us to think through. I see many parallels in Chris’s keynote to Bret Victor’s message (watch this and this talk, you will enjoy them). For non-programmers, Excel is a great platform for you to interactively model a data-centric system made out of tabular data, and immediately visualise the results and get feedbacks. But Excel has clear limitations, and doesn’t scale to the scale that many financial organisations are using it for.
“30% of all insurance software in the US was running on VB6” @ibdknox reminisces good old times at Microsoft. #joyofcoding
— Tijs van der Storm (@tvdstorm) May 29, 2015
Ever seen an Excel sheet of over a gig? Not uncommon at a fortune 500 company. #joyofcoding #jackofalltrades — Ferry de Boer (@ferrydboer) May 29, 2015
The fact that the world’s finance runs on Excel is a scary thought, and one of the reasons why the Tsunami folks started the FCell project to inject some discipline and safety to the otherwise chaotic, anything-goes world of Excel. Chris then gave a live demo of the interactive programming/modelling environment he has been working on, called Eve. Eve is built on top of datalog, presumably with a proprietary implementation in Clojure. I had a chat with Chris after his keynote and he mentioned that they have made great progress with Eve and he expects an early alpha/beta version to be publicly available by end of the year. Exciting times!
@ibdknox demoing Eve #joyofcoding pic.twitter.com/qlsJRe4wOC — Yan Cui (@theburningmonk) May 29, 2015
Sketchnote of Programming as distributed cognition. #joyofcoding pic.twitter.com/qEUbCrbt8L — Linda van der Pal (@DuchessFounder) May 29, 2015
For the rest of the morning, there was a single-track of talks + three parallel workshops on:
Sketchnote of Musical programming #joyofcoding pic.twitter.com/hCH7UzRVk0
— Linda van der Pal (@DuchessFounder) May 29, 2015
The Joy of Testing (John Hughes)
This is actually the third time I’ve seen John give this talk (or a variation of it) and it’s still fun to hear him tell the story of how he discovered bugs in the Erlang dets module that was driving the folks at Klarna nuts .
The steps to produce those bugs were so bizarre (e.g. open-close-open file then perform exactly 3 parallel ops against it to cause file to be corrupt) that no human would ever think to write a test case for that!
It’s futile to try to cover all failure cases by hand, even a *reasonable degree of confidence requires way more test than you’d ever want to write and maintain.
So the take home from the session is simple:
“Don’t write tests, generate them” – John Hughes #joyofcoding
— Yan Cui (@theburningmonk) May 29, 2015
* sidebar (how many tests do you need) : if you have a function that takes an int as input then an exhaustive test suit would need 2147483647 tests – [latex]O(n)[/latex]. Then consider the quadratic effect of taking two integers, now you’re dealing with [latex]O(n^2)[/latex]. Then there’s [latex]O(n^3)[/latex], [latex]O(n^4)[/latex], and so on, plus race conditions!
The Joy of Debugging Ourselves (Laurent Bossavit)
In this talk Laurent asked the questions “why is programming so hard?” and “why do we keep writing buggy software?” and explored the possibility that maybe, it’s because of the way we are wired.
“Bugs in the code start as bugs in the brain” – @Morendil #joyofcoding — Yan Cui (@theburningmonk) May 29, 2015
Being aware of the pitfalls in the way we behave and the many forms of bias we suffer from (e.g. confirmation bias) helps us be more critical of our decision making. The willingness to question oneself and one’s beliefs is a common trait I have observed in some of the most knowledgeable and open minded people I have met.
Speaking of questioning one’s beliefs, it reminds me of this scene from Agora.
Laurent also mentioned a couple of books:
- The Leprechauns of Software Engineering (Laurent’s book)
- Thinking, fast and slow (by Nobel prize winner Daniel Kahneman)
in addition, if you’re curious about/interested in behavioural economics, you might also be interested in these two books by Dan Ariely:
sidebar : towards the end of the session Laurent also touched on depression, which is something many programmers suffer from to different degrees. Again, this reminded me of a good talk I saw at LambdaDays this year by Kinga Panasiewicz on the effects of continued computer use on our brain, including the potential for causing mental illnesses.
Keynote : Exercises in Programming Style (Crista Lopes)
The second keynote of the day focused on exploring different programming styles. We’re not talking about formatting styles, but approaches to solving problems.
She demonstrated how a simple program to calculate term frequency, can be written in a plethora of ways, including:
- using shared mutable state in for loops
- using shared mutable state in procedures
- composing functions
- continuation passing style (CPS)
- …
The point of these exercises is to allow you to see that there are many solutions to the same problem, and that each comes with a set of constraints that needs to be communicated.
“A lot of conflicts in software result from us not verbalising what constraints we are working under” – Christa Lopes #joyofcoding
— Yan Cui (@theburningmonk) May 29, 2015
One thing we always say in our team is to “not be precious about what we have done”, and it’s an approach that has allowed us to have an open-mind to alternative ideas.
Good take homes from @cristalopes “don’t be judgemental about other styles” pic.twitter.com/ukVk6VJ0RV — Yan Cui (@theburningmonk) May 29, 2015
I really enjoyed Crista’s keynote, and when I have some time I plan to go through the exercises in her book in some of my favourite languages.
In the mean time, you can check out the repo for her book here, or even better, get the book!
More live-sketching #joyofcoding pic.twitter.com/CMtmHVlF8g
— Crista Lopes (@cristalopes) May 29, 2015
sidebar : the need to make one’s constraints explicit and communicate them to others reminds me of something Greg Young also said during his BuildStuff keynote last year. Greg’s message was for you to be sceptical of the advices and so called “best practices” others offer. Because whilst they’re well-intended, these advices and best practices are applicable only under a set of implicit contexts (i.e. constraints) that the speaker is operating under, which might not be applicable to you. Whilst Greg was coming from a different angle, I think it lends itself well to support the points that both Laurent and Crista has made:
- be critical of your beliefs, as well as the advice offered by others; don’t accept them blindly
- be explicit about your constraints (or contexts, which seems to be synonymous here) so that it makes it easier for others to
- understand your argument/advice and;
- decide if it’s applicable to them (either partially or wholesome)
Keynote : Cool Code (Kevlin Henney)
I’m a big fan of Kevlin, and thoroughly enjoyed his previous talks at BuildStuff, NDC, QCon and CodeMotion.
Finally, @KevlinHenney ‘s closing keynote for #joyofcoding sad the conf is gonna be over so soon pic.twitter.com/qgRWtiDb8w — Yan Cui (@theburningmonk) May 29, 2015
In this talk, Kevlin showed off some great examples of cool code, such as the Qlobe and bootchess. And one thing you can always expect from a Kevlin Henney talk is plenty of memorable, insightful quotes:
“Reading other people’s code is hard not because they’re bad, but because they solve problems in a different way to you” – @KevlinHenney
— Yan Cui (@theburningmonk) May 29, 2015
“Constraints forces you to be creative” – @KevlinHenney (e.g. bootchess – a chess program that fits into your floppy boot sector!)
— Yan Cui (@theburningmonk) May 29, 2015
“We used to fit entire Unix OS in under 10k LOC! I’m gonna count your codebase in number of OSes” – @KevlinHenney #joyofcoding — Yan Cui (@theburningmonk) May 29, 2015
All and all, I had an amazing time at Joy of Coding this year, and looking forward to going back again in the future!
Great visuals! pic.twitter.com/uWaFAbsGlC — JoyOfCoding (@JoyOfCoding) May 29, 2015
Whenever you’re ready, here are 3 ways I can help you:
- Production-Ready Serverless: Join 20+ AWS Heroes & Community Builders and 1000+ other students in levelling up your serverless game. This is your one-stop shop for quickly levelling up your serverless skills.
- I help clients launch product ideas, improve their development processes and upskill their teams. If you’d like to work together, then let’s get in touch.
- Join my community on Discord, ask questions, and join the discussion on all things AWS and Serverless.
Pingback: Exercises in Programming Style–Style 1 | theburningmonk.com