Unfortunately I didn’t get to enjoy much of Write The Docs – Unconference Berlin but I did get to write down some notes on some interesting talks. Before I start let me thank the conference organizers, sponsors and Wikimedia for setting up a free (!) conference around a topic that is close to my heart: technical documentation.
I dove right in with the Lightning talks session. David (@dcht00) introduced Computational Hermeneutics. Hermeneutics is the theory of text interpretation (like biblical text), but can nowadays very well mean interpreting documentation. “In writing there’s the problem of transferring meaning, there’s a gap of understanding, we all have different ‘conceptional horizons’. Hermes was the intermediary between subjects (read: gods who didn’t speak the same language), today we lost him as a messenger/intermediate.”
Computational or machine hermeneutics should be machine transportable. David mentions Wikipedia units – where things like the used metrics system depends on the visitor – and ‘de-jargoning’, making documentation more accessible.
What he showed then was some software he uses to recreate conceptional horizons. Half art half science-fiction, I enjoyed this trip down psychology lane.
Next was a chat on WalkHub. WalkHub intends to build the ultimate user guide to the Internet. With WalkHub you can record what you do on a website and that way create step-by-step tutorials. WalkHub is build on Drupal – highly customizable and Open Source (savvy) – and uses Selenium, making it heavily testable. Its record-and-annotate means up to date screenshots and the tutorials are embeddable as a widgets. Which sounds pretty cool. I am not sponsored by WalkHub.
Evangelizing RDD Thomas rightly said that a README is the first file displayed (on GitHub), and in that way kinda like evidence that your project ‘is’. README’s use simple markup and they are easy to read, learn and write. README’s are pervasive (you’re not stuck to a file type), they summarize the project as they are attached alongside the versioned code. They provide context with examples, have very shallow limits and Thomas praises the ‘content first’ idea.
But: a README is not only necessary for existing projects. Thomas advises to start with a README for your next project to be crystal clear with all stakeholders including oneself about the intentions and to collect feedback before writing a single line of code. A bit similar to code sketching, and a great start for a TDD / BDD approach, detecting complexity early on. Related to that, writing issues as documentation and implement on agreement will help you get your intentions right. It will save you time issuing and getting your pull request merged. And, as you’ve already written your issue down, if you can’t implement it – someone else might, with your instructions!
Tool-wise Thomas recommended checking out MDN and READMEtree (README for all dependencies).
Last weekend I ran around at the Johannes Kepler University in Linz as part of the codeFront.io staff. As I took on the closing notes for Kod.io a few months earlier (with the same team), I decided to do another 15 minutes chat and take Sebastian down with me. The poor soul had taken on a lot of responsibilities the 2 weeks leading up to the conferences as I have a lot on my plate at my job and all kinds of Rails Girls (Summer of Code) stuff, and he was exhausted.
After a mandatory lost & found announcement, we got to tell our story for the entertainment of the attendees. Organizing the beast took little over 1 month. However impressive – this did mean that you can’t plan thoroughly. Not even remotely. We had to deal with a lot of last minute program changes and because the date was already set before even checking what other events would take place at that time (I am looking at you re:publica, LinuxTag. Berlin Web Week) the organization did not sell as many tickets as they had hoped for.
With this little planning and very few people who were up to speed on what needed to happen at what time, the staff came up with the #ueberraschung hashtag. Between tracks, the people responsible for the tracks (Laura and Dražen in track 1, Teresa and myself in 2 and Sebastian and Babs in 3) communicated via Facebook group chat using that hashtag a lot. We do apologize for people who were affected by things-not-taken-care-of. There were no vegan or gluten-free lunch options and we did not list anything in the neighborhood that did offer such options. Which is bad and we feel bad.
Talking about hashtags, there was apparently some confusion about which hashtags to use. Which resulted in people just using both #codefrontio AND #codefront2014. Some of our favorite mentions:
Miscellaneous fact: we missed one speaker as he did not get his visa in time.
For the obligatory (yet sincere) thank-you’s: Thank you team, ‘Turkish delegation’, Vigo and crew, speakers, Johannes Kepler University, Catalysts, karriere.at, GitHub and webBox.io. This conference would not have taken place without your great efforts.
Codeschool, Pluralsight and smartface.io raffled out licenses and coupons. Which is great and to my understanding all winners have been notified. Usersnap provided premium licenses for their service to all the speakers. Again: great.
We will collect all slides on a single Speakerdeck over the course of this week. Much the same goes for publishing the pictures taken.
As Themeforrest doesn’t really give me an opportunity to insert pictures in my support ticket, I decided to turn to this beautiful medium: a WordPress blog post. I know, it’s ironic. A friend of mine purchased the Barrci theme last October and we are having some troubles understanding it’s functionality and how we could customize it to our needs:
First off: we would like to have just a text overlay on our portfolio images, that means: no ‘+’ button and definitely no click-through to a different page. So: just the image, a one-liner that shows on hover-over, and that’s it. How can we do this?
Second: this might be a lack of understanding the font awesome (font) from my side, but why – when I hover over a ‘services’ item – does the icon stay all popped up and weird?This doesn’t change back until a refresh.
As I feel like the documentation is lacking here, I tried putting the icon code in the title input field. Was this the wrong decision?
Third, we would love to have our featured post to show a title on hover-over, much like what’s default in the portfolio section. Does the Barrci theme support this? Plus, how do we get rid of the annoying “browse all articles”? And is the [blog_featured] limited to showing a certain number? Or can we influence this somehow?
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.