It all started at Bubbleconf talking to Jan and Bart at the after-party. Henrietta and I had done a talk on the Rails Girls movement, and these two guys suggested that I should help them set-up an event in Leiden. An offer I couldn’t refuse, so after organizing Rails Girls Rotterdam and Rails Girls The Hague (both last year) and coaching at numerous other events, I started bugging sponsors yet again.
We were blessed with the enthusiasm of our coaches, most of them had already coached at the previous events. Being the veterans they are, everything went super smooth. I was particularly happy with Hester’s (Rails Girls Summer of Code student; Rails Girls Groningen organizer) RSVP. Organizing this event in my hometown no less, made it all extra special.
The Lightning Talks were all pretty powerful. Arjan (@kabisaict) told the attendees that “people who respond in a negative way to you coding ambitions, are not the people you want to hang with.” Anika Lindtner talked about the Rails Girls Summer of Code project (and how chocolate really helps when you get error messages). And Bart Zonneveld (@madebyhiro) used ordering a programming book on Amazon as a metaphor to explain web requests.
From October last year until the end of last month I had the great pleasure of working for the most fun game platform IN THE ENTIRE WORLD, CheckiO. As my co-workers (mostly crazy Python developers) recently secured a $750K investment and are making their way to Las Vegas, they’re looking for a Community Manager in their time zone (9 hours difference proved to be ‘a thing’). Be sure to follow them, a little bird told me they’ll release code challenges in different programming languages in 2014!
Starting February, I’ll take on a 3-months project at anynines as their technical writer (for their blog) and I am excited to help shape up their marketplace for add-ons. anynines is a 100% European Platform as a Service, which means that their data centers are located in Germany, and as such not compliant to the US patriot act. What can I say – exciting stuff.
I probably chose the worst possible week to try out anynines as first I got caught in an endless login loop and next I couldn’t connect to the anynines api. BUT after all that (and 3 support tickets – which were answered quickly), deployment worked like a charm.
After you’ve installed Ruby (1.9.3 or a more recent version), go to your command line and install the a9s gem which downloads the needed gems for interacting with the anynines system (cf, cfoundry):
gem install a9s
Now select the anynines api endpoint as target and authenticate using your user credentials:
Or if that doesn’t work for you (like it didn’t for me), use:
cf login -t
… which will prompt you for your email address and password.
You can deploy your code by using the cf push command now.
A wizard will guide you through the configuration process, where you’ll choose your memory limit (128M 2; 256M 3; 512M; 1G), Subdomain (‘Stringer’ in our case) and Domain (we use de.a9sapp.eu). When you see an output like below, you’re on the right track:
Creating route Stringer.de.a9sapp.eu... OK
Binding Stringer.de.a9sapp.eu to Stringer... OK
The available services for your anynines hosted app are as follows:
1: elasticsearch 0.20
2: mongodb 2.0
3: mysql 5.5
4: postgresql 9.1
5: rabbitmq 2.8
6: redis 2.2
7: swift 1.0
… or you can opt for user-provided.
We’re using Postgres.
Creating service postgresql-d2197... OK
Binding postgresql-d2197 to Stringer... OK
Push successful! App 'Stringer' available at Stringer.de.a9sapp.eu. Sort of. But this is my fault really, I have to perform some work on the app itself (I’ll update this post as soon as I did).
You can check all available cf sub-commands by typing cf help, check your current space and organization using the target command cf target. And you can use the cf apps command to get a status list of your applications running within the current space.
Yesterday evening I attended a Digitalista event for the first time. What’s more, I even did a talk! Which was pretty neat because it was the first time I got to talk about CheckiO and gamification. On my way home I decided I need to write a recap as it has been a while since my last post. So here we are.
The speakers all got cakes! photo: Teresa Hammerl
Jörg Hofstätter, Managing Partner of Ovos, explained just what gamification is using a metaphor of how he gets his kids to be at school on time. When they linger around at the comic book store (again) he simply shares that he’ll probably beat them being the first at the kindergarten. “Works everytime.”
At Ovos, Jörg has worked on educational game playludwig.com, SpermEX, teaching youngsters about sex education without being all pedantic about it, and Cure Runners, teaching financial literacy. With the game Technik Queen, Ovos contributed to a campaign from OMV to get women interested for a career as a Technician, at a young age. Being very skeptical about ‘making stuff pink’, it’s all about serious gaming with Hofstätter.
Zsolt Wilhelm, GamesStandard), talked about how so many people play games, that this is a cultural thing. The Guardian and the Standard should report about it. And they do. Which doesn’t translate in a massive turn of the public opinion of playing video games being a less… high-brow activity. And sadly, Zsolt doesn’t get to play any more video games than we do on a daily basis, contrary to his friends’ belief. I believe it has something to do with a job. ;)
Gamification for the technical savvy
I talked about the various gamification elements on CheckiO, a gaming platform for gamers. We have badges, prizes, levels, points, but moreover, we gamified content creation and community management. We recently published the templates and tests for our code challenges on GitHub, so people can create their own missions. And promoting users to the status of top coder, or star player, comes with great responsibility – to create a welcoming community for both experienced and beginner coders. Which makes my job as a Developer Evangelist a whole lot easier.
CheckiO started when our now CTO was bored and lonely, trying to learn new programming techniques. He got his friends to join in code riddles he had made up. Today 27.000 so-called pythonista’s are signed up for the platform and it makes me giggle when our dev team is trying to reach levels and badges they’ve designed and implemented themselves. Now that’s game trickery for you!
Making house rules fun
Claudia Riegler, Social Media Manager at Wiener Linien blog as gamehub, 6 badges, 5 levels, social sharing unlocked points (20 points per Facebook friend you invited – to be precise). Wiener Linien introduced the 10k badge and new levels along the campaign, looking at usage stats.
Changing behavior for life
Fredrik Debong shared his personal story, dealing with diabetes for 30 years, which is inextricably linked to the company (MySugr) he founded with a few friends. Driven by fear of what could happen – so a negative motivation – is not ‘fun’. And apparently a ‘diabetes burnout’ (where you basically stop measuring your blood sugar and inject the same amount of units for anything you take in, be it a small snack of a full meal) is a thing. A dangerous thing. “There’s a lot that you have to do as someone with Diabetes. What I want to teach people is that it’s great when they take any kind of control over this thing. Checking once a day is better than not checking it all. Only by celebrating the little things can we change behavior for life.”
DevFest Vienna, Day 1 & 2: Talks, Presentations and Hacking
A tad overdue, but still: my recap of this years Vienna DevFest.
Google+ Platform – A Year Later – Gerwin Sturm
Gerwin started his talk looking back on how the Google+ API has grown since 2011. Fast-forwarding to 2013 he highlights the easy authentication and platform insights with Google+ Sign-in, Mobile SDKs with ‘interactive posts’ and the possibility to create collaborative web apps using the Hangouts API. Gerwin showcased how Google+ Hangouts’ custom background responds to movement. And he’s working on a heckload more, just check out his GitHub account.
Hands-down the funniest talk of the day was Flying Sharks by Florian Pirchner (and associate). To figure out exactly how ‘Sharky’ can fly around controlled by a Arduino panel or web interface, I’d advise you to read through Florian’s post.
IT security; a never ending saga – Massimiliano Falcinelli
“If you’re a hacker, you’re likely to be a developer.” With his talk, Massimiliano Falcinelli made us think like hackers, in order to learn how to protect ourselves against all kinds of hacks. “You don’t need to be a skilled hacker to perform a hack, many exploits are published on the web, for any skiddy to use.” Need a little more imagination? Check out Exploits Database, shodanhq.com, nerdydata.com and pastebin.com.
Surviving the environment disasters – Anna Bulenkova
Anna started her talk going through the challenges JetBrains faced with creating RubyMine (a Ruby on Rails IDE). “Dynamic languages are hard to support as they are under constant development. And as they’re mostly open source, it’s sometimes hard to track who exactly is working on what. Oh, and then there’s dynamic typing.” BUT, JetBrains found a way around all this and RubyMine now supports auto-completion, usages search, dependency resolution, and refactorings.
After the lightning talks, I rushed to the Codeship office to check up on the Viennese team joining in the Rails Rumble. Aaannnddd I rushed back.
Bad Tests, Good Tests – Tomek Kaczanowski
Kaczanowski is very down to earth when it comes to testing: “When you do things the right way, you’ll have more work to do.” But one should definitely test their application. And Tomek has some advice for those who care about 100% test coverage – in the sense that you test everything, not writing tests for the sake of writing a lot of tests. “Looking at literal code coverage is the same as an editor telling their authors to write a number of words before deadline x. It makes no sense.”
First: postponing the moment you start writing tests, increases the chance you won’t write any tests at all. Tomek encouraged the attendees to practice TDD – Test Driven Development. He’s also a big fan of the single responsibility principle, thus testing one thing at a time. On test method names: “Keep the readability of your tests in mind, ‘should’ is better than ‘test’.” shouldRejectInvalidRequests() describes the scenario better than testRejectInvalidRequests(). Last, Tomek advised us to read the Practical Unit Testing book (he wrote).
RAD for mobile with Codiqa and jQuery Mobile – Riccardo Rubini
Rubini’s talk helped us through the steps to develop a working sketch of a mobile application with literally hours of effort, using the Codiqa toolbox for RAD (Rapid application development) / prototyping and the jQuery Mobile widget set. You can find a working demo of an app created with Codiqa on Rubini’s website.
At around 7pm The After Party started. And even though I promised myself to stay only for one beer, I ended up leaving ‘a little later’ than expected. Totally worth it. The next day was Open Hackathon day at Sektor5. The vibe? Relaxed. Everyone was working on either a sponsor-related project (both indoo.rs and PayPal provided an API) or on their own projects, exchanging ideas and wits. The final presentations were fun and not at all as competitive as I’m used to from other hackathons I attended. Which was actually nice for a change.
I’m already looking forward to next year’s DevFest.
It’s time for a personal announcement – I heard that’s what a blog is for anyway. As of today I’ll start working for CheckiO, a super-fun platform where one needs to code (Python!) to move a level up. I’m excited as I’ll get to do a lot of the stuff I do already – like organizing and attending meetups and programming workshops for beginners – for a living! Next I’ll dig into the copy of checkio.org, create new challenges with my talented co-workers and users and you’ll see me hang around on the forum a lot.
That does indeed mean that I’m no longer working for Usersnap. I will however keep tabs on them and I advice you to do the same. They have a pret-ty interesting integration partner announcement coming up (it starts with ‘hero’ and ends with ‘ku’, but that’s all I’m saying) and they are working on web dev shaking new features.
The first day of the Viennese chapter of the DevFest made for a few nice workshops. I attended one on jQuery and on Google Hangout development. A little summary:
jQuery Mobile – Claudia Breitenfellner
“Input fields on smart phones and tablets are incredibly annoying to work with. The need to optimize is obvious.” Taking inspiration from iphone-entwicklung.net and http://ift.tt/pqz0jY for buttons (icons, inline buttons, grouped buttons), forms, text input, radio buttons, check boxes and themes, we build our own little app for people with diabetes. Complete with database and server hosting.
Did I mention themes? O yes I did! I’ll play around with this for the rest of the weekend.
Hangout Development – Gerwin Sturm
Both workshops made for a perfect, hands-on first day of the DevFest and I can’t wait for the rest of the weekend!
“At this time, if you’re a woman, I recommend you stay away from Ruby conferences. For your own safety.” Reading Steve Klabnik’s tweet initially got me pret-ty angry. Admittedly, he added some context later, but they idea remains the same really. Now I’ve met Steve at RuPy last weekend and followed his work for way longer, and he seems like a great, reasonable guy. But I’m afraid that his tweet will do more harm than he could have intended. I know of many Ruby-related conferences that implement a code of conduct of some sort, attract more female speakers with an extensive outreach and anonymous selecting process and provide discounted or free tickets to alumni of programming courses such as Rails Girls (Summer of Code) to increase the number of female attendees.
I’m not going to link to all the blog posts and widespread discussions about the recent, unfortunate events in Ruby land, as I guess we all sorta know what has been going on. Inappropriate, exclusive behavior and sexual harassment (or even assault) is inexcusable. But, and it’s hard to break this to you, it happens everywhere. In every programming language, in every country, in every industry. Hell, I used to live in Rotterdam, where you’re ten times more likely to get a tongue in your ear, than a free beer. Plus, as I used to work in the advertising industry, I sure got my portion of sexist remarks and uncomfortable situations during TGIF. Community statements like this are nice and all, but I might hope that as a species we’re against all this (sexism, discrimination, violence, rape, oppression… should I continue?). Sure I know we’re not there yet, but we’re not there yet as a species, not as ‘the tech industry’ alone.
Pictures of male dominated meetups and conferences (I’m talking 99-1 ratio) are not going to get us more women in programming. But a tweet like Steve’s isn’t going to help either. I’d hate to think that aspiring female developers would look at the tweet of an industry leader and give up their dreams. I got a lot of poo slung at me when I started to learn Ruby, but NOT from the Ruby community, and I am forever grateful for that. People addressing the Ruby community as ‘broken’ or ‘sexist’, should start looking out their windows and see how the world is sexist and broken. It does not mean we can’t do anything about it or can’t talk about these problems, it means we should approach it on a bigger scale than just rotten cherry-picking one little language’ community.
Now if we could all go about that, and stop overshadowing community gatherings with blunt statements that make fellow (male!) conference-goers feel awkward to approach me to chat – about I don’t know, PROGRAMMING maybe – that would be great.
Many people on the Internets ask me for a list of tools and books I used to learn programming (a bit). Naturally, I’d love to do that. But! Before I document the Ultimate List Of Ruby Resources For The Benefit Of All Future Generations… let me just tell you that my introduction to the programming world was bumpy and just little over a year ago. I tried to bring some structure in my reading list, something that I did not have.
Complete tryruby.org to get a decent understanding of Ruby syntax (spoiler alert: it’s fun too!). Try and keep in mind that this is Ruby, not Rails. And that it’s fine that you don’t know the difference exactly – just yet.
Mislav has preserved Why’s Poignant Guide to Ruby. I highly recommend this book as I have never again laughed so hard at code examples. If you pick just one thing from this list, make sure it’s Why’s Guide.
I followed the online Ruby course Ruby off Rails, and I’m a big fan of the program. After watching a video, you’re tasked with taking the program further, applying the lessons in the video. You submit your code with a GitHub Pull Request, and @jwo – and the other students! – review your ocde and send you comments and suggestions on your style, syntax, flow-control, logic, and testing techniques.
Something I can’t wait to check out, is Katrina Owen’s exercism.io, where you just get a README and a test suite and you’ll need to make the tests pass. But that’s just half of it. The community then helps each other write more elegant, readable code.
To give your brain a little break from all this syntax stuff, try GitImmersion & TryGit, to get an understanding of what git (and GitHub) can do for you.
Rails for Zombies is a set of 5 free videos with interactive code quizzes from the makers of Code School. Yes, this is Rails again.
Confident Ruby and Objects on Rails, both by Avdi Grimm, are both pretty much hands-on books to Rails and Ruby. Don’t just read. Write some code while you go through them.
jenniferdewalt.com – Jennifer build a website every day, documented her process, AND shared the source code on GitHub. I’m not saying you should do this too. I’m saying you should check out her work. I’ve learned most from reading code.
With Seven Languages in Seven Weeks you’ll get a hands-on tour of Clojure, Haskell, Io, Prolog, Scala, Erlang, and Ruby. It will broaden your perspective of programming by studying these languages side-by-side. You’ll learn something new from each, AND you’ll learn how to learn a language quickly.
Part of learning programming is getting to know the lingo. I listened to the RubyTapas screencasts that introduced me to all kinds of (advanced) Ruby concepts and techniques, as well as core Object-Oriented design principles. Similarly, RubyRogues explores the wonderful world of programming with all its dev speak and niceties. You’ll understand about 20% of what they’re saying in the beginning, but make sure to pause the episode, look stuff up and you’ll get to know the terms pret-ty fast.
Confreaks has recorded a humongous amount of Ruby-minded talks on conferences. I found it to be great material to listen to while doing repetitive tasks. Or cooking.