<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
 <title>Sebastian Spier</title>
 <link href="https://spier.hu/atom.xml" rel="self"/>
 <link href="https://spier.hu"/>
 <updated>2023-01-17T08:25:53+00:00</updated>
 <id>https://spier.hu</id>
 <author>
   <name>Sebastian Spier</name>
 </author>

 
 <entry>
   <title>InnerSource is like Sourdough</title>
   <link href="https://spier.hu/2022/11/innersource-is-like-sourdough"/>
   <updated>2022-11-17T00:00:00+00:00</updated>
   <id>https://spier.hu/2022/11/innersource-is-like-sourdough</id>
   <content type="html">&lt;p&gt;At a talk at the &lt;a href=&quot;https://innersourcecommons.org/events/isc-2022/&quot;&gt;InnerSource Summit 2022&lt;/a&gt;, I shared some thoughts about why “InnerSource is like Sourdough”.&lt;/p&gt;

&lt;p&gt;While this might not be scientifically correct, the metaphor has helped me as a mental picture to explain the concept of InnerSource to myself and to others.&lt;/p&gt;

&lt;h2 id=&quot;summary&quot;&gt;Summary&lt;/h2&gt;

&lt;p&gt;When baking bread with sourdough you are dealing with the sometimes surprizing behavior of wild yeasts, creating a bubbly dough that eventually turns into tasty bread.&lt;/p&gt;

&lt;p&gt;Learning how to handle sourdough takes time, practices, and the willingness to experiment and fail. However once you master it, you are rewarded with more healthy bread, richer in flavor and with a longer shelf life!&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://innersourcecommons.org&quot;&gt;InnerSource&lt;/a&gt; has many similarities to sourdough in this regards.&lt;/p&gt;

&lt;p&gt;This talk highlights those similarities in a (hopefully) thought-provoking and fun way. And to make you hungry there will be a lot of bread pictures ;)&lt;/p&gt;

&lt;h2 id=&quot;video&quot;&gt;Video&lt;/h2&gt;

&lt;iframe width=&quot;650&quot; height=&quot;365&quot; src=&quot;https://www.youtube.com/embed/D4ZOES_7iJQ&quot; frameborder=&quot;0&quot; allow=&quot;accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;
</content>
 </entry>
 
 <entry>
   <title>Knowledge Sharing as a Catalyst for Professional Growth</title>
   <link href="https://spier.hu/2022/08/knowledge-sharing-as-a-catalyst-for-professional-growth"/>
   <updated>2022-08-30T00:00:00+00:00</updated>
   <id>https://spier.hu/2022/08/knowledge-sharing-as-a-catalyst-for-professional-growth</id>
   <content type="html">&lt;p&gt;&lt;img class=&quot;right no-border&quot; src=&quot;https://underthehood.meltwater.com/images/own/2022-08-30-knowledge-sharing-as-a-catalyst-for-professional-growth/header_blog_post_youtube.jpg&quot; width=&quot;250&quot; title=&quot;Knowledge Sharing as a Catalyst for Professional Growth&quot; style=&quot;margin-left:10px; margin-right:0px;&quot; /&gt;&lt;/p&gt;

&lt;p&gt;We had another Devopsicon — our internal engineering (un)conference. We record most of these company-internal sessions to ensure we can share the knowledge with those who were unable to attend, and to build a knowledge base over time.&lt;/p&gt;

&lt;p&gt;We have decided to go one step further and &lt;a href=&quot;https://www.youtube.com/channel/UCz9T7a08RFjhwUTsZvbthfQ&quot;&gt;share some of these sessions&lt;/a&gt; publicly. This post describes how this approach has benefitted both us as a company and the professional growth of our engineers.&lt;/p&gt;

&lt;!-- more --&gt;

&lt;h2 id=&quot;creating-a-knowledge-base&quot;&gt;Creating a Knowledge Base&lt;/h2&gt;

&lt;p&gt;The last unconference produced a lot of video material! About 130 sessions were recorded and shared throughout the organization. Many sessions happen in parallel, so recording the sessions helps the audience to overcome their &lt;a href=&quot;https://en.wikipedia.org/wiki/Fear_of_missing_out&quot;&gt;FOMO&lt;/a&gt;, at least a little bit. :)&lt;/p&gt;

&lt;p&gt;Since we ran recent Devopsicon events &lt;a href=&quot;https://underthehood.meltwater.com/blog/2020/09/18/how-to-run-a-remote-unconference/&quot;&gt;fully remotely&lt;/a&gt;, we got a lot better at recording, cataloging, and sharing those recordings after the event. This has created a great knowledge base of 500+ videos about all sorts of topics:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;A live hacking JavaScript session&lt;/li&gt;
  &lt;li&gt;Understanding brain chemicals as a way to strengthen teams&lt;/li&gt;
  &lt;li&gt;Using terraform with GitHub&lt;/li&gt;
  &lt;li&gt;Backstage as a tool for improving Developer Productivity&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;We figured that some of these sessions would also be interesting for people outside of Meltwater Engineering. These sessions will give you an idea of who we are, how we work, and what we are working on.&lt;/p&gt;

&lt;h2 id=&quot;whats-in-it-for-meltwater&quot;&gt;What’s in it for Meltwater?&lt;/h2&gt;

&lt;p&gt;Let’s come clean: We are always looking to &lt;a href=&quot;https://underthehood.meltwater.com/jobs/&quot;&gt;hire new, great colleagues&lt;/a&gt; for our Engineering teams. To allow people outside of Meltwater to understand our work culture and showcase that we are an attractive employer in Tech, we need to provide sufficient opportunities for them to get to know Meltwater Engineering.&lt;/p&gt;

&lt;p&gt;But how do we create relevant material?&lt;/p&gt;

&lt;p&gt;We found that writing a blog post has a high barrier to entry for many of our colleagues. However, at our &lt;a href=&quot;https://underthehood.meltwater.com/blog/2022/06/01/meltwaters-beloved-unconference/&quot;&gt;internal unconference&lt;/a&gt; many of those people deliver short internal presentations. Apparently that is easier than writing! So we decided to turn some of that existing video content into material that we can share publicly.&lt;/p&gt;

&lt;p&gt;In addition, we want our engineers to grow! These presentations are a way for us to support their personal and professional growth.&lt;/p&gt;

&lt;h2 id=&quot;reasons-for-meltwater-engineers-to-present-in-public&quot;&gt;Reasons for Meltwater Engineers to Present in Public&lt;/h2&gt;

&lt;p&gt;We selected some of the best presentations from our unconference and asked the presenters to re-record them. Ufff — extra work for them! Naturally they asked, “What’s in it for me?”&lt;/p&gt;

&lt;p&gt;There is a lot to learn from presenting something publicly:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;Showcase your work&lt;/strong&gt; — In a B2B product like Meltwater’s, it can be difficult to explain or show what you do. Creating a video about something that you are working on provides a glimpse into it.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Personal development&lt;/strong&gt; — Learning how to articulate complex topics, while making it clear yet simultaneously interesting, is a difficult task. Therefore, presenting a topic in public greatly contributes to the personal development of the presenter. As a bonus, we help our engineers by providing constructive feedback on slides and demos. We also handle most of the editing, resulting in professional-looking video with relatively little effort.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Professional branding&lt;/strong&gt; — Through these videos, our engineers present themselves as knowledgeable professionals or even experts in a certain field. This aids them in building their professional brand, which among other things might help them land speaking opportunities at conferences.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;where-do-i-find-the-videos&quot;&gt;Where Do I Find the Videos?&lt;/h2&gt;

&lt;p&gt;We are starting with a session about “KEDA in Terraform - The good, the bad, the savings”, by the fantastic Patrick Nanys from our Budapest office. Thanks for going first Patrick!&lt;/p&gt;

&lt;iframe width=&quot;650&quot; height=&quot;365&quot; src=&quot;https://www.youtube.com/embed/1kEKrhYMf_g&quot; frameborder=&quot;0&quot; allow=&quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;

</content>
 </entry>
 
 <entry>
   <title>Centralizing Developer Docs in Backstage</title>
   <link href="https://spier.hu/2022/07/centralizing-developer-docs-in-backstage"/>
   <updated>2022-07-19T00:00:00+00:00</updated>
   <id>https://spier.hu/2022/07/centralizing-developer-docs-in-backstage</id>
   <content type="html">&lt;p&gt;&lt;img class=&quot;right no-border&quot; src=&quot;/images/2022-07-19-centralizing-developer-docs-in-backstage/mw-centralizing-developer-docs-in-backstage.png&quot; width=&quot;220&quot; title=&quot;Centralizing Developer Docs in Backstage&quot; style=&quot;margin-left:30px; margin-right:40px;&quot; /&gt;&lt;/p&gt;

&lt;p&gt;A growing Engineering org may reach a point where answering questions that used to be simple have become hard. At least that is true for us! Questions such as: “Who owns this?” “Do we have a component that I can reuse?” “Where are the docs for that API?”&lt;/p&gt;

&lt;p&gt;This post shares the challenges we want to solve, and the experiences we made while centralizing our internal developer docs in Backstage, an open platform for building developer portals.&lt;/p&gt;

&lt;!-- more --&gt;

&lt;h2 id=&quot;challenges-of-autonomy-and-growth&quot;&gt;Challenges of Autonomy and Growth&lt;/h2&gt;

&lt;p&gt;In 2017 the Meltwater Engineering organization started a transformation process towards autonomous teams with full end-to-end responsibility. We shared a lot more about this transformation &lt;a href=&quot;https://underthehood.meltwater.com/blog/2019/11/11/the-meltwater-transformation-on-the-arrested-devops-podcast/&quot;&gt;in&lt;/a&gt; &lt;a href=&quot;https://underthehood.meltwater.com/blog/2020/01/31/jeff-and-amer-talk-devops-adoption-and-more/&quot;&gt;various&lt;/a&gt; &lt;a href=&quot;https://underthehood.meltwater.com/blog/2021/01/09/empowered-product-teams-podcast/&quot;&gt;podcasts&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;During the same period we also grew significantly in size, now with 500+ people in our org, spread over 10+ sites.&lt;/p&gt;

&lt;p&gt;The transformation was a great success! We significantly improved delivery speed, quality, and developer happiness.&lt;/p&gt;

&lt;p&gt;However any significant change has side-effects. In our case the increased autonomy and growth of the org led to a fragmented ecosystem of developer tooling. It became a lot harder to understand simple things like: “Who owns this?” “Do we have a component that I can reuse?” “Where are the docs for that API?” “What is the recommended way to get started with doing X?” etc&lt;/p&gt;

&lt;p&gt;Often the only way to figure it out was to ask another colleague with more tenure in the org, an approach that Gary Niemen from Spotify so aptly called &lt;a href=&quot;https://engineering.atspotify.com/2020/08/how-we-use-golden-paths-to-solve-fragmentation-in-our-software-ecosystem/&quot;&gt;rumour-driven development&lt;/a&gt;.&lt;/p&gt;

&lt;h2 id=&quot;what-do-we-want-instead&quot;&gt;What Do We Want Instead?&lt;/h2&gt;

&lt;p&gt;While we want to maintain the benefits of team autonomy, we can improve in areas where the standardization of tooling doesn’t reduce the ability of our teams to move fast and innovate on their core mission.&lt;/p&gt;

&lt;p&gt;We can boil down the goal for our Product &amp;amp; Engineering org to:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Faster onboarding of new hires and acquisitions.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This is the experience (and metric) that we will push to improve, while periodically reevaluating the needs of our org and business.&lt;/p&gt;

&lt;h2 id=&quot;first-experiments-with-backstage&quot;&gt;First Experiments with Backstage&lt;/h2&gt;

&lt;p&gt;When we found Backstage (&lt;a href=&quot;https://backstage.io&quot;&gt;backstage.io&lt;/a&gt;) we were excited. Spotify’s description of the problem space resonated so well with us that we wanted to try it out.&lt;/p&gt;

&lt;p&gt;As we did not immediately have the capacity in our Platform teams to give Backstage a spin, a small group of us started to experiment with Backstage at an internal hackathon.&lt;/p&gt;

&lt;p&gt;During that hackathon we explored questions like:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Are the &lt;strong&gt;TechDocs&lt;/strong&gt; a solution to centralize our developer documentation?&lt;/li&gt;
  &lt;li&gt;Does the &lt;strong&gt;Software Catalog&lt;/strong&gt; clarify the question of component ownership and does it help to explain the interdependencies between components?&lt;/li&gt;
  &lt;li&gt;How can we make it simple for developers to use and contribute to our Backstage installation?&lt;/li&gt;
  &lt;li&gt;Can we use the tech-radar plugin to visualize the tech used within Meltwater? What other Backstage plugins could help our engineers?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;By the end of the hackathon we had a working Backstage instance, with some components imported into the Software Catalog already.&lt;/p&gt;

&lt;p&gt;We were especially impressed with TechDocs and its potential to help us build out our centralized developer documentation. Therefore, we decided to continue our experiment after the hackathon and focus on TechDocs first.&lt;/p&gt;

&lt;h2 id=&quot;milestone-1-starting-with-techdocs-only&quot;&gt;Milestone 1: Starting with TechDocs Only!&lt;/h2&gt;

&lt;p&gt;For about 2 years we maintained a &lt;a href=&quot;https://readme.com&quot;&gt;readme.com&lt;/a&gt; portal, where we hosted cross-team developer documentation. We learned a lot: How to process suggestions for documentation improvements coming from other teams, or how to indicate effectively which team owns which component, especially for pieces that are shared between multiple teams.&lt;/p&gt;

&lt;p&gt;However, we were never able to get sufficient teams to contribute to the portal, nor were we happy with the documentation living outside of our source code repos. When we saw the &lt;a href=&quot;https://www.docslikecode.com/articles/ten-tips-maintaining-long-term-docs-like-code/&quot;&gt;docs-like-code approach&lt;/a&gt; that Backstage offers through TechDocs, we were easily sold (also see &lt;a href=&quot;https://www.writethedocs.org/guide/docs-as-code/&quot;&gt;Docs as Code&lt;/a&gt;).&lt;/p&gt;

&lt;p&gt;We ran multiple experiments to validate whether we could migrate all docs from readme.com to TechDocs. One of the teams even wrote a little converter script to ease the migration.&lt;/p&gt;

&lt;p&gt;&lt;img class=&quot;right no-border&quot; src=&quot;/images/2022-07-19-centralizing-developer-docs-in-backstage/image2.png&quot; width=&quot;270&quot; title=&quot;Backstage TechDocs - A docs-like-code approach&quot; style=&quot;margin-left:30px; margin-right:20px;&quot; /&gt;&lt;/p&gt;

&lt;p&gt;From a pure documentation standpoint, we were quickly convinced that TechDocs could match the readme.com experience. At the same time, TechDocs gave us more extensibility and the ability to tightly integrate documentation improvements into our code review processes, which provided a lot of value for the creators of the given documentation.&lt;/p&gt;

&lt;p&gt;We went from experiment to adoption by migrating all remaining docs from readme.com to TechDocs, and declaring Backstage our go-to place for &lt;strong&gt;all company-internal cross-team developer documentation&lt;/strong&gt; at Meltwater.&lt;/p&gt;

&lt;h2 id=&quot;the-future-of-backstage-at-meltwater-engineering&quot;&gt;The Future of Backstage at Meltwater Engineering&lt;/h2&gt;

&lt;p&gt;We keep investing in Backstage, as we like the outcomes of our first experiments. But do we truly know what the future Backstage at Meltwater Engineering will be? Not yet!&lt;/p&gt;

&lt;p&gt;However, we do know what we learned, what we liked, what we didn’t like, and what questions we have. Together with the feedback from our teams this will inform which area we invest in next.&lt;/p&gt;

&lt;p&gt;Here a few highlights of what we have observed after using Backstage for a few months. Ask us anything about these! We may write more in-depth blog posts about some of them, should we decide to go down those routes further.&lt;/p&gt;

&lt;h3 id=&quot;curation--technology&quot;&gt;Curation &amp;gt; Technology&lt;/h3&gt;

&lt;p&gt;As so often, technology alone won’t solve things.&lt;/p&gt;

&lt;p&gt;If the information provided in Backstage increases quickly and without structure, it might reach a point where it would not be useful for our developers anymore, as they won’t find essential info quickly. Preventing that will require some level of curation of the content/components that we present in Backstage.&lt;/p&gt;

&lt;p&gt;One particular problem: Can our teams use Backstage for team-internal documentation (runbooks, etc.), without creating confusion for developers from other teams?&lt;/p&gt;

&lt;p&gt;For example: A Meltwater developer is looking for information on how to deploy to our Kubernetes cluster. Instead of finding the relevant info from our Platform teams, they might find an internal Kubernetes runbook from some other team. That would be confusing, rather than helpful.&lt;/p&gt;

&lt;h3 id=&quot;docs-like-code-is-the-way-to-go&quot;&gt;docs-like-code is the way to go&lt;/h3&gt;

&lt;p&gt;With the docs living in the same repo as the source code, we can tightly integrate documentation improvements into our code review processes. The teams that are practicing this &lt;a href=&quot;https://www.docslikecode.com/articles/ten-tips-maintaining-long-term-docs-like-code/&quot;&gt;docs-like-code&lt;/a&gt; approach are confident that it will increase the quality of our documentation and the onboarding speed of new developers.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;Gotchas&lt;/strong&gt;: TechDocs offers formatting features on top of GitHub Flavored Markdown (&lt;a href=&quot;https://github.github.com/gfm/&quot;&gt;GFM&lt;/a&gt;), which many of our engineers are used to. Also there are some nuances where it actually parses the input differently. - We have a dedicated internal documentation section in our Backstage instance, where we explain how TechDocs works in detail. Hopefully this will make the migration from GFM to TechDocs less painful for our teams.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Question&lt;/strong&gt;: How to structure documentation into larger categories when the docs for individual components always live in the respective repos? How to highlight which components belong together or depend on each other? - We have experimented with adding docs for &lt;a href=&quot;https://backstage.io/docs/features/software-catalog/system-model#ecosystem-modeling&quot;&gt;systems/domains&lt;/a&gt; in Backstage but we aren’t fully convinced whether this is the best way forward.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Concern:&lt;/strong&gt; With TechDocs, any docs change requires a PR in GitHub. Does that make the barrier to entry so high that functions like Product or Support will not contribute improvements and fixes to the documentation?&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;discovery---finding-key-documentation-quickly&quot;&gt;Discovery - Finding Key Documentation quickly&lt;/h3&gt;

&lt;p&gt;The default search provided by Backstage is not great. Sometimes we don’t see results that we would be expecting (a bug?), and the excerpts as result previews aren’t exactly pretty. Most importantly we don’t know how to influence the result ranking and we want to give certain docs precedence over others.&lt;/p&gt;

&lt;p&gt;Meltwater Engineering having &lt;a href=&quot;https://underthehood.meltwater.com/blog/2018/02/06/running-a-400+-node-es-cluster/&quot;&gt;a lot of&lt;/a&gt; &lt;a href=&quot;https://underthehood.meltwater.com/blog/2018/09/28/using-machine-learning-to-load-balance-elasticsearch-queries/&quot;&gt;search&lt;/a&gt; &lt;a href=&quot;https://underthehood.meltwater.com/blog/2018/11/05/optimal-shard-placement-in-a-petabyte-scale-elasticsearch-cluster/&quot;&gt;knowledge&lt;/a&gt; should give us an edge here.&lt;/p&gt;

&lt;h3 id=&quot;can-templates-support-paved-roads&quot;&gt;Can Templates support Paved Roads?&lt;/h3&gt;

&lt;p&gt;We have have only run tiny experiments with the &lt;a href=&quot;https://backstage.io/docs/features/software-templates&quot;&gt;Templates mechanism&lt;/a&gt; in Backstage so far. However we do like its potential to create easier getting-started experiences for common tasks while at the same time promoting certain standards within our Engineering org.&lt;/p&gt;

&lt;p&gt;We call these &lt;strong&gt;paved roads&lt;/strong&gt; (aka golden paths), and are looking forward to learning and sharing more about how this concept is working out for us in the future.&lt;/p&gt;

&lt;h3 id=&quot;keeping-backstage-up-to-date&quot;&gt;Keeping Backstage Up-to-date&lt;/h3&gt;

&lt;p&gt;The challenge of keeping Backstage up-to-date, is that it is meant as a template for a developer portal, supported by a platform of standardized plugins. Although it is fairly easy to bump the dependencies for the plugins, one also has to update the template itself, which becomes more and more difficult as changes are made locally.&lt;/p&gt;

&lt;p&gt;While the &lt;a href=&quot;https://backstage.io/docs/getting-started/keeping-backstage-updated&quot;&gt;official documentation&lt;/a&gt; recommends a way to solve this, we still found this to become messy quickly and are looking for a better approach so that we don’t fall behind on Backstage upgrades just because the upgrade is cumbersome.&lt;/p&gt;

&lt;h2 id=&quot;in-closing&quot;&gt;In Closing&lt;/h2&gt;

&lt;p&gt;This is the beginning of our journey with Backstage. We hope that this post has been useful for you if your org is at a similar stage.&lt;/p&gt;

&lt;p&gt;Are you also introducing Backstage? Which challenges of migration and adoption did you have to overcome in your orgs? Which other gotchas/questions/challenges with the technology did you have to solve? We would love to hear more about any and all of such first-hand experiences.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Aside:&lt;/em&gt; This project with Backstage, as well as this post, were done in collaboration with my fantastic Meltwater colleague &lt;a href=&quot;https://www.linkedin.com/in/petter-remen/&quot;&gt;Petter Remen&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Image credits:&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://iconscout.com/illustrations/workshop-for-growth&quot;&gt;Workshop for Growth Illustration&lt;/a&gt; by &lt;a href=&quot;https://iconscout.com/contributors/pixel-true-designs&quot;&gt;Pixel True&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://backstage.io&quot;&gt;backstage.io&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</content>
 </entry>
 
 <entry>
   <title>Contribute to Grow: Joining the Board of the InnerSource Commons</title>
   <link href="https://spier.hu/2022/06/contribute-to-grow-joining-the-isc-board"/>
   <updated>2022-06-26T00:00:00+00:00</updated>
   <id>https://spier.hu/2022/06/contribute-to-grow-joining-the-isc-board</id>
   <content type="html">&lt;p&gt;In 2022 I am serving on the &lt;a href=&quot;https://innersourcecommons.org/about/announcements/2022-05-new-board-and-officers/&quot;&gt;Board&lt;/a&gt; of the &lt;a href=&quot;https://innersourcecommons.org&quot;&gt;InnerSource Commons Foundation&lt;/a&gt;. Thank you to the Members of the Foundation who voted for me! I appreciate your trust and will do my best to move this community forward.&lt;/p&gt;

&lt;p&gt;Back in 2019 I could not have imagined contributing to an open community in any significant way. I would not even have known how to get started.&lt;/p&gt;

&lt;p&gt;I want to help you to &lt;strong&gt;join an open (source) community yourself&lt;/strong&gt; by sharing my 3 year journey in the InnerSource Commons.&lt;/p&gt;

&lt;p&gt;You wonder: &lt;em&gt;Why should I donate my time to such things?&lt;/em&gt; Bertrand Delacretaz answers this best in &lt;a href=&quot;https://www.youtube.com/watch?v=F0SmiQ3SF6Q&amp;amp;ab_channel=BertrandDelacretaz&quot;&gt;How to convince your left brain (or manager) to follow the Open Source path that your right brain desires.&lt;/a&gt;.&lt;/p&gt;

&lt;h2 id=&quot;joining-an-open-source-community&quot;&gt;Joining an Open (Source) Community&lt;/h2&gt;

&lt;p&gt;The following will be pretty specific, to let you compare your experience with mine, and evaluate whether my story is similar enough to apply to you.&lt;/p&gt;

&lt;h3 id=&quot;my-context&quot;&gt;My Context&lt;/h3&gt;

&lt;p&gt;I &lt;a href=&quot;https://spier.hu/2014/11/6-good-reasons-to-study-computer-science&quot;&gt;studied computer science&lt;/a&gt;, and had been working as an Engineering Manager for 10 years. Over time I learned various techniques to help my teams. Lean and &lt;a href=&quot;https://spier.hu/2014/05/scrum-the-art-of-the-possible&quot;&gt;Agile&lt;/a&gt; methods, how (Engineering) orgs change as they grow, and how autonomy and purpose motivate people and change the teams that they work in.&lt;/p&gt;

&lt;p&gt;Around 2019 I had the sense that I was maxing out on my ability to make my teams better, without also changing the surrounding org. We had reduced much of the wasted cycles in my teams but were struggling to do the same in the interactions of my teams with other teams in the org.&lt;/p&gt;

&lt;p&gt;While researching cross-team collaboration challenges in orgs that have autonomous teams, I came across the term &lt;strong&gt;InnerSource&lt;/strong&gt;. The challenges that InnerSource is trying to solve were so similar to what I had experienced! I was excited. The hope was that I had found something that could help my teams and myself to increase our impact on our business and organization.&lt;/p&gt;

&lt;h3 id=&quot;userreader-joining--lurking&quot;&gt;User/Reader: Joining &amp;amp; Lurking&lt;/h3&gt;

&lt;p&gt;&lt;img class=&quot;right&quot; src=&quot;/images/2022-06-26-contribute-to-grow/frog-927764_1280.webp&quot; title=&quot;User/Reader: Joining &amp;amp; Lurking&quot; width=&quot;230&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Joining the InnerSource Commons community was a lucky coincidence … let’s call it fate! ;)&lt;/p&gt;

&lt;p&gt;While reading up on the concepts on &lt;a href=&quot;https://innersourcecommons.org&quot;&gt;innersourcecommons.org&lt;/a&gt; I found a typo that I fixed. My &lt;a href=&quot;https://github.com/InnerSourceCommons/archive.innersourcecommons.org/pull/63&quot;&gt;tiny contribution&lt;/a&gt; was accepted, and I started talking with a community members, who invited me to join their Slack to continue the conversation.&lt;/p&gt;

&lt;p&gt;I &lt;a href=&quot;https://innersourcecommons.org/slack&quot;&gt;joined Slack&lt;/a&gt;, but didn’t quite know what to do there. I just lurked, and listened to the conversations for some time. Eventually I joined in on some conversations and asked questions. Still I was largely a passive member of the community.&lt;/p&gt;

&lt;h3 id=&quot;contributor-learning-by-doing&quot;&gt;Contributor: Learning by Doing&lt;/h3&gt;

&lt;p&gt;One of the ways that the community is sharing experiences with each other are the &lt;a href=&quot;https://patterns.innersourcecommons.org/&quot;&gt;InnerSource Patterns&lt;/a&gt;. I enjoyed the practical nature of these patterns, and when I found some of the pattern authors in Slack, I was hooked.&lt;/p&gt;

&lt;p&gt;The patterns, and the community, allowed gave me access to practitioners with similar challenges across company boundaries. Chatting under &lt;a href=&quot;https://www.chathamhouse.org/about-us/chatham-house-rule&quot;&gt;Chatham House Rule&lt;/a&gt; allowed us to share a great level of detail with each other, creating learning opportunities based on real-life experiences that otherwise are hard to find.&lt;/p&gt;

&lt;p&gt;The patterns quickly became my primary vehicle to learn more about InnerSource. While reading the patterns, I started to improving the writing in some of them. That way I was getting to know other community members that were interested in similar topics, which lead to great conversations.&lt;/p&gt;

&lt;p&gt;The idea of &lt;strong&gt;learning through contributing&lt;/strong&gt; fully clicked for me, at &lt;a href=&quot;https://spier.hu/2020/04/biases-busted-at-foss-backstage-2020&quot;&gt;FOSS Backstage&lt;/a&gt; in early 2020. Cornelius Schumacher presented how they were bringing an open-source-like culture into the corporate world. Their InnerSource License simplified the source code distribution and collaboration on a code level between the companies within their group.&lt;/p&gt;

&lt;p&gt;After the conference I met Cornelius in the InnerSource Commons community. I started a conversation with him to learn more about their InnerSource License, which led to us writing up their approach as the &lt;a href=&quot;https://patterns.innersourcecommons.org/p/innersource-license&quot;&gt;InnerSource License pattern&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;This was the final confirmation that I needed:&lt;/p&gt;

&lt;p&gt;By contributing to the InnerSource Patterns, I was having conversations and learning things at a faster pace than what would have happened had I staid just within the confines of my own organization. The more I was contributing, the more I was learning. An addictive drug! :)&lt;/p&gt;

&lt;h3 id=&quot;trusted-committer-keep-contributing--sharing&quot;&gt;Trusted Committer: Keep contributing &amp;amp; sharing&lt;/h3&gt;

&lt;p&gt;Motivated by what I was learning from my first contributions, I kept contributing and sharing. Mostly I was doing little things like cleanup of the &lt;a href=&quot;https://github.com/InnerSourceCommons/InnerSourcePatterns&quot;&gt;Patterns repository&lt;/a&gt;, consolidating issues, pull request, and so forth.&lt;/p&gt;

&lt;p&gt;In late 2020, a year after joining the community, I submitted a talk for the Fall Summit. While I was second-guessing whether I had enough relevant content to share, I presented my talk &lt;a href=&quot;https://spier.hu/2020/09/presenting-at-the-innersource-commons-2020-fall-summit&quot;&gt;1 year in the ISC: Getting your money’s worth&lt;/a&gt;. And I am happy I did!&lt;/p&gt;

&lt;p&gt;That talk was an initial version of this blog post here. While it felt awkward to put myself out there, it helped me to introspect on how I was benefiting from doing open source work in the InnerSoure Commons. It also created new opportunities to talk to other community members, which got me even more engaged and excited about the community itself.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://patterns.innersourcecommons.org&quot;&gt;
&lt;img class=&quot;right&quot; src=&quot;/images/2022-06-26-contribute-to-grow/innersource-patterns-book-cover.jpeg&quot; title=&quot;Patterns online book - patterns.innersourcecommons.org&quot; width=&quot;250&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The InnerSource Patterns still were my primary way of learning about InnerSource. Many times I was able to use those learnings &lt;a href=&quot;https://underthehood.meltwater.com&quot;&gt;at work&lt;/a&gt;. Through applying those patterns, I was learning more again, which I could bring back to the InnerSource Commons community. A cycle!&lt;/p&gt;

&lt;p&gt;A proud moment was to publish the first version of the Patterns online book to &lt;a href=&quot;https://patterns.innersourcecommons.org&quot;&gt;patterns.innersourcecommons.org&lt;/a&gt;, something that the &lt;a href=&quot;https://innersourcecommons.org/learn/patterns/&quot;&gt;Patterns working group&lt;/a&gt; had been working towards for a while.&lt;/p&gt;

&lt;p&gt;Shortly after I was invited to the Patterns Working Group as a &lt;a href=&quot;https://github.com/InnerSourceCommons/InnerSourcePatterns/blob/main/TRUSTED-COMMITTERS.md&quot;&gt;Trusted Committer&lt;/a&gt;. A confirmation that my contributions were seen and appreciated.&lt;/p&gt;

&lt;h3 id=&quot;member-promoting-innersource&quot;&gt;Member: Promoting InnerSource&lt;/h3&gt;

