What I Learned at DevCamp Karlsruhe 2014 #dcka14
See also: Sessionplan
Day 1, SATURDAY 22RD MARCH 2014
Session 1: Docker
Docker allows to create quite light-weight virtual Linux machines. It does this by exploiting a feature called LCX, something that became possible on since Linux 2.6.something. Docker records system snapshots after each relevant change step.
My thoughts: Somehow I thought about the general problem of using components, modules, docker images, whatever you call pre-made code pieces you want to run. The main tasks are always the same and have to be solved by package manager (apt-get, homebrew, macports, …), dependency managers (maven, grunt, …), or component marketplaces. Any kind of component must be
- searched and found or discovered - you must try to find a component and get a system-dependent ID for it
- get - transfer the component to your target machine. And make sure to get the right version. That is a science on it’s own (maven reactor build…)
- install and configure - Prepare for running the component; should be easy; most often isn’t.
- start - execute the component code
- use - get this feeling of success from actually using some functionality of the component
- stop - free system resources, keep being in control and stop the component
- automate starting and stopping - maybe even automate configuration
- manage deployment for production - maybe this includes some kind of automation for updates. Or maintenance: Disk full due to logs? Add monitoring to find out when to upgrade server or change config.
All these steps are really to much work for simple things. That’s why developers prefer often to
- Just write it yourself - ignoring for a moment that most problems will still apply :-)
- Call a service - ignoring that you just opened a can of worms of new problems: network outages, quality of service, price, …
Conclusion: Probably one can create a startup around dependency management similar to GitHub (versioning) or Docker (virtual machines).
Session 2: Search-driven Applications
If you have entities in different database tables or several data bases and need to show a unified view in the UI, you can use a search server to harmonize the data in a way. The search server indexes the data redundantly. It provides fields with values, hence its a database on its own. It is completely de-normalised and allows searching, ranking, sorting. Combined with clever fields such as using terms like “/products/home/sofa”,“/products/home”, “/products” you can even get hierarchical navigation and facetted search. Much easier then in SQL.
My thoughts: Integration data from different sources is not really a search problem. Funny, how the search server community ended as the solution to this problem. Maybe traditional data bases should offer better search capabilities? Adding another index is certainly not the hardest thing to do :-)
– Lunch –
Session 3 & 4: Scala Introduction & Workshop
Scala is a possible future of Java. Previous language design from Scalas creator – Martin Odersky – became Java versions, e.g. the Generics feature of Java 1.5. So other features of Scala might be Javas future as well. In Java 8, lambda expressions arrived. What is the main thing in Scala? The type system. A turing complete, mighty type system. The one end of statically typed languages. Testing? Possible, but not really needed, our presenter Simon Ochsenreither told us. Oh, and Scala has a sophisticated collections API … maybe similar to the Streams-API that just arrived in Java 8? I’ll have to check.
My thoughts: The talk made me curious. What about the other JVM languages? Clojure? Google: “clojure vs. scala”. Ah, clojure is centered around data; is based on Lisp (“code as data”); is simpler. Groovy? “groovy vs. scala”? Just read this excellent answer on SO: Scala vs. Groovy vs. Clojure (closed)
How to Install Scala with Eclipse
Installation turned out to be tricky. A good install path is this one:
- You have already Eclipse installed
- You “Install new software…” from this update site:
- Eclipse update sites URLs listed here: http://scala-ide.org/download/current.html - Now you have Scala, an Eclipse Scala IDE feature and even support for running Scala tests, yeah!
Session 5: Hot Shit
We were a group of ca. 20 people, each listing hot shit in a shared doc and explaining what’s cool about a given tool/service/framework.
My picks: Install desktop apps on OS X quicker with Cask, a homebrew extension.
My thoughts: Wow, so many people use VIM (we did a show of hands). So many people administrate servers. What are all these Java developers doing? In the morning it turned out ca. 70–80% of all people worked with Java.
Day 2, SUNDAY 23RD MARCH 2014
Session 1: Working from Home
Several people introduced their way of working from home. Not sometimes, but every day. Some met for planning every two weeks in person, some never. Almost all used a kind of daily stand-up (eh, call-in) meeting.
My thoughts: Working together physically is nice, but probably falls under the pattern “Tyranny of the dominant decomposition” [1]. One office can only a group of people be grouped by one aspect. Working remotely, people can be grouped in many ways, forming communication links as needed. This has the potential to be more productive.
Session 2: Firefox OS
Firefox is building an operating system (OS) for cheap smart phones, targeting emerging markets. Our presenter urged us to check out https://wiki.mozilla.org/WebAPI to find many new web APIs which will find their way into desktop browsers, too. They allow to do many fun things, such as reading sensors of all kind, triggering notifications, vibration or even making a phone call.
Politically, it’s clear why Firefox and Google both push hard to move more stuff to the web - or extend the web to more areas. Apple, however, has a different business model. Selling apps with at 30% fee is attractive. So I wonder how Apple will react.
My thoughts: Before this session I thought implementing a browser in a browser is just crazy and idiotic. Now I think this is called Firefox OS and makes sense. HTML5 is such an advanced and mature UI technology, it makes just sense to use it everywhere. Which includes the basic operating system. Which of course, includes a browser.
– Lunch –
Session 3: MEAN Frontend
MEAN is
- MongoDB - NoSQL database
- Express - web framework for NodeJS
- Angular JS - MVC framework for JS
- Node JS - server runtime for JS code
It was quite amazing to see how quick our presenter managed to build an app, live during the talk.
My thoughts: The main productivity boost on the front-end was Angular JS plus its extensions. No wonder, the other 3 parts of MEAN are back-end technologies :-) Angular JS hard-coded the most common things one does with HTML interfaces over and over again. It’s really top-notch right now. I’m very curious how it will work together with Web Components, the web UI’s future.
Session 4: “Space Conquest”
The fun session. A game server runs Lua VMs. Each player starts with a base station on a planet, building ships, flying around, fighting, mining ore, colonizing new planets, becoming another base station, building ships… Each station and each ship is another Lua VM. No, what is the perfect code to conquer the galaxy?
My thoughts: Something like this could become the next Minecraft. Lua looks interesting. Maybe the ultimate VM of the internet will NOT be JavaScript but Lua? That would be fun. But most likely it will be JavaScript.
Link: https://wpn.nerd2nerd.org/doku.php
Link: https://wpn.nerd2nerd.org/doku.php
Summary
Thanks to all sponsors, speakers and participants.
[1] Tarr, P., Ossher, H., Harrison, W., Sutton, S.M. “N Degrees of Separation: Multi-Dimensional Separation of Concerns” in Proc. ICSE’99
Very interesting read! - Henning
ReplyDelete