&lt;p&gt;Communities have a small amount (~&lt;a href=&quot;https://en.wikipedia.org/wiki/1%25_rule&quot;&gt;1%&lt;/a&gt;) of people that contribute a lot. This is also true for the InnerSource Commons and the Patterns Working Group. But how to change that?&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://spier.hu/2020/12/level-up-your-innersource-through-patterns&quot;&gt;&lt;img class=&quot;right&quot; src=&quot;/images/2022-06-26-contribute-to-grow/apac-summit-2020-level-up-through-patterns.jpeg&quot; title=&quot;&quot; width=&quot;260&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I had learned a lot faster by actively contributing to the InnerSource Commons. Therefore I tried to share that approach in a presentation called &lt;a href=&quot;https://spier.hu/2020/12/level-up-your-innersource-through-patterns&quot;&gt;Level up your InnerSource through Patterns&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Together with Fei Wan from Comcast we presented this topic at the &lt;a href=&quot;https://innersourcecommons.org/events/isc-apac-dec-2020/&quot;&gt;ISC APAC Summit&lt;/a&gt;. Our talk was streamed at offices of Tecent, where 1000+ developers were exposed to the ideas of InnerSource, many of them for the first time.&lt;/p&gt;

&lt;p&gt;I also joined the Marketing &amp;amp; Outreach Working Group, to see if we could find ways to reach a larger audience. We redesigned the website, organized Community Calls, and so forth. Practicing these marketing activities at the Commons gave me useful material to promote InnerSource at work as well.&lt;/p&gt;

&lt;p&gt;As a result of my larger involvement in the InnerSource Commons, I got invited to join as a &lt;a href=&quot;https://innersourcecommons.org/about/members/&quot;&gt;Member&lt;/a&gt; in 2021.&lt;/p&gt;

&lt;h3 id=&quot;joining-the-board-lets-see-&quot;&gt;Joining the Board: Let’s see :)&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://innersourcecommons.org/about/announcements/2022-05-new-board-and-officers/&quot;&gt;&lt;img class=&quot;right&quot; src=&quot;/images/2022-06-26-contribute-to-grow/2022-05-new-board-and-officers.png&quot; title=&quot;InnerSoure Commons Board 2022&quot; width=&quot;150&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Well, I just joined the &lt;a href=&quot;https://innersourcecommons.org/about/announcements/2022-05-new-board-and-officers/&quot;&gt;Board&lt;/a&gt;, so I cannot speak with much experience yet :)&lt;/p&gt;

&lt;p&gt;However I am certain that I will learn a lot, and that serving on the Board will help me understand InnerSource and the software industry at large better.&lt;/p&gt;

&lt;h3 id=&quot;in-summary&quot;&gt;In Summary&lt;/h3&gt;

&lt;p&gt;I went from &lt;strong&gt;lurker&lt;/strong&gt;, to &lt;strong&gt;contributor&lt;/strong&gt;, to &lt;strong&gt;trusted committer&lt;/strong&gt;, to &lt;strong&gt;Member&lt;/strong&gt;, and finally to the &lt;strong&gt;Board&lt;/strong&gt; of the InnerSource Commons Foundation.&lt;/p&gt;

&lt;p&gt;Every step of the way I was contributing more, and through that also learning more!&lt;/p&gt;

&lt;p&gt;I hope that some of you will find this useful to find your own path in an open (source) community. There is a lot to be gained from it!&lt;/p&gt;

&lt;p&gt;Last but not least: &lt;strong&gt;Thank you&lt;/strong&gt; - to everybody in the InnerSource Commons community who has spoken to me and helped me along the way. This community is full of friendly and helpful people, and am happy to be a part of it.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Level up your InnerSource through Patterns</title>
   <link href="https://spier.hu/2020/12/level-up-your-innersource-through-patterns"/>
   <updated>2020-12-02T00:00:00+00:00</updated>
   <id>https://spier.hu/2020/12/level-up-your-innersource-through-patterns</id>
   <content type="html">&lt;p&gt;I did it again. ;) After &lt;a href=&quot;https://spier.hu/2020/09/presenting-at-the-innersource-commons-2020-fall-summit&quot;&gt;speaking&lt;/a&gt; at the previous InnerSource Commons Summit already, this time around I joined forces with fellow InnerSourcerer Fei Wan from Comcast to present at the &lt;a href=&quot;https://eventyay.com/e/3dbaaa50&quot;&gt;ISC APAC 2020 Summit&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Together where shared how our InnerSource adoption benefitted from Patterns and how we started contributing to the InnerSource Patterns working group.&lt;/p&gt;

&lt;p&gt;Our talk coincided with the release of the &lt;a href=&quot;https://innersourcecommons.gitbook.io/innersource-patterns&quot;&gt;InnerSource Patterns book&lt;/a&gt;, which we hope will make it easier for the community to consume the InnerSource Patterns  and learn from them.&lt;/p&gt;

&lt;p&gt;You find both video and slides of the presentation below.&lt;/p&gt;

&lt;h3 id=&quot;video&quot;&gt;Video&lt;/h3&gt;

&lt;iframe width=&quot;650&quot; height=&quot;365&quot; src=&quot;https://www.youtube.com/embed/vSCR13LF6Ww&quot; frameborder=&quot;0&quot; allow=&quot;accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;

&lt;h3 id=&quot;slides&quot;&gt;Slides&lt;/h3&gt;

&lt;iframe src=&quot;//www.slideshare.net/slideshow/embed_code/key/AtnCZ9Sep9EMEi&quot; width=&quot;650&quot; height=&quot;365&quot; frameborder=&quot;0&quot; marginwidth=&quot;0&quot; marginheight=&quot;0&quot; scrolling=&quot;no&quot; style=&quot;border:1px solid #CCC; border-width:1px; margin-bottom:5px; max-width: 100%;&quot; allowfullscreen=&quot;&quot;&gt; &lt;/iframe&gt;
</content>
 </entry>
 
 <entry>
   <title>Presenting at the InnerSource Commons 2020 Fall Summit</title>
   <link href="https://spier.hu/2020/09/presenting-at-the-innersource-commons-2020-fall-summit"/>
   <updated>2020-09-15T00:00:00+00:00</updated>
   <id>https://spier.hu/2020/09/presenting-at-the-innersource-commons-2020-fall-summit</id>
   <content type="html">&lt;p&gt;Since late 2019 I am a member of the &lt;a href=&quot;https://innersourcecommons.org&quot;&gt;InnerSource Commons&lt;/a&gt;, a community of people passionate about fostering the adoption of &lt;strong&gt;InnerSource&lt;/strong&gt;: the use of Open Source best practices for software development within the confines of an organization .&lt;/p&gt;

&lt;p&gt;When I heard that they were organizing an Online Summit, I decided to throw my hat in the ring and try to get involved as a presenter. This was also motived by my experience at &lt;a href=&quot;/2020/04/biases-busted-at-foss-backstage-2020&quot;&gt;FOSS Backstage&lt;/a&gt; earlier in the year, which I had thoroughly enjoyed.&lt;/p&gt;

&lt;h2 id=&quot;1-year-in-the-innersource-commons-community-getting-your-moneys-worth&quot;&gt;1 year in the InnerSource Commons Community: Getting your money’s worth&lt;/h2&gt;

&lt;p&gt;I got lucky, as my talk proposal got accepted. The topic of my talk was aiming at people like me that were new to a community like this, and didn’t know how to get the most out of their involvement.&lt;/p&gt;

&lt;p&gt;Or in the words of my talk abstract:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Let me make the argument for you: Convince yourself (and your manager) of the benefits of participating in the InnerSource Commons community.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I prepared my slides and the recording for the talk, which got screened at the &lt;a href=&quot;https://innersourcecommons.org/events/isc-fall-2020-agenda/&quot;&gt;InnerSource Commons 2020 Fall Summit&lt;/a&gt; on September 15th.&lt;/p&gt;

&lt;p&gt;Presenting at this conference was a great experience, as I got to practice my presentation skills and it allowed me to get involved even more actively in this fantastic community.&lt;/p&gt;

&lt;p&gt;You find both video and slides of my presentation below.&lt;/p&gt;

&lt;h3 id=&quot;video&quot;&gt;Video&lt;/h3&gt;

&lt;iframe width=&quot;650&quot; height=&quot;365&quot; src=&quot;https://www.youtube.com/embed/2OcnUC-frfg&quot; frameborder=&quot;0&quot; allow=&quot;accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;

&lt;h3 id=&quot;slides&quot;&gt;Slides&lt;/h3&gt;

&lt;iframe src=&quot;//www.slideshare.net/slideshow/embed_code/key/G7JwpBW3zUBnqs&quot; width=&quot;650&quot; height=&quot;365&quot; frameborder=&quot;0&quot; marginwidth=&quot;0&quot; marginheight=&quot;0&quot; scrolling=&quot;no&quot; style=&quot;border:1px solid #CCC; border-width:1px; margin-bottom:5px; max-width: 100%;&quot; allowfullscreen=&quot;&quot;&gt; &lt;/iframe&gt;
</content>
 </entry>
 
 <entry>
   <title>Biases busted at FOSS Backstage 2020</title>
   <link href="https://spier.hu/2020/04/biases-busted-at-foss-backstage-2020"/>
   <updated>2020-04-03T00:00:00+00:00</updated>
   <id>https://spier.hu/2020/04/biases-busted-at-foss-backstage-2020</id>
   <content type="html">&lt;p&gt;I went to &lt;a href=&quot;https://20.foss-backstage.de&quot;&gt;FOSS Backstage&lt;/a&gt; this year. What was planned to be a small conference anyways, became an even smaller event due to the protective measures against COVID-19 in Europe. Some speakers had to opt out, while others presented from remote. It looked like some registered attendees did not show up either, which led to an intimate group of 30-40 people at the event.&lt;/p&gt;

&lt;h2 id=&quot;what-is-foss-backstage&quot;&gt;What is FOSS Backstage?&lt;/h2&gt;

&lt;p&gt;With so many different events around in Tech, every conference looks for its own niche. FOSS Backstage found a great one! Hear it from the organizers themselves:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;[…] discussion and learning about &lt;strong&gt;non-technical aspects of open source development.&lt;/strong&gt; Topics include open source project leadership best practices, community management, open source project metrics, open source strategy for enterprise, adopting open source collaboration in corporations, legal matters when dealing with open source and many more.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;img class=&quot;center no-border&quot; src=&quot;/images/foss-backstage-speakers.jpg&quot; title=&quot;FOSS Backstage 2020 Speakers&quot; /&gt;&lt;/p&gt;

&lt;h2 id=&quot;my-favorite-talks-from-foss-backstage-2020&quot;&gt;My Favorite Talks from FOSS Backstage 2020&lt;/h2&gt;

&lt;p&gt;Let me preface this with: &lt;a href=&quot;https://www.youtube.com/playlist?list=PLq-odUc2x7i_W0roZnlQsoYLUHpbDVadw&quot;&gt;All talks at FOSS Backstage 2020&lt;/a&gt; were interesting in their own right! My greatest respect for anybody that gets on stage to share what they have learned in their respective field.&lt;/p&gt;

&lt;p&gt;For my highlights I picked the ones where the concepts were the most novel to me, or where I simply found the presentation entertaining. In no particular order, these were my favorite talks.&lt;/p&gt;

&lt;h3 id=&quot;why-the-gpl-is-great-for-business&quot;&gt;Why the GPL is great for business&lt;/h3&gt;

&lt;iframe width=&quot;650&quot; height=&quot;365&quot; src=&quot;https://www.youtube.com/embed/DcDKZkDZX24&quot; frameborder=&quot;0&quot; allow=&quot;accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;

&lt;p&gt;In this comparison of licenses and business models in the Open Source world, &lt;a href=&quot;https://twitter.com/jospoortvliet&quot;&gt;Jos Poortvliet&lt;/a&gt; from &lt;a href=&quot;https://nextcloud.com/&quot;&gt;nextcloud.com&lt;/a&gt; concluded that “the best open-source business model is the subscription model”, taking the &lt;a href=&quot;https://twitter.com/stadtlegende/status/1235952008114434049&quot;&gt;acquisition of Red Hat by IBM&lt;/a&gt; as proof for this claim.&lt;/p&gt;

&lt;p&gt;While parts of this talk were hard to follow, as I don’t have enough prior knowledge about software licensing, this was an extremely interesting talk. I enjoyed the business angle of this talk. For any project to be sustainable, money needs to come from somewhere after all.&lt;/p&gt;

&lt;p&gt;Other notes from this talk that need further unpacking (for me):&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;“Some of the differences between GPL and MIT disappear if you don’t enforce it.”&lt;/li&gt;
  &lt;li&gt;The &lt;a href=&quot;https://en.wikipedia.org/wiki/Affero_General_Public_License&quot;&gt;AGPL&lt;/a&gt; is a version of GPL that was meant to be used for the Cloud. Also see &lt;a href=&quot;https://www.gnu.org/licenses/gpl-faq.html&quot;&gt;GNU Licenses FAQ&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;how-to-convince-your-left-brain-or-manager-to-follow-the-open-source-path-that-your-right-brain-desires&quot;&gt;How to convince your left brain (or manager) to follow the Open Source path that your right brain desires.&lt;/h3&gt;

&lt;iframe width=&quot;650&quot; height=&quot;365&quot; src=&quot;https://www.youtube.com/embed/F0SmiQ3SF6Q&quot; frameborder=&quot;0&quot; allow=&quot;accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;

&lt;p&gt;&lt;a href=&quot;https://twitter.com/bdelacretaz&quot;&gt;Bertrand Delacretaz&lt;/a&gt; convinces us of the benefits of contributing to Open Source. His talk is focused on what the individual developer will get out of Open Source for their personal development.&lt;/p&gt;

&lt;p&gt;In short, Open Source contributions lead to:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Better Programmers (important projects; visibility of your contributions; impact)&lt;/li&gt;
  &lt;li&gt;Better Communicators (collaborate asynchronously in low emotional bandwidth environments)&lt;/li&gt;
  &lt;li&gt;Better Persons (working in multi-cultural environments and “traveling the world”)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Great teaser to motivate developers to invest time in Open Source development. Also the delivery by Bertrand was fantastic!&lt;/p&gt;

&lt;h3 id=&quot;blending-open-source-and-corporate-values&quot;&gt;Blending Open Source and Corporate Values&lt;/h3&gt;

&lt;iframe width=&quot;650&quot; height=&quot;365&quot; src=&quot;https://www.youtube.com/embed/hikC6U8X_Ec&quot; frameborder=&quot;0&quot; allow=&quot;accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;

&lt;p&gt;The speaker &lt;a href=&quot;https://twitter.com/cschum&quot;&gt;Cornelius Schumacher&lt;/a&gt; presented how they are bringing an open-source-like culture into the corporate world. He shared the &lt;a href=&quot;http://github.com/dbsystel/open-source-policies/blob/master/DB-Inner-Source-License.md&quot;&gt;InnerSource License&lt;/a&gt; they created to simplify the source code distribution and collaboration on a code level between the companies in their group.&lt;/p&gt;

&lt;p&gt;It was fascinating to see the collaboration problems one has to solve when working in a slightly older business domain, but also in a larger group of companies.&lt;/p&gt;

&lt;p&gt;One key recommendation:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Call it InnerSource! That does not sound threatening to business people. – see &lt;a href=&quot;http://innersourcecommons.org&quot;&gt;innersourcecommons.org&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3 id=&quot;a-community-driven-approach-towards-open-innovation-for-research-communication&quot;&gt;A community-driven approach towards open innovation for research communication&lt;/h3&gt;

&lt;iframe width=&quot;650&quot; height=&quot;365&quot; src=&quot;https://www.youtube.com/embed/yA8BH7AfG6o&quot; frameborder=&quot;0&quot; allow=&quot;accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;

&lt;p&gt;In what was the most intellectually stimulating talk of the conference for me, &lt;a href=&quot;https://twitter.com/emmy_ft&quot;&gt;Emmy Tsang&lt;/a&gt; presented the challenges of the century-old peer review system in science. She went on to explain how &lt;a href=&quot;https://elifesciences.org/&quot;&gt;eLife&lt;/a&gt; is aiming to improve science publishing, technology and research culture.&lt;/p&gt;

&lt;p&gt;Further reading:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://mozilla.github.io/open-leadership-training-series/articles/building-communities-of-contributors/&quot;&gt;Architecture of Participation&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;work open, lead open (WOLO) - &lt;a href=&quot;https://docs.google.com/presentation/d/13NAGmqP_Fb2qjBKePGVZe7awtwnFKZUHtPz8mqbYtsE/present&quot;&gt;slides&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://sustainoss.org/&quot;&gt;sustainoss.org&lt;/a&gt; - What needs to happen, so that Open Source maintainers can work on their projects without burning out and being fairly compensated for their work?&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;my-bias-was-busted&quot;&gt;My Bias was Busted&lt;/h2&gt;

&lt;p&gt;While I have found the ideas of &lt;a href=&quot;https://en.wikipedia.org/wiki/Free_and_open-source_software&quot;&gt;Free and open-source software&lt;/a&gt; (FOSS) interesting for a long time, the sometimes religiously seeming conversations about it had been a turn-off for me. When registering for this event, I was both curious but also a bit worried if I would be able to connect with the line of thinking at this conference.&lt;/p&gt;

&lt;p&gt;My worries were completely unnecessary. I enjoyed the event from beginning to end, found a group of open and caring people, and got to learn many new angles on parts of the software industry that I am not exposed to in my day-to-day work as an Engineering Manager. For me, it was well worth moving out of my comfort zone by attending this event.&lt;/p&gt;

&lt;p&gt;Thank you to the conferences organizers for making this such a great event, and so easy for FOSS outsiders like me to &lt;em&gt;get their bias busted&lt;/em&gt; :)&lt;/p&gt;

</content>
 </entry>
 
 <entry>
   <title>Repo-Rot is Real at RUG::B</title>
   <link href="https://spier.hu/2019/12/repo-rot-is-real-at-rugb"/>
   <updated>2019-12-05T00:00:00+00:00</updated>
   <id>https://spier.hu/2019/12/repo-rot-is-real-at-rugb</id>
   <content type="html">&lt;p&gt;I gave a presentation at the December 2019 Meetup of &lt;a href=&quot;https://www.rug-b.de/events/december-meetup-2019-575&quot;&gt;RUG::B&lt;/a&gt; (the Ruby User Group Berlin).&lt;/p&gt;

&lt;h2 id=&quot;topic-repo-rot-is-real&quot;&gt;Topic: Repo-Rot is Real&lt;/h2&gt;

&lt;p&gt;I help to maintain a GitHub org of 350 engineers and 3100 repos. Often I wonder: What can we do to maintain some sanity with this amount of people, teams, and repos?&lt;/p&gt;

&lt;p&gt;The longer a team exists, the more software components and repos they tend to have. How do you know, which of those are actively maintained, and which ones are not (they are rotting)?&lt;/p&gt;

&lt;p&gt;This talk explored what I call “repo rot”, which effect it has on your team/company, and what you can do about it.&lt;/p&gt;

&lt;p&gt;I also described an experiment that I ran with my teams, and what we learned from it.&lt;/p&gt;

&lt;h2 id=&quot;costs-of-repo-rot&quot;&gt;Costs of Repo-Rot&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;For the Company
    &lt;ul&gt;
      &lt;li&gt;maintaining documentation and security standards becomes harder&lt;/li&gt;
      &lt;li&gt;tedious handover of components&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;For the Team
    &lt;ul&gt;
      &lt;li&gt;Which repos matter for a new hire?&lt;/li&gt;
      &lt;li&gt;Dead code (unused repos) makes code search on GitHub ineffective&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;For the Individual
    &lt;ul&gt;
      &lt;li&gt;Fewer InnerSource contributions (PRs across teams)&lt;/li&gt;
      &lt;li&gt;Broken-Window effect&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;slides&quot;&gt;Slides&lt;/h2&gt;

&lt;p&gt;No video was recorded at the meetup and I didn’t share any slides yet either. However if the topic sounds interesting to you just ask, and I am happy to share more.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>A Simple Tech Stack for your Engineering Blog</title>
   <link href="https://spier.hu/2019/11/a-simple-tech-stack-for-your-engineering-blog"/>
   <updated>2019-11-25T00:00:00+00:00</updated>
   <id>https://spier.hu/2019/11/a-simple-tech-stack-for-your-engineering-blog</id>
   <content type="html">&lt;p&gt;For quite a while I am maintaining the Engineering blog for Meltwater at &lt;a href=&quot;https://underthehood.meltwater.com&quot;&gt;underthehood.meltwater.com&lt;/a&gt;. What flew under the radar for a number of years as a side project, is now pushing out multiple blog posts every month, and is helping the company both externally and internally. The blog attracts 50k unique page views per year, so it looks like the content we share is useful for the readers.&lt;/p&gt;

&lt;p&gt;This post shares the tech stack we use, and the editing process we apply when releasing blog posts. If you want to start an Engineering blog at your company, this post may help you.&lt;/p&gt;

&lt;!-- more --&gt;

&lt;h2 id=&quot;the-tech-stack-of-our-blog&quot;&gt;The Tech Stack of our Blog&lt;/h2&gt;

&lt;p&gt;For our Engineering blog &lt;a href=&quot;https://underthehood.meltwater.com&quot;&gt;underthehood.meltwater.com&lt;/a&gt; we went a bit nerdy. We chose &lt;a href=&quot;https://jekyllrb.com&quot;&gt;jekyll&lt;/a&gt; and &lt;a href=&quot;http://pages.github.com&quot;&gt;GitHub Pages&lt;/a&gt; as our platform. More on the pros and cons of that choice shortly.&lt;/p&gt;

&lt;p&gt;More about the stack:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;CMS&lt;/strong&gt;: We are not using a Content Management System (CMS) but instead &lt;a href=&quot;https://jekyllrb.com&quot;&gt;jekyll&lt;/a&gt; as a static site generator. In essence you feed it markdown files, and it renders HTML out of it.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Theme&lt;/strong&gt;: a custom theme for jekyll (that we built during a hackathon project)&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Hosting&lt;/strong&gt;: &lt;a href=&quot;http://pages.github.com&quot;&gt;GitHub Pages&lt;/a&gt; for hosting the static content. It supports jekyll out of the box, and allows us to host our blog without any additional costs.&lt;/li&gt;
  &lt;li&gt;DNS setup to serve the blog at underthehood.meltwater.com&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;pros-and-cons-of-the-tech-stack&quot;&gt;Pros and Cons of the Tech Stack&lt;/h3&gt;

&lt;p&gt;As a pro our blog loads fast, and is highly available at negligible cost. Getting the same speed and uptime with any CMS rendering the blog dynamically, and involving a database for content storage, would be a lot more work and certainly more expensive.&lt;/p&gt;

&lt;p&gt;The con here is that we cannot do fancy things like loading dynamic content from twitter or GitHub. Quite frankly we don’t need that anyways, hence this approach was right for us.&lt;/p&gt;

&lt;p&gt;Also as markdown and GitHub are well known by our Engineers, we don’t have to explain hardly anything new to them when they want to write a blog post.&lt;/p&gt;

&lt;p&gt;However this can be a gatekeeper for colleagues in Product/UX or other functions in our Product &amp;amp; Engineering department that might not have used markdown and GitHub before. We counteract that with our Editing process (see below).&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://underthehood.meltwater.com&quot;&gt;
	&lt;img class=&quot;center no-border&quot; src=&quot;/images/uth-snapshot-2019-11-19.jpg&quot; title=&quot;underthehood.meltwater.com&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2 id=&quot;editing-and-publishing-process&quot;&gt;Editing and Publishing Process&lt;/h2&gt;

&lt;p&gt;Our approach is simple. We are not the New York Times, so small mistakes are acceptable! :)&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;the author finds a topic to write about (it often starts with nothing more than a comment in Slack, an email, or a corridor conversation)&lt;/li&gt;
  &lt;li&gt;the author writes a draft of their blog post in a Google Doc&lt;/li&gt;
  &lt;li&gt;somebody from their team or I providing feedback for the draft, and clarify the target audience and the main takeaways they author wants to get across&lt;/li&gt;
  &lt;li&gt;once the content is done, we convert the Google Doc to markdown and the author sends a Pull Request to our blog&lt;/li&gt;
  &lt;li&gt;Done! Fame and glory for the author forever :)&lt;/li&gt;
&lt;/ol&gt;

&lt;h2 id=&quot;why-google-docs&quot;&gt;Why Google Docs?&lt;/h2&gt;

&lt;p&gt;&lt;a href=&quot;https://www.google.com/docs/about/&quot;&gt;Google Docs&lt;/a&gt; has great commenting/suggesting features, that make it easy for authors and editors to collaborate. The alternative of writing the post in markdown and then using Pull Requests on GitHub for collaboration is not attractive for us, as it does not make it easy enough to suggest changes inline in the blog post and have a conversation about the content between the authors and editors.&lt;/p&gt;

&lt;p&gt;Additionally Google Docs is well known by everybody in our Product &amp;amp; Engineering department, which lowers the technical barrier of entry for people that want to write a blog post a lot.&lt;/p&gt;

&lt;p&gt;However for the authors that don’t know the markdown format, this also means that somebody has to do the Google Doc to markdown conversion for them. No problem though, as I wrote &lt;a href=&quot;https://github.com/spier/docx2gfm&quot;&gt;docx2gfm&lt;/a&gt;, a little tool that makes this conversion faster.&lt;/p&gt;

&lt;h2 id=&quot;starting-your-own-engineering-blog&quot;&gt;Starting your own Engineering Blog&lt;/h2&gt;

&lt;p&gt;Some developers are already maintaining their personal development blogs. This is great but they often fall short on content, as you can see on my own &lt;a href=&quot;http://spier.hu&quot;&gt;spier.hu&lt;/a&gt; blog. :) So if you are an engineer, why not write a post on your company’s Engineering blog about the topics of your day-to-day work?&lt;/p&gt;

&lt;p&gt;Many companies are already writing about how they are approaching various challenges in their Engineering department, but I think it could be more. We can all learn from each other! So the more honest stories we all put out there about the realities of the software development industry the better.&lt;/p&gt;

&lt;p&gt;If you want to start an Engineering blog similar to &lt;a href=&quot;https://underthehood.meltwater.com&quot;&gt;underthehood.meltwater.com&lt;/a&gt; for your company, I hope you found this post useful. If you want to discuss how to motivate people to write, get buy-in from leadership, and set up tech and process for your blog to be successful, please reach out, I am happy to help!&lt;/p&gt;

&lt;p&gt;PS: I also want to thank Tristan for the design, Alex for helping with the migration to GitHub Pages, Niall for co-maintaining the blog with me for the last 2 years, and the many authors that have provided invaluable feedback throughout the years. You all made this approach work!&lt;/p&gt;

</content>
 </entry>
 
 <entry>
   <title>docx2gfm - Your friendly docx to markdown converter</title>
   <link href="https://spier.hu/2018/12/docx2gfm-your-friendly-docx-to-markdown-converter"/>
   <updated>2018-12-23T00:00:00+00:00</updated>
   <id>https://spier.hu/2018/12/docx2gfm-your-friendly-docx-to-markdown-converter</id>
   <content type="html">&lt;p&gt;I am maintaining the &lt;a href=&quot;https://underthehood.meltwater.com&quot;&gt;Engineering blog for Meltwater&lt;/a&gt;. Our blog uses jekyll and GitHub Pages as the publishing platform.&lt;/p&gt;

&lt;p&gt;In our &lt;a href=&quot;https://spier.hu/2019/11/a-simple-tech-stack-for-your-engineering-blog&quot;&gt;tech stack and publishing process&lt;/a&gt;, the authors and editors use the commenting/suggesting features of Google Docs to collaborate on their blog posts.&lt;/p&gt;

&lt;p&gt;As we use Google Docs for crafting the posts, we convert posts from &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;.docx&lt;/code&gt; to markdown format frequently. I wrote &lt;a href=&quot;https://github.com/spier/docx2gfm&quot;&gt;docx2gfm&lt;/a&gt;, to make this task less tedious and error-prone.&lt;/p&gt;

&lt;p&gt;This post shows how to use &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;docx2gfm&lt;/code&gt; to convert a document from &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;.docx&lt;/code&gt; to markdown (&lt;a href=&quot;https://guides.github.com/features/mastering-markdown/&quot;&gt;github-flavored-markdown&lt;/a&gt;).&lt;/p&gt;

&lt;!-- more --&gt;

&lt;h2 id=&quot;the-original-doc&quot;&gt;The original doc&lt;/h2&gt;

&lt;p&gt;Let’s say you have a document &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;simple-doc.docx&lt;/code&gt; that looks like this:&lt;/p&gt;

&lt;p&gt;&lt;img class=&quot;center&quot; src=&quot;/images/docx2gfm/doc-as-docx.jpg&quot; title=&quot;the original .docx (Google Docs) document&quot; /&gt;&lt;/p&gt;

&lt;h2 id=&quot;turning-this-into-markdown&quot;&gt;Turning this into Markdown&lt;/h2&gt;

&lt;p&gt;With &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;docx2gfm&lt;/code&gt; you can turn &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;simple-doc.docx&lt;/code&gt; into markdown.&lt;/p&gt;

&lt;p&gt;Running this command …&lt;/p&gt;

&lt;div class=&quot;language-shell highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;docx2gfm &lt;span class=&quot;nt&quot;&gt;--no-jekyll&lt;/span&gt; &lt;span class=&quot;nt&quot;&gt;-f&lt;/span&gt; simple-doc.docx
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;… will generate this markdown:&lt;/p&gt;

&lt;div class=&quot;language-markdown highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;nn&quot;&gt;---&lt;/span&gt;
&lt;span class=&quot;na&quot;&gt;title&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s1&quot;&gt;'&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&amp;lt;span&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s&quot;&gt;id=&quot;_iq8c5s4280y5&quot;&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s&quot;&gt;class=&quot;anchor&quot;&amp;gt;&amp;lt;/span&amp;gt;Super&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s&quot;&gt;Simple&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s&quot;&gt;Doc'&lt;/span&gt;
&lt;span class=&quot;nn&quot;&gt;---&lt;/span&gt;

A short intro goes here.

&lt;span class=&quot;gu&quot;&gt;## A headline looks like this&lt;/span&gt;

Let’s see how &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;docx2gfm&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;][&lt;/span&gt;&lt;span class=&quot;ss&quot;&gt;docx2gfm&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt; converts links.

&lt;span class=&quot;gu&quot;&gt;## Emphasize section&lt;/span&gt;

We &lt;span class=&quot;gs&quot;&gt;**may be Bolder**&lt;/span&gt;, we &lt;span class=&quot;ge&quot;&gt;*may be Italian*&lt;/span&gt; (ouch!), we ~~may be on Strike~~, or under the line.

Not all of these work in &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;github-flavored-markdown&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;][&lt;/span&gt;&lt;span class=&quot;ss&quot;&gt;github-flavored-markdown&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt;. This is markup, not &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;text formatting&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;][&lt;/span&gt;&lt;span class=&quot;ss&quot;&gt;text-formatting&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt;.

&lt;span class=&quot;gu&quot;&gt;## How about lists?&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;
-&lt;/span&gt; A list ...
&lt;span class=&quot;p&quot;&gt;
-&lt;/span&gt; … with bullets
&lt;span class=&quot;p&quot;&gt;
1.&lt;/span&gt; Numbered lists …
&lt;span class=&quot;p&quot;&gt;
2.&lt;/span&gt; Are great too!

&lt;span class=&quot;gu&quot;&gt;## An image&lt;/span&gt;

&lt;span class=&quot;nt&quot;&gt;&amp;lt;img&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;src=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;media/image1.png&quot;&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;style=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;width:0.74479in;height:0.74479in&quot;&lt;/span&gt; &lt;span class=&quot;nt&quot;&gt;/&amp;gt;&lt;/span&gt;

Von Ludwigs2 - Eigenes Werk, CC BY-SA 2.5, &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;https://commons.wikimedia.org/w/index.php?curid=6292191&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;][&lt;/span&gt;&lt;span class=&quot;ss&quot;&gt;https://commons.wikimedia.org/w/index.php?curid=6292191&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt;

&lt;span class=&quot;gu&quot;&gt;## Table Tests&lt;/span&gt;

| &lt;span class=&quot;gs&quot;&gt;**TH 1**&lt;/span&gt; | &lt;span class=&quot;gs&quot;&gt;**TH 2**&lt;/span&gt; | &lt;span class=&quot;gs&quot;&gt;**TH 3**&lt;/span&gt; |
|----------|----------|----------|
| TD 1     | TD 2     | TD 3     |

&lt;span class=&quot;gu&quot;&gt;## Quote!&lt;/span&gt;

Every once in a while you need a great quote. To do so, write your quote and then move the indentation level in the Google Doc to the right, as shown below:
&lt;span class=&quot;gt&quot;&gt;
&amp;gt; Blogging is great for your charma.&lt;/span&gt;
&lt;span class=&quot;gt&quot;&gt;&amp;gt;&lt;/span&gt;
&lt;span class=&quot;gt&quot;&gt;&amp;gt; \- Sebastian Spier (2019)&lt;/span&gt;

&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;ss&quot;&gt;docx2gfm&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]:&lt;/span&gt; &lt;span class=&quot;sx&quot;&gt;https://github.com/spier/docx2gfm&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;ss&quot;&gt;github-flavored-markdown&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]:&lt;/span&gt; &lt;span class=&quot;sx&quot;&gt;https://help.github.com/articles/basic-writing-and-formatting-syntax/&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;ss&quot;&gt;text-formatting&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]:&lt;/span&gt; &lt;span class=&quot;sx&quot;&gt;https://softwareengineering.stackexchange.com/questions/207727/why-there-is-no-markdown-for-underline&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;ss&quot;&gt;https://commons.wikimedia.org/w/index.php?curid=6292191&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]:&lt;/span&gt; &lt;span class=&quot;sx&quot;&gt;https://commons.wikimedia.org/w/index.php?curid=6292191&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h2 id=&quot;rendered-markdown-html&quot;&gt;Rendered Markdown (HTML)&lt;/h2&gt;

&lt;p&gt;This markdown will render to HTML similar to this:&lt;/p&gt;

&lt;p&gt;&lt;img class=&quot;center&quot; src=&quot;/images/docx2gfm/doc-as-html.png&quot; title=&quot;the resulting HTML&quot; /&gt;&lt;/p&gt;

&lt;h2 id=&quot;post-processing&quot;&gt;Post Processing&lt;/h2&gt;

&lt;p&gt;You might say that the resulting markdown is not perfect. That is correct, it is not 100% the same &lt;strong&gt;format&lt;/strong&gt; as the original &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;.docx&lt;/code&gt; file.&lt;/p&gt;

&lt;p&gt;Important post-processing that you still need to do:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;set the &lt;strong&gt;title&lt;/strong&gt; of the document. Markdown does not know what to do with the &lt;em&gt;title format&lt;/em&gt; it gets from .docx.&lt;/li&gt;
  &lt;li&gt;move &lt;strong&gt;images&lt;/strong&gt; to the correct directory in your blog and fix the image paths in the markdown&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;in-closing&quot;&gt;In Closing&lt;/h2&gt;

&lt;p&gt;Try out &lt;a href=&quot;https://github.com/spier/docx2gfm&quot;&gt;docx2gfm&lt;/a&gt; if you need to convert from Google Docs or &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;.docx&lt;/code&gt; to markdown frequently. docx2gfm also has features to configure the markdown output e.g. to include a jekyll Front Matter.&lt;/p&gt;

&lt;p&gt;Technically docx2gfm is a thin wrapper around &lt;a href=&quot;https://pandoc.org/installing.html&quot;&gt;pandoc&lt;/a&gt;. Hence big props to the amazing people that built pandoc!&lt;/p&gt;

&lt;p&gt;Open source at it’s best :)&lt;/p&gt;

</content>
 </entry>
 
 <entry>
   <title>Go to Conferences!</title>
   <link href="https://spier.hu/2016/05/go-to-conferences"/>
   <updated>2016-05-31T00:00:00+00:00</updated>
   <id>https://spier.hu/2016/05/go-to-conferences</id>
   <content type="html">&lt;p&gt;&lt;a href=&quot;http://beta.craft-conf.com/&quot;&gt;
&lt;img class=&quot;right&quot; src=&quot;https://underthehood.meltwater.com/images/own/go-to-conferences/craft-conf-logo.png&quot; title=&quot;Craft Conference in Budapest&quot; width=&quot;250&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This April about 40 colleagues from Meltwater went to &lt;a href=&quot;http://beta.craft-conf.com/&quot;&gt;Craft Conference&lt;/a&gt; in Budapest. We did not plan for it that way, but it ended up like a mini kick-off for the Product &amp;amp; Engineering teams in Europe.&lt;/p&gt;

&lt;p&gt;It turned out to be an amazing conference with many great speakers that shared their thoughts about how we can collectively improve our craft and create better products for it.&lt;/p&gt;

&lt;p&gt;Summarizing Craft Conference in this blog post would not do it justice. Instead we want to share our thoughts on why we are sending our people to conferences in the first place.&lt;/p&gt;

&lt;!-- more --&gt;

&lt;h2 id=&quot;external-stimulus-leads-to-better-decisions&quot;&gt;External stimulus leads to better decisions&lt;/h2&gt;

&lt;p&gt;Making good decisions and finding creative solutions to tasks is limited by the amount of information you have readily available to you. Within a small team, typically 5-8 people in our case, it quickly happens that a &lt;a href=&quot;http://whatis.techtarget.com/definition/clan-culture&quot;&gt;clan culture&lt;/a&gt; develops. While strengthening collaboration, clan culture can also can lead to suboptimal decisions due to a lack of diversity in knowledge and opinion.&lt;/p&gt;

&lt;p&gt;Sending team members to conferences to gain external stimulus is a great solution to counteract the negative effects of clan culture. Depending on the conference, team members can gain new ideas and inspiration about process, technology, and any other topics relevant for the team. Armed with these new ideas and inspiration, teams will be able to approach old situations in a new way or try experiments with new technologies.&lt;/p&gt;

&lt;h2 id=&quot;networking---both-external-and-internal&quot;&gt;Networking - Both external and internal&lt;/h2&gt;

&lt;p&gt;&lt;img class=&quot;right&quot; src=&quot;https://underthehood.meltwater.com/images/own/go-to-conferences/IMG_20160428_085735.jpg&quot; width=&quot;400&quot; title=&quot;Photo credit André Laszlo&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Without a doubt, conferences are a great place to recruit and make business connections. However, the emphasis is often put on the &lt;strong&gt;external&lt;/strong&gt; networking benefits. Often ignored are the &lt;strong&gt;internal&lt;/strong&gt; connections within the same company that can be formed through events like this. Building software is all about communication. That being said, having people who have only communicated through phone or video chat, meet face to face and share an experience, only enhances their communication when they return to their day to day.&lt;/p&gt;

&lt;p&gt;When you are talking about a geographically dispersed organisation, like Meltwater, and sending a group of people all to the same place, something magical happens. People form long-lasting bonds and friendships, which make working together easier and more fun! By the way, this is one of our motivations to organize company wide Kick-Off events as well (&lt;a href=&quot;http://raconteur.net/business/the-top-10-perks-naps-yoga-and-sound-therapy&quot;&gt;see benefit 10 here&lt;/a&gt;).&lt;/p&gt;

&lt;h2 id=&quot;keeping-the-momentum&quot;&gt;Keeping the momentum&lt;/h2&gt;

&lt;p&gt;&lt;a href=&quot;https://twitter.com/Remarker_eu/status/731469145611571200&quot;&gt;
&lt;img class=&quot;right&quot; src=&quot;https://underthehood.meltwater.com/images/own/go-to-conferences/great-product-team-successful-product.jpg&quot; width=&quot;400&quot; title=&quot;Fantastic visual notes from craftconf by @Remarker_eu&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Another interesting effect of visiting a conference as a group are the &lt;strong&gt;instant feedback loops&lt;/strong&gt; that emerge between people that are learning about new and exciting concepts together.&lt;/p&gt;

&lt;p&gt;For instance many of us at Craft Conference were inspired by the sessions around &lt;a href=&quot;http://www.svpg.com/product-success&quot;&gt;product discovery and dual track Agile&lt;/a&gt; by Marty Cagan and others. As we saw these talks together, we are able to quickly and clearly communicate about these concepts with each other, while also pushing each other to learn more about these topics and try them out.&lt;/p&gt;

&lt;p&gt;The approach of a shared conference experience is far better than coming back and trying to tell your colleagues about what you learned, because they won’t have the same inspiration that you had when hearing these things live by speakers who really know how to deliver them.&lt;/p&gt;

&lt;p&gt;Also there is more of a drive to move things forward when you return to your work place, as you have now made plans for change together with other people and you will feel accountable to them.&lt;/p&gt;

&lt;p&gt;When you learn things as a group, the inertia from the conference is not as easily lost.&lt;/p&gt;

&lt;h2 id=&quot;represent-your-company-and-pitch-your-product&quot;&gt;Represent your company and pitch your product&lt;/h2&gt;

&lt;p&gt;&lt;a href=&quot;http://www.meltwater.com/products/&quot;&gt;
&lt;img class=&quot;right&quot; src=&quot;https://underthehood.meltwater.com/images/own/product-tab-monitor-pic-3.png&quot; width=&quot;400&quot; title=&quot;The Meltwater Online Media Intelligence Platform&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;People in Product &amp;amp; Engineering often have less face time with their customers than their colleagues in Sales or Marketing. While this might be a challenge in it’s own right, at conferences, you, as an Engineer, are quite obviously representing your company.&lt;/p&gt;

&lt;p&gt;A frequent question that you get asked by other conference goers is &lt;em&gt;“What does your company do?”&lt;/em&gt;. This is a great opportunity to pitch both your company and your product to others.&lt;/p&gt;

&lt;p&gt;What’s even more beneficial: Since people are often from a similar background they are representing the company in a way that other engineers can understand and are interested in. If you send your sales team to have a booth at a conference and sell your product, is not at all the same thing as having an engineer passionately describe the culture of your organisation to another engineer.&lt;/p&gt;

&lt;h2 id=&quot;in-summary&quot;&gt;In summary&lt;/h2&gt;

&lt;p&gt;But but, the costs … (the cost-aware manager says).&lt;/p&gt;

&lt;p&gt;Looking at all the benefits, for us, investing in conferences is often a more impactful way to spend your training budget than sending people to courses etc. If someone is motivated to learn, they will find ways to do it, no matter how. These are the kind of people we have in Meltwater, and these are the kind of &lt;a href=&quot;http://underthehood.meltwater.com/jobs&quot;&gt;people we are looking for&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;We believe that providing initial sparks of ‘new things’ to our employees is one of our most important investments into their development, and conferences are a great way to do this!&lt;/p&gt;

&lt;p&gt;So our recommendation is: &lt;strong&gt;Go to conferences!&lt;/strong&gt;&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Craft Conference 2016 Review</title>
   <link href="https://spier.hu/2016/05/craft-conference-2016-review"/>
   <updated>2016-05-08T00:00:00+00:00</updated>
   <id>https://spier.hu/2016/05/craft-conference-2016-review</id>
   <content type="html">&lt;p&gt;This April me and many colleagues from &lt;a href=&quot;http://meltwater.com&quot;&gt;Meltwater&lt;/a&gt; went to &lt;a href=&quot;http://beta.craft-conf.com/&quot;&gt;Craft Conference&lt;/a&gt; in Budapest. While I was typing up my notes, I figured I might as well share them publicly.&lt;/p&gt;

&lt;p&gt;The talks below are ordered by my preference i.e. if you trust my judgement, then start viewing them from the top.&lt;/p&gt;

&lt;p&gt;What you might get out of this:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;a list of talks that I thoroughly enjoyed (I only summarized those)&lt;/li&gt;
  &lt;li&gt;video links, twitter handles of the presenters, and slides for the talks where available&lt;/li&gt;
  &lt;li&gt;direct quotes and some of my notes and opinions about these talks&lt;/li&gt;
  &lt;li&gt;references for further reading&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Some of my notes might not make sense out of context, so continue at your own risk :)&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/craft2016/craft-park.jpg&quot; alt=&quot;Craft Conference 2016&quot; /&gt;&lt;/p&gt;

&lt;h1 id=&quot;great-product-team-successful-product-closing-keynote-day-1&quot;&gt;Great Product Team, Successful Product (closing keynote day 1)&lt;/h1&gt;

&lt;p&gt;&lt;a href=&quot;https://twitter.com/cagan&quot;&gt;Marty Cagan&lt;/a&gt; (Silicon Valley Product Group)&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://beta.craft-conf.com/speaker/MartyCagan&quot;&gt;Craft Profile&lt;/a&gt;,
&lt;a href=&quot;http://www.svpg.com/product-success&quot;&gt;Slides&lt;/a&gt;,
&lt;a href=&quot;http://www.ustream.tv/recorded/86159035&quot;&gt;Video&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Marty gave an eye opening talk about what he considers key ingredients of great product teams. He summarizes them very well in this &lt;a href=&quot;http://www.svpg.com/product-success&quot;&gt;blog post “product success”&lt;/a&gt;, so I will only add some additional notes below.&lt;/p&gt;

&lt;p&gt;His overall statement is that while many companies follow agile principles during the development phase, the rest of their process of building software products is still more waterfall than anything else. (I believe elsewhere I also heard &lt;em&gt;Water-Scrum-Fall&lt;/em&gt; as a term.)&lt;/p&gt;

&lt;p&gt;Marty emphasized the importance of connecting the team directly with the customer. Only then can the whole team help to contribute to the solution, instead of just acting like an internal agency.&lt;/p&gt;

&lt;p&gt;To keep the team on track towards their shared goal, one needs a &lt;em&gt;clear vision (inspiring) and strategy (intentional)&lt;/em&gt;. Having this can also be a great hiring tool for a company!&lt;/p&gt;

&lt;p&gt;Instead of pretending we know what we are building, we should focus on quick discovery, and risk assessment. Risks may come in different forms but for example:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/craft2016/remarker-risks.jpg&quot; alt=&quot;Risks&quot; /&gt;
(Photo credit: &lt;a href=&quot;https://twitter.com/Remarker_eu/status/725737216404819968&quot;&gt;@Remarker_eu&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;Some setup elements that make it easier for teams to become great:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Durable (team together a longer time and a lot)&lt;/li&gt;
  &lt;li&gt;Co-located&lt;/li&gt;
  &lt;li&gt;Chemistry/ camaraderie - we need a safe place to share ideas&lt;/li&gt;
  &lt;li&gt;Skill-set diversity&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And lastly a couple of references:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;http://www.amazon.de/Sprint-solve-problems-test-ideas/dp/0593076117&quot;&gt;Google Ventures - Sprint&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.scrumalliance.org/community/articles/2014/december/dual-track-scrum&quot;&gt;Dual Track Scrum&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://www.svpg.com/discovery-vs-delivery&quot;&gt;Discovery vs. Delivery&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h1 id=&quot;thick-data-and-analysis-engineering-with-a-capital-e&quot;&gt;“Thick” Data and Analysis: Engineering with a capital E&lt;/h1&gt;

&lt;p&gt;&lt;a href=&quot;https://twitter.com/allspaw&quot;&gt;John Allspaw&lt;/a&gt; (Etsy)&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://beta.craft-conf.com/speaker/JohnAllspaw&quot;&gt;Craft Profile&lt;/a&gt;,
Slides (not published as of May 8th),
&lt;a href=&quot;http://www.ustream.tv/recorded/86966452&quot;&gt;Video&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;John took a highly data-driven approach in analysing what happens while we work as a software developer. How do we debug problems? What works, and what doesn’t? How do we learn from this?&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Not everything that counts, can be counted. Not everything that can be counted, counts. (John Allspaw)&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The overall point he was trying to get across:  We need more people to explore what actually happens (below the cover) when we build software. More people need to write books about this topic!&lt;/p&gt;

&lt;p&gt;His many references included:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;His thesis &lt;a href=&quot;http://bitly.com/AllspawThesis&quot;&gt;http://bitly.com/AllspawThesis&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;Walter G. Vincenti - What engineers know, and how they know it&lt;/li&gt;
  &lt;li&gt;Julian Orr - Talking about machines / &lt;a href=&quot;http://elearnmag.acm.org/featured.cfm?aid%3D2037936&quot;&gt;Review&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;img src=&quot;/images/craft2016/allspaw.jpg&quot; alt=&quot;Allspaw&quot; /&gt;&lt;/p&gt;

&lt;h1 id=&quot;psychological-aspects-of-estimating&quot;&gt;Psychological Aspects of Estimating&lt;/h1&gt;

&lt;p&gt;&lt;a href=&quot;https://twitter.com/josephpelrine&quot;&gt;Joseph Pelrine&lt;/a&gt; (MetaProg GmbH)&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://beta.craft-conf.com/speaker/JosephPelrine&quot;&gt;Craft Profile&lt;/a&gt;,
&lt;a href=&quot;https://www.dropbox.com/s/m5j76jx2bnnbczs/PAENotes.pdf?dl%3D0&quot;&gt;Slides&lt;/a&gt; - requested via jpelrine@sendyourslides.com / subject: PAE,
&lt;a href=&quot;http://www.ustream.tv/recorded/86177623&quot;&gt;Video&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Joseph delivered a rather uncommon talk for a technology conference but that is probably what made it so great. He focused on how we typically do estimations in software development teams, and which biases we have when we do this.&lt;/p&gt;

&lt;p&gt;Even more impactful for me however was the following quote:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;If we find that our language (in software) is reducing our ability to communicate with our customers, then that is the problem we should solve. (Joseph Pelrine)&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This resonated a lot with me. Truly great product teams need a healthy amount of communication with customers and other business stakeholders. Hence finding a common language between both worlds is very important. Last but not least as &lt;em&gt;the language we speak influences the way we think&lt;/em&gt;.&lt;/p&gt;

&lt;h1 id=&quot;embracing-uncertainty-why-you-should-and-why-you-wont-keynote&quot;&gt;Embracing uncertainty: Why you should and why you won’t (Keynote)&lt;/h1&gt;

&lt;p&gt;&lt;a href=&quot;https://twitter.com/tastapod&quot;&gt;Dan North&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://beta.craft-conf.com/speaker/DanNorth&quot;&gt;Craft Profile&lt;/a&gt;,
&lt;a href=&quot;https://speakerdeck.com/tastapod/embracing-uncertainty&quot;&gt;Slides&lt;/a&gt;,
&lt;a href=&quot;http://www.ustream.tv/recorded/86148915&quot;&gt;Video&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Dan is a very engaging speaker. I attended his workshop as well, and many of his ideas center around this quote, which takes quite a bit of unpacking:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Sustainably reduce lead time to business impact. (Dan North)&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;In his talk he focused on how uncomfortable we are with uncertainty, and how this need for creating certainty may lead to dysfunctions in our software development processes.&lt;/p&gt;

&lt;p&gt;Most noteworthy for me, he mentioned that measuring “proxy metrics” can negatively impact the behavior of your team. Make sure you know why you are measuring what, and what you are doing with this number. (e.g. velocity is a pure capacity planning metric but has nothing to do with performance)&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/craft2016/north.jpg&quot; alt=&quot;Dan North&quot; /&gt;&lt;/p&gt;

&lt;h1 id=&quot;deploying-and-scaling-microservices&quot;&gt;Deploying and Scaling Microservices&lt;/h1&gt;

&lt;p&gt;&lt;a href=&quot;https://twitter.com/samnewman&quot;&gt;Sam Newman&lt;/a&gt; (ThoughtWorks)&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://beta.craft-conf.com/speaker/SamNewman&quot;&gt;Craft Profile&lt;/a&gt;,
&lt;a href=&quot;http://www.slideshare.net/spnewman/deploying-and-scaling-microservices&quot;&gt;Slides&lt;/a&gt;,
&lt;a href=&quot;http://www.ustream.tv/recorded/87127615&quot;&gt;Video&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Sam gave an overview talk, starting from artifacts and how you might build them and ending with deployment platforms for containers. It suspect that for people will experience in container deployment, this talk didn’t have much new. However as an overview talk into the topic I found it helpful.&lt;/p&gt;

&lt;p&gt;He reviewed different techniques of artifact creation, along these 4 guiding principles:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Easy to create&lt;/li&gt;
  &lt;li&gt;Easy to deploy&lt;/li&gt;
  &lt;li&gt;Abstracts out the tech stack&lt;/li&gt;
  &lt;li&gt;Good for dev, good for ops&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;According to Sam the vendor lock-in of the deployment platforms is not that big of a problem, as the decision of where you run mesos or kubernetes is yours. (amazon ECS, Windows Azure, google cloud, …).&lt;/p&gt;

&lt;p&gt;Some of the relevant technologies to read up on in this field are: &lt;a href=&quot;https://www.docker.com/&quot;&gt;Docker&lt;/a&gt;, &lt;a href=&quot;http://mesos.apache.org/&quot;&gt;mesos&lt;/a&gt;, &lt;a href=&quot;http://kubernetes.io/&quot;&gt;kubernetes&lt;/a&gt;&lt;/p&gt;

&lt;h1 id=&quot;architecture-without-architects&quot;&gt;Architecture without architects&lt;/h1&gt;

&lt;p&gt;&lt;a href=&quot;https://twitter.com/martinfowler&quot;&gt;Martin Fowler&lt;/a&gt; (ThoughtWorks) &amp;amp; &lt;a href=&quot;https://twitter.com/erikdoe&quot;&gt;Erik Dörnenburg&lt;/a&gt; (ThoughtWorks)&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://beta.craft-conf.com/speaker/MartinFowler&quot;&gt;Craft Profile Martin Fowler&lt;/a&gt;,
&lt;a href=&quot;http://beta.craft-conf.com/speaker/ErikDornenburg&quot;&gt;Craft Profile Erik Dörnenburg&lt;/a&gt;,
Slides (not published as of May 8th),
&lt;a href=&quot;http://www.ustream.tv/recorded/86152575&quot;&gt;Video&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;After their talk I didn’t necessarily have an answer to how to achieve “architecture without architects” but they certainly provided interesting stimuli. Martin and Erik view the role of an &lt;em&gt;architect as somebody that improves other developers&lt;/em&gt;, and not somebody that draws diagrams.&lt;/p&gt;

&lt;p&gt;Can we imagine a system where adding new features becomes easier, the older the system is? If that is the case, then we have to assume that some architectural thinking was applied.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Build upon each others work, with local rules and an evolutionary architecture (Martin Fowler &amp;amp; Erik Dörnenburg)&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;One more instructive comment for me was that each microservice should contain part of UI composition and API gateway, as the team that builds this service has the required domain expertise. Interesting thought, now I am just wondering how to do this :smiley:&lt;/p&gt;

&lt;h1 id=&quot;the-technical-debt-trap&quot;&gt;The Technical Debt Trap&lt;/h1&gt;

&lt;p&gt;&lt;a href=&quot;https://twitter.com/DocOnDev&quot;&gt;Michael (Doc) Norton&lt;/a&gt; (CTO2)&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://beta.craft-conf.com/speaker/DocNorton&quot;&gt;Craft Profile&lt;/a&gt;,
&lt;a href=&quot;https://speakerdeck.com/docondev/the-technical-debt-trap&quot;&gt;Slides&lt;/a&gt; (further references from cto2@sendyourslides.com / TechnicalDebt),
&lt;a href=&quot;http://www.ustream.tv/recorded/86180723&quot;&gt;Video&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Doc Norton, one of the better known names in the conference circuit, gave a presentation about how to deal with evolving code bases.&lt;/p&gt;

&lt;p&gt;Doc believes that &lt;em&gt;cleaning sprint&lt;/em&gt; or &lt;em&gt;hardening sprint&lt;/em&gt; don’t work. Instead we should use the boy scout rule and apply it to our code (“Always leave the campground cleaner than you found it”).&lt;/p&gt;

&lt;p&gt;As a simple but good enough proxy metric of code complexity he suggests lines of code.&lt;/p&gt;

&lt;p&gt;And finally this quote that will make a lot of developers happy:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Never ask for permission to do your job correctly. (Doc Norton)&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h1 id=&quot;building-scalable-stateful-services&quot;&gt;Building Scalable Stateful Services&lt;/h1&gt;

&lt;p&gt;&lt;a href=&quot;https://twitter.com/caitie&quot;&gt;Caitie McCaffrey&lt;/a&gt; (Twitter)&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://beta.craft-conf.com/speaker/CaitieMcCaffrey&quot;&gt;Craft Profile&lt;/a&gt;,
&lt;a href=&quot;https://speakerdeck.com/caitiem20/craftconf-2016-building-scalable-stateful-services&quot;&gt;Slides&lt;/a&gt;,
Video (not published as of May 8th)&lt;/p&gt;

&lt;p&gt;In her talk, Caitie was able to break down a rather complex topic into digestible pieces. Her excellent slides helped with this a lot as well!&lt;/p&gt;

&lt;p&gt;There is much more information in the slides than what I can repeat here but one important comment was that &lt;em&gt;stateless services still have state (but it’s outside your service)&lt;/em&gt;.&lt;/p&gt;

&lt;h1 id=&quot;scaling-engineering-culture&quot;&gt;Scaling Engineering Culture&lt;/h1&gt;

&lt;p&gt;&lt;a href=&quot;https://twitter.com/raffi&quot;&gt;Raffi Krikorian&lt;/a&gt; (Uber)&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://beta.craft-conf.com/speaker/RaffiKrikorian&quot;&gt;Craft Profile&lt;/a&gt;,
Slides (not published as of May 8th),
&lt;a href=&quot;http://www.ustream.tv/recorded/86155322&quot;&gt;Video&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Raffi could unfortunately not be at the conference in person but even the remove presentation was good. I didn’t take that many notes but my key take-aways were:&lt;/p&gt;

&lt;p&gt;What feedback loops do you have in place about your Engineering culture? What do they tell you?&lt;/p&gt;

&lt;p&gt;Be careful when rewriting software:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;business moves on (if it takes them too long)&lt;/li&gt;
  &lt;li&gt;engineers feel terrible, as they want to deliver but it isn’t possible&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Show (to you company) what (business) impact great engineering culture has. Tell the story!&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/craft2016/caitie.jpg&quot; alt=&quot;Catie McCaffrey&quot; /&gt;&lt;/p&gt;

&lt;h1 id=&quot;monitoring-as-a-service---modernity-and-self-service&quot;&gt;Monitoring as a Service - Modernity and Self-Service&lt;/h1&gt;

&lt;p&gt;&lt;a href=&quot;https://twitter.com/kartar&quot;&gt;James Turnbull&lt;/a&gt; (Kickstarter)&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://beta.craft-conf.com/speaker/JamesTurnbull&quot;&gt;Craft Profile&lt;/a&gt;,
Slides (not published as of May 8th),
&lt;a href=&quot;http://www.ustream.tv/recorded/86180736&quot;&gt;Video&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;James suggests to make interactions between Operations and Development happen when there is no conflict, i.e. when there is no production escalation. Sounds like solid advice :smirk:&lt;/p&gt;

&lt;p&gt;Know that you are not the only customer of your monitoring. Find the others and understand the different needs. Then use different visualizations, e.g. consoles and graphs, for different purposes.&lt;/p&gt;

&lt;h1 id=&quot;toward-better-design-and-code---a-case-study-with-pelikan-cache&quot;&gt;Toward Better Design and Code - A Case Study with Pelikan Cache&lt;/h1&gt;

&lt;p&gt;&lt;a href=&quot;https://twitter.com/thinkingfish&quot;&gt;Yao Yue&lt;/a&gt; (Twitter)&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://beta.craft-conf.com/speaker/YaoYue&quot;&gt;Craft Profile&lt;/a&gt;,
&lt;a href=&quot;http://twitter.github.io/pelikan/talks/craft-2016/&quot;&gt;Slides&lt;/a&gt;,
&lt;a href=&quot;http://www.ustream.tv/recorded/86184979&quot;&gt;Video&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Yao talked about a case study at Twitter but while doing that also explored general principles of writing and re-writing software. Her overall approach is that software should be modified by &lt;em&gt;evolution, not revolution&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;She finds it dangerous to aim for a &lt;em&gt;better solution&lt;/em&gt;. According to her &lt;em&gt;we cannot always afford ‘better’. Do good first, then make it better.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Yao also mentioned that their team would not have been able to design pelikan, without first using all the other technologies that pelikan is abstracting from. So in short, you cannot shortcut the learnings that need to be made. Damn!&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Every Product Company needs Corporate Innovation Days!</title>
   <link href="https://spier.hu/2015/11/every-product-company-needs-corporate-innovation-days"/>
   <updated>2015-11-19T00:00:00+00:00</updated>
   <id>https://spier.hu/2015/11/every-product-company-needs-corporate-innovation-days</id>
   <content type="html">&lt;p&gt;I am part of a small team that organizes a company internal innovation event for our 100+ man strong development organization. I have been part of this so called Innovation Day (iDay) from the very beginning, therefore I want to share how such an event can impact the culture of a company.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;&lt;strong&gt;TL;DR&lt;/strong&gt; If you are a product company, developing any type of custom software, and you don’t have an event that taps into the creativity of your engineers: Change that today! It is worth every penny!&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;img src=&quot;/images/innovation-chalkboard.jpg&quot; alt=&quot;Every Product Company needs Corporate Innovation Days&quot; /&gt;&lt;/p&gt;

&lt;h2 id=&quot;innovation-day-setup&quot;&gt;Innovation Day Setup&lt;/h2&gt;

&lt;p&gt;So what is an Innovation Day? In other places these events are called hackathon or hackday. Some corporate examples are the &lt;a href=&quot;http://investor.google.com/corporate/2004/ipo-founders-letter.html&quot;&gt;google 20% day&lt;/a&gt;, &lt;a href=&quot;https://corporate.zalando.com/en/zalando-technology-startet-mit-ueber-100-projektideen-die-dritte-hack-week&quot;&gt;zalando hack week&lt;/a&gt; and many others. Fundamentally they are all the same: Allow your engineers to work on projects of their own liking for a fixed amount of time, typically outside of the context of their team.&lt;/p&gt;

&lt;p&gt;We kept the concept both simple and open:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;work on a project of your own liking for 1 day (the projects typically still end up at least somewhat related to the domain in which our company operates)&lt;/li&gt;
  &lt;li&gt;submit your project if you feel you have something worthwhile submitting (otherwise you can also continue on the next iDay)&lt;/li&gt;
  &lt;li&gt;share the projects with the whole organization for public voting. this determines the overall ‘winner’ of the event&lt;/li&gt;
  &lt;li&gt;next to the public voting, a jury picks a couple of projects in different categories e.g. &lt;em&gt;biggest productivity improvement&lt;/em&gt;, or &lt;em&gt;most flashy UI&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;By design, we took every single iDay as an experiment. Much like in the agile development paradigm, we used the retrospective learnings from each event, to make the next event better, more fulfilling for the participants, and more beneficial for the company.&lt;/p&gt;

&lt;h2 id=&quot;learnings&quot;&gt;Learnings&lt;/h2&gt;

&lt;p&gt;Some of the areas that have been positively impacted by these Innovation Days:&lt;/p&gt;

&lt;p&gt;The creativity of that many people puts a lot of interesting projects in your pipeline. Hence we had to revisit our &lt;strong&gt;innovation capitalization process&lt;/strong&gt; quite a bit. Every time we were reviewing the submissions from our engineers, we were trying to figure out how to best make these projects flow into existing or new products.&lt;/p&gt;

&lt;p&gt;Many engineers were experimenting with internal APIs and tools unrelated to their normal work responsibilities. Over time this started to foster an &lt;strong&gt;internal open source mentality&lt;/strong&gt; in the company, which helped to improve the quality of API documentation and the way we think about services in general.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Communication and collaboration.&lt;/strong&gt; We saw increased discussions between Engineering and Sales about projects coming out of iDay. New collaborations started within Engineering because people from different teams were now working on the same project for a day. The communication between Engineering and Product benefitted from these events as well, because both teams could discuss new ideas independent of any organizational boundaries.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Engineering efficiency&lt;/strong&gt; got a boost from our iDay activities too. Tools were developed to better align the development guidelines across teams, to get more out of our communication tools (HipChat bot anybody?), or to inspect the internal data structures of our Search Engine.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Culture and Fun.&lt;/strong&gt; iDays have helped to bring our teams together in a fun, shared global experience. They even had some ripple effects into other departments, which also started to experiment with similar concepts.&lt;/p&gt;

&lt;h2 id=&quot;summary&quot;&gt;Summary&lt;/h2&gt;

&lt;p&gt;In case your company develops custom software, and you don’t have any type of event that taps into the creativity of your engineers yet, then I hope that this post has you wondering if you should change that.&lt;/p&gt;

&lt;p&gt;I would be very happy to hear about your experiences with similar concepts at your place of work!&lt;/p&gt;

&lt;p&gt;Photo credit: &lt;a href=&quot;https://www.flickr.com/photos/hamptonroadspartnership/5351622529/in/photolist-99UsVX-jG7N41-9YeFZb-8rgt6g-dnf1dp-GFPQG-yCLzTp-8z476d-c2iCA-cudfXE-8mAPA3-arwdEA-oEdSAd-NyLdP-64bJFy-m1AVzc-tcaTdM-fPzLfG-fPxgdG-fPf3HF-fP8nx5-fNZfZw-fNFnwZ-fNFndp-fNFn5K-fNAW3B-7pqdLo-7s1Rf5-fNTupY-hJwAag-rKxUQS-9AsTM3-oCdSNJ-9Fnidv-cudes3-8mw7NB-oG1mFX-qNSvCx-qukmC2-8eKnR1-hcQKUZ-CWBqU-rygeHG-ct2Gyw-99UsZc-dJpCje-dJv5of-bCMXtc-vQU9H2-mwTFDm&quot;&gt;Missy Schmidt - Innovation chalkboard&lt;/a&gt;&lt;/p&gt;

</content>
 </entry>
 
 <entry>
   <title>BE MORE - Sebastian Spier - Careers at Meltwater</title>
   <link href="https://spier.hu/2014/12/be-more-sebastian-spier-careers-at-meltwater"/>
   <updated>2014-12-02T00:00:00+00:00</updated>
   <id>https://spier.hu/2014/12/be-more-sebastian-spier-careers-at-meltwater</id>
   <content type="html">&lt;p&gt;&lt;img class=&quot;right&quot; src=&quot;https://underthehood.meltwater.com/images/own/be-more-sebastian-spier.jpg&quot; width=&quot;370&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Meltwater recently produced the &lt;strong&gt;BE MORE&lt;/strong&gt; video series that portrays various employees and their different roles in our company.
Sebastian Spier, Development Manager in Berlin, was also interviewed for this series, so that you can learn a bit more about him and the work he and his team do for Meltwater. The video is in German but we are sure that your German is great, right? :)&lt;/p&gt;

&lt;!-- more --&gt;

&lt;p&gt;Also checkout the other videos of the &lt;a href=&quot;https://www.youtube.com/playlist?list=PLPME8DkftSfh4iDhMqGlq-pgjUdNC9KQC&quot;&gt;BE MORE series&lt;/a&gt;, and our &lt;a href=&quot;http://www.meltwater.com/careers/&quot;&gt;careers&lt;/a&gt; site.&lt;/p&gt;

&lt;h1 id=&quot;transcript-interview-sebastian-spier&quot;&gt;Transcript Interview Sebastian Spier&lt;/h1&gt;

&lt;iframe width=&quot;560&quot; height=&quot;315&quot; src=&quot;//www.youtube.com/embed/DuN2Rq2eYc4&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;

&lt;h2 id=&quot;wie-heißt-du-und-seit-wann-bist-du-bei-meltwater&quot;&gt;Wie heißt du, und seit wann bist du bei Meltwater?&lt;/h2&gt;

&lt;p&gt;Ich bin Sebastian Spier und ich bin seit 2008 bei Meltwater.&lt;/p&gt;

&lt;p&gt;Ich habe zunächst Germanistik und Sportwissenschaft studiert, weil ich Journalist werden wollte, aber dann habe ich umgesattelt und an der TU Berlin Informatik studiert.&lt;/p&gt;

&lt;p&gt;Bereits während des Studiums habe ich als Software Entwickler in unterschiedlichen Unternehmen gearbeitet. Nach dem Studium war ich dann Wissenschaftlicher Mitarbeiter an der TU Berlin. Dabei ging es im Schwerpunkt um die Erforschung von besseren Suchalgorithmen.&lt;/p&gt;

&lt;h2 id=&quot;warum-meltwater&quot;&gt;Warum Meltwater?&lt;/h2&gt;

&lt;p&gt;Ich habe damals nach einer Herausforderung gesucht, die mich ins Ausland bringt. Deswegen war für mich die internationale Ausrichtung der Firma sehr wichtig. Ende 2007 bin ich dann bei einer Firmenkontaktmesse auf Meltwater aufmerksam geworden, und zwar über MEST, das Non-For-Profit Programm von Meltwater in Ghana und so habe ich dann Anfang 2008 als Teaching Fellow in Ghana angefangen.&lt;/p&gt;

&lt;h2 id=&quot;was-ist-deine-jetzige-rolle&quot;&gt;Was ist deine jetzige Rolle?&lt;/h2&gt;

&lt;p&gt;Momentan bin ich Development Manager für Self-Service und Mobile Applications und ich leite hier zwei Entwicklungsteams in Berlin.&lt;/p&gt;

&lt;p&gt;Die Kultur in Engineering ist sehr von unmittelbaren Zielen getrieben. Das heißt wir wollen immer versuchen die Weiterentwicklung so unmittelbar wie möglich an die Kunden weiterzugeben. Das ist für Softwareentwickler sehr befriedigend, weil wir einfach sehr kurzfristig sehen, was die Auswirkungen von unserer Arbeit bei den Kunden sind.&lt;/p&gt;

&lt;h2 id=&quot;nach-welchen-eigenschaften-suchst-du-beim-einstellen&quot;&gt;Nach welchen Eigenschaften suchst du beim Einstellen?&lt;/h2&gt;

&lt;p&gt;Wenn ich einstelle, dann suche ich auf der einen Seite nach Fähigkeiten, die ich konkret für mein Team brauche, auf der anderen Seite suche ich aber ganz bewusst nach Leuten die bereit sind Feedback aufzunehmen.&lt;/p&gt;

&lt;p&gt;Also wenn ich sehe, dass jemand vielleicht schon zu sehr in seinen festen Denkmustern steckt und sich da nicht mehr rausholen lässt, dann wäre das für unsere Teams kein guter Fit.&lt;/p&gt;

&lt;h2 id=&quot;welche-qualitäten-sind-bei-meltwater-gefragt&quot;&gt;Welche Qualitäten sind bei Meltwater gefragt?&lt;/h2&gt;

&lt;p&gt;Ich denke das Wichtigste, wenn man bei Meltwater anfängt, ist zum Teil zu vergessen, was man vorher für Erfahrungen gemacht hat und einfach wirklich offen zu sein um neue Erfahrungen reinzulassen.&lt;/p&gt;

&lt;p&gt;Meltwater ist sehr gut darin Feedback zu geben an Menschen und auch sehr direktes. Sowohl positives, wie auch konstruktives. Ich denke, wenn man dazu bereit ist, und wirklich offen machen kann um das anzunehmen, kann man einfach in kurzer Zeit unglaublich viel lernen.&lt;/p&gt;

</content>
 </entry>
 
 <entry>
   <title>6 Good Reasons to Study Computer Science</title>
   <link href="https://spier.hu/2014/11/6-good-reasons-to-study-computer-science"/>
   <updated>2014-11-18T00:00:00+00:00</updated>
   <id>https://spier.hu/2014/11/6-good-reasons-to-study-computer-science</id>
   <content type="html">&lt;p&gt;&lt;img src=&quot;https://spier.hu/images/code2.jpg&quot; style=&quot;float: right; margin-left:20px; height:260px;&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Software development is a great profession! One way to get a sound footing in this field is a major in computer science. Unfortunately there are various biases against both the profession and the major which is why there are way too few freshman. Therefore I am making the case for new ways to pitch the software development profession and with that motivate students to study computer science.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Disclaimer: I never thought I would ever write a “x reasons to do y” post but the computer science major needs some serious marketing!&lt;/p&gt;

&lt;p&gt;Recently I was talking to a friend who is a doctor that had issues to get her medical studies accredited in Germany. It struck me how comparably easy things are in my profession, which is software development. While doing some further research on the subject I realized that there is an unfortunate combination of negative bias and missing education about the software development profession, which is also contributing to too few freshman starting university studies relevant for the software development industry.&lt;/p&gt;

&lt;p&gt;As I have been working in this industry for a couple of years now, and feel strongly that this is a great field, I want to excite people about our profession, because it is a really great one, once you get to know it!&lt;/p&gt;

&lt;p&gt;So here 6 good reasons to study computer science:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;Working abroad is easy!&lt;/strong&gt; You need to speak English, and you are pretty much good to go. In the EU you can travel freely, and fairly easy get the necessary papers to work in any of the EU countries. Non-EU citizens can get a blue card, given that they have a degree of higher education. Even getting a working visa in the US is doable, although that takes a bit more effort from what I hear.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Teams are &lt;strong&gt;intercultural by default&lt;/strong&gt;. Due to shortages in qualified applicants, companies consider a wider geographic audience than in other professions. It is common to work in teams where every colleague represents another nation. That adds a lot of energy to the team dynamics. :smile:&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;You can &lt;strong&gt;switch between domains&lt;/strong&gt; because software is now used everywhere. Education, banking, government, gaming, manufacturing … you name it. All these industries are buying and building software these days, so you can choose an industry that you are excited about. In other words, what you do now, doesn’t necessarily determine what you will do in 10 years from now.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;Working from everywhere&lt;/strong&gt; is not a far-fetched illusion in the IT field. Some companies go as far as making office work entirely optional, although I personally don’t consider that an efficient approach. In any case, working remotely for a couple of days here and there usually isn’t a problem.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Software is still a &lt;strong&gt;young and developing profession&lt;/strong&gt; and you have many opportunities to actively shape this industry. Contribute to open source projects, organize conferences, and work in your local communities. Want to use your skills to find other ways to make a difference and do something good? There are an abundance of ways to do that.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;Financing your studies&lt;/strong&gt; yourself is doable. There are many student jobs that you can do, even while still in your undergrads. Especially once you have your first programming experiences, many companies have jobs that you can apply for.&lt;/p&gt;
  &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Excited yet? You should be! Talk to teachers, doctors, and people in other professions and I believe you will find that the IT industry is uniquely positioned in many different ways!&lt;/p&gt;

&lt;p&gt;One last thing: It isn’t exclusively about programming! Really, it isn’t! So if you have an interest in this field, you should get more information and explore the different opportunities that it offers. If you need it, I am &lt;a href=&quot;https://twitter.com/sebastianspier&quot;&gt;happy to help&lt;/a&gt;.&lt;/p&gt;

&lt;h2 id=&quot;references&quot;&gt;References&lt;/h2&gt;

&lt;p&gt;In Germany there is an initiative called “&lt;a href=&quot;http://www.informatik-studieren.de&quot;&gt;Informatik studieren&lt;/a&gt;” that aims to motivate more students to study computer science. If you are an experienced IT professional, consider becoming an ambassador for this initiative.&lt;/p&gt;

&lt;p&gt;Image Credit:
Commodore PET computer &lt;a href=&quot;https://www.flickr.com/photos/woolamaloo_gazette/6238597508/&quot;&gt;woolamaloo_gazette @ flickr&lt;/a&gt;&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>eurucamp 2014 retrospective</title>
   <link href="https://spier.hu/2014/08/eurucamp-2014-retrospective"/>
   <updated>2014-08-03T00:00:00+00:00</updated>
   <id>https://spier.hu/2014/08/eurucamp-2014-retrospective</id>
   <content type="html">&lt;p&gt;I am just coming back from &lt;a href=&quot;http://2014.eurucamp.org&quot;&gt;eurucamp 2014&lt;/a&gt;, this year held at &lt;a href=&quot;http://hpi.de&quot;&gt;HPI in Potsdam&lt;/a&gt;. My head is buzzing with all the different concepts I have learnt about and things that I want to try now.&lt;/p&gt;

&lt;p&gt;Just &lt;a href=&quot;/2013/08/eurucamp-2013-retrospective/&quot;&gt;like last year&lt;/a&gt; I collected some notes on the talks I liked most, and also some thoughts about the conference in general.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://spier.hu/images/eurucamp2014-logo.jpg&quot; alt=&quot;eurucamp 2014 logo&quot; /&gt;&lt;/p&gt;

&lt;h1 id=&quot;talks&quot;&gt;Talks&lt;/h1&gt;

&lt;p&gt;There were many good talks, and if I had to pick a best overall, it would probably be Frank Webber’s &lt;em&gt;Utils is a Junk Drawer!&lt;/em&gt; Still there were so many good talks, that I think it si best to highlight some of the good ones in different categories.&lt;/p&gt;

&lt;p&gt;Most fun:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Internet of Dusty Things - &lt;a href=&quot;https://twitter.com/bovensiepen&quot;&gt;Daniel Bovensiepen&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;Let’s build a game with Ruby - &lt;a href=&quot;https://twitter.com/rinpaku&quot;&gt;Rin Räuber&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Most thought provoking:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Utils is a Junk Drawer! - &lt;a href=&quot;https://twitter.com/franklinwebber&quot;&gt;Frank Webber&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;Decentralise ALL THE THINGS! - &lt;a href=&quot;https://twitter.com/halfbyte&quot;&gt;Jan Krutisch&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Most surprizing:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;The Scientific Method of Troubleshooting - &lt;a href=&quot;https://twitter.com/blithe&quot;&gt;Blithe Rocher&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;Take note! - &lt;a href=&quot;https://twitter.com/pippidot&quot;&gt;Såndra Wendebørn&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Last but not least, the best slide came from the &lt;em&gt;Take note!&lt;/em&gt; talk. Too bad I cannot draw like that :)&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://spier.hu/images/eurucamp2014-knife.jpg&quot; alt=&quot;best eurucamp 2014 slides&quot; /&gt;&lt;/p&gt;

&lt;h1 id=&quot;feedback&quot;&gt;Feedback&lt;/h1&gt;

&lt;p&gt;Great talks, great people, great food, great weather, great conference all in all.&lt;/p&gt;

&lt;p&gt;My sincere thanks goes to the eurucamp organizers for making this event happen. I appreciate all the hard work that went into it, and I even took a membership applications for &lt;a href=&quot;http://rubyberlin.org&quot;&gt;Ruby Berlin e.V.&lt;/a&gt;, to see how I can contribute to keep this community as vibrant as it is.&lt;/p&gt;

&lt;p&gt;I also have some constructive feedback:&lt;/p&gt;

&lt;p&gt;For me the &lt;a href=&quot;http://blog.eurucamp.org/2014/07/25/pendelverkehr&quot;&gt;Pendelverkehr&lt;/a&gt; between the two presentation halls didn’t work that well. Especially on day 2, people moving in and out of the rooms created quite a bit of distraction.&lt;/p&gt;

&lt;p&gt;Day 1 had an almost 5 hour long lunch and siesta break. The majority of the activities happened in that time. For me that was too long. Personally I would have preferred to pull some of the evening talks to the front and rather move the activities to the end of the day.&lt;/p&gt;

&lt;p&gt;While I understand that the &lt;a href=&quot;http://2014.eurucamp.org/concept/&quot;&gt;eurucamp concept&lt;/a&gt; is a bit different from a traditional technology conference, I still think that some more technical talks would do the conference good.&lt;/p&gt;

&lt;p&gt;As always with feedback, this is just my personal opinion.&lt;/p&gt;

&lt;p&gt;That said, I will certainly be coming back next eurucamp. This conference has me convinced that speaking at conferences is worthwhile and possible. So thanks to all organizers and speakers for providing that type of platform.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Scrum - The Art of the Possible</title>
   <link href="https://spier.hu/2014/05/scrum-the-art-of-the-possible"/>
   <updated>2014-05-10T00:00:00+00:00</updated>
   <id>https://spier.hu/2014/05/scrum-the-art-of-the-possible</id>
   <content type="html">&lt;p&gt;Writing is a good way for me to digest information, so in this post I am collecting important &lt;em&gt;principles&lt;/em&gt; and &lt;em&gt;practices&lt;/em&gt; of Scrum. Lastly I am listing &lt;em&gt;questions&lt;/em&gt; that I  have about Scrum and &lt;em&gt;references&lt;/em&gt; for further reading.&lt;/p&gt;

&lt;p&gt;If you can only do one thing, watch the video &lt;a href=&quot;https://www.youtube.com/watch?v=502ILHjX9EE&quot;&gt;Agile Product Ownership in a Nutshell&lt;/a&gt;!&lt;/p&gt;

&lt;p&gt;Below you see the city of trees that we built during our two sprints at a ScrumMaster training. Impressive, huh? :-)&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://spier.hu/images/scrum_treecity.jpg&quot; alt=&quot;Building a city in the trees with Scrum&quot; /&gt;&lt;/p&gt;

&lt;h2 id=&quot;scrummaster-training&quot;&gt;ScrumMaster training&lt;/h2&gt;

&lt;p&gt;This week our team attended a &lt;a href=&quot;http://www.agile42.de/de/training/details/40/certified-scrummaster-csm-training-berlin/&quot;&gt;2 day training&lt;/a&gt; by &lt;a href=&quot;https://twitter.com/tumma72&quot;&gt;Andrea Tomasini&lt;/a&gt; and &lt;a href=&quot;https://twitter.com/nverdo&quot;&gt;Niels Verdonk&lt;/a&gt; of agile42, with the eventual goal to become a Certified ScrumMaster. After using Scrum with my teams for the better parts of 2 years, I thought I had a pretty good idea about how Agile and Scrum work. During this training I realized that there are many more things to learn.&lt;/p&gt;

&lt;p&gt;I am collecting bullet points of what I found most interesting, as I don’t have further explanations for most of them. Maybe these notes can still be useful for others to start thinking about Agile and Scrum in new ways.&lt;/p&gt;

&lt;h2 id=&quot;principles&quot;&gt;Principles&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;Don’t focus on the practices. Understand the principles, so that you can adapt the practices as needed.&lt;/li&gt;
  &lt;li&gt;Scrum is a vehicle for teams to practice &lt;em&gt;empirical process control&lt;/em&gt;&lt;/li&gt;
  &lt;li&gt;It aims for transparency, inspectability and adaptability.&lt;/li&gt;
  &lt;li&gt;Software development is not a linear activity, especially when dealing with the uncertainties of building a new product. Trying to force the development into a linear process is therefore counterproductive.&lt;/li&gt;
  &lt;li&gt;Empower the team to find a solution. Finding solutions is a creative activity for which you need to trust the team!&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;practices&quot;&gt;Practices&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;The Scrum framework consists of
    &lt;ul&gt;
      &lt;li&gt;3 roles (product owner, scrum master, development team)&lt;/li&gt;
      &lt;li&gt;3 artifacts (product backlog, sprint backlog, burndown chart)&lt;/li&gt;
      &lt;li&gt;3 ceremonies (sprint planning, daily scrum, sprint review &amp;amp; retrospective)&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;The ScrumMaster focuses on the efficiency of the team, not the usefulness of the product&lt;/li&gt;
  &lt;li&gt;The backlog is the product of the continuous conversation between Scrum Team and stakeholders&lt;/li&gt;
  &lt;li&gt;Items in the backlog have different granularity. Sometimes the granularity of the stories is expressed by different names like User Stories &amp;lt; Epics &amp;lt; Themes.&lt;/li&gt;
  &lt;li&gt;Depending on the main focus of the story, sometimes we differentiate between
    &lt;ul&gt;
      &lt;li&gt;Feature Stories&lt;/li&gt;
      &lt;li&gt;Technical User Story&lt;/li&gt;
      &lt;li&gt;Spike&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;All stories should be as equal as possible in complexity&lt;/li&gt;
  &lt;li&gt;The question “who is doing what” should always be answered as late as possible within a Scrum team&lt;/li&gt;
  &lt;li&gt;Working on 6-10 stories per sprint tends to be a good sized 2 week sprint.&lt;/li&gt;
  &lt;li&gt;A healthy backlog should be DEO
    &lt;ul&gt;
      &lt;li&gt;Detailed appropriately&lt;/li&gt;
      &lt;li&gt;Emergent (continuous / not planned)&lt;/li&gt;
      &lt;li&gt;Ordered&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;A user story needs to be integrated across the whole application layer, as it
    &lt;ul&gt;
      &lt;li&gt;Forces the team to work together cross functionally.&lt;/li&gt;
      &lt;li&gt;Prevents mocking of functionality.&lt;/li&gt;
      &lt;li&gt;Identifies risks earlier&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;questions&quot;&gt;Questions&lt;/h2&gt;

&lt;ol&gt;
  &lt;li&gt;In Scrum we want to get feedback fast, in order to learn and adapt fast as well. At the same time we don’t want to build prototypes but always build production ready quality. Isn’t that a contradiction?&lt;/li&gt;
  &lt;li&gt;How to introduce &lt;em&gt;shared responsibility&lt;/em&gt; in a team, while still getting a sense for the performance of an individual developer?&lt;/li&gt;
  &lt;li&gt;Scrum aims to deliver the highest possible value in each iteration. Does this always have to be business value, or is e.g. learning considered &lt;em&gt;valuable&lt;/em&gt;?&lt;/li&gt;
  &lt;li&gt;Which type of project is Scrum &lt;em&gt;not a good fit&lt;/em&gt; for?&lt;/li&gt;
&lt;/ol&gt;

&lt;h2 id=&quot;references&quot;&gt;References&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;http://www.infoq.com/minibooks/Agile-Transition&quot;&gt;Agile Transition - What you need to know before starting&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=502ILHjX9EE&quot;&gt;Agile Product Ownership in a Nutshell&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://agileatlas.org/&quot;&gt;agileatlas.org&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://www.scrumalliance.org/&quot;&gt;scrumalliance.org&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://www.scrumguides.org&quot;&gt;scrumguides.org&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</content>
 </entry>
 
 <entry>
   <title>Media Hack Day 2014 - How do hackathons work?</title>
   <link href="https://spier.hu/2014/03/media-hack-day-2014-how-hackathons-work"/>
   <updated>2014-03-27T00:00:00+00:00</updated>
   <id>https://spier.hu/2014/03/media-hack-day-2014-how-hackathons-work</id>
   <content type="html">&lt;p&gt;I recently attended &lt;a href=&quot;http://mediahackday.com&quot;&gt;Media Hack Day 2014&lt;/a&gt; at the &lt;a href=&quot;http://www.axelspringerplugandplay.com&quot;&gt;Axel Springer Plug &amp;amp; Play Accelerator&lt;/a&gt; in Berlin. During the event a couple of interesting ideas were proposed and prototyped. You can find all of them, including the app that my team worked on, at the &lt;a href=&quot;https://www.hackerleague.org/hackathons/media-hack-day-2014&quot;&gt;hackerleague site&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://spier.hu/images/mhd_screen.jpg&quot; alt=&quot;Media Hack Day 2014&quot; /&gt;&lt;/p&gt;

&lt;p&gt;It was a great location, good catering, well planned by the organizes and a pretty competitive crowd. So all in all a successful hackathon I believe, although I am not sure what qualifies a successful event from the perspective of the organizer.&lt;/p&gt;

&lt;p&gt;Afterwards I have been reflecting on the event, and I see a couple of areas where the event could have been improved. The paragraphs below summarize my thoughts.&lt;/p&gt;

&lt;h2 id=&quot;focus-output-exchange&quot;&gt;Focus, Output, Exchange&lt;/h2&gt;

&lt;p&gt;At a hackathon, the teams are prototyping ideas, often aiming at a not so well defined goal. At Media Hack Day the mission statement was to &lt;strong&gt;reinvent and reengineer content for the mobile age&lt;/strong&gt;. You can imagine that it is hard for teams to come up with ideas in a short amount of time that are anywhere close to hitting such a goal.&lt;/p&gt;

&lt;p&gt;As the majority of participants at hackathons tends to be developers, and not people with domain expertise (journalists in this case), the ideas are often driven by the developers themselves. Consequently developers are &lt;em&gt;only imagining&lt;/em&gt;, what type of challenges journalists, editors, and publishers might have.&lt;/p&gt;

&lt;p&gt;One possible improvement would be to have presentations by more domain experts at the beginning of a hackathon, to foster a greater amount of direct exchange between both sides, and a more focused ideation process.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://spier.hu/images/mhd_catering.jpg&quot; alt=&quot;Media Hack Day 2014&quot; /&gt;&lt;/p&gt;

&lt;h2 id=&quot;partners-agendas-full-disclosure&quot;&gt;Partners, Agendas, Full Disclosure&lt;/h2&gt;

&lt;p&gt;Hackathons frequently offer special prizes for the use of certain APIs, which are generally the APIs of the partners/sponsors of the hackathon. Other hackathons are even completely focused on the use of a single API. In order for such a setup to work for both API provider and developers, I believe some prerequisites need to be met.&lt;/p&gt;

&lt;p&gt;The &lt;strong&gt;API needs to be ready&lt;/strong&gt;. Ready as in tested, documented, stable, etc. Only if that is the case, then the developers can create something useful on top of the API. If there are too many cases where the developers are facing significant challenges with the API, they will stop using it or just not produce anything interesting.&lt;/p&gt;

&lt;p&gt;The partners need to plan carefully &lt;strong&gt;how to introduce the API to the developers&lt;/strong&gt;. An unfortunate counter-example at this hackathon was &lt;a href=&quot;http://gettyimages.com&quot;&gt;gettyimages&lt;/a&gt;, who decided to show multiple marketing videos during their API introduction. Marketing speech in a hackathon is certainly turning developers down. Instead the partners should help developers understand the potential of their APIs e.g. show existing prototypes, or interesting features of the API, or highlight use cases that the API partner is especially interested in.&lt;/p&gt;

&lt;p&gt;In addition, API partners and sponsors should &lt;strong&gt;be as transparent as possible&lt;/strong&gt; about their own agenda and interests. It is clear that companies would not organize such events if they wouldn’t see any return on investment for them. It is totally fine that these interests exist, as the developers that attend such events have some type of agenda for themselves too - at least that is what I would expect.&lt;/p&gt;

&lt;h2 id=&quot;teams&quot;&gt;Teams&lt;/h2&gt;

&lt;p&gt;Team creation is an important and sometimes complicated topic.&lt;/p&gt;

&lt;p&gt;This hackathon had a &lt;strong&gt;lost souls&lt;/strong&gt; session at the beginning, where all participants that didn’t have a team yet could pitch ideas and form teams. I thought that was a very good idea!&lt;/p&gt;

&lt;p&gt;Other teams had already formed before the event. Some of them were even traveling to Berlin from Poland and other countries, already with an idea in their pocket. This certainly leads to a somewhat uneven setup between the different teams but as long as people don’t show up at hackathons with completely built projects this seems to be fine.&lt;/p&gt;

&lt;h2 id=&quot;ownership-of-data-created&quot;&gt;Ownership of data created&lt;/h2&gt;

&lt;p&gt;When participating in such an event, lots of data about the teams and participants is created. Plenty of pictures are taken, videos are filmed, sometimes even interviews with individual participants are made. One thing that the organizers should do - which was missed at the Media Hack Day as well - was to inform all participants what the material will be used for.&lt;/p&gt;

&lt;p&gt;Just because a developer is signing up for a hackathon, it doesn’t mean that he wants to see his picture in any material used for marketing purposes of the hackathon organizer or the API partners. Again, full disclosure in this regards would help a lot. From talking to the camera man at the event it seems that this type of announcement was planned but I cannot recall it. (In case I was just tired and missed it, sorry :))&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://spier.hu/images/mhd_wall.jpg&quot; alt=&quot;Media Hack Day 2014&quot; /&gt;&lt;/p&gt;

&lt;h2 id=&quot;summary&quot;&gt;Summary&lt;/h2&gt;

&lt;p&gt;In my experience, developers are a fairly forgiving crowd. Often times they are honestly interested in the tools that they are using, hence they just like to build stuff with them. I have also found many to have strong opinions, not only about technology but also about other topics such as politics. Some are even willing to donate their time for a good cause.&lt;/p&gt;

&lt;p&gt;With that in mind, and the fact that most people attending a hackathon should be able to earn more money as a freelancer than the value of the prizes that they might win at the event, it is in the responsibility of the organizer of the event that the hackathon has an as productive and focused outcome as possible.&lt;/p&gt;

&lt;p&gt;I am looking forward to attend more such event. I am also interested to hear what experiences other participants of Media Hack Day 2014 or other hackathons have made. Please leave a comment below if you would like to share your thoughts.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://spier.hu/images/mhd_roof_inverted.jpg&quot; alt=&quot;Media Hack Day 2014&quot; /&gt;&lt;/p&gt;

</content>
 </entry>
 
 <entry>
   <title>eurucamp 2013 retrospective</title>
   <link href="https://spier.hu/2013/08/eurucamp-2013-retrospective"/>
   <updated>2013-08-20T00:00:00+00:00</updated>
   <id>https://spier.hu/2013/08/eurucamp-2013-retrospective</id>
   <content type="html">&lt;p&gt;Wow! &lt;a href=&quot;http://2013.eurucamp.org&quot;&gt;eurucamp 2013&lt;/a&gt; is over, and I left with a lot of new impressions about ruby but even more so about the awesome ruby community in Berlin and Europe. I met rubyists from Hungary, Italy, and Spain and everybody seemed to enjoy the event.&lt;/p&gt;

&lt;p&gt;One of the few things that a particpant of conference can give back is feedback. This is what this post is about.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/eurucamp.jpg&quot; alt=&quot;eurucamp 2013&quot; /&gt;&lt;/p&gt;

&lt;h2 id=&quot;feedback-for-eurucamp-2013&quot;&gt;Feedback for eurucamp 2013&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Location&lt;/strong&gt;. The conference location at &lt;a href=&quot;http://www.hotel-mueggelsee-berlin.de/en&quot;&gt;Hotel Müggelsee&lt;/a&gt; was great. First I thought it might be too far on the outskirts of Berlin but actually that in itself had the benefit of keeping the conference participants together as a group. Some of the other hotel guests probably thought that a radical splitter group of the NSA took over the place, flying and hacking &lt;a href=&quot;http://ardrone2.parrot.com&quot;&gt;AR.Drones&lt;/a&gt;, talking about this strange thing called ruby, and all speaking English. But they will get over it :)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Timing&lt;/strong&gt;. The conference being on the weekend made it easier for me to attend. I often see conference scheduled during weekdays, and while that might have its advantages too, many cannot afford to take vacation for going to a conference.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Affordability&lt;/strong&gt;. The ticket price of about 120 EUR is a very affordable for a 2 1/2 day conference, especially when compared to others. In that context it is even more impressive that coffee, beverages, fruits, small snacks, and lunches were provided. Awesome!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Organization&lt;/strong&gt;. Check-In, sessions, and breaks were all well planned. Generally there was very little confusion about the schedule or what would take place when and where. My only pliece of constructive feedback here is that speakers should stay to their allotted time, in order to respect the overall schedule as much as possible. So the organizers of &lt;a href=&quot;http://rubyberlin.org&quot;&gt;Ruby Berlin e.V.&lt;/a&gt; could be a little bit tougher on the speakers in this regard.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Activities&lt;/strong&gt;. The activies at eurocamp made for a nice compensation for all the sitting. They presented an easy way to get to know other conference participants, that you otherwise might not have interacted with. Thumbs up for that idea!&lt;/p&gt;

&lt;h2 id=&quot;talk-selection&quot;&gt;Talk Selection&lt;/h2&gt;

&lt;p&gt;Simply put: Good work with the talk selection! I am sure that with this variety of talks, everybody found somethink new for her/him.&lt;/p&gt;

&lt;p&gt;Either by design or by accident the Saturday contained most of the less technical talks while Sunday’s talks tended to be more technical.&lt;/p&gt;

&lt;p&gt;Also the topic of diversity carried us through the conference. Not only was it part of the code of conduct - which was explicitly stressed during the opening remarks - but it was also picked up by a couple of speakers afterwards. This definitely contributed to the overall success of the conference as well.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Top Talks&lt;/strong&gt; My favorite talks were:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Once Upon a Time … ruby. by Vicent Martí - &lt;a href=&quot;https://twitter.com/vmg&quot;&gt;@vmg&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;Practice makes perfect? by Ellen König - &lt;a href=&quot;https://twitter.com/ellen_koenig&quot;&gt;@ellen_koenig&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;Debugging Production by Michael Grosser - &lt;a href=&quot;https://twitter.com/grosser&quot;&gt;@grosser&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;img src=&quot;/images/eurucamp-rubyland.jpg&quot; alt=&quot;eurucamp 2013&quot; /&gt;&lt;/p&gt;

&lt;h2 id=&quot;in-summary&quot;&gt;In Summary&lt;/h2&gt;

&lt;p&gt;All in all I had a great time at eurucamp and recommend it highly to everybody. If you get a chance to go next year, do it! For me personally it definitely triggered a greater interest in getting involved with the community of rubyists in the Berlin area. So thanks to everybody who made this event as great as it was!&lt;/p&gt;

</content>
 </entry>
 
 <entry>
   <title>anabin Meta-API</title>
   <link href="https://spier.hu/2013/04/anabin-api"/>
   <updated>2013-04-11T00:00:00+00:00</updated>
   <id>https://spier.hu/2013/04/anabin-api</id>
   <content type="html">&lt;p&gt;The &lt;a href=&quot;http://anabin.kmk.org&quot;&gt;University Database anabin&lt;/a&gt; did not have an API, so I wrote a simple one to demonstrate what cool integrations could be built, if there only was an API. Uses &lt;a href=&quot;https://github.com/intridea/grape&quot;&gt;grape&lt;/a&gt; for the API, &lt;a href=&quot;https://github.com/wordnik/swagger-ui&quot;&gt;swagger-ui&lt;/a&gt; for documentation, and &lt;a href=&quot;https://www.heroku.com&quot;&gt;heroku&lt;/a&gt; for hosting.&lt;/p&gt;

</content>
 </entry>
 
 <entry>
   <title>API for anabin University Database</title>
   <link href="https://spier.hu/2013/04/api-for-anabin-university-database"/>
   <updated>2013-04-11T00:00:00+00:00</updated>
   <id>https://spier.hu/2013/04/api-for-anabin-university-database</id>
   <content type="html">&lt;p&gt;Recently I was using the &lt;a href=&quot;http://anabin.kmk.org/&quot;&gt;University Database anabin&lt;/a&gt; which has rather good data but unfortunately no API. So I wrote a prototypic API to demonstrate what cool integrations could be built, if there only was an API.&lt;/p&gt;

&lt;p&gt;TL;DR Jump to the &lt;a href=&quot;http://anabin-api.herokuapp.com&quot;&gt;demo of the anabin Meta-API&lt;/a&gt; :)&lt;/p&gt;

&lt;h2 id=&quot;what-is-anabin&quot;&gt;What is anabin?&lt;/h2&gt;

&lt;p&gt;If you want to hire candidates from outside of Germany for the German labor market, different rules apply for the Visa process depending on the country of origin. If the candidate comes from outside of the EU, one option is to apply for the so called &lt;a href=&quot;http://en.wikipedia.org/wiki/Blue_Card_(European_Union)&quot;&gt;Blue Card&lt;/a&gt;. One of the requirements for this card is, that the candidate needs a degree from a German university, or from an accredited foreign university. 
&lt;img src=&quot;/images/blue_card_sample.jpg&quot; alt=&quot;Sample Blue Card Germany&quot; /&gt;&lt;/p&gt;

&lt;p&gt;To find out, if the university has been accredited you can use the &lt;a href=&quot;http://anabin.kmk.org/&quot;&gt;University Database anabin&lt;/a&gt;. anabin, which has been &lt;a href=&quot;http://anabin.kmk.org/service/ueber-anabin.html&quot;&gt;built over a period of 10 years&lt;/a&gt;, contains information from around 180 countries, 25 institutions, and 22.000 university degrees.&lt;/p&gt;

&lt;p&gt;(btw &lt;strong&gt;anabin&lt;/strong&gt; stands for “&lt;strong&gt;An&lt;/strong&gt;erkennung und Bewertung &lt;strong&gt;a&lt;/strong&gt;usländischer &lt;strong&gt;B&lt;/strong&gt;ildungs&lt;strong&gt;n&lt;/strong&gt;achweise”. Yes, in Germany we love accronyms!)&lt;/p&gt;

&lt;p&gt;While browsing the database, I noticed a couple of things:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;It is pretty simple to find an institution via the search functionality provided by anabin. Unfortunately there are no permantent links for the university profiles. This is rather unpractical because one cannot set direct links to these profiles, which could for example be practical in order to add it to a persons profile at say &lt;a href=&quot;http://xing.de&quot;&gt;Xing&lt;/a&gt; or &lt;a href=&quot;http://linkedin.com&quot;&gt;LinkedIn&lt;/a&gt;.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Anabin is funded by &lt;a href=&quot;http://www.auswaertiges-amt.de/EN/Startseite_node.html&quot;&gt;Federal Foreign Office (Auswärtiges Amt)&lt;/a&gt;, meaning the creating of this database has essentially been funded by the tax payer. Still it has no API, so that integrating this data in other applications is not possible.&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;ajax-calls-in-anabin&quot;&gt;AJAX calls in anabin&lt;/h2&gt;

&lt;p&gt;While anabin has no official API, it has a site search that uses AJAX calls to dynamically pull new content from the backend to populate the search results table. For example if you search for &lt;strong&gt;London&lt;/strong&gt;, the following AJAX call is triggered.&lt;/p&gt;

&lt;div class=&quot;language-bash highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;http://anabin.kmk.org/index.php
?eID&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;user_anabin_institutionen&amp;amp;conf&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;institutionsergebnisliste
&amp;amp;sEcho&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;20&amp;amp;iColumns&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;13&amp;amp;iDisplayStart&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;0&amp;amp;iDisplayLength&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;10
&amp;amp;bRegex&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;false&lt;/span&gt;&amp;amp;iSortingCols&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;1&amp;amp;iSortCol_0&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;2&amp;amp;sSortDir_0&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;asc&amp;amp;s1&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;London&amp;amp;iDataIds&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;1
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;The JSON structure returned by this AJAX call looks like this:&lt;/p&gt;

&lt;div class=&quot;language-json highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
  &lt;/span&gt;&lt;span class=&quot;nl&quot;&gt;&quot;iTotalDisplayRecords&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;56&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
  &lt;/span&gt;&lt;span class=&quot;nl&quot;&gt;&quot;iTotalRecords&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;27765&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
  &lt;/span&gt;&lt;span class=&quot;nl&quot;&gt;&quot;sEcho&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;20&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
  &lt;/span&gt;&lt;span class=&quot;nl&quot;&gt;&quot;aaData&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
    &lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
      &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;&amp;lt;img style=&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\&quot;&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;cursor:pointer;&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\&quot;&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt; src=/typo3conf/ext/user_anabin/pi1/res/details_open.png&amp;gt;&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
      &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;6714&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
      &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;Goldsmiths College / University of London&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
      &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;London&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
      &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;Hochschule&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
      &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;H+&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
      &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;Großbritannien&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
      &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;0&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
      &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;London&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
      &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;&amp;lt;a href=&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\&quot;&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;javascript:;&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\&quot;&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt; class=&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\&quot;&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;detailLink-institutionen&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\&quot;&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt; data=&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\&quot;&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;1250&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\&quot;&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&amp;gt;University of London&amp;lt;/a&amp;gt;&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
      &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;1250&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
      &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
      &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;3&quot;&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
    &lt;/span&gt;&lt;span class=&quot;p&quot;&gt;],&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
    &lt;/span&gt;&lt;span class=&quot;err&quot;&gt;...&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
  &lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h2 id=&quot;building-a-meta-api&quot;&gt;Building a Meta-API&lt;/h2&gt;

&lt;p&gt;I don’t really want to create an API for anabin, as anabin is best positioned to do that themselves. So consider the following just as a prototype of a Meta-API to anabin, which shall demonstrate what could be done if anabin &lt;em&gt;had&lt;/em&gt; a real API.&lt;/p&gt;

&lt;p&gt;Essentially this is what I did:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;write a ruby wrapper around the AJAX calls that anabin provides (using &lt;a href=&quot;https://github.com/intridea/grape&quot;&gt;grape&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;added a user friendly API documentation (using the great &lt;a href=&quot;https://github.com/wordnik/swagger-ui&quot;&gt;swagger-ui&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;hosting it on &lt;a href=&quot;https://www.heroku.com&quot;&gt;heroku&lt;/a&gt;, so that everybody can access it easily&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So go ahead and check out the &lt;a href=&quot;http://anabin-api.herokuapp.com&quot;&gt;demo of the Meta-API&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://anabin-api.herokuapp.com&quot; target=&quot;_blank&quot;&gt;
&lt;img class=&quot;noborder&quot; src=&quot;/images/anabin-meta-api-swagger.png&quot; alt=&quot;anabin meta API&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;While doing this I also converted the JSON structure into a bit more meaningful form, by adding more verbose identifiers.&lt;/p&gt;

&lt;div class=&quot;language-json highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
  &lt;/span&gt;&lt;span class=&quot;nl&quot;&gt;&quot;uid&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;6714&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
  &lt;/span&gt;&lt;span class=&quot;nl&quot;&gt;&quot;name&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;Goldsmiths College / University of London&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
  &lt;/span&gt;&lt;span class=&quot;nl&quot;&gt;&quot;location&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;London&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
  &lt;/span&gt;&lt;span class=&quot;nl&quot;&gt;&quot;type&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;Hochschule&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
  &lt;/span&gt;&lt;span class=&quot;nl&quot;&gt;&quot;status&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;H+&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
  &lt;/span&gt;&lt;span class=&quot;nl&quot;&gt;&quot;country&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;Großbritannien&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
  &lt;/span&gt;&lt;span class=&quot;nl&quot;&gt;&quot;other_fields&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
    &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;0&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
    &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;London&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
    &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;&amp;lt;a href=&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\&quot;&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;javascript:;&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\&quot;&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt; class=&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\&quot;&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;detailLink-institutionen&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\&quot;&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt; data=&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\&quot;&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;1250&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\&quot;&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&amp;gt;University of London&amp;lt;/a&amp;gt;&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
    &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;1250&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
    &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
    &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;3&quot;&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
  &lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h2 id=&quot;integration-of-anabin-into-other-services&quot;&gt;Integration of anabin into other services&lt;/h2&gt;

&lt;p&gt;So now it is up to you guys! Who integrates anabin into another service first?
I would for example love to see a little icon next to every university name on &lt;a href=&quot;http://linkedin.com&quot;&gt;LinkedIn&lt;/a&gt; that indicates, which &lt;strong&gt;blue card accreditation&lt;/strong&gt; this university has. Just saying! :)&lt;/p&gt;

&lt;p&gt;Now there is an API for anabin, so have fun hacking :)&lt;/p&gt;

&lt;p&gt;P.S.: If you should need it, here is the &lt;a href=&quot;https://github.com/spier/anabin-api&quot;&gt;source code&lt;/a&gt; of the Meta-API.&lt;/p&gt;

&lt;p&gt;Images Credit:
&lt;a href=&quot;http://commons.wikimedia.org/wiki/File:Blaue_Karte_EU.jpg&quot;&gt;blue card&lt;/a&gt;&lt;/p&gt;

</content>
 </entry>
 
 <entry>
   <title>Technical Book Review: Universalcode</title>
   <link href="https://spier.hu/2013/03/book-review-universal-code"/>
   <updated>2013-03-10T00:00:00+00:00</updated>
   <id>https://spier.hu/2013/03/book-review-universal-code</id>
   <content type="html">&lt;p&gt;These days I am reading the German book &lt;a href=&quot;http://www.book2look.com/vbook.aspx?id=cgsLIlErZ5&quot;&gt;Universalcode&lt;/a&gt; - “Journalismus im digitalen Zeitalter” (journalism in a digital age). On 580 pages it contains articles by &lt;a href=&quot;http://universal-code.de/das-projekt-universalcode/die-autoren/&quot;&gt;many journalists&lt;/a&gt;, working for some of the major German publications.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/universalcode_cover.png&quot; alt=&quot;Universalcode&quot; /&gt;&lt;/p&gt;

&lt;p&gt;All in all it is a pretty interesting read. Especially for me, as I am dealing with online articles at work daily, so learning more about the creative process that goes into them is quite exciting.&lt;/p&gt;

&lt;p&gt;While I don’t qualify to comment on the content on the book, I am a technologist, and therefore have a couple of ideas about how the digital edition of the book - which I bought - could be improved.&lt;/p&gt;

&lt;h2 id=&quot;do-not-use-bolde-for-ebooks&quot;&gt;Do not use bol.de for ebooks&lt;/h2&gt;

&lt;p&gt;Unrelated to the actual technical book review, and therefore separate: Do not use bol.de for ebooks.&lt;/p&gt;

&lt;p&gt;First of all, buying the book at &lt;a href=&quot;http://www.bol.de&quot;&gt;bol.de&lt;/a&gt; and getting it to run on my iPad was a rather painful experience. The format of the ebook was .acsm, a digital rights management format by Adobe. To make that work on the iPad, I need a new reader - I chose &lt;a href=&quot;http://www.bluefirereader.com&quot;&gt;Bluefire Reader&lt;/a&gt; - that can handle that format. My conclusion for the next buy: Don’t use bol.de for ebooks, checkout the iBooks bookstore first!&lt;/p&gt;

&lt;p&gt;Question: Does anybody have the ebook from iBooks? I am wondering if my review below would actually look different, had I not bought the book from bol.de.&lt;/p&gt;

&lt;h2 id=&quot;technical-book-review&quot;&gt;Technical Book Review&lt;/h2&gt;

&lt;p&gt;Now to the technical review of the digital version of this book:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;The &lt;strong&gt;formatting&lt;/strong&gt; of the book is rather minimal. Really just paragraphs, section titles, and bullet points. From time to time some italics, even bold or underlined text isn’t used much.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;The book contains no &lt;strong&gt;graphics&lt;/strong&gt; whatsoever. Meaning neither any data visualization (like charts etc) or any other sort of imagery.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;I read three articles so far and have already spotted a handful of &lt;strong&gt;errors&lt;/strong&gt; of various sorts. Definitely more than I would usually expect in a book, after proofreading and quality control.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;The book rarely uses direct &lt;strong&gt;links&lt;/strong&gt; to websites or similar. Additional multimedia material does not seem to be available either. The book’s website &lt;a href=&quot;http://abzv-universalcode.de&quot;&gt;abzv-universalcode.de&lt;/a&gt; has some content but the relation between website and book isn’t quite clear.&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;summary&quot;&gt;Summary&lt;/h2&gt;

&lt;p&gt;The digital version of this book costs about 20 EUR. Almost too much, when what I am getting is more like a PDF with a list of articles.&lt;/p&gt;

&lt;p&gt;My recommendation: Practice what you preach! Take the digital version of this book, and make it an example of great digital publishing!&lt;/p&gt;

&lt;p&gt;I just saw that there is a crowdfunding initiative with the working title &lt;a href=&quot;http://www.blog-cj.de/blog/2013/02/25/universalcode-2-es-geht-los-wenn-ihr-wollt/&quot;&gt;Universalcode 2&lt;/a&gt; - a potential success of this book. Maybe some of these hints here are helpful for that as well.&lt;/p&gt;

</content>
 </entry>
 
 <entry>
   <title>Developer Challenges – Lessons Learned</title>
   <link href="https://spier.hu/2013/01/developer-challenges-lessons-learned"/>
   <updated>2013-01-18T00:00:00+00:00</updated>
   <id>https://spier.hu/2013/01/developer-challenges-lessons-learned</id>
   <content type="html">&lt;p&gt;&lt;img class=&quot;right&quot; src=&quot;/images/springerquotes/springer_logo.png&quot; alt=&quot;Springer Logo&quot; width=&quot;70&quot; /&gt;&lt;/p&gt;

&lt;p&gt;In 2011 I participated in the 1st ever Springer API Challenge. Here is what I learned about developer challenges in general and how they can be beneficial for both developers and companies.&lt;/p&gt;

&lt;!-- more --&gt;

&lt;h2 id=&quot;what-is-the-springer-api-challenge&quot;&gt;What is the Springer API Challenge?&lt;/h2&gt;

&lt;p&gt;&lt;a href=&quot;http://www.springer.com/&quot;&gt;Springer&lt;/a&gt; is a publishing house with 5500 employees and a yearly revenue of 850 Mil EUR - in short they are not small. They are focusing on scientific publications in German speaking countries.&lt;/p&gt;

&lt;p&gt;At the end of 2010 Springer decided to open up access to their scientific content (mainly articles and images) via an API. In order to motivate developers to create innovative applications around their services, they set up the Springer API Challenge.&lt;/p&gt;

&lt;h2 id=&quot;springer-quotes&quot;&gt;Springer Quotes&lt;/h2&gt;

&lt;p&gt;&lt;img class=&quot;right&quot; src=&quot;/images/springerquotes/springerquotes.png&quot; alt=&quot;Springer Quotes&quot; width=&quot;300&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Even before the Springer API Challenge, I had frequently read about similar development contests, and had been curious to find out what developers and companies get out of them. So when I saw that Springer would host such a challenge, I thought I should give it a try, to find out if I could come up with something that Springer would consider prize worthy.&lt;/p&gt;

&lt;p&gt;The application I came up with is called Springer Quotes. Springer Quotes is a single purpose application: It lets you search articles from Springer’s open access journals. When you find a particularly interesting section in an article you can create quotes from paragraphs or individual sentences, and share these quotes with others directly via the web.&lt;/p&gt;

&lt;p&gt;Although Springer Quotes has a rather niche use case, Springer apparently liked it, as they &lt;a href=&quot;http://www.springer.com/about+springer/media/pressreleases?SGWID=1-11002-6-1184221-0&quot;&gt;awarded it with the 1st prize&lt;/a&gt; (press release in German). Other contestants developed KontentLinks (now &lt;a href=&quot;http://kleenk.com/&quot;&gt;kleenk.com&lt;/a&gt;), which lets you create more meaningful links between articles, and &lt;a href=&quot;http://journalsuggest.appspot.com&quot;&gt;JournalSuggest&lt;/a&gt; which helps scientists to publish their papers to the right Journal.&lt;/p&gt;

&lt;h2 id=&quot;lessons-learned&quot;&gt;Lessons Learned&lt;/h2&gt;

&lt;p&gt;Here a couple of thoughts, after taking part in the API Challenge:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;[participants] Be a doer&lt;/strong&gt;: It is always worthwhile to invest energy and time into something that you are genuinely interested in. Even without the extra bonus of winning something, taking part in this contest taught me a lot, both in terms of development skills, and focusing on what I considered important in order to convince the Springer jury.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;[companies] Know your objectives&lt;/strong&gt;: A developer challenge like this is not the right thing for every product/service. Before setting up such a contest, companies need to make sure that they know their objectives very clearly. One important aspect is, to find ways to channel the creativity of the contestants in the right direction, in order to get the most out of the investment.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;[companies] Engage with the community&lt;/strong&gt;: During the contest the participating developers will have a lot of questions. Make sure that before starting the contest you have the tools and resources in place to keep up with the increased community communication.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;[companies] Use the results&lt;/strong&gt;: Before starting, you should know how you want to use the results of the contest. Do you want to try to integrate them into existing products, build new products out of it, or just use the contest for PR purposes?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;img src=&quot;/images/springerquotes/springerquotes_document.png&quot; alt=&quot;Springer Quotes Document Example&quot; width=&quot;400&quot; /&gt;&lt;/p&gt;

&lt;p&gt;What about Springer? What did they get out of this? I don’t know it for a fact but at least they liked the API Challenge 1.0 enough to launch the &lt;a href=&quot;http://dev.springer.com/&quot;&gt;Springer API Challenge 2.0&lt;/a&gt; a year later. So apparently it wasn’t that bad for them either.&lt;/p&gt;

&lt;p&gt;So much for Springer Quotes. Unfortunately the App is no longer online but you can take a look at the &lt;a href=&quot;https://github.com/spier/springerquotes&quot;&gt;source code&lt;/a&gt; on github.&lt;/p&gt;

&lt;p&gt;Final remarks: If you are a developer and have some spare time, just try yourself in a developer challenge. It is a lot of fun!&lt;/p&gt;

</content>
 </entry>
 
 <entry>
   <title>Zeitly</title>
   <link href="https://spier.hu/2012/12/zeitly"/>
   <updated>2012-12-01T00:00:00+00:00</updated>
   <id>https://spier.hu/2012/12/zeitly</id>
   <content type="html">&lt;p&gt;Weekend project that uses the &lt;a href=&quot;http://developer.zeit.de/index&quot;&gt;ZEIT ONLINE Contet API&lt;/a&gt; to answer these questions:
Which authors haven written for DIE ZEIT and ZEIT ONLINE in which year?
How often have their articles been mentioned on Twitter, Facebook, etc?&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>I/O Docs for ZEIT ONLINE Content API</title>
   <link href="https://spier.hu/2012/11/iodocs-zonapi"/>
   <updated>2012-11-25T00:00:00+00:00</updated>
   <id>https://spier.hu/2012/11/iodocs-zonapi</id>
   <content type="html">&lt;p&gt;An alternative to the official API Explorer of the &lt;a href=&quot;http://developer.zeit.de/index/&quot;&gt;ZEIT ONLINE Content-API&lt;/a&gt; Explorer, based on &lt;a href=&quot;http://www.mashery.com/product/io-docs&quot;&gt;mashery’s I/O Docs&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Also see related &lt;a href=&quot;http://spier.hu/2012/11/iodocs-for-zeit-online-content-api/&quot;&gt;blog post&lt;/a&gt;.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>I/O Docs for ZEIT ONLINE Content API</title>
   <link href="https://spier.hu/2012/11/iodocs-for-zeit-online-content-api"/>
   <updated>2012-11-25T00:00:00+00:00</updated>
   <id>https://spier.hu/2012/11/iodocs-for-zeit-online-content-api</id>
   <content type="html">&lt;p&gt;One of the big German newspapers &lt;a href=&quot;http://www.zeit.de&quot;&gt;ZEIT&lt;/a&gt; has just launched the &lt;a href=&quot;http://developer.zeit.de/index/&quot;&gt;ZEIT ONLINE Content-API&lt;/a&gt;. The API gives developers access to the metadata of ZEIT articles, ranging back to 1946.&lt;/p&gt;

&lt;p&gt;I am excited to see that such a renowned newspaper is showing some guts by entering the API world. Even &lt;a href=&quot;http://blog.programmableweb.com/2012/01/09/how-many-newspapers-have-an-api/&quot;&gt;globally&lt;/a&gt;, this is still an innovative step, as ZEIT is now the first German newspaper to have an API, if I am not mistaken.&lt;/p&gt;

&lt;h2 id=&quot;alternative-to-the-api-explorer&quot;&gt;Alternative to the API Explorer&lt;/h2&gt;

&lt;p&gt;So what can I do?&lt;/p&gt;

&lt;p&gt;The API is still in beta, so it should be expected that some bugs still need to be ironed out. This is one of the many areas in which external developers can help to improve the API, by writing many small prototypes and hence identifying these bugs early on.&lt;/p&gt;

&lt;p&gt;ZEIT is providing an &lt;a href=&quot;http://developer.zeit.de/explorer/&quot;&gt;API Explorer&lt;/a&gt;, which makes it easier for developers to test API calls. The problem is often that such an explorer (also known as API console) is maintained separately from the documentation of the API. Due to this separation, documentation and actual implementation of the API are often out of sync.&lt;/p&gt;

&lt;p&gt;Therefore I have implemented an alternative to the official API Explorer, based on &lt;a href=&quot;http://www.mashery.com/product/io-docs&quot;&gt;mashery’s I/O Docs&lt;/a&gt;. I/O Docs brings API documentation and API console closer together, and thereby mitigates the described risks of outdated documentation.&lt;/p&gt;

&lt;p&gt;Take a look at the &lt;a href=&quot;http://bit.ly/zeitapi-iodocs&quot;&gt;I/O Docs for the ZEIT API&lt;/a&gt; and let me know what you think.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/zeitapi-iodocs.png&quot; alt=&quot;Zeit API i/o docs&quot; /&gt;&lt;/p&gt;

&lt;h2 id=&quot;further-comments&quot;&gt;Further comments&lt;/h2&gt;

&lt;p&gt;For the lack of a better place to post my comments about the API, I am posting them here.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;the /content endpoint misses documentation for &lt;strong&gt;sort&lt;/strong&gt; and &lt;strong&gt;fq&lt;/strong&gt;&lt;/li&gt;
  &lt;li&gt;the /product/{id} endpoint misses documentation for the search parameters&lt;/li&gt;
  &lt;li&gt;some endpoints that allow searches are missing the &lt;strong&gt;operator&lt;/strong&gt; parameter (although it is probably allowed)&lt;/li&gt;
  &lt;li&gt;the /series/{id} endpoint does not work at all. Error: “Due to an internal error the request could not be fulfilled.”&lt;/li&gt;
  &lt;li&gt;the documentation states possible keyword types as: location, person, organisation or issue. When searching for keywords I also see &lt;strong&gt;subject&lt;/strong&gt; though.&lt;/li&gt;
  &lt;li&gt;the documentation of the search query syntax (parameter &lt;strong&gt;q&lt;/strong&gt;) is not sufficient. It looks like under the hood Lucene is being used but that is just a guess.&lt;/li&gt;
  &lt;li&gt;potentially the calls /author/{id}, /department/{id}, /keyword/{id}, /product/{id}, and /series/{id} should all be grouped below the content endpoint, as all of them are returning articles. The documentation is confusing as it e.g. states “Get keyword by ID”, although the API call returns articles and not keywords.&lt;/li&gt;
  &lt;li&gt;documentation of the &lt;strong&gt;id&lt;/strong&gt; parameter is missing. This parameter is part of the path, and not part of the query but nevertheless it is a parameter.&lt;/li&gt;
  &lt;li&gt;what are the maximum values for &lt;strong&gt;limit&lt;/strong&gt; and &lt;strong&gt;offset&lt;/strong&gt;?&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;conclusion&quot;&gt;Conclusion&lt;/h2&gt;

&lt;p&gt;Both from private explorations as well as from my work at &lt;a href=&quot;http://www.meltwater.com/&quot;&gt;Meltwater&lt;/a&gt; - who among others offers &lt;a href=&quot;http://www.meltwater.com/products/meltwater-news/&quot;&gt;media monitoring solutions&lt;/a&gt; - I know that the relationship between content providers and companies that offer services around this content can be difficult.&lt;/p&gt;

&lt;p&gt;Also for this reason I hope that the ZEIT will reap many benefits from launching their Content API. This kind of openness will eventually benefit the API owner, the industry around it, and last but not least the content consumers i.e. readers. I am looking forward to the increased dialogue between publishers and developers and all the good things that will come out of that.&lt;/p&gt;

&lt;p&gt;So, ZEIT ONLINE, good luck with the API :)&lt;/p&gt;

</content>
 </entry>
 
 <entry>
   <title>Guest Blog Post at the Yahoo Developer Network</title>
   <link href="https://spier.hu/2012/11/guest-blog-post-at-yahoo-developer-network"/>
   <updated>2012-11-06T00:00:00+00:00</updated>
   <id>https://spier.hu/2012/11/guest-blog-post-at-yahoo-developer-network</id>
   <content type="html">&lt;p&gt;I am very excited that Yahoo gave me the opportunity to write a guest blog post about YQL at the Yahoo Developer Network. The post I cam up with is called &lt;a href=&quot;http://yhoo.it/Viz91B&quot;&gt;YQL – The Swiss army knife of web services&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Also check out the geeky graphic they came up with (Photo by by &lt;a href=&quot;http://www.flickr.com/photos/phploveme/&quot;&gt;Jinho.Jung&lt;/a&gt;).&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;http://ydn.zenfs.com/blogs/1/YDN_knife.jpg&quot; alt=&quot;YQL – The Swiss army knife of web services&quot; /&gt;&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Tesseract for Zugmonitor</title>
   <link href="https://spier.hu/2012/03/tesseract-zugmonitor"/>
   <updated>2012-03-26T00:00:00+00:00</updated>
   <id>https://spier.hu/2012/03/tesseract-zugmonitor</id>
   <content type="html">&lt;p&gt;This demo applies the concept from 
&lt;a href=&quot;http://square.github.com/tesseract/&quot; target=&quot;_blank&quot;&gt;Tesseract Airline on-time performance&lt;/a&gt; 
to the train data of 
&lt;a href=&quot;http://zugmonitor.sueddeutsche.de/&quot; target=&quot;_blank&quot;&gt;Zugmonitor&lt;/a&gt;. Zugmonitor is an application that provides data about delays in the Germany Railways.
The coordinated visualizations (built with &lt;a href=&quot;http://mbostock.github.com/d3/&quot; target=&quot;_blank&quot;&gt;D3&lt;/a&gt;) show nearly 60,000 train connections from early 2012 (data courtesy of &lt;a href=&quot;http://www.opendatacity.de/&quot; target=&quot;_blank&quot;&gt;OpenDataCity&lt;/a&gt;).&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Writing for ProgrammableWeb</title>
   <link href="https://spier.hu/2012/02/writing-for-programmableweb"/>
   <updated>2012-02-03T00:00:00+00:00</updated>
   <id>https://spier.hu/2012/02/writing-for-programmableweb</id>
   <content type="html">&lt;p&gt;Since January I am writing for &lt;a href=&quot;http://www.programmableweb.com/profile/spier&quot;&gt;ProgrammableWeb&lt;/a&gt; in my spare time.
Although my main area of experience is the Tech industry, I have always enjoyed writing, so publishing articles at ProgrammableWeb gives me the opportunity to expose the content I write to a much larger audience, and get into discussions with a lot of people about topics that I am very interested in.&lt;/p&gt;

&lt;p&gt;The first two articles I wrote for ProgrammableWeb are:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;http://bit.ly/wd6LWM&quot;&gt;How Many Newspapers Have an API?&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://bit.ly/wDFgY0&quot;&gt;German Press Release Service Offers API&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;On the flip side this also means that I will have less time to write articles on &lt;a href=&quot;http://spier.hu&quot;&gt;spier.hu&lt;/a&gt;. Instead I will regularly link to my articles from here that get published on &lt;a href=&quot;http://www.programmableweb.com&quot;&gt;ProgrammableWeb&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Really looking forward to this new experience!&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>API Console with ioDocs</title>
   <link href="https://spier.hu/2011/10/api-console-with-iodocs"/>
   <updated>2011-10-23T00:00:00+00:00</updated>
   <id>https://spier.hu/2011/10/api-console-with-iodocs</id>
   <content type="html">&lt;p&gt;Finally I had a chance to play around with &lt;a href=&quot;http://mashery.com&quot;&gt;Mashery&lt;/a&gt;’s &lt;a href=&quot;http://developer.mashery.com/iodocs&quot;&gt;ioDocs&lt;/a&gt;, which Mashery has &lt;a href=&quot;http://mashery.com/press/release/iodocs.html&quot;&gt;open sourced&lt;/a&gt; some months back. ioDocs has a couple of prerequisites, namely Node.js, npm (Node package manager), and Redis (you can find full installation instructions on the &lt;a href=&quot;https://github.com/mashery/iodocs&quot;&gt;ioDocs github project&lt;/a&gt;). Nevertheless, I struggled through the installation process, as I wanted to see how it compares with the &lt;a href=&quot;http://spier.hu/2011/10/apigee-console-for-rubygems-api/&quot;&gt;API Console from Apigee&lt;/a&gt; which I wrote about a week ago.&lt;/p&gt;

&lt;p&gt;I chose the &lt;a href=&quot;http://developer.usatoday.com/docs/read/articles&quot;&gt;USA TODAY Articles API&lt;/a&gt; as my guinea pig for this experiment because just yesterday I &lt;a href=&quot;http://bit.ly/otN0XX&quot;&gt;wrote a set of YQL tables&lt;/a&gt; for that API, so I already knew the API documentation pretty well.&lt;/p&gt;

&lt;p&gt;After changing a couple of configuration settings (in JSON files) I had a new API Console running in ioDocs. It took me a bit of experimenting to get things running but all in all maybe 30 minutes, which is not bad at all. The image below shows how my ioDocs for the USA TODAY Articles API ended up.&lt;/p&gt;

&lt;p&gt;Here a couple of notes I have about &lt;a href=&quot;http://developer.mashery.com/iodocs&quot;&gt;ioDocs&lt;/a&gt;:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;plus
    &lt;ul&gt;
      &lt;li&gt;The UI of ioDocs is really slick, thumbs up! I especially like that there is plenty of room for documentation. Bonus points for the ability to provide pre-populated drop downs via &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;EnumeratedList&quot;:[&quot;json&quot;, &quot;rss&quot;]&lt;/code&gt;. Very cool!&lt;/li&gt;
      &lt;li&gt;I am very surprised that USA TODAY does not have ioDocs on there Developer page. It would make experimenting with their API so much easier. So USA TODAY, if you are listening: Go and set up ioDocs!&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;minus
    &lt;ul&gt;
      &lt;li&gt;ioDocs requires the description of an API in a JSON configuration file. I believe that choosing a standard for this purpose (like &lt;a href=&quot;http://wadl.java.net&quot;&gt;WADL&lt;/a&gt; or WSDL 2.0) would have been better). Although I know that &lt;a href=&quot;http://apigee.com&quot;&gt;Apigee&lt;/a&gt; is competition for &lt;a href=&quot;http://mashery.com&quot;&gt;Mashery&lt;/a&gt;, so there might be other motives here to do things differently :)&lt;/li&gt;
      &lt;li&gt;I don’t think that the expressiveness of the current configuration files is high enough to model all APIs. Even some very commonly used URL patterns are not possible e.g. if I had an API that would require the replacement of the parameter &lt;strong&gt;section&lt;/strong&gt; in the URL path like this &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;http://someapi.com/v1/stories/{section}/?date=2011&lt;/code&gt;, then I don’t think that ioDocs would currently make this possible.&lt;/li&gt;
      &lt;li&gt;documentation is key for anything that is new! Currently the &lt;a href=&quot;https://github.com/mashery/iodocs&quot;&gt;documentation of ioDocs on github&lt;/a&gt; is a bit tricky to ready.&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;All in all, I like ioDocs!&lt;/p&gt;

&lt;p&gt;Suggestion: In my mind a mixture of the advantages of &lt;a href=&quot;http://apigee.com/about/products_togo.html&quot;&gt;Apigee To-Go&lt;/a&gt; and &lt;a href=&quot;http://developer.mashery.com/iodocs&quot;&gt;ioDocs&lt;/a&gt; would make for the perfect API Console.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/iodocs_usatoday.png&quot; alt=&quot;Experiment with ioDocs for USA TODAY Articles API&quot; title=&quot;Experiment with ioDocs for USA TODAY Articles API&quot; /&gt;&lt;/p&gt;

&lt;h1 id=&quot;code-snippet-of-the-iodocs-configuration-file&quot;&gt;Code snippet of the ioDocs configuration file&lt;/h1&gt;

&lt;div class=&quot;language-ruby highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;s2&quot;&gt;&quot;MethodName&quot;&lt;/span&gt;&lt;span class=&quot;ss&quot;&gt;:&quot;Search&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
&lt;span class=&quot;s2&quot;&gt;&quot;Synopsis&quot;&lt;/span&gt;&lt;span class=&quot;ss&quot;&gt;:&quot;&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
&lt;span class=&quot;s2&quot;&gt;&quot;HTTPMethod&quot;&lt;/span&gt;&lt;span class=&quot;ss&quot;&gt;:&quot;GET&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
&lt;span class=&quot;s2&quot;&gt;&quot;URI&quot;&lt;/span&gt;&lt;span class=&quot;ss&quot;&gt;:&quot;/articles&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
&lt;span class=&quot;s2&quot;&gt;&quot;RequiresOAuth&quot;&lt;/span&gt;&lt;span class=&quot;ss&quot;&gt;:&quot;N&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
&lt;span class=&quot;s2&quot;&gt;&quot;parameters&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:[&lt;/span&gt;
   &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
			&lt;span class=&quot;s2&quot;&gt;&quot;Name&quot;&lt;/span&gt;&lt;span class=&quot;ss&quot;&gt;:&quot;encoding&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
			&lt;span class=&quot;s2&quot;&gt;&quot;Required&quot;&lt;/span&gt;&lt;span class=&quot;ss&quot;&gt;:&quot;N&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
			&lt;span class=&quot;s2&quot;&gt;&quot;Default&quot;&lt;/span&gt;&lt;span class=&quot;ss&quot;&gt;:&quot;json&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
			&lt;span class=&quot;s2&quot;&gt;&quot;Type&quot;&lt;/span&gt;&lt;span class=&quot;ss&quot;&gt;:&quot;enumerated&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
			&lt;span class=&quot;s2&quot;&gt;&quot;EnumeratedList&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:[&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;json&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;rss&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;],&lt;/span&gt;
			&lt;span class=&quot;s2&quot;&gt;&quot;Description&quot;&lt;/span&gt;&lt;span class=&quot;ss&quot;&gt;:&quot;Format in which to return the results. Either 'json' or 'rss'.&quot;&lt;/span&gt;
   &lt;span class=&quot;p&quot;&gt;},&lt;/span&gt;
   &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
			&lt;span class=&quot;s2&quot;&gt;&quot;Name&quot;&lt;/span&gt;&lt;span class=&quot;ss&quot;&gt;:&quot;search&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
			&lt;span class=&quot;s2&quot;&gt;&quot;Required&quot;&lt;/span&gt;&lt;span class=&quot;ss&quot;&gt;:&quot;N&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
			&lt;span class=&quot;s2&quot;&gt;&quot;Default&quot;&lt;/span&gt;&lt;span class=&quot;ss&quot;&gt;:&quot;&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
			&lt;span class=&quot;s2&quot;&gt;&quot;Type&quot;&lt;/span&gt;&lt;span class=&quot;ss&quot;&gt;:&quot;&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
			&lt;span class=&quot;s2&quot;&gt;&quot;Description&quot;&lt;/span&gt;&lt;span class=&quot;ss&quot;&gt;:&quot;The search string.&quot;&lt;/span&gt;
   &lt;span class=&quot;p&quot;&gt;},&lt;/span&gt;
	 &lt;span class=&quot;o&quot;&gt;...&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

</content>
 </entry>
 
 <entry>
   <title>Apigee Console for the RubyGems API</title>
   <link href="https://spier.hu/2011/10/apigee-console-for-rubygems-api"/>
   <updated>2011-10-15T00:00:00+00:00</updated>
   <id>https://spier.hu/2011/10/apigee-console-for-rubygems-api</id>
   <content type="html">&lt;p&gt;I had heard of &lt;a href=&quot;http://apigee.com/&quot;&gt;apigee.com&lt;/a&gt; before but I had not looked at their services yet.
Today I took a closer look and I discovered &lt;a href=&quot;http://apigee.com/about/products_togo.html&quot;&gt;Apigee To-Go&lt;/a&gt;, 
a way to create a simple API console for any API (including your own). After creating such an API console, you can embed it elsewhere e.g. in your the developer section of your website.&lt;/p&gt;

&lt;p&gt;In order to experiment with &lt;a href=&quot;http://apigee.com/about/products_togo.html&quot;&gt;Apigee To-Go&lt;/a&gt; I needed a guinea pig.
My choice fell on the &lt;a href=&quot;http://guides.rubygems.org/rubygems-org-api/&quot;&gt;RubyGems.org API&lt;/a&gt;. I have not configured the console to support all API calls of RubyGems. Instead the console below only supports the calls for which no authorization is needed. Adding authorization and the corresponding HTTP verbs (POST, PUT, DELETE) would not be that difficult though.&lt;/p&gt;

&lt;h1 id=&quot;console-for-the-rubygemsorg-api&quot;&gt;Console for the RubyGems.org API&lt;/h1&gt;

&lt;iframe src=&quot;https://apigee.com/apigee_10_bbjeff/embed/console/rubygemsprototype&quot; width=&quot;800&quot; height=&quot;600&quot;&gt;&lt;/iframe&gt;

&lt;h1 id=&quot;how-to-create-an-apigee-to-go-console&quot;&gt;How to create an Apigee To-Go Console&lt;/h1&gt;

&lt;ol&gt;
  &lt;li&gt;register at &lt;a href=&quot;http://apigee.com/&quot;&gt;apigee.com&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;create a &lt;a href=&quot;http://wadl.java.net&quot;&gt;WADL&lt;/a&gt; file (with some additional apigee-specific extensions)&lt;/li&gt;
  &lt;li&gt;upload this file to apigee&lt;/li&gt;
  &lt;li&gt;apigee will automatically create the API Console&lt;/li&gt;
  &lt;li&gt;Done!&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;I had the first console for just one API endpoint up and running after 5 minutes. After that it took a couple of trial and error iterations, until the console that you see above was done. &lt;a href=&quot;http://apigee.com/&quot;&gt;apigee.com&lt;/a&gt; does a decent job in informing you about syntax errors in your WADL file, which helps you to fix them. (I should say though that I have worked with WADL before.)&lt;/p&gt;

&lt;h1 id=&quot;summary&quot;&gt;Summary&lt;/h1&gt;

&lt;p&gt;&lt;a href=&quot;http://apigee.com/about/products_togo.html&quot;&gt;Apigee To-Go&lt;/a&gt; is a pretty nice way for developers to get started, when trying to integrate with a new API. A couple of areas of &lt;a href=&quot;http://apigee.com/about/products_togo.html&quot;&gt;Apigee To-Go&lt;/a&gt; could be improved but it is definitely good enough to be useable.&lt;/p&gt;

&lt;p&gt;From a developer perspective such a console is mainly useful when trying to find out how an API works in general. For later stages of the development there is still no way around reading the full API documentation.&lt;/p&gt;

</content>
 </entry>
 
 <entry>
   <title>Op Art à la Victor Vasarely with CSS</title>
   <link href="https://spier.hu/2011/09/op-art-a-la-victor-vasarely-with-css"/>
   <updated>2011-09-18T00:00:00+00:00</updated>
   <id>https://spier.hu/2011/09/op-art-a-la-victor-vasarely-with-css</id>
   <content type="html">&lt;p&gt;I recently saw the exhibition of &lt;a href=&quot;http://www.vasarely.com&quot;&gt;Victor Vasarely&lt;/a&gt;, one of the founders of &lt;a href=&quot;http://en.wikipedia.org/wiki/Op_art&quot;&gt;Op Art (Optical Art)&lt;/a&gt;. In the pieces that eventually made him famous, he frequently drew different geometrical figures to create interesting visual effects. See one simple but still interesting piece called Tlinko from 1955 below.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/vasarely-victor-tlinko.jpg&quot; alt=&quot;Victor Vasarely - Tlinko (1955)&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Besides being impressed by his art, seeing his pictures made me wonder if it would be possible to re-create some of his pictures with &lt;a href=&quot;http://www.w3.org/Style/CSS/&quot;&gt;CSS&lt;/a&gt;. I don’t know much about CSS but this sounds like a good chance to learn more about it’s boundaries.&lt;/p&gt;

&lt;p&gt;The pattern-like structure reminded me of the tool &lt;a href=&quot;http://www.patternify.com&quot;&gt;patternify.com&lt;/a&gt; which I had seen previously but not tried out. With patternify I managed to create the &lt;a href=&quot;http://ptrn.it/mQal0f&quot;&gt;below CSS code&lt;/a&gt;, which creates the following pattern.&lt;/p&gt;

&lt;div class=&quot;language-html highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;nt&quot;&gt;&amp;lt;div&lt;/span&gt; 
	&lt;span class=&quot;na&quot;&gt;style=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;
	margin: auto; 
	width:220px; height:260px;
	background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAAIElEQVQYGWNkYGD4D8TYACOyIBMyBx97KCjE5/7BIgcApGEBDCu0cukAAAAASUVORK5CYII=) repeat;&quot;&lt;/span&gt;&lt;span class=&quot;nt&quot;&gt;&amp;gt;&lt;/span&gt;
&lt;span class=&quot;nt&quot;&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;div class=&quot;myDiv&quot; style=&quot;margin: auto; width:220px; height:260px; background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAAIElEQVQYGWNkYGD4D8TYACOyIBMyBx97KCjE5/7BIgcApGEBDCu0cukAAAAASUVORK5CYII=) repeat;&quot;&gt;
&lt;/div&gt;

&lt;p&gt;Not quite there yet, right? I would need a way now to intermix the standard pattern of the small black squares, with some squares that are rotated, squeezed, etc. Just I have absolutely no idea how to approach this!&lt;/p&gt;

&lt;p&gt;For some additional inspiration, here you can see more of &lt;a href=&quot;http://www.google.com/search?q=Vasarely&amp;amp;hl=de&amp;amp;biw=1657&amp;amp;bih=894&amp;amp;tbs=isc:black,ic:gray&amp;amp;tbm=isch&amp;amp;prmd=ivns&amp;amp;source=lnt&amp;amp;sa=X&amp;amp;ei=cWn-TfP5H4fIswb8jt3yDQ&amp;amp;ved=0CBUQpwUoAg&quot;&gt;Vasarely’s art in black &amp;amp; white&lt;/a&gt; at Google. Maybe some expert CSS folks will find this post and can give me pointers towards whether this is doable at all with CSS. To finish off this brief description of the idea, here a quote from Vasarely himself. I am pretty sure he was &lt;strong&gt;not&lt;/strong&gt; talking about CSS :)&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;“I have faith in the advent of a polychrome and multidimensional technological art
that will radiate as the first purely visual language void of any anecdotic or literary references.”&lt;/p&gt;

  &lt;p&gt;** - Victor Vasarely (1950) -**&lt;/p&gt;
&lt;/blockquote&gt;

</content>
 </entry>
 
 <entry>
   <title>Guest Blog Post at PeerIndex</title>
   <link href="https://spier.hu/2011/08/guest-blog-post-at-peerindex"/>
   <updated>2011-08-13T00:00:00+00:00</updated>
   <id>https://spier.hu/2011/08/guest-blog-post-at-peerindex</id>
   <content type="html">&lt;p&gt;Recently I wrote a guest blog post for &lt;a href=&quot;http://www.peerindex.com&quot;&gt;PeerIndex&lt;/a&gt;, titled &lt;a href=&quot;http://blog.peerindex.com/yql-ing-the-peerindex-api&quot;&gt;YQL-ing the PeerIndex API&lt;/a&gt;. It was a very interesting experience and it made me rethink why I like to write in general and specifically for the web. These are my thoughts on the topic of &lt;strong&gt;producing content&lt;/strong&gt; for the WWW, driven by the example of the mentioned blog post.&lt;/p&gt;

&lt;h2 id=&quot;do-something-and-talk-about-it&quot;&gt;Do something and talk about it&lt;/h2&gt;

&lt;p&gt;I used to think that people who frequently talk about what they do are just egocentric show-offs, who actually don’t really know anything. While I still generally feel that way, I made a couple of realization some time ago:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;If normal people (like you and I) don’t talk about what they do, then the content on the Internet will definitely be dominated by the products of nonsensical spammers, “social media experts”, SEO cheaters, and other people of similar behavior that don’t produce value. I cannot allow this to happen, so as I consider myself a normal person, I need to contribute to useful content out here!&lt;/li&gt;
  &lt;li&gt;You need to expose yourself in order to be found. With that I mean that even if you are doing great stuff, there is a certain amount of marketing involved to enable other people to find you. How good is something really if nobody knows about it? So it is a necessity to talk about it, like it or not.&lt;/li&gt;
  &lt;li&gt;People are very tolerant when it comes to ignoring content that they are not interested in. I am in no way suggesting that you should become a spammer but there is no harm in producing a tweet, blog post, or other content from time to time. If people are not interested then they won’t be disturbed by it either.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;For example the aforementioned blog post only happened because I am interested in &lt;a href=&quot;http://developer.yahoo.com/yql/&quot;&gt;YQL&lt;/a&gt; and I played around with YQL and the &lt;a href=&quot;http://dev.peerindex.com&quot;&gt;PeerIndex API&lt;/a&gt; and then posted my experiments on Twitter. This is how the PeerIndex team found me and later on asked me to write the post &lt;a href=&quot;http://bit.ly/oChnDX&quot;&gt;YQL-ing the PeerIndex API&lt;/a&gt;. Nothing magic about it, talk about what you do and interested people will listen.&lt;/p&gt;

&lt;h2 id=&quot;dont-become-a-spammer&quot;&gt;Don’t become a Spammer&lt;/h2&gt;

&lt;p&gt;Yes, I mean you! Spammer! Don’t spam! :)&lt;/p&gt;

&lt;p&gt;In response to my PeerIndex blog post, I saw some tweets (see below) that were so strange that I had a hard time believing that these things really exist.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;http://f.cl.ly/items/1m3F0P1X2l3E2X3f442D/twitter_spam.png&quot; alt=&quot;Twitter Spam&quot; /&gt;&lt;/p&gt;

&lt;p&gt;So that’s what people do? For real? They pick up random tweets and then RT them from multiple accounts? For what? Are there even tools that support this kind of activity or what? Anybody knows? I really don’t get it.&lt;/p&gt;

&lt;h2 id=&quot;dont-worry-about-seo-but-care-about-analytics&quot;&gt;Don’t worry about SEO but care about Analytics&lt;/h2&gt;

&lt;p&gt;When you start producing content, don’t worry about how to improve your ranking in the search engine rankings. If you produce valuable content, people will find you. You can still try to optimize things later on when you realize that there is a general interest in what you do but please don’t try to become a “SEO expert” before you even start - you can probably imagine how much I disapprove this term due to its frequent misuse. Posting a link to your content on Twitter is probably a good enough start to find some audience.&lt;/p&gt;

&lt;p&gt;You can still do little things in order to find out a bit about your audience. For example if you are using &lt;a href=&quot;http://bit.ly&quot;&gt;bit.ly&lt;/a&gt; to share your links, you should check out the bitly Info Page+ for the content your produce or share. You can check out the &lt;a href=&quot;https://bitly.com/osazNn+&quot;&gt;bitly Info Page+&lt;/a&gt; for my blog post as an example. This can give useful insights into which of your activities generate more interest/traction.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://bitly.com/osazNn+&quot;&gt;&lt;img src=&quot;http://f.cl.ly/items/3B1o1t2h1M1T0J0L1u0E/bitly_analytics.jpg&quot; alt=&quot;bitly Info Page+&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2 id=&quot;contribute-contribute-contribute&quot;&gt;Contribute, contribute, contribute&lt;/h2&gt;

&lt;p&gt;Do something, and give back where you can. While this is an easier thing to do for developers due to the abundance of Open Source projects that we can contribute to, I believe it is also possible for people that don’t write software.&lt;/p&gt;

&lt;p&gt;Give useful feedback to other people. Don’t write “that’s great” only. You can of course do that because some feedback is better than no feedback but at the end of the day, don’t we all want a real discussion about the topics that we are interested in? Instead of reading 10 x “That’s great”, wouldn’t you rather want to read one constructive comment/question? I certainly favor the latter.&lt;/p&gt;

&lt;p&gt;So in summary. Do your thing. Talk about it. This is not for eternity, content comes and goes. Most importantly, don’t worry about what other people might think about your content. If you are neither a &lt;a href=&quot;http://en.wikipedia.org/wiki/Spammer&quot;&gt;spammer&lt;/a&gt; nor a &lt;a href=&quot;http://en.wikipedia.org/wiki/Troll_(Internet)&quot;&gt;troll&lt;/a&gt;, then there is nothing to loose.&lt;/p&gt;

</content>
 </entry>
 
 <entry>
   <title>Springer Quotes</title>
   <link href="https://spier.hu/2011/08/springer-quotes"/>
   <updated>2011-08-12T00:00:00+00:00</updated>
   <id>https://spier.hu/2011/08/springer-quotes</id>
   <content type="html">&lt;p&gt;With this application I won the 1. Prize at the &lt;a href=&quot;http://dev.springer.com&quot;&gt;Springer API Challenge&lt;/a&gt; in 2011. It was a great learning experience in terms of working with heroku, ruby, and the Springer API.&lt;/p&gt;

&lt;p&gt;Springer Quotes let’s you search more than 80 thousand articles from Springer’s open access journals. When you find a particularly interesting article you can create quotes from paragraphs or individual sentences. These quotes can be used to point fellow resources to specific sections of articles or to reference these quotes within your own scientific work.&lt;/p&gt;

&lt;p&gt;Was running at http://springerquotes.heroku.com, now offline.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Springer Quotes is programmableweb's Mashup of the Day</title>
   <link href="https://spier.hu/2011/08/springer-quotes-is-programmablewebs-mashup-of-the-day"/>
   <updated>2011-08-12T00:00:00+00:00</updated>
   <id>https://spier.hu/2011/08/springer-quotes-is-programmablewebs-mashup-of-the-day</id>
   <content type="html">&lt;p&gt;Nice. The awesome folks from &lt;a href=&quot;http://www.programmableweb.com&quot;&gt;programmableweb&lt;/a&gt; have selected my application &lt;a href=&quot;http://springerquotes.heroku.com&quot;&gt;Springer Quotes&lt;/a&gt; as their &lt;a href=&quot;http://www.programmableweb.com/mashup/springer-quotes?date&quot;&gt;Mashup of the Day&lt;/a&gt;. Loving it, thanks guys!&lt;/p&gt;

&lt;p&gt;What did I win? :)&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://www.programmableweb.com/mashup/springer-quotes?date&quot;&gt;&lt;img src=&quot;http://f.cl.ly/items/123E242S1C33123P1x2P/2011-08-12_1008_mashup_of_the_day_s.jpg&quot; alt=&quot;programmableweb Mashup of the Day&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

</content>
 </entry>
 
 <entry>
   <title>Making YQL Tables an API Query Wizard</title>
   <link href="https://spier.hu/2011/07/making-yql-tables-an-api-query-wizard"/>
   <updated>2011-07-25T00:00:00+00:00</updated>
   <id>https://spier.hu/2011/07/making-yql-tables-an-api-query-wizard</id>
   <content type="html">&lt;p&gt;This idea is sitting in my draft box for some time now. The idea I am proposing:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Take a &lt;a href=&quot;http://developer.yahoo.com/yql&quot;&gt;YQL&lt;/a&gt; table and automatically transform it into an API Query Wizard. This Wizard is a web interface that is used for querying and documenting the &lt;a href=&quot;http://en.wikipedia.org/wiki/API&quot;&gt;API&lt;/a&gt; wrapped by this YQL table.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;So why did I get back to this idea just now? Today Mashey launched an interesting new offering called &lt;a href=&quot;http://mashery.com/solution/iodocs/&quot;&gt;Mashery I/O Docs&lt;/a&gt;, which they call “the next generation of API documentation”. I recommend watching the introductory video over at their site. See below how I/O Docs looks like in action by the example of the &lt;a href=&quot;http://developer.klout.com/iodocs&quot;&gt;I/O Docs for the Klout API&lt;/a&gt;. I think it looks pretty neat, as they do a good job in bringing together the input parameters for the API calls with their corresponding documentation.&lt;/p&gt;

&lt;h2 id=&quot;mashery-io-docs-for-the-klout-api&quot;&gt;&lt;a href=&quot;http://mashery.com/solution/iodocs/&quot;&gt;Mashery I/O Docs&lt;/a&gt; for the Klout API&lt;/h2&gt;

&lt;p&gt;&lt;img src=&quot;/images/wizard_mashery.png&quot; alt=&quot;Klout&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Now all of you who know YQL might say: “Hey, this looks much like the &lt;a href=&quot;http://developer.yahoo.com/yql/console&quot;&gt;YQL console&lt;/a&gt;.” Well I would say yes and no (see screenshots of the YQl console further below). While the YQL console does a decent job in letting you create API calls without too much typing, it also has a couple of shortcomings.&lt;/p&gt;

&lt;p&gt;These shortcomings are mainly:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;too strong focus on the SQL-like typing mode instead of the Query Wizard (see below)&lt;/li&gt;
  &lt;li&gt;no documentation for the individual API parameters&lt;/li&gt;
  &lt;li&gt;visual separation of Query Wizard and data generated by the API call&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;yql-console---query-wizard&quot;&gt;YQL Console - Query Wizard&lt;/h2&gt;

&lt;p&gt;&lt;img src=&quot;/images/wizard_yql1.png&quot; alt=&quot;YQL&quot; /&gt;&lt;/p&gt;

&lt;h2 id=&quot;yql-console---results&quot;&gt;YQL Console - Results&lt;/h2&gt;

&lt;p&gt;&lt;img src=&quot;/images/wizard_yql2.png&quot; alt=&quot;YQL&quot; /&gt;&lt;/p&gt;

&lt;p&gt;So now back to my idea. Transforming a YQL table into an API Query Wizard. Without taking anything away from the wonderful job that &lt;a href=&quot;http://mashery.com/&quot;&gt;Mashery&lt;/a&gt; did with &lt;a href=&quot;http://mashery.com/solution/iodocs/&quot;&gt;I/O Docs&lt;/a&gt;, it is not all that hard, is it? All that it takes is a somewhat appealing UI, syntax highlighting for the API output (mainly JSON/XML) and of course proper documentation of the different API endpoints and query parameters.&lt;/p&gt;

&lt;p&gt;From a technical standpoint that would be reasonably easy. I would probably use &lt;a href=&quot;http://www.w3schools.com/xsl/&quot;&gt;XSLT&lt;/a&gt; to automatically transform the XML of the YQL table into the HTML for the Wizard. Then one would be able to just point the web browser to any given YQL table on the internet, which would then get displayed as an API Query Wizard to the underlying API.&lt;/p&gt;

&lt;p&gt;So &lt;a href=&quot;http://developer.yahoo.com/yql&quot;&gt;YAHOO! / YQL Team&lt;/a&gt;, why not just do this? It might take a couple of minor changes to your XML schema, mainly to allow for the ability to add description to the different input parameters. Also grouping multiple YQL tables into one wizard, like Mashery does it, would be a bit trickier but still possible. I guess you can still pull it off, it is not too late :)&lt;/p&gt;

</content>
 </entry>
 
 <entry>
   <title>Robots are Fun</title>
   <link href="https://spier.hu/2011/07/robots-are-fun"/>
   <updated>2011-07-09T00:00:00+00:00</updated>
   <id>https://spier.hu/2011/07/robots-are-fun</id>
   <content type="html">&lt;script type=&quot;text/javascript&quot;&gt;
 $(document).ready(function() {
		$('div#post p').each(function(index) {
			// only every second paragraph gets a robot
			if (index % 2 == 0) {
				// choose a set of robots
				var set_name = &quot;set&quot; + rand(1,3);
				// fixed size of robot image
				var size = &quot;150x150&quot;;
				
				// put together the image URL
				var img_url = &quot;http://robohash.org/&quot; + escape($(this).text()) + &quot;.png&quot;;
				img_url += &quot;?set=&quot; + set_name;
				img_url += &quot;&amp;size=&quot; + size;
				
				// some information about the robot
				var img_alt_text = &quot;I am a &quot; + size + &quot;px robot from family &quot; + set_name + &quot; at http://robohash.org.&quot;;

				// append the robot image to this paragraph
				$(this).append(&quot;&lt;img src='&quot; + img_url  + &quot;' title='&quot; + img_alt_text + &quot;'/&gt;&quot;);
			}
		});
 });

	// lower bound and upper bound
	function rand(l,u) {
		return Math.floor((Math.random() * (u-l+1))+l);
	}
&lt;/script&gt;

&lt;p&gt;Did you see &lt;a href=&quot;http://robohash.org/&quot;&gt;ROBOHASH&lt;/a&gt;? I found them on Twitter, where else. Anyways, the services lets you create unique, robot images for any text you throw at it. This is so much fun, I needed to add even more randomness. So I threw together a bit of jQuery and JavaScript that adds a robot here and there in my text, generated from the paragraphs of this text itself. So if the text you just read was a robot, it would look like this:&lt;/p&gt;

&lt;p&gt;Hello Mr. Robot! Check the source code of this page for the full code. The main JavaScript needed is this:&lt;/p&gt;

&lt;div class=&quot;language-javascript highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;nx&quot;&gt;$&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;'&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;div#post p&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;'&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;).&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;each&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;kd&quot;&gt;function&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;index&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
	&lt;span class=&quot;c1&quot;&gt;// only every second paragraph gets a robot&lt;/span&gt;
	&lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;index&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;%&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;2&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
		&lt;span class=&quot;c1&quot;&gt;// choose a set of robots&lt;/span&gt;
		&lt;span class=&quot;kd&quot;&gt;var&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;set_name&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;dl&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;set&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&quot;&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;rand&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;);&lt;/span&gt;
		&lt;span class=&quot;c1&quot;&gt;// fixed size of robot image&lt;/span&gt;
		&lt;span class=&quot;kd&quot;&gt;var&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;size&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;dl&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;150x150&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
		
		&lt;span class=&quot;c1&quot;&gt;// put together the image URL&lt;/span&gt;
		&lt;span class=&quot;kd&quot;&gt;var&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;img_url&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;dl&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;http://robohash.org/&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&quot;&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;escape&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;$&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;this&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;).&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;text&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;())&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;dl&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;.png&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
		&lt;span class=&quot;nx&quot;&gt;img_url&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+=&lt;/span&gt; &lt;span class=&quot;dl&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;?set=&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&quot;&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;set_name&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
		&lt;span class=&quot;nx&quot;&gt;img_url&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+=&lt;/span&gt; &lt;span class=&quot;dl&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&amp;amp;size=&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&quot;&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;size&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
		
		&lt;span class=&quot;c1&quot;&gt;// some information about the robot&lt;/span&gt;
		&lt;span class=&quot;kd&quot;&gt;var&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;img_alt_text&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;dl&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;I am a &lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&quot;&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;size&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;dl&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;px robot from family &lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&quot;&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;set_name&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;dl&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt; at http://robohash.org.&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;

		&lt;span class=&quot;c1&quot;&gt;// append the robot image to this paragraph&lt;/span&gt;
		&lt;span class=&quot;nx&quot;&gt;$&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;this&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;).&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;append&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&amp;lt;img src='&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&quot;&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;img_url&lt;/span&gt;  &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;dl&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;' title='&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&quot;&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;img_alt_text&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;dl&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;'/&amp;gt;&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;);&lt;/span&gt;
	&lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;So now you will see a new set of robots appear every time you reload this page. Try it out. (Actually what you see is a random tuple out of 27 possible permutations to be more precise but this is just nerd talk.)&lt;/p&gt;

&lt;p&gt;Why? Well first of all it is Saturday … and then most importantly this was fun. The same question could be asked for &lt;a href=&quot;http://robohash.org/&quot;&gt;ROBOHASH&lt;/a&gt; as well. Why do they do what they do? They give some hints about the &lt;strong&gt;Why&lt;/strong&gt; on their website but how does that really matter? It is the Internet, people do crazy things all the time and some of these things are a lot of fun :)&lt;/p&gt;

&lt;p&gt;If you are still not happy without the &lt;strong&gt;Why&lt;/strong&gt;, you can ask the author directly at &lt;a href=&quot;https://twitter.com/#!/Robohash&quot;&gt;@Robohash&lt;/a&gt;.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>I have a dream: Always Fly on Time</title>
   <link href="https://spier.hu/2011/07/always-fly-on-time"/>
   <updated>2011-07-05T00:00:00+00:00</updated>
   <id>https://spier.hu/2011/07/always-fly-on-time</id>
   <content type="html">&lt;p&gt;“Scratch your own itch” … this problem clearly falls into this category. I am living in Budapest and take frequent flights to Germany. &lt;a href=&quot;http://easyjet.de&quot;&gt;easyJet&lt;/a&gt; is one of the carriers that happens to fly to the places I want to go to. While they have extremely competitive prices - yes, they are cheap - they have also some issues with scheduling their flights or whatever else but fore sure they are regularly a bit late with their departures.&lt;/p&gt;

&lt;p&gt;It is hard to put exact numbers to this but I estimate that about 30% of their flights that I have used are late. The waiting times vary between 30 minutes to 2 hours (to be fair to them, the 2 hours were a one time only incident). Waiting for 30 minutes is quite ok you might say. True, it ain’t that much. Still, if I had the choice, I would rather not wait that extra 30, especially because I usually travel light, so I can afford to be at the airport pretty late.&lt;/p&gt;

&lt;p&gt;Now the idea:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Track the expected delay of a plane and make this information easily accessible. (I don’t want to have to go to the website of the different airports or similar.)&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I already found some websites that seem to be doing something similar, or at least provide data necessary for this:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;http://www.flightradar24.com&quot;&gt;flightradar24.com&lt;/a&gt; shows live airplane traffic from different parts around the world on a Google Map&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://data.flight24.com/&quot;&gt;data.flight24.com&lt;/a&gt; claims to be the largest online aviation database. One can search for airplanes, flights or airports. They belong to flighradar24.com.&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://www.flightstats.com&quot;&gt;flightstats.com&lt;/a&gt; delivers real-time and historical flight information. They have an API as a premium service but that one is pretty expensive.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I don’t have time to search further right now but I already put this out there, so that maybe somebody can point me to further resources about flight data.&lt;/p&gt;

&lt;p&gt;Just one more note: &lt;a href=&quot;http://www.flightstats.com&quot;&gt;flightstats.com&lt;/a&gt; also has widgets for embedding in your website. I am using the departure widget for Budapest airport as an example. Pretty neat. (Select another Time Period if you see no flights)&lt;/p&gt;

&lt;iframe src=&quot;https://www.flightstats.com/go/weblet?guid=7ab8119c6d94c676:-27a562a9:114b811537d:19ce&amp;amp;imageColor=orange&amp;amp;language=English&amp;amp;weblet=status&amp;amp;action=AirportFlightStatus&amp;amp;airportCode=BUD&amp;amp;airportQueryType=0&quot; frameborder=&quot;0&quot; scrolling=&quot;auto&quot; width=&quot;480px&quot; height=&quot;620px&quot;&gt;&lt;/iframe&gt;

</content>
 </entry>
 
 <entry>
   <title>I won the Springer API Challenge 1.0</title>
   <link href="https://spier.hu/2011/07/i-won-the-springer-api-challenge-1.0"/>
   <updated>2011-07-01T00:00:00+00:00</updated>
   <id>https://spier.hu/2011/07/i-won-the-springer-api-challenge-1.0</id>
   <content type="html">&lt;p&gt;It is official! I won the Springer API Challenge 1.0 with my pet project &lt;a href=&quot;http://springerquotes.heroku.com&quot;&gt;Springer Quotes&lt;/a&gt;. Wohoooo!:)&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://dev.springer.com/&quot;&gt;&lt;img src=&quot;/images/winning_springer_challenge.png&quot; alt=&quot;Springer API Challenge&quot; title=&quot;Results Springer API Challenge 1.0&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;So go check out &lt;a href=&quot;http://springerquotes.heroku.com&quot;&gt;Springer Quotes&lt;/a&gt; and let me know what you think.&lt;/p&gt;

&lt;p&gt;I want to give credit where credit is due. I specially want to thank these two people for their prior work and support:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://twitter.com/#!/donohoe&quot;&gt;Michael Donohoe&lt;/a&gt; for his awesome &lt;a href=&quot;https://github.com/NYTimes/Emphasis&quot;&gt;Emphasis Library&lt;/a&gt; that I adapted and reimplemented in Ruby to highlight the quotes&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://pixelmove.de&quot;&gt;Pascal Bertram&lt;/a&gt; for the logo artwork&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In addition, these are the great technologies and open source libraries that I have used to build Springer Quotes:&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;&lt;a href=&quot;http://heroku.com&quot;&gt;heroku&lt;/a&gt; for hosting this site&lt;/li&gt;	
	&lt;li&gt;&lt;a href=&quot;http://couchone.com&quot;&gt;CouchDB&lt;/a&gt; for the data storage&lt;/li&gt;	
	&lt;li&gt;&lt;a href=&quot;http://www.ruby-lang.org/en/&quot;&gt;Ruby&lt;/a&gt; and &lt;a href=&quot;http://www.sinatrarb.com/&quot;&gt;Sinatra&lt;/a&gt; for the implementation and server DSL&lt;/li&gt;	
	&lt;li&gt;&lt;a href=&quot;http://bit.ly&quot;&gt;bit.ly&lt;/a&gt; for shortening the links&lt;/li&gt;	
	&lt;li&gt;&lt;a href=&quot;http://nokogiri.org/&quot;&gt;Nokogiri&lt;/a&gt; + XSLT for the conversion of Springer's A++ format into somewhat more readable HTML.&lt;/li&gt;
	&lt;li&gt;&lt;a href=&quot;http://www.mathjax.org&quot;&gt;MathJax&lt;/a&gt; for beautifying mathematic formulas&lt;/li&gt;
	&lt;li&gt;&lt;a href=&quot;http://imakewebthings.github.com/jquery-waypoints/sticky-elements/&quot;&gt;'Sticky'&lt;/a&gt; buttons at the top of the article&lt;/li&gt;	
	&lt;li&gt;&lt;a href=&quot;http://nicolasgallagher.com/pure-css-speech-bubbles/&quot;&gt;Pure CSS speech bubbles&lt;/a&gt; for the nice speech bubbles you see on the /quotes page&lt;/li&gt;
	&lt;li&gt;&lt;a href=&quot;http://jquery.com&quot;&gt;jQuery&lt;/a&gt; as my JavaScript library of choice&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Open Source Software is the thing! Build it, use it, contribute to it!&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>YQL Tables for Social Media Influence Rankings</title>
   <link href="https://spier.hu/2011/06/yql-tables-for-social-media-influence-rankings"/>
   <updated>2011-06-29T00:00:00+00:00</updated>
   <id>https://spier.hu/2011/06/yql-tables-for-social-media-influence-rankings</id>
   <content type="html">&lt;p&gt;While evaluating different available services for “Social Media Influence Ranking”, I also implemented &lt;a href=&quot;http://developer.yahoo.com/yql/&quot;&gt;YQL&lt;/a&gt; data tables for them. The services I looked at were &lt;a href=&quot;http://www.peerindex.net&quot;&gt;PeerIndex&lt;/a&gt;, &lt;a href=&quot;http://klout.com&quot;&gt;Klout&lt;/a&gt;, and &lt;a href=&quot;http://topsy.com&quot;&gt;Topsy&lt;/a&gt;. Implementing the YQL tables has these two major benefits for me:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;When creating the open data table, you have to take a detailed look at the API you are mapping to, and hence read the documentation very thoroughly. That in itself is a good exercise to really understand the nature of the input and output data.&lt;/li&gt;
  &lt;li&gt;For assessing data returned by an API, YQL is my absolute go-to-tool. It makes it really easy to do a lot of ad hoc queries and play with the returned data. Also feeding data from one API to the other is ist trivial. This way the exploration of the data is less time consuming and does not require any scripting.&lt;/li&gt;
&lt;/ul&gt;

&lt;h1 id=&quot;peerindex&quot;&gt;&lt;a href=&quot;http://www.peerindex.net&quot;&gt;PeerIndex&lt;/a&gt;&lt;/h1&gt;

&lt;p&gt;I started with &lt;a href=&quot;http://www.peerindex.net&quot;&gt;PeerIndex&lt;/a&gt;. That one was pretty easy, as they have only one API endpoint so far. Also had some good twitter communication with CEO &lt;a href=&quot;https://twitter.com/#!/azeem&quot;&gt;Azeem Azhar&lt;/a&gt;. Twitter is just awesome for this kind of stuff - in case you did not know - you just have to love it :)&lt;/p&gt;

&lt;p&gt;So get yourself a &lt;a href=&quot;http://dev.peerindex.net/&quot;&gt;PeerIndex API key&lt;/a&gt; and then &lt;a href=&quot;http://yhoo.it/lFtT2P&quot;&gt;try it out in the YQL Console&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;A sample YQL query for PeerIndex looks like this:&lt;/p&gt;

&lt;div class=&quot;language-sql highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;o&quot;&gt;//&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;enter&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;your&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;API&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;key&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;here&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;!!!&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;SET&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;api_key&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;&quot;YOUR_API_KEY&quot;&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;ON&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;peerindex&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;SELECT&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;*&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;FROM&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;peerindex&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;profile&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;WHERE&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;id&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;'sebastianspier'&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h1 id=&quot;klout&quot;&gt;&lt;a href=&quot;http://klout.com&quot;&gt;Klout&lt;/a&gt;&lt;/h1&gt;

&lt;p&gt;Klout has only a handful of API points, so creating the YQl tables for them did not take too much time either. You can query information about a user’s Klout score but also who he is influencing and who is influencing him.&lt;/p&gt;

&lt;p&gt;So get yourself a &lt;a href=&quot;http://developer.klout.com/&quot;&gt;Klout API key&lt;/a&gt; and then &lt;a href=&quot;http://yhoo.it/jU6pWh&quot;&gt;try it out in the YQL Console&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;A sample YQL query for Klout looks like this:&lt;/p&gt;

&lt;div class=&quot;language-sql highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;o&quot;&gt;//&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;enter&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;your&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;API&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;key&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;here&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;!!!&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;SET&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;api_key&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;&quot;YOUR_API_KEY&quot;&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;ON&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;klout&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;SELECT&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;*&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;FROM&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;klout&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;user&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;show&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;WHERE&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;users&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;'sebastianspier'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h1 id=&quot;topsy&quot;&gt;&lt;a href=&quot;http://topsy.com&quot;&gt;Topsy&lt;/a&gt;&lt;/h1&gt;

&lt;p&gt;Topsy has way more API endpoints, so I ended up with a total of YQL 17 tables. Multiple of them have a fairly repetitive structure though, which makes using them more comfortable.&lt;/p&gt;

&lt;p&gt;Topsy does not require an API key, so you can &lt;a href=&quot;http://yhoo.it/lTc3Bs&quot;&gt;try it out in the YQL Console&lt;/a&gt; right away.&lt;/p&gt;

&lt;p&gt;A sample YQL query for PeerIndex looks like this:&lt;/p&gt;

&lt;div class=&quot;language-sql highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;k&quot;&gt;SELECT&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;*&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;FROM&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;topsy&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;authorinfo&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;WHERE&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;url&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;&quot;http://twitter.com/barackobama&quot;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h1 id=&quot;contributing-to-the-yql-community&quot;&gt;Contributing to the &lt;a href=&quot;http://www.datatables.org&quot;&gt;YQL Community&lt;/a&gt;&lt;/h1&gt;

&lt;p&gt;I sent pull request for the YQL tables for all three services to the official &lt;a href=&quot;http://www.datatables.org&quot;&gt;YQL Community Tables&lt;/a&gt; repository on &lt;a href=&quot;https://github.com/yql/yql-tables&quot;&gt;github&lt;/a&gt;. The PeerIndex tables already got included, which makes them available for a broader audience. Integration of Klout and Topsy are pending.&lt;/p&gt;

&lt;p&gt;So have fun with &lt;a href=&quot;http://developer.yahoo.com/yql/&quot;&gt;YQL&lt;/a&gt; and your experiments with Social Media Influence Rankings.&lt;/p&gt;

</content>
 </entry>
 
 <entry>
   <title>Your Social Media Influence in Numbers</title>
   <link href="https://spier.hu/2011/06/your-social-influence-in-numbers"/>
   <updated>2011-06-28T00:00:00+00:00</updated>
   <id>https://spier.hu/2011/06/your-social-influence-in-numbers</id>
   <content type="html">&lt;p&gt;More and more services are spawning these days that are claiming to measure your “social media influence”. Here I am presenting an overview of the services &lt;a href=&quot;http://klout.com&quot;&gt;Klout&lt;/a&gt;, &lt;a href=&quot;http://www.peerindex.net&quot;&gt;PeerIndex&lt;/a&gt;, &lt;a href=&quot;http://topsy.com&quot;&gt;Topsy&lt;/a&gt;, and &lt;a href=&quot;http://tweet.grader.com&quot;&gt;Tweet Grader&lt;/a&gt; (plus a short bonus round with Twinfluence).&lt;/p&gt;

&lt;p&gt;If this topic interests you, you may also want to read &lt;a href=&quot;http://oneforty.com/blog/klout-alternatives/&quot;&gt;3 Ways Other Than Klout to Measure Influence&lt;/a&gt; and &lt;a href=&quot;http://www.socialmediaexplorer.com/online-public-relations/influencer-identification-tools/&quot;&gt;The Landscape: SME’s List Of Influencer Identification Tools&lt;/a&gt; for an even broader (but less detailed) overview of the tools for measuring influence.&lt;/p&gt;

&lt;h1 id=&quot;details&quot;&gt;Details&lt;/h1&gt;

&lt;p&gt;Wherever possible I am using my own twitter handle “sebastianspier” to show how these services work.&lt;/p&gt;

&lt;p&gt;##&lt;a href=&quot;http://klout.com&quot;&gt;Klout&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;http://f.cl.ly/items/3P153H292g08100N0G1N/sebastianspier_klout.png&quot; alt=&quot;Klout&quot; title=&quot;My Klout Profile&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Even when you are not a Klout user but are using Twitter, you will probably already have a profile on Klout e.g. this is &lt;a href=&quot;http://klout.com/sebastianspier&quot;&gt;my Klout profile&lt;/a&gt;. You can see your overall Klout Score, the &lt;em&gt;Klout Class&lt;/em&gt; assigned to you (in my case “Conversationalist”), and some people that you are apparently influencing. To get more information, you need to sign in with either your Twitter of Facebook login. (I have not done this, so cannot make any statements about the functionality gained by doing so.)&lt;/p&gt;

&lt;p&gt;Klout - with their confident tag line “the Standard for Influence” - claims to measure over 35 variables on Facebook and Twitter for each profile. Of course it can only merge the values for Facebook and Twitter into one calculation if you have logged in into both from the Klout website. Besides the prominent Klout Score, three further metrics are measured. The &lt;a href=&quot;http://corp.klout.com/kscore&quot;&gt;Klout documentation&lt;/a&gt; defines them as follows:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;Klout Score&lt;/strong&gt; is a representation of how successful a person is at engaging their audience and how big of an impact their messages have on people. The scores range from 1 to 100 with higher scores representing a wider and stronger sphere of influence.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;True Reach&lt;/strong&gt; is the size of your engaged audience and is based on those of your followers and friends who actively listen and react to your messages.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Amplification Score&lt;/strong&gt; is the likelihood that your messages will generate actions (retweets, @messages, likes and comments) and is on a scale of 1 to 100.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Network Score&lt;/strong&gt; indicates how influential your engaged audience is and is also on a scale from 1 to 100.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The dataset returned by the Klout API looks like this:&lt;/p&gt;

&lt;div class=&quot;language-xml highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;nt&quot;&gt;&amp;lt;klout&amp;gt;&lt;/span&gt;
    &lt;span class=&quot;nt&quot;&gt;&amp;lt;twitter_id&amp;gt;&lt;/span&gt;96320763&lt;span class=&quot;nt&quot;&gt;&amp;lt;/twitter_id&amp;gt;&lt;/span&gt;
    &lt;span class=&quot;nt&quot;&gt;&amp;lt;twitter_screen_name&amp;gt;&lt;/span&gt;sebastianspier&lt;span class=&quot;nt&quot;&gt;&amp;lt;/twitter_screen_name&amp;gt;&lt;/span&gt;
    &lt;span class=&quot;nt&quot;&gt;&amp;lt;score&amp;gt;&lt;/span&gt;
        &lt;span class=&quot;nt&quot;&gt;&amp;lt;kscore&amp;gt;&lt;/span&gt;29.87&lt;span class=&quot;nt&quot;&gt;&amp;lt;/kscore&amp;gt;&lt;/span&gt;
        &lt;span class=&quot;nt&quot;&gt;&amp;lt;slope&amp;gt;&lt;/span&gt;0.18&lt;span class=&quot;nt&quot;&gt;&amp;lt;/slope&amp;gt;&lt;/span&gt;
        &lt;span class=&quot;nt&quot;&gt;&amp;lt;description&amp;gt;&lt;/span&gt;is influential to a tightly formed network that is growing larger&lt;span class=&quot;nt&quot;&gt;&amp;lt;/description&amp;gt;&lt;/span&gt;
        &lt;span class=&quot;nt&quot;&gt;&amp;lt;kclass_id&amp;gt;&lt;/span&gt;0&lt;span class=&quot;nt&quot;&gt;&amp;lt;/kclass_id&amp;gt;&lt;/span&gt;
        &lt;span class=&quot;nt&quot;&gt;&amp;lt;kclass&amp;gt;&lt;/span&gt;Conversationalist&lt;span class=&quot;nt&quot;&gt;&amp;lt;/kclass&amp;gt;&lt;/span&gt;
        &lt;span class=&quot;nt&quot;&gt;&amp;lt;kclass_description&amp;gt;&lt;/span&gt;You love to connect and always have the inside scoop. Good conversation is not just a skill, it's an art. You might not know it, but when you are witty, your followers hang on every word.&lt;span class=&quot;nt&quot;&gt;&amp;lt;/kclass_description&amp;gt;&lt;/span&gt;
        &lt;span class=&quot;nt&quot;&gt;&amp;lt;kscore_description&amp;gt;&lt;/span&gt;is influential to a tightly formed network that is growing larger&lt;span class=&quot;nt&quot;&gt;&amp;lt;/kscore_description&amp;gt;&lt;/span&gt;
        &lt;span class=&quot;nt&quot;&gt;&amp;lt;network_score&amp;gt;&lt;/span&gt;39.32&lt;span class=&quot;nt&quot;&gt;&amp;lt;/network_score&amp;gt;&lt;/span&gt;
        &lt;span class=&quot;nt&quot;&gt;&amp;lt;amplification_score&amp;gt;&lt;/span&gt;14.2&lt;span class=&quot;nt&quot;&gt;&amp;lt;/amplification_score&amp;gt;&lt;/span&gt;
        &lt;span class=&quot;nt&quot;&gt;&amp;lt;true_reach&amp;gt;&lt;/span&gt;36&lt;span class=&quot;nt&quot;&gt;&amp;lt;/true_reach&amp;gt;&lt;/span&gt;
        &lt;span class=&quot;nt&quot;&gt;&amp;lt;delta_1day&amp;gt;&lt;/span&gt;0.75&lt;span class=&quot;nt&quot;&gt;&amp;lt;/delta_1day&amp;gt;&lt;/span&gt;
        &lt;span class=&quot;nt&quot;&gt;&amp;lt;delta_5day&amp;gt;&lt;/span&gt;0.87&lt;span class=&quot;nt&quot;&gt;&amp;lt;/delta_5day&amp;gt;&lt;/span&gt;
    &lt;span class=&quot;nt&quot;&gt;&amp;lt;/score&amp;gt;&lt;/span&gt;
&lt;span class=&quot;nt&quot;&gt;&amp;lt;/klout&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;##&lt;a href=&quot;http://www.peerindex.net&quot;&gt;PeerIndex&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;http://f.cl.ly/items/3P153H292g08100N0G1N/sebastianspier_peerindex.png&quot; alt=&quot;My PeerIndex Profile&quot; title=&quot;My PeerIndex Profile&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://www.peerindex.net&quot;&gt;PeerIndex&lt;/a&gt; describes its score as “a relative measure of your online authority. This score reflects the impact of your online activities, and the extent to which you have built up social and reputational capital on the web.”&lt;/p&gt;

&lt;p&gt;According to the &lt;a href=&quot;http://www.peerindex.net/help/scores&quot;&gt;PeerIndex documentation&lt;/a&gt; they use these metrics in order to calculate the PeerIndex Score:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;Authority&lt;/strong&gt; is the measure of trust; how much can you rely on that person’s recommendations and opinion on a given topic.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Audience&lt;/strong&gt; is indication of your reach. It is not simply determined by the number of people who follow you, but instead generate from the number of people who listen and are receptive to what you are saying.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Activity&lt;/strong&gt;  is the measure of how much you do that is related to the topic area. Being to active and people will stop listening to you and if you are too inactive people will never know to listen to you. The Activity Score takes into account this behaviour.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The dataset returned by the PeerIndex API looks like this:&lt;/p&gt;

&lt;div class=&quot;language-xml highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;nt&quot;&gt;&amp;lt;peerindex&amp;gt;&lt;/span&gt;
    &lt;span class=&quot;nt&quot;&gt;&amp;lt;name&amp;gt;&lt;/span&gt;Sebastian Spier&lt;span class=&quot;nt&quot;&gt;&amp;lt;/name&amp;gt;&lt;/span&gt;
    &lt;span class=&quot;nt&quot;&gt;&amp;lt;twitter&amp;gt;&lt;/span&gt;sebastianspier&lt;span class=&quot;nt&quot;&gt;&amp;lt;/twitter&amp;gt;&lt;/span&gt;
    &lt;span class=&quot;nt&quot;&gt;&amp;lt;slug&amp;gt;&lt;/span&gt;sebastianspier&lt;span class=&quot;nt&quot;&gt;&amp;lt;/slug&amp;gt;&lt;/span&gt;
    &lt;span class=&quot;nt&quot;&gt;&amp;lt;known&amp;gt;&lt;/span&gt;1&lt;span class=&quot;nt&quot;&gt;&amp;lt;/known&amp;gt;&lt;/span&gt;
    &lt;span class=&quot;nt&quot;&gt;&amp;lt;authority&amp;gt;&lt;/span&gt;38&lt;span class=&quot;nt&quot;&gt;&amp;lt;/authority&amp;gt;&lt;/span&gt;
    &lt;span class=&quot;nt&quot;&gt;&amp;lt;activity&amp;gt;&lt;/span&gt;24&lt;span class=&quot;nt&quot;&gt;&amp;lt;/activity&amp;gt;&lt;/span&gt;
    &lt;span class=&quot;nt&quot;&gt;&amp;lt;audience&amp;gt;&lt;/span&gt;30&lt;span class=&quot;nt&quot;&gt;&amp;lt;/audience&amp;gt;&lt;/span&gt;
    &lt;span class=&quot;nt&quot;&gt;&amp;lt;peerindex&amp;gt;&lt;/span&gt;36&lt;span class=&quot;nt&quot;&gt;&amp;lt;/peerindex&amp;gt;&lt;/span&gt;
    &lt;span class=&quot;nt&quot;&gt;&amp;lt;url&amp;gt;&lt;/span&gt;http://pi.mu/i2VL&lt;span class=&quot;nt&quot;&gt;&amp;lt;/url&amp;gt;&lt;/span&gt;
    &lt;span class=&quot;nt&quot;&gt;&amp;lt;topics&amp;gt;&lt;/span&gt;universal mobile telecommunications system&lt;span class=&quot;nt&quot;&gt;&amp;lt;/topics&amp;gt;&lt;/span&gt;
    &lt;span class=&quot;nt&quot;&gt;&amp;lt;topics&amp;gt;&lt;/span&gt;science&lt;span class=&quot;nt&quot;&gt;&amp;lt;/topics&amp;gt;&lt;/span&gt;
&lt;span class=&quot;nt&quot;&gt;&amp;lt;/peerindex&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h2 id=&quot;topsy&quot;&gt;Topsy&lt;/h2&gt;

&lt;p&gt;&lt;img src=&quot;http://f.cl.ly/items/3P153H292g08100N0G1N/sebastianspier_topsy.png&quot; alt=&quot;My Topsy Profile&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Topsy is a real-time search search engine and rather has ranking functionality as an auxiliary service among others. On 2010/08/24 Topsy &lt;a href=&quot;http://corp.topsy.com/2010/08/24/topsy-deploys-v2-platform-to-index-100-billion-status-updates/&quot;&gt;stated&lt;/a&gt; that they are “now the largest searchable index of content posted on Twitter” with more than 5 billion tweets and 2.5 billion links in their index. In their article &lt;a href=&quot;http://corp.topsy.com/about/influence/&quot;&gt;Influence: The Social Web Currency&lt;/a&gt; the Topsy team explain their definition of &lt;em&gt;influence&lt;/em&gt;:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Roughly the top 0.2% most influential of all Twitter users are tagged “Highly Influential”, and “Influential” tags appear for the top 0.5% […]. So if Topsy says you are influential, you are part of a pretty small group!&lt;/p&gt;

  &lt;p&gt;&lt;a href=&quot;http://corp.topsy.com/about/influence/&quot;&gt;Influence: The Social Web Currency&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Besides their search service, I found the analytics functionality most interesting. For example you can check how close the &lt;a href=&quot;http://analytics.topsy.com/?q=%40sebastianspier%2C%40davewiner&quot;&gt;Topsy Race between Dave Winer and me&lt;/a&gt; was (to spoil the fun: I lost!!!)&lt;/p&gt;

&lt;p&gt;The dataset returned by the Topsy API when querying their &lt;em&gt;authorinfo&lt;/em&gt; endpoint looks like this:&lt;/p&gt;

&lt;div class=&quot;language-xml highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;nt&quot;&gt;&amp;lt;topsy&amp;gt;&lt;/span&gt;
    &lt;span class=&quot;nt&quot;&gt;&amp;lt;name&amp;gt;&lt;/span&gt;Sebastian Spier&lt;span class=&quot;nt&quot;&gt;&amp;lt;/name&amp;gt;&lt;/span&gt;
    &lt;span class=&quot;nt&quot;&gt;&amp;lt;url&amp;gt;&lt;/span&gt;http://twitter.com/sebastianspier&lt;span class=&quot;nt&quot;&gt;&amp;lt;/url&amp;gt;&lt;/span&gt;
    &lt;span class=&quot;nt&quot;&gt;&amp;lt;type&amp;gt;&lt;/span&gt;twitter&lt;span class=&quot;nt&quot;&gt;&amp;lt;/type&amp;gt;&lt;/span&gt;
    &lt;span class=&quot;nt&quot;&gt;&amp;lt;nick&amp;gt;&lt;/span&gt;sebastianspier&lt;span class=&quot;nt&quot;&gt;&amp;lt;/nick&amp;gt;&lt;/span&gt;
    &lt;span class=&quot;nt&quot;&gt;&amp;lt;description&amp;gt;&lt;/span&gt;MD R&lt;span class=&quot;ni&quot;&gt;&amp;amp;amp;&lt;/span&gt;D: Meltwater Group. Tweets are my own.&lt;span class=&quot;ni&quot;&gt;&amp;amp;#xd;&lt;/span&gt;
#tech #ruby #yql #search #noSQL #BigData #basketball &lt;span class=&quot;ni&quot;&gt;&amp;amp;#xd;&lt;/span&gt;
Learning by doing!&lt;span class=&quot;nt&quot;&gt;&amp;lt;/description&amp;gt;&lt;/span&gt;
    &lt;span class=&quot;nt&quot;&gt;&amp;lt;topsy_author_url&amp;gt;&lt;/span&gt;http://topsy.com/twitter/sebastianspier&lt;span class=&quot;nt&quot;&gt;&amp;lt;/topsy_author_url&amp;gt;&lt;/span&gt;
    &lt;span class=&quot;nt&quot;&gt;&amp;lt;influence_level&amp;gt;&lt;/span&gt;0&lt;span class=&quot;nt&quot;&gt;&amp;lt;/influence_level&amp;gt;&lt;/span&gt;
&lt;span class=&quot;nt&quot;&gt;&amp;lt;/topsy&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h2 id=&quot;tweet-grader&quot;&gt;Tweet Grader&lt;/h2&gt;

&lt;p&gt;&lt;img src=&quot;http://f.cl.ly/items/3P153H292g08100N0G1N/sebastianspier_tweetgrader.png&quot; alt=&quot;My Tweet Grader Profile&quot; /&gt;&lt;/p&gt;

&lt;p&gt;The last post from the &lt;a href=&quot;http://graderblog.grader.com&quot;&gt;graderblog&lt;/a&gt; is from Nov 17, 2009, so I am not so sure how active Tweet Grader (aka Twitter Grader) is currently being developed. For the sake of comparison to the other services I am still listing them here.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;What Twitter Grader is trying to measure is the power, reach and authority of a twitter account. In other words, when you tweet, what kind of an impact does it have?&lt;/p&gt;

  &lt;p&gt;Chris Keller, 2009-11-17, &lt;a href=&quot;http://graderblog.grader.com/twitter-grader-api/bid/19046/How-Does-Twitter-Grader-Calculate-Twitter-Rankings&quot;&gt;How Does Twitter Grader Calculate Twitter Rankings?&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;In his &lt;a href=&quot;http://graderblog.grader.com/twitter-grader-api/bid/19046/How-Does-Twitter-Grader-Calculate-Twitter-Rankings&quot;&gt;blog post&lt;/a&gt; Chris Keller of Tweet Grader describes the different factors that go into determining a users grade. These are &lt;strong&gt;Number of Followers&lt;/strong&gt;, &lt;strong&gt;Power of Followers&lt;/strong&gt;, &lt;strong&gt;Updates&lt;/strong&gt;, &lt;strong&gt;Update Recency&lt;/strong&gt;, &lt;strong&gt;Follower/Following Ratio&lt;/strong&gt;, and &lt;strong&gt;Engagement&lt;/strong&gt;. Please refer to the blog post for more details.&lt;/p&gt;

&lt;p&gt;One final note: I don’t have a lot of confidence in the grade that Tweet Grader produces. I compared my own grade against the grade of an account that had not posted a single tweet but more followers. You already guessed it: My grade was lower. Together with my impression that Tweet Grader looks somewhat unmaintained right now, I don’t recommend Tweet Grader.&lt;/p&gt;

&lt;p&gt;Also Twitter Grader did not answer my request for API access in time, so I cannot post a data sample from them here.&lt;/p&gt;

&lt;h2 id=&quot;last-and-least-twinfluence&quot;&gt;Last and Least: Twinfluence&lt;/h2&gt;

&lt;p&gt;&lt;img src=&quot;http://f.cl.ly/items/2P2B3r3O3U2u1I2V3B1p/twinfluence_shutdown.png&quot; alt=&quot;Twinfluence Shutdown&quot; /&gt;&lt;/p&gt;

&lt;p&gt;The domain &lt;a href=&quot;http://twinfluence.com&quot;&gt;twinfluence.com&lt;/a&gt; is redirected to the profile of founder Guy Hagen and the last message on their &lt;a href=&quot;https://twitter.com/#!/twinfluence&quot;&gt;twitter account&lt;/a&gt; is from 9 Nov 2009. So I guess it is fair to assume that Twinfluence is dead, which is confirmed by the &lt;a href=&quot;https://twitter.com/#!/GuyHagen/status/62887711761117185&quot;&gt;tweet&lt;/a&gt; above by Guy Hagen.&lt;/p&gt;

</content>
 </entry>
 
 <entry>
   <title>Why Fork the YQL Community Tables?</title>
   <link href="https://spier.hu/2011/06/fork-yql-community-tables"/>
   <updated>2011-06-22T00:00:00+00:00</updated>
   <id>https://spier.hu/2011/06/fork-yql-community-tables</id>
   <content type="html">&lt;p&gt;The question of this post is: Why does it make sense to have a personal fork of &lt;a href=&quot;http://www.datatables.org&quot;&gt;YQL’s Community Open Data Tables&lt;/a&gt;, short Community Tables?&lt;/p&gt;

&lt;p&gt;So what again are these &lt;strong&gt;Open Data Tables&lt;/strong&gt;?&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Open Data Tables are XML files that can be “plugged” into the Yahoo! Query Language open platform (YQL). &amp;gt; These files describe how the YQL SQL-like language can be mapped onto any web service or source on internet.&lt;/p&gt;

  &lt;p&gt;Source: &lt;a href=&quot;http://www.datatables.org&quot;&gt;YQL’s Community Open Data Tables&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Yahoo obviously encourages developers to contribute their own tables to the Community Tables, more specifically to the &lt;a href=&quot;https://github.com/yql/yql-tables&quot;&gt;github repository&lt;/a&gt;. That makes perfect sense and is just how it should be. One the other hand this can be confusing for people that are starting with YQL and are searching for YQL on github, as they will find &lt;a href=&quot;https://github.com/yql/yql-tables/network&quot;&gt;multiple forks&lt;/a&gt; of the Community Tables as well. Actually that is exactly what happened to me when I was looking into YQL the first time.&lt;/p&gt;

&lt;h2 id=&quot;some-reasons-for-forking&quot;&gt;Some reasons for forking&lt;/h2&gt;

&lt;ol&gt;
  &lt;li&gt;It is just so easy the do a fork with github, so people do it, even if they might not need to.&lt;/li&gt;
  &lt;li&gt;People that want to have their own tables pulled into the Community Tables need to have a fork of the main repo, so that they can send a pull request via github.&lt;/li&gt;
  &lt;li&gt;Having a personal fork of the tables also has the advantage that you can keep them in a “known state”.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2 id=&quot;why-do-i-have-a-personal-fork&quot;&gt;Why do I have a personal fork?&lt;/h2&gt;

&lt;p&gt;Initially I kept my &lt;a href=&quot;https://github.com/spier/yql-tables&quot;&gt;personal fork of the Community Tables&lt;/a&gt; because I fixed some bugs and wanted to push my changes back to the community. Also this was the best playground to get some hands-on experience with how the creation of open data tables works. That’s how it started.&lt;/p&gt;

&lt;p&gt;Also my own fork gives me more control over which updates I add and when I do it. This actually applies to doing updates faster or slower than they are done in the Community tables. Meaning sometimes I want to get changes merged into my own fork faster, than the central Community Tables does it. On the other hand there are also situations where I might want to keep an older version of an open data table because I have an application that uses exactly this version of the table.&lt;/p&gt;

&lt;p&gt;The latter is actually an issue in it’s own right. YQL’s open data tables are not versioned, so they do not have an own version number themselves. They normally do map to a specific version of an API by pointing to the API endpoint that contains a specific version number. The issue is though that pretty much everything in this table could be changed without you noticing it. I will not get deeper into this issue but it is a question that has been lingering in my head for quite a while now, so if I should eventually come to a conclusion about this I might move it into an additional post.&lt;/p&gt;

&lt;p&gt;Finally an own fork also is a good place to share extra information with others. e.g. I have added a README to me fork, which contains for example a list of issues that I have encountered with YQL that might have been solved by others already who could give me input.&lt;/p&gt;

&lt;p&gt;Finally, sharing is everything. So if you are a YQL developer, make sure you push your updates back to the  &lt;a href=&quot;https://github.com/yql/yql-tables&quot;&gt;github repository&lt;/a&gt; of the Community Tables from time to time.&lt;/p&gt;

</content>
 </entry>
 
 <entry>
   <title>Adding Some Emphasis</title>
   <link href="https://spier.hu/2011/06/adding-some-emphasis"/>
   <updated>2011-06-16T00:00:00+00:00</updated>
   <id>https://spier.hu/2011/06/adding-some-emphasis</id>
   <content type="html">&lt;p&gt;Being able to link to an article on this site is pretty cool. But there are rare occasions where it might be useful for me to be able to link to individual paragraphs or even highlight certain sentences. Some sort of “deep links” basically, just with a twisted meaning of the phrase.&lt;/p&gt;

&lt;p&gt;This is a concept I remember being described by &lt;a href=&quot;http://scripting.com/&quot;&gt;Dave Winer&lt;/a&gt; (please excuse me, I cannot find the link to the article:) ). Not sure if he was the first to do so but that does not really matter after all either. What I don’t like that much about Winer’s implementation of these deep links is that they clutter his articles with #-characters after each paragraph.&lt;/p&gt;

&lt;p&gt;An implementation of this that I like much better has been done by &lt;a href=&quot;http://twitter.com/donohoe&quot;&gt;Michael Donohoe&lt;/a&gt; for the New York Times. He implemented a javascript library called &lt;a href=&quot;http://open.blogs.nytimes.com/2011/01/10/emphasis-update-and-source/&quot;&gt;Emphasis&lt;/a&gt;, the &lt;a href=&quot;https://github.com/NYTimes/Emphasis&quot;&gt;source code&lt;/a&gt; is on github. It is pretty much a plug-and-play solution, you just have to specify with an CSS selector which paragraphs from your articles should be selectable.&lt;/p&gt;

&lt;h1 id=&quot;how-to&quot;&gt;How-To&lt;/h1&gt;

&lt;p&gt;Just Double-tap the Shift key and paragraph symbols ¶ will appear next to each paragraph. Click any paragraph symbol to generate a link to that paragraph, or click on sentences to highlight them. The link will appear in your browser’s address bar and you can use these modified URLs for sharing. Pretty cool!&lt;/p&gt;

&lt;h1 id=&quot;demo&quot;&gt;Demo&lt;/h1&gt;
&lt;p&gt;For example you can &lt;a href=&quot;http://spier.github.com/2011/06/adding-some-emphasis/#h[FeyCtU,1]&quot; target=&quot;_blank&quot;&gt;open this article&lt;/a&gt; with a section being highlighted. (needs to open in a new window for it to work. sorry!) Check the URL!&lt;/p&gt;

&lt;p&gt;I have already used this in a recent pet project &lt;a href=&quot;http://springerquotes.heroku.com/&quot;&gt;springerquotes&lt;/a&gt; that I will probably write about more soon.&lt;/p&gt;

</content>
 </entry>
 
 <entry>
   <title>API Health Checker with YQL</title>
   <link href="https://spier.hu/2011/06/api-health-check"/>
   <updated>2011-06-15T00:00:00+00:00</updated>
   <id>https://spier.hu/2011/06/api-health-check</id>
   <content type="html">&lt;p&gt;Wouln’t it be possible to build an API Health Checker with YQL?&lt;/p&gt;

&lt;p&gt;Don’t know what YQL is? It’s the thing! I love it. Go checkout the excellent &lt;a href=&quot;http://developer.yahoo.com/yql&quot;&gt;YQL documentation&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Now that you know what YQL is, you need to learn about the open data tables as well, also called community tables. They open source, every body can contribute to them, the main repository is hosted at &lt;a href=&quot;https://github.com/yql/yql-tables&quot;&gt;github&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;With the combination of YQL and the open data tables I am imagining the following to be possible:&lt;/p&gt;

&lt;p&gt;One could implement a test suite, much like a continuous integration test, that runs over all YQL tables and sends sample queries to all these APIs. Then you compare the returned results to a predefined expected value - much like an assertion in a Unit Test. This way one could check if the APIs are still operating and if the mapping created by the YQL table is correct.&lt;/p&gt;

&lt;p&gt;Building that into the YQL table DTD would result in something like this:&lt;/p&gt;

&lt;div class=&quot;language-xml highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;nt&quot;&gt;&amp;lt;meta&amp;gt;&lt;/span&gt;
	...
	&lt;span class=&quot;nt&quot;&gt;&amp;lt;sampleQuery&amp;gt;&lt;/span&gt;
		&lt;span class=&quot;nt&quot;&gt;&amp;lt;query&amp;gt;&lt;/span&gt;SELECT * FROM {table} WHERE id=&quot;123&quot;&lt;span class=&quot;nt&quot;&gt;&amp;lt;/query&amp;gt;&lt;/span&gt;
		&lt;span class=&quot;nt&quot;&gt;&amp;lt;expectedResult&amp;gt;&lt;/span&gt;SOME_JSON_STRING_HERE&lt;span class=&quot;nt&quot;&gt;&amp;lt;/expectedResult&amp;gt;&lt;/span&gt;
	&lt;span class=&quot;nt&quot;&gt;&amp;lt;/sampleQuery&amp;gt;&lt;/span&gt;
&lt;span class=&quot;nt&quot;&gt;&amp;lt;/meta&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h1 id=&quot;challenges&quot;&gt;Challenges&lt;/h1&gt;

&lt;p&gt;An incomplete list of the known challenges from the top of my head:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Many APIs require an API key. Of course one could get an API key for all these APIs but we are talking about a lot of APIs here and managing all these keys does not sound like fun (not to mention that they have to renewed etc)&lt;/li&gt;
  &lt;li&gt;Most API results are not static (Why would you call the API if you always get the exact same data anyways, right?) One could still map parts of the results against some known values but that becomes more complicated then.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So, API builders, YQL lovers, tech heads. What do you think? Is this possible, and is this a good idea at all?&lt;/p&gt;

</content>
 </entry>
 
 <entry>
   <title>Why Start from Scratch?</title>
   <link href="https://spier.hu/2011/06/from-scratch"/>
   <updated>2011-06-14T00:00:00+00:00</updated>
   <id>https://spier.hu/2011/06/from-scratch</id>
   <content type="html">&lt;p&gt;Seriously! Why would I want to start a new blog? 
After all I already one one at &lt;a href=&quot;http://blog.airness.de&quot;&gt;blog.airness.de&lt;/a&gt;. So why start from scratch?&lt;/p&gt;

&lt;p&gt;In short: I need a place where I can easily dump ideas and where people that are interested
in stuff like that can find it.&lt;/p&gt;

&lt;p&gt;If you are interested in the long story, read on …&lt;/p&gt;

&lt;h2 id=&quot;prior-blogging&quot;&gt;Prior Blogging&lt;/h2&gt;

&lt;p&gt;For my prior blog at &lt;a href=&quot;http://blog.airness.de&quot;&gt;blog.airness.de&lt;/a&gt; I used &lt;a href=&quot;http://wordpress.org/&quot;&gt;wordpress&lt;/a&gt;. That worked well for me for quite a while. I even ventured a bit deeper by writing some small &lt;a href=&quot;http://wordpress.org/extend/plugins/ebay-sales-lister&quot;&gt;plugins&lt;/a&gt; for it. Just eventually my blog became bloated with too many sidebars and thereby also quite slow. Worst of all, everything distracts from the main thing, which is the content.&lt;/p&gt;

&lt;p&gt;I also ended up with two handful of drafts piling up that I never finished. Of course I mainly have to blame that on myself for being lazy but I also felt that in parts the process of posting and writing was too clumsy for me.&lt;/p&gt;

&lt;p&gt;Then I ventured into &lt;a href=&quot;http://drupal.org/&quot;&gt;drupal&lt;/a&gt; for a longer while. I really loved it at still do. At some point I will for sure use it for a bigger project but for what I want to do here, drupal has just too much power. It’s like taking a sledgehammer to crack a nut, just toooooo much.&lt;/p&gt;

&lt;h2 id=&quot;geek-geek&quot;&gt;Geek? Geek!&lt;/h2&gt;

&lt;p&gt;I am a geek by heart. Took me a while to admit that but I guess it had to be said :) I love technology and trying out new stuff. So why not try &lt;a href=&quot;https://github.com/mojombo/jekyll&quot;&gt;jekyll&lt;/a&gt;?&lt;/p&gt;

&lt;p&gt;It is plain, clean and easy. I write my posts in plain text files (that I use for all kinds of stuff anyways), and I can use &lt;a href=&quot;http://daringfireball.net/projects/markdown/&quot;&gt;markdown syntax&lt;/a&gt; for the formatting! &lt;strong&gt;Nice!&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;To top things, I can host the whole thing at &lt;a href=&quot;http://pages.github.com/&quot;&gt;GitHub Pages&lt;/a&gt;, pushing new post via git. &lt;strong&gt;Even nicer!&lt;/strong&gt;&lt;/p&gt;

&lt;h2 id=&quot;almost-like-a-longer-tweet&quot;&gt;Almost Like a Longer Tweet&lt;/h2&gt;

&lt;p&gt;I find myself using twitter fairly frequently lately. It is quite a useful tool for a bunch of different purposes but I have to agree with &lt;a href=&quot;https://twitter.com/#!/davewiner&quot;&gt;Dave Winer&lt;/a&gt; when it comes to the arbitrary 140 character limit: It is useless. Sometimes you just need to say a little bit more :)&lt;/p&gt;

&lt;p&gt;So for all things that just break the 140 characters by a bit, I will be using this blog as well, and then point people to my posts from twitter, if I consider them relevant enough.&lt;/p&gt;

&lt;h2 id=&quot;idea-curation&quot;&gt;Idea Curation&lt;/h2&gt;

&lt;p&gt;We all have ideas, all the time. Most of them pass and for most of them it is good that way. Some others stick around for a bit longer.&lt;/p&gt;

&lt;p&gt;Now I will finally have a place where I can collect them to get input from others wrt their usefulness and support in implementing them.&lt;/p&gt;

&lt;h2 id=&quot;inspiration&quot;&gt;Inspiration&lt;/h2&gt;

&lt;p&gt;This blog is a fork of &lt;a href=&quot;http://zachholman.com/&quot;&gt;Zach Holdman’s Blog&lt;/a&gt;. As you see I even kept his design because I am too lazy to change things and I just want something to get started. If you should ever find this Zach, bare with me. It’s open source after all, right? :)&lt;/p&gt;

&lt;p&gt;I also kind of like the idea of the &lt;a href=&quot;http://timelessrepo.com/&quot;&gt;timeless repository&lt;/a&gt;. Maybe I will morph jekyll into behaving like that one day, who knows.&lt;/p&gt;

&lt;p&gt;For now, this is just a start. I will see where this leads.&lt;/p&gt;

</content>
 </entry>
 
 <entry>
   <title>World Bank Competition - YQL Tables</title>
   <link href="https://spier.hu/2010/10/worldbank-yql-tables"/>
   <updated>2010-10-23T00:00:00+00:00</updated>
   <id>https://spier.hu/2010/10/worldbank-yql-tables</id>
   <content type="html">&lt;p&gt;During the &lt;a href=&quot;http://appsfordevelopment.challengepost.com/&quot;&gt;Apps for Development&lt;/a&gt; contest of the World Bank I created this YQL datatables to make working with the World Bank Data API easier. The &lt;a href=&quot;https://github.com/spier/yql_worldbank&quot;&gt;sources&lt;/a&gt; are hosted at github and I also contributed them to the official &lt;a href=&quot;http://www.datatables.org&quot;&gt;YQL Community Tables&lt;/a&gt;.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>My thoughts on MEST and explaining “the dis tin”</title>
   <link href="https://spier.hu/2010/03/my-thoughts-on-mest-and-explaining-the-dis-tin"/>
   <updated>2010-03-09T00:00:00+00:00</updated>
   <id>https://spier.hu/2010/03/my-thoughts-on-mest-and-explaining-the-dis-tin</id>
   <content type="html">&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; Cross posting from &lt;a href=&quot;http://www.meltwaterblog.com/my-thoughts-on-mest-and-explaining-%E2%80%9Cthe-dis-tin%E2%80%9D&quot;&gt;Meltwater Blog (09.03.2010)&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;“The dis tin,” or “the this thing”, is a phrase frequently used in Ghana to describe something that either is difficult to describe, does not have a name, or a name that the speaker has just momentary forgotten.&lt;/p&gt;

  &lt;p&gt;(Disclaimer: Please forgive me, all Ghanaians if I am translating this somewhat incorrectly.)&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;In 2008, I worked at &lt;a href=&quot;http://meltwater.org&quot;&gt;Meltwater Entrepreneurial School of Technology&lt;/a&gt; (MEST) as a Teaching Fellow – more on that later. In January of 2010 I was fortunate enough to go back to Ghana and attend the graduation of the first class of trainees.&lt;/p&gt;

&lt;p&gt;So what is “the dis tin” that is MEST? What does it mean to me, to &lt;a href=&quot;http://meltwater.com&quot;&gt;Meltwater Group&lt;/a&gt;, to our employees, and most importantly, to the trainees in the program? Since joining MEST as a Teaching Fellow in 2008, many people have asked me these questions.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/mest_graduates1-300x225.jpg&quot; alt=&quot;MEST Graduates 2009&quot; /&gt;&lt;/p&gt;

&lt;p&gt;MEST is Meltwater’s non-profit program launched in Accra, Ghana two years ago. MEST follows the Meltwater Group’s deeply rooted belief that “talent is talent everywhere” and that when “talented people receive the right amount of support, guidance and encouragement, they can accomplish extraordinary things” as our &lt;a href=&quot;http://www.meltwater.com/about/management&quot;&gt;CEO Jorn Lyseggen&lt;/a&gt; once put it.&lt;/p&gt;

&lt;p&gt;MEST’s mission is to train young Ghanaians in order to enable them to start their own globally successful software companies.&lt;/p&gt;

&lt;h2 id=&quot;my-work-at-mest&quot;&gt;My work at MEST&lt;/h2&gt;

&lt;p&gt;A Teaching Fellow at MEST is a hybrid between a teaching assistant at university, a coach, a technology expert and a mentor … so pretty much a jack-of-all-trades ☺&lt;/p&gt;

&lt;p&gt;In my time at MEST my main focus was to strengthen the trainees’ understanding of current technologies and how they can be successfully leveraged for the trainees’ respective business ideas. The depth in which the different technologies were addressed was really diverse since the trainees all came from varied academic backgrounds (but all hold a bachelor’s degree). Therefore the level of support a trainee needed often was decided on a case by case basis.&lt;/p&gt;

&lt;p&gt;Generally speaking, my experience as a Teaching Fellow was a very enjoyable one for me. Besides having the chance to work in a new cultural context and being able to broaden my horizons both professionally as well as personally, I developed a lot of new friendships with other MEST staff and of course with the trainees themselves.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/mest_samuel-and-sebastian-300x225.jpg&quot; alt=&quot;Samuel and Sebastian&quot; title=&quot;Samuel (EIT and Founder of Streemio) and me&quot; /&gt;&lt;/p&gt;

&lt;h2 id=&quot;my-impressions-when-going-back-to-mest&quot;&gt;My impressions when going back to MEST&lt;/h2&gt;

&lt;p&gt;Going back this January to see how MEST and the trainees had developed in the last year and also to celebrate the graduation of the first class of trainees was a great experience. I met a lot of my old friends, as former Teaching Fellows like myself flew in from all over the world to be part of this truly unique and historic occasion.&lt;/p&gt;

&lt;p&gt;It was exciting to see how the trainees have developed. The group of eleven successful graduates have built up incredible entrepreneurial spirits and technological skills over the course of the last two years during their training at MEST. I am sure that successful businesses will be started by them one day. They may not necessarily all be in the global marketplace, but will achieve their own individual definition of “being successful”.&lt;/p&gt;

&lt;p&gt;One of the teams was accepted into the MEST Incubator, which is phase two of the MEST program that helps MEST graduates validate their ideas and get their new businesses off the ground. Supplied with initial funding, they are already developing the first prototype &lt;a href=&quot;http://www.streemio.com/&quot;&gt;streemio.com&lt;/a&gt; and hope to go live with it in the middle of this year. Follow Streemio closely in order not to miss what they are up to.&lt;/p&gt;

&lt;p&gt;I am looking forward to seeing all the great talent and ideas that will come out of MEST in the future. To the trainees, I have to say: You guys rock, go for it!&lt;/p&gt;

&lt;p&gt;So I hope I was able to tell you a little more about “the dis tin” called MEST.&lt;/p&gt;

&lt;p&gt;In conclusion, I am proud to have been part of MEST. “Hats off!” to the &lt;a href=&quot;http://meltwater.org&quot;&gt;Meltwater Foundation&lt;/a&gt; and especially to &lt;a href=&quot;https://twitter.com/#!/jorn_lyseggen&quot;&gt;Jorn&lt;/a&gt; for staying true to the unique philanthropic character of MEST and for bringing to life such an extraordinary example of corporate responsibility.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Briefling</title>
   <link href="https://spier.hu/2010/01/briefling"/>
   <updated>2010-01-01T00:00:00+00:00</updated>
   <id>https://spier.hu/2010/01/briefling</id>
   <content type="html">&lt;p&gt;Briefling ist a project I did together with my friend &lt;a href=&quot;http://pixelmove.de&quot;&gt;Pascal&lt;/a&gt;. briefling.de makes it very easy to create professionally layouted letters in PDF format. They can be directly created on the website be filling out the required data in the forms. The PDFs can then be stored locally. In the future we might extent the functionality to enable the posting of letters directly from our service.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Auf schnellem Weg nach Ghana</title>
   <link href="https://spier.hu/2008/10/auf-schnellem-weg-nach-ghana"/>
   <updated>2008-10-13T00:00:00+00:00</updated>
   <id>https://spier.hu/2008/10/auf-schnellem-weg-nach-ghana</id>
   <content type="html">&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; Cross posting from &lt;a href=&quot;http://www.pressestelle.tu-berlin.de/newsportal/alumni/2008/auf_schnellem_weg_nach_ghana/&quot;&gt;TU intern (13.10.2008)&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;TU-Alumnus Sebastian Spier arbeitet als Teaching Fellow in Ghana&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/mest_2008_fellows.jpg&quot; alt=&quot;MEST Fellows 2008&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Sebastian Spier (l.) an der Meltwater Entrepreneurial School of Technology in Ghana&lt;/p&gt;

&lt;p&gt;Nachdem Sebastian Spier im vergangenen Jahr sein Informatikstudium an der &lt;a href=&quot;http://www.tu-berlin.de/&quot;&gt;TU Berlin&lt;/a&gt; abschloss, ahnte er noch nichts davon, dass er sich nur wenige Monate später in Richtung Ghana aufmachen würde. “Gerade noch zu kalt in Deutschland und auf einmal schon zu heiß in Ghana”, beschreibt er diesen schnellen Wechsel. Wie es dazu kam und womit sich Sebastian Spier heute in Ghana beschäftigt, hat er für TU intern aufgeschrieben.&lt;/p&gt;

&lt;p&gt;Ich suchte nach dem Studienende einen Weg, meine technische Ausbildung und mein Interesse für die Lehre mit einem Auslandsaufenthalt zu verbinden, und besuchte mit diesem Ziel im Herbst 2007 die Firmenkontaktmesse „bonding“. So kam ich zu der IT-Firma Meltwater, die ein nahezu maßgeschneidertes Angebot für mich parat hatte: “Teaching Fellow” in der &lt;a href=&quot;http://meltwater.org&quot;&gt;Meltwater Entrepreneurial School of Technology&lt;/a&gt; (MEST) in Ghana - und das Ganze schon ab Januar 2008. Eine Bewerbung, drei Interviews und vier Wochen später hatte ich eine Zusage. Natürlich hatte ich die gleichen Zweifel, die jeder hat, wenn er an Ghana denkt. Afrika … wie ist das da eigentlich? Nachdem ich mich über Land und Leute informiert hatte, habe ich den Rest auf mich zukommen lassen.&lt;/p&gt;

&lt;p&gt;Was genau ist nun MEST? Es ist ein Non-Profit-Projekt, das vollständig von der &lt;a href=&quot;http://meltwater.com&quot;&gt;Meltwater Group&lt;/a&gt; entwickelt, finanziert und umgesetzt wird. Ziel des Projektes ist es, junge ghanaische Absolventen im Bereich Softwareentwicklung und Entrepreneurship auszubilden. Wir begleiten sie dabei auf ihrem Weg, internationale Software-Unternehmen aufzubauen, um somit eine nachhaltige Entwicklung der Softwarebranche in Afrika zu unterstützen. Softwareentwicklung ist einer der größten, wenn nicht der größte Wachstumszweig der Informatik in den letzten zehn Jahren. Zur Entwicklung eines Programms bedarf es keiner großen Investition, sondern lediglich eines Computers, den es bereits für einige 100 Euro zu kaufen gibt. Gerade dies macht Gründungen im Softwarebereich für Länder wie Ghana so interessant.&lt;/p&gt;

&lt;p&gt;Wir vermitteln den Teilnehmern nicht nur die Hard Skills sondern vor allem auch die Soft Skills, die den erfolgreichen Geschäftsmann ausmachen. Die Tätigkeit als Teaching Fellow ist vergleichbar mit einer Assistenzstelle an einer Uni. Ich entwickle und unterstütze die Projektarbeiten, ich halte Vorträge, bereite Übungen und Tests vor und bin beteiligt an der Pflege der IT-Infrastruktur. Insgesamt ist die Arbeitsumgebung sehr flexibel, was sehr viel Spaß und natürlich auch viel Arbeit mit sich bringt. Sie fördert und fordert ein hohes Maß an Selbstständigkeit und Eigenverantwortung, und sie bringt mich in kürzester Zeit in Kontakt mit Menschen unterschiedlichster Nationen.&lt;/p&gt;

&lt;p&gt;Mein Engagement bei der MEST läuft noch bis Ende Dezember. Danach habe ich schon unterschiedliche Angebote, allerdings habe ich mich noch nicht entschlossen, ob ich in Deutschland, Europa oder in anderen Teilen der Welt arbeiten möchte. Sicher ist jedoch jetzt schon, dass mir die Arbeit hier eine ganz andere Sicht auf viele Dinge im Alltag gebracht hat. Nicht alles, was in Deutschland normal ist, würde man in Ghana genauso machen, und andersherum.&lt;/p&gt;

&lt;p&gt;Wer also wissen will, was “&lt;a href=&quot;http://de.wikipedia.org/wiki/Fufu&quot;&gt;Fufu&lt;/a&gt;” und “&lt;a href=&quot;http://de.wikipedia.org/wiki/Banku&quot;&gt;Banku&lt;/a&gt;” sind, wie man in &lt;a href=&quot;http://de.wikipedia.org/wiki/Twi_(Sprache)&quot;&gt;Twi&lt;/a&gt; “Hallo” sagt, was, zur Hölle, ein “Trotro” ist und wie viele Kilo ein menschlicher Kopf wirklich tragen kann, der könnte sich als “Teaching Fellow” für das nächste Semester der MEST in Ghana &lt;a href=&quot;http://www.meltwater.org/work-with-us/teaching-fellows/&quot;&gt;bewerben&lt;/a&gt;.&lt;/p&gt;

</content>
 </entry>
 
 <entry>
   <title>FANtasy Rotation</title>
   <link href="https://spier.hu/2006/01/fantasy-rotation"/>
   <updated>2006-01-01T00:00:00+00:00</updated>
   <id>https://spier.hu/2006/01/fantasy-rotation</id>
   <content type="html">&lt;p&gt;I developed FANtasy Rotation with my good friend Helge back in 2006 and we have been maintaining it ever since. It is a game for the German basketball club &lt;a href=&quot;http://www.albaberlin.de&quot;&gt;Alba Berlin&lt;/a&gt;, which allows to users to make bets on how much playing time each individual player will get for the upcoming games. The site also has a vast collection of statistics and news reaching back to 2005, which eventually turned out to be more popular than the game itself.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Kneipenguide</title>
   <link href="https://spier.hu/2003/01/kneipenguide"/>
   <updated>2003-01-01T00:00:00+00:00</updated>
   <id>https://spier.hu/2003/01/kneipenguide</id>
   <content type="html">&lt;p&gt;In 2003 I architected and implemented a Content Management System for one of the then early location services in the German market called kneipenguide.de, again with my friend Helge. “kneipe” means pub in German, and kneipenguide.de made it easy for people to explore the best places for drinks and food in their city. On of the most favoured tools was the Happy Hour Finder, that helped the users to find an affordable way through their party night.&lt;/p&gt;
</content>
 </entry>
 

</feed>
