<feed xml:base='/feed/atom.xml' xmlns='http://www.w3.org/2005/Atom'><id>http://blog.hendrikvolkmer.de/</id><title type='text'>Refactoring life. Mercilessly.</title><updated>2015-03-14T18:05:20+00:00</updated><link href='/feed/atom.xml' rel='self'/><link href='http://blog.hendrikvolkmer.de/' rel='alternate'/><author><name>Hendrik Volkmer</name></author><entry><id>/2013/10/23/write-vagrantfiles-or-dockerfiles-instead-of-tutorials</id><title type='text'>Stop writing tutorials - start writing Vagrantfiles or Dockerfiles</title><content type='html'>&lt;p&gt;There are a lot of good tutorials out there about all kinds of system setup stuff. However, it’s quite cumbersome and time consuming to go through them and actually set up systems by following them. Also, you have to figure out the correct operating system version etc.&lt;/p&gt;

&lt;p&gt;By providing &lt;a href=&quot;http://docs.vagrantup.com/v2/vagrantfile/index.html&quot;&gt;Vagrantfiles&lt;/a&gt; or &lt;a href=&quot;http://docs.docker.io/en/latest/use/builder/&quot;&gt;Dockerfiles&lt;/a&gt; (or both) with the tutorial steps encapsulated as either &lt;a href=&quot;http://www.opscode.com/chef/&quot;&gt;Chef&lt;/a&gt;, &lt;a href=&quot;https://puppetlabs.com/&quot;&gt;Puppet&lt;/a&gt; or even simple bash scripts people can start &lt;strong&gt;using&lt;/strong&gt; the system they intend to deploy or try out and don’t have to waste time copy/pasting. All the important version info is encapsulated the same way as the tutorial intended, so it will almost certainly work.&lt;/p&gt;

&lt;p&gt;To get started, check out examples on github by &lt;a href=&quot;https://www.google.de/search?q=inurl%3AVagrantfile+site%3Agithub.com&quot;&gt;searching for Vagrantfile&lt;/a&gt; or &lt;a href=&quot;https://www.google.de/search?q=inurl%3ADockerfile+site%3Agithub.com&quot;&gt;Dockerfile&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;So next time you write up how something works (e.g. installing your favourite new database or your new webapp), just provide the Vagrantfile and add useful comments.&lt;/p&gt;
</content><updated>2013-10-23T00:00:00+00:00</updated><link href='/2013/10/23/write-vagrantfiles-or-dockerfiles-instead-of-tutorials/' rel='alternate'/></entry><entry><id>/2013/10/11/the-missing-piece-operating-systems-for-web-scale-cloud-apps</id><title type='text'>The missing piece: Operating Systems for web scale Cloud Apps</title><content type='html'>&lt;p&gt;This image shows how the general computing paradigm changed over time.&lt;/p&gt;

&lt;p&gt;&lt;img title=&quot;mainframe-clientserver-cloud-evolution-blue&quot; src=&quot;http://cloudscaling.com/wp-content/uploads/2010/01/mainframe-clientserver-cloud-evolution-blue-1023x722.png&quot; alt=&quot;mainframe-clientserver-cloud-evolution-blue&quot; width=&quot;523&quot; height=&quot;370&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Source: &lt;a href=&quot;http://cloudscaling.com/blog/cloud-computing/debunking-the-no-such-thing-as-a-private-cloud-myth/&quot;&gt;Cloudscaling Blog&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Interestingly enough almost every paradigm came with an operating system platform that fit its needs. Except cloud computing - so far.&lt;/p&gt;

&lt;p&gt;This article will explore the current state of how applications are deployed in the cloud and why the current base operating system really is not the right way to go. I will start with the configuration of applications and deployment world how it is done now. I progress to show how it should be, going on to look at the assumptions of operating systems at them moment and how they fit the web scale cloud computing paradigm, closing with some links to interesting projects that actually implement these new ideas of cloud optimised operating systems.&lt;/p&gt;

&lt;h2 id=&quot;configuration-vs-compiled-in-behaviour&quot;&gt;Configuration vs. compiled in behaviour&lt;/h2&gt;

&lt;h3 id=&quot;how-does-software-delivery-work-in-a-bigger-context&quot;&gt;How does software delivery work in a bigger context?&lt;/h3&gt;

&lt;p&gt;If you look at the software delivery process from the end user’s perspective it looks like this:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;A new software need is identified.&lt;/li&gt;
  &lt;li&gt;Software needs to be “provisioned”. This can mean the software needs to be created (as in programming) or bought, or installed. It doesn’t matter. “The business/user” just cares that it can be used. It should work.&lt;/li&gt;
  &lt;li&gt;Software is used&lt;/li&gt;
  &lt;li&gt;User uses software and is happy. If not, go back to 1&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If you look at the problem from that perspective it really makes no difference what software “creation” vs. “installation” means. In the times of SaaS “installation” from the users perspective might just mean “filling out a web form”.&lt;/p&gt;

&lt;p&gt;If you break it down from a supplier perspective the whole process might be called “deliver software” or “provide means for users to acquire software”.&lt;/p&gt;

&lt;p&gt;As we will see the difference between “what is software and what  is configuration” is also very dependent on how you look at it.&lt;/p&gt;

&lt;h3 id=&quot;where-does-configuration-start-and-software-behaviour-end&quot;&gt;Where does configuration start and software behaviour end?&lt;/h3&gt;

&lt;p&gt;Configuration is just the last piece of programming outsourced to ops people. It can be done in a good way by explicitly using good programming principles like well defined APIs or in a bad way by just leaving decisions to the deployment guys who then need to figure out the last bit of what is required in terms of behaviour.&lt;/p&gt;

&lt;p&gt;There are two main aspects to configuration (system behaviour and connection to other parts) which each have two values - leaving us with a two-by-two matrix (OMG!):&lt;/p&gt;

&lt;p&gt;&lt;img title=&quot;Configuration matrix&quot; src=&quot;/assets/2013/10/Configmatrix.png&quot; alt=&quot;Configuration matrix&quot; width=&quot;400&quot; height=&quot;400&quot; /&gt;&lt;/p&gt;

&lt;p&gt;As you can see, most of the “boot up” config parameters also make sense to tweak at run time. This could be done either by changing config files and restarting the process or directly via API. All of the “boot up”/”behaviour” parts cloud be statically compiled into your application, because you wouldn’t want to change them at run time anyway.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;blockquote&gt;
    &lt;p&gt;If this is so simple, why does config files exist anyway? The compile statically into your application part just did not make sense in older delivery models. With fast build times and the possibility to bake everything together and re-deploy in seconds or at least minutes, this approach becomes a valid option to explore.&lt;/p&gt;
  &lt;/blockquote&gt;
&lt;/blockquote&gt;

&lt;p&gt;The plethora of Chef cookbooks and Puppet modules and meta cookbooks (in form of blog posts that describe how you create them or use them) shows that there is no clear cut. It’s not entirely clear where a “software package” ends and where “configuration” starts.&lt;/p&gt;

&lt;p&gt;And that’s really the point. What if there was no configuration at all?&lt;/p&gt;

&lt;p&gt;Deploy a Rails app on &lt;a href=&quot;http://heroku.com&quot;&gt;Heroku&lt;/a&gt;. Do you have to do any configuration? Not really. It just works. You create a web app, deploy. Delivery ended. That’s unfair: Heroku is a Platform-as-a-Service, so THEY just do all configuration so you don’t have to. That’s true but look at database configuration: Heroku just gives you this information via environment variables through a defined interface. An API. Oah!? What? This is software development: APIs!&lt;/p&gt;

&lt;p&gt;So configuration itself is just a lazy programmers way of not writing the code in a specific way and letting the admin/ops people to the last step of coding. And configuration management systems like Chef basically now are an IDE for them so to speak.&lt;/p&gt;

&lt;p&gt;If you deploy software in one target environment (e.g. only yourself, SaaS-style) you should have only a very small amount of config: staging vs. prod database config, tuning options.&lt;/p&gt;

&lt;p&gt;And if you have more than one customer - maybe you should not be lazy and provide configuration options but create different software packages for each customer. Crazy? Well. Either YOU compile your software package or you “outsource” it to your customer. Which option is nicer? And who might be better suited to to that?&lt;/p&gt;

&lt;p&gt;What are configuration files? Basically an API that is called once (start of service) to tell the service how to behave. That API is called by Chef, Puppet or your sysadmin. If you think of a software system with an actual API like that you would really think that it’s not good at all. A file-based API? And tomorrow we’ll start using TFTP again and use COBOL to parse the files.&lt;/p&gt;

&lt;p&gt;So basically configuration should not exist in the form of config files. There should be an API to the app that can configure it at runtime, e.g. to point it to other services it needs, or to tune it in some way.&lt;/p&gt;

&lt;h2 id=&quot;why-are-we-still-using-mostly-20-year-old-server-operating-systems&quot;&gt;Why are we still using mostly 20 year old server operating systems?&lt;/h2&gt;

&lt;p&gt;What do you need an operating system for? Let’s take Ubuntu or RedHat Linux? It is a nice, stable multi-user unix system. What do you really use that operating system for? Memory Management. Excuse me? You deployed a Java app. So the Java VM does that. User management? Well, who cares about the 50 users on the system, if the only one that matters is www-data running Apache and Tomcat? Process isolation and management? To isolate the Java VM from what exactly?&lt;/p&gt;

&lt;h3 id=&quot;multi-user&quot;&gt;Multi user&lt;/h3&gt;

&lt;p&gt;The multi-user part is a piece from the past, that’s still in there because no one has removed it. If you think about the multi-user capabilities in Unix and also Windows based systems and where they come from, it is clear that they are rather useless in web based cloud applications. Basically every VM runs a specific part of the application (e.g. database or web server) and only that. Even the security part mostly does not make sense on the operating system level: If the attacker breaks into the web app, they’ve got the data. No need to be root on the system.  The user isolation was not isolating so much useful stuff at all.&lt;/p&gt;

&lt;h3 id=&quot;application-packaging-and-delivery&quot;&gt;Application packaging and delivery&lt;/h3&gt;

&lt;p&gt;Another point that’s partly related to the config problem mentioned above: How is the software “packaged”? This problem has been solved by Linux distributions a long time a go… for the requirements of long time ago: Scheduled releases with rather static dependencies. If you try to create a distribution package for a modern application that you want to distribute rather rapidly for either downloadable software or distributed via web service with the OS just as the basis, you end up with rather weird constrains on your software. I don’t go into details here. Check out these posts for more detail: &lt;a href=&quot;http://blog.lusis.org/blog/2012/03/16/why-you-should-stop-fighting-distro-vendors/&quot;&gt;Why You Should Stop Fighting Distro Vendors - Part 1&lt;/a&gt; and &lt;a href=&quot;http://blog.lusis.org/blog/2013/09/23/stop-fighting-distros-part-2/&quot;&gt;Stop fighting Distros - Part 2&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This problem is so common that most people end up doing the pragmatic thing: Just tar.gz (or &lt;a href=&quot;https://github.com/jordansissel/fpm/wiki&quot;&gt;fpm&lt;/a&gt;) your application plus all dependencies and deliver it via scp (or bittorent as Facebook does) to many servers. Java apps did not care about this at all because the JVM encapsulated everything anyway and you just deployed WARs or JARs with everything they needed in them.&lt;/p&gt;

&lt;p&gt;So if you take these requirements and think about how an operating system would look like that satisfies all these and does nothing extra, it wouldn’t look like any Unix-like or Windows-like system at all.&lt;/p&gt;

&lt;p&gt;In most cloud environments the base image is a Linux “JeOS” (just enough operating system). This however still has all the concepts and baggage of a standard Linux system and is not optimised for the requirements of large scale cloud app deployments.&lt;/p&gt;

&lt;h3 id=&quot;the-bottom-up-approach-to-cloud-requirements&quot;&gt;The bottom up approach to cloud requirements&lt;/h3&gt;

&lt;p&gt;All you really need is a Kernel that can execute some kind of platform executable and your application that has access to an TCP/IP stack. Disk Access? Only if the part of the system is stateful (databases). Webservers could get away without it (or with r/o access in the image).&lt;/p&gt;

&lt;p&gt;For configuration most of the time you would only need an IP address plus TCP port or URL for some connection to other services (endpoint config). This needs to be managed dynamically because services go down, change IPs etc. - For this part many people use &lt;a href=&quot;http://zookeeper.apache.org/&quot;&gt;Apache Zookeeper&lt;/a&gt; and not a config management tool, because this config might change at moments notice and it’s distribution has to be instant.&lt;/p&gt;

&lt;p&gt;Netflix basically use this kind of model, however not in a totally stripped down way. They use a CentOS base image + Java-Stack + Application. Their build and deploy works like this: Bake Full OS-Image + Stack + Current App version with defined config options &lt;a href=&quot;https://github.com/Netflix/aminator&quot;&gt;into AWS image&lt;/a&gt; and then &lt;a href=&quot;https://github.com/Netflix/asgard&quot;&gt;deploy&lt;/a&gt; the image n times.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;blockquote&gt;
    &lt;p&gt;This somehow seems to be the way Smalltalk VMs/Images are deployed. There has to be some kind of law that states, that Smalltalk actually was right with its design decisions and every better programming system will eventually implement the Smalltalk ideas ;-)&lt;/p&gt;
  &lt;/blockquote&gt;
&lt;/blockquote&gt;

&lt;p&gt;What does this mean if you think this thought further:&lt;/p&gt;

&lt;p&gt;You end up with a warehouse scale computer, whose processes (e.g. VMs) in the operating system (hypervisor, VM-orchestration layer) can be controlled via HTTP REST calls. The processes will communicate via TCP/IP.&lt;/p&gt;

&lt;p&gt;The concepts are basically still the same as in an local operating system (message based IPC, processes) only at a higher level (Hosts, VMs talking via REST or MQs).&lt;/p&gt;

&lt;h3 id=&quot;interesting-projects-that-implement-this-idea&quot;&gt;Interesting Projects that implement this idea&lt;/h3&gt;

&lt;p&gt;This idea is actually being explored in various projects - sometimes more radical, sometimes not. Here is an overview of the projects I found that go in this direction (&lt;a href=&quot;http://twitter.com/hvolkmer&quot;&gt;Contact me&lt;/a&gt; if you know another one!)&lt;/p&gt;

&lt;p&gt;Running an application environment directly on a hypervisor:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;http://www.openmirage.org/&quot;&gt;OpenMirage&lt;/a&gt; - OCaml running on Xen&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/GaloisInc/HaLVM&quot;&gt;HaLVM&lt;/a&gt; - Haskell running on Xen&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://docs.oracle.com/cd/E20382_01/doc.11114/e15206/introduction002.htm&quot;&gt;Oracle JRockit Virtual Edition&lt;/a&gt; - Java on Hypervisor&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://www.erlangonxen.org/&quot;&gt;Erlang on Xen&lt;/a&gt; - Erlang on Xen&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://openfoo.org/blog/redis-native-xen.html&quot;&gt;Redis on Xen&lt;/a&gt; - Redis fork that can run directly on Xen w/o OS&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Stripped down operating system approach (either new kernel or Linux based):&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;http://www.osv.io/&quot;&gt;OSv&lt;/a&gt; - Kernel + TCP/IP + ZFS to run Java or  other app stack&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://coreos.com/&quot;&gt;CoreOS&lt;/a&gt; - Stripped down Linux + distributed config management&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://docker.io&quot;&gt;Docker&lt;/a&gt; - LXC containers + management of containers for app deployment&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://smartos.org/&quot;&gt;SmartOS&lt;/a&gt; - Illumos Kernel + Zones (or KVM)&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://www.returninfinity.com/&quot;&gt;Returninfinity&lt;/a&gt; - Minimum OS kernels for HPC optimized for x86-64bit&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://zerovm.org/wiki/The_Cloud_Hypervisor&quot;&gt;ZeroVM&lt;/a&gt; - A cloud hypervisor - somewhere between BareMetalOS and docker&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;advantages-of-the-cloud-operating-system-approach&quot;&gt;Advantages of the cloud operating system approach&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;Security: Isolation is thought of in terms of networks, locally everything is single user. Which is the case for most web apps anyway (www-user) (mysql user)) - Breaking in for Botnet purposes is harder (you own the vm and then what?), reduced attack surface&lt;/li&gt;
  &lt;li&gt;Elasticity: e.g Erlang on Xen or Docker spin up new applications in milliseconds instead of seconds or minutes for normal VMs&lt;/li&gt;
  &lt;li&gt;Faster: no or less operating system overhead&lt;/li&gt;
  &lt;li&gt;Build with configuration distribution in mind: e.g. Core OS has a distributed config system&lt;/li&gt;
  &lt;li&gt;App deployment is simplified: The whole image can become the unit of deployment. Basically the kernel now is only a small piece attached to the application rather than the other way around&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;disadvantages-of-the-cloud-operating-system-approach&quot;&gt;Disadvantages of the cloud operating system approach&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;Monitoring: You cannot use standard monitoring tools, on the other hand you’d probably don’t need them. Just use in App monitoring and metering&lt;/li&gt;
  &lt;li&gt;Debugging: Your application has to provide some remote debugging interface, because the layer beneath might not have it (e.g. no ssh)&lt;/li&gt;
  &lt;li&gt;Security: The attack surface is minimized but that does not mean everything is solved. You still have to secure your app&lt;/li&gt;
  &lt;li&gt;Current System APIs might not be there: Depending on the approach you might not have POSIX-APIs or higher level Linux-APIs for lower level stuff.&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;Configuration is a very important aspect of cloud based application deployments and there are tools like Puppet or Chef to address these needs. However they still operate on the assumptions that are provided by the way the current Operating systems are structured. A more radical, fundamentally different approach to these problems is provided by new operating system environments that are optimised for the cloud. Most if these systems are still experimental, others seem to be almost ready to use (e.g. CoreOS, Docker).&lt;/p&gt;

</content><updated>2013-10-11T00:00:00+00:00</updated><link href='/2013/10/11/the-missing-piece-operating-systems-for-web-scale-cloud-apps/' rel='alternate'/></entry><entry><id>/2013/04/12/there-will-be-no-reliable-cloud-part-3</id><title type='text'>There will be no reliable cloud (part 3)</title><content type='html'>&lt;h2 id=&quot;how-i-stopped-worrying-and-love-the-cloud&quot;&gt;How I stopped worrying and love the cloud&lt;/h2&gt;

&lt;p&gt;If you have read &lt;a href=&quot;http://blog.hendrikvolkmer.de/2013/04/03/there-will-be-no-reliable-cloud-part-1/&quot;&gt;part 1&lt;/a&gt; and &lt;a href=&quot;http://blog.hendrikvolkmer.de/2013/04/09/there-will-be-no-reliable-cloud-part-2/&quot;&gt;part 2&lt;/a&gt; you may thing all hope is lost and this cloud cannot work at all. However, there is actually a way to create fault tolerant, resilient applications on top of clouds. Actually if the application is created in a distributed, fault tolerant and resilient fashion, it will have no problem at all to run on a cloud infrastructure.&lt;/p&gt;

&lt;p&gt;As mentioned in part 2: The main thing to get away from, when thinking about this, is the idea of “a server needs to be fault tolerant”. Forget the server. It’s about the end service. If your body is a few years old (which it is, if you can read this), I guess that not a single cell of your body is the same as when you where born. Yet, you are still alive. That’s the kind of thinking that has to be applied to a service in a cloud setting.&lt;/p&gt;

&lt;h2 id=&quot;green-field-cloud-native-apps&quot;&gt;Green field cloud native apps&lt;/h2&gt;

&lt;p&gt;This behaviour is actually not that hard to achieve and there is a lot of documentation about this. There’s a &lt;a href=&quot;http://d36cz9buwru1tt.cloudfront.net/AWS_Building_Fault_Tolerant_Applications.pdf&quot;&gt;AWS Whitepaper&lt;/a&gt; which is AWS specific but most of the ideas apply to any cloud setup. Also Netflix share a lot of their ideas and implementations of their architecture &lt;a href=&quot;http://www.slideshare.net/netflix&quot;&gt;on Sildeshare&lt;/a&gt; and &lt;a href=&quot;https://github.com/Netflix/&quot;&gt;on github&lt;/a&gt;, one very recent and very good talk is this &lt;a href=&quot;http://www.infoq.com/presentations/Netflix-Architecture&quot;&gt;Netflix Architecture&lt;/a&gt; talk.&lt;/p&gt;

&lt;p&gt;The main idea is actually pretty simple:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Identify and tear apart statless and stateful parts of the application&lt;/li&gt;
  &lt;li&gt;make the stateful parts redundant using real, distributed data stores (as mentioned in &lt;a href=&quot;http://blog.hendrikvolkmer.de/2013/04/03/there-will-be-no-reliable-cloud-part-1/&quot;&gt;part 1&lt;/a&gt;: Riak, Cassandra, Mysql Galera, etc.)&lt;/li&gt;
  &lt;li&gt;Make sure that the data store parts are distributed across failure domains (e.g. Availability Zones, Regions, etc.)&lt;/li&gt;
  &lt;li&gt;Make sure that the dependencies of your system are known to you and designed in a way that reduce the likelihood and impact of failure&lt;/li&gt;
  &lt;li&gt;Using a &lt;a href=&quot;http://www.infoq.com/presentations/Micro-Services&quot;&gt;Micro-Services&lt;/a&gt; approach will help you to get these dependencies to be explicit and it let’s you scale the individual parts independently as needed. You can also make the best fault behaviour decisions on a very fine granular level, so that a degraded operation and partial failure is not a big problem&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
  &lt;blockquote&gt;
    &lt;p&gt;Netflix for example uses Cassandra as their data store. That does not mean that they have one huge Cassandra cluster spanning 100s of nodes. They have 100s of Cassandra clusters with a few (about 5-50) nodes that are completely independent and each service has their own cluster (which is distributed over AZ or regions as needed)&lt;/p&gt;
  &lt;/blockquote&gt;
&lt;/blockquote&gt;

&lt;p&gt;One interesting part about the distributed data store part is that failure or hand-over of data or requests is a totally normal part of the day to day operation of the system. So adding a new node will lead to rebalancing, as would a failure of a node. A system that does these things all the time will work better than some kind of hot-standby system that will “fail-over” when something fails which maybe happen only once in a while.&lt;/p&gt;

&lt;p&gt;While this kind of application design puts some kind of burden on the developer to deal with all these failure conditions that have been abstracted way (or to put to more realistic: ignored) through “highly available backends”, the running application is the best place to decide what to do from a business logic point of view, if some kind of failure occurs. For example, if your real time web chat system does not work at the moment, you could just sent the message in an asynchronous fashion via the non-real time part of the system (IIRC Facebook does it that way). You can hardly put this kind of logic into your HA-failover scripts.&lt;/p&gt;

&lt;p&gt;Another great talk by Michael Nygard about &lt;a href=&quot;http://www.infoq.com/presentations/Stability-Anti-patterns-Michael-Nygard&quot;&gt;Stability Anti-Patterns&lt;/a&gt; shows that design for failure is inevitable for the kind of environment were deploying applications in today. And this isn’t even cloud specific!&lt;/p&gt;

&lt;p&gt;Even though complexity is not mentioned explicitly, the “reduce integration points”-message is exactly that: Reduce complexity!&lt;/p&gt;

&lt;blockquote&gt;
  &lt;blockquote&gt;
    &lt;p&gt;The video also contains a fun anecdote about TCP (and how firewalls violate it). Now keep that example in mind regarding the cloud analogy of TCP vs. UDP and think about how this situation would have been different if UDP had been used and the retransmit etc. logic would have been at the application layer…&lt;/p&gt;
  &lt;/blockquote&gt;
&lt;/blockquote&gt;

&lt;p&gt;If you want to make your application more reliable it is actually a good idea to poke it all the time and try to make it fail. This is basically what Netflix does with their chaos monkey approach. The idea behind this is &lt;a href=&quot;http://en.wikipedia.org/wiki/Antifragile:_Things_That_Gain_from_Disorder&quot;&gt;Antifragility&lt;/a&gt;. Through the interaction of your software system with the developers and the feedback you get from failures, you can basically turn the complex system that consists only of the software application into a &lt;a href=&quot;http://en.wikipedia.org/wiki/Complex_adaptive_system&quot;&gt;complex adaptive system&lt;/a&gt; (consisting of the running(!) software and the interactions of the users and operators), that can respond to change and become more resilient.&lt;/p&gt;

&lt;h2 id=&quot;other-benefits-of-apps-in-the-cloud-that-help-with-reliability&quot;&gt;Other benefits of apps in the cloud that help with reliability&lt;/h2&gt;

&lt;p&gt;.. and don’t need any special reliable backend. Using a cloud setup you can basically test and deploy in ways that are not - easily - possible in a traditional world (like &lt;a href=&quot;http://martinfowler.com/bliki/BlueGreenDeployment.html&quot;&gt;Blue/Green Deployment&lt;/a&gt;), spinning up 100s or 1000s of instances to do load and failure testing. And you can do that with up to 100% of the same environment (architecturewise, operating system, number of services etc.) as production.&lt;/p&gt;

&lt;h2 id=&quot;but-i-have-a-legacy-system-and-want-to-put-it-into-the-cloud&quot;&gt;But I have a legacy system and want to put it into the cloud&lt;/h2&gt;

&lt;p&gt;The main thing to remember is not to confuse “cloud instance” with “server”. So if you need to roll your classic HA-DB Setup in the cloud, do not put it in one Avaibility zone on two instances. Use to zones that are guaranteed to be independent.&lt;/p&gt;

&lt;p&gt;There is actually a good overview - although very old school in nature (Who would have thought - it’s from Oracle!) - &lt;a href=&quot;http://www.infoq.com/news/2013/03/MySQL-Reference-Architectures&quot;&gt;Mysql Reference Architectures&lt;/a&gt; if you choose the failure domains as communicated by the cloud provider there should not be a big problem really.&lt;/p&gt;

&lt;p&gt;If your cloud provider (or internal cloud) cannot do that, you can still plan to reduce your MTTR. This is a very good idea anyway! I’m always surprised how little thought seems to be put into reducing MTTR. “We have a HA system, so we’re good”. No! Think about what happens after failure and about the impact! You cannot predict the probabilities but you can predict impact of failures pretty well!&lt;/p&gt;

&lt;p&gt;Of course you can &lt;a href=&quot;http://gigaom.com/2013/01/14/resiliency-and-reliability-the-devil-is-in-the-detail/&quot;&gt;split up workloads in different cloud environments&lt;/a&gt; - latency might become a problem. So YMMV.&lt;/p&gt;

&lt;p&gt;Another problem with non cloud-native apps that run on more than one server at some point most of them use something like NFS as a shared file-based datastore. Of course you can run NFS on some cloud instance, but then NFS itself is not really distributed and prone to catastrophic failure. Also, the filesystem abstraction is really broken over the network. You might get away with it, if you know and control the network itself. In a large scale cloud network… Not the best idea (failure semantics for file systems are really very different than network protocols…).&lt;/p&gt;

&lt;p&gt;So if you want to run this kind of applications in the cloud, you have to think about the tradeoffs: Maybe you don’t really need a shared-filesystem backend. Maybe you can easily change the application to use HTTP-based Object-Storage. Or you could run some distributed NFS-like replacement such as GlusterFS or xtreemfs on top of cloud infrastructure (again: use more then one zone). As always: it depends.&lt;/p&gt;

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

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;http://www.12factor.net/&quot;&gt;Good overview of a modern web app approach&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://infoq.com&quot;&gt;Lot’s of good talks&lt;/a&gt; - Look around a bit, almost every relevant topic is covered&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://www.slideshare.net/netflix&quot;&gt;Technical talks by Netflix&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://radar.oreilly.com/2012/04/complexity-vs-simplicity.html&quot;&gt;Complex vs. Simple Storage systems&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;Antifragility (Read and understand it)&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://www.infoq.com/presentations/Agile-Theory&quot;&gt;Agile Theory&lt;/a&gt; - Although the title is “agile”, it’s really about complexity&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;This is certainly not all I have to say about this topic (expect more posts …), but instead of collecting more and more links and ideas, I wanted to get this out there to fuel the discussion about these ideas. I think “the cloud” as in “compute infrastructure” is mostly still misunderstood. It seems to be something we have had for a long time. It’s “just VMs in the internet behind an API” or “Virtualization 2.0”. It’s not. It’s so much more! It’s different. If you think differently about some things…&lt;/p&gt;
</content><updated>2013-04-12T00:00:00+00:00</updated><category term='openstack'/><link href='/2013/04/12/there-will-be-no-reliable-cloud-part-3/' rel='alternate'/></entry><entry><id>/2013/04/09/there-will-be-no-reliable-cloud-part-2</id><title type='text'>There will be no reliable cloud (part 2)</title><content type='html'>&lt;p&gt;In while the &lt;a href=&quot;http://blog.hendrikvolkmer.de/2013/04/03/there-will-be-no-reliable-cloud-part-1/&quot;&gt;first part&lt;/a&gt; was more basic information and technical, the second part will be about why I think it is impossible and not viable business wise to aim for high availability of the cloud in the infrastructure layer. Part 3 will then go into why this actually isn’t that bad an we can still use this “crappy infrastructure” to build systems that are available to the end user.&lt;/p&gt;

&lt;p&gt;I just want to make the following point:&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Complexity + Scale =&amp;gt; Reduced Reliability + Increased Chance of catastrophic failures&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;This is all this post is about.&lt;/p&gt;

&lt;h2 id=&quot;complexity&quot;&gt;Complexity&lt;/h2&gt;

&lt;p&gt;Almost any software system is a complex system. A software system that has networking components certainly is complex and if you put it on a cloud infrastructure, I think there is no argument that this system is not complex.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://www.ctlab.org/documents/How%20Complex%20Systems%20Fail.pdf&quot;&gt;Complex systems fail in certain ways&lt;/a&gt;. If they are poorly designed these failures are catastrophic, meaning the whole system is taken down. In terms of the cloud this means: All software systems that run on the infrastructure are not available any more and may not recover ever.&lt;/p&gt;

&lt;p&gt;This is very abstract, so where does complexity show in a cloud infrastructure?&lt;/p&gt;

&lt;h3 id=&quot;failure-domains&quot;&gt;Failure domains&lt;/h3&gt;

&lt;p&gt;Let’s look at a basic cloud infrastructure setup (say a compute infrastructure implemented with OpenStack nova):&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/2013/04/09/cloud-controller.png&quot; alt=&quot;Controller deployments&quot; /&gt;&lt;/p&gt;

&lt;p&gt;We have a controller and four compute nodes (Hypervisors). Now the controller is certainly a Single point of failure, so let’s add another one (HA!). You can immediately see how this increased the complexity! And if the failover fails you gained nothing.&lt;/p&gt;

&lt;p&gt;Compare that with the approach of - instead of adding another HA-style controller - creating another zone which itself is as simple (and unreliable) as the basic example.&lt;/p&gt;

&lt;p&gt;If you just look at one zone it is unreliable and does not seem to make sense. But if you look at the whole system consisting of two zones you can actually see that you gained something: You have two independent(!) systems with known failure semantics: Failure of one controller in zone 1 will never lead to a failure of zone 2.&lt;/p&gt;

&lt;p&gt;Of course you have to build your system in a way to make use of this. This is topic of part 3.&lt;/p&gt;

&lt;p&gt;Why is this approach useful? Remember: Almost any public cloud provider takes this approach. And please don’t start to argue that one controller per zone is not a good idea and you still need HA for that. This is a pattern. Of course you should make the controller in a zone as reliable as possible - taking into account the trade-offs of zone failure and costs.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;At the controller level you can actually make that piece of the infrastructure more reliable with very small costs. In the OpenStack case: Just add a MySQL galera cluster, &lt;a href=&quot;http://www.pureftpd.org/project/ucarp&quot;&gt;UCARP&lt;/a&gt; virtual IP in front and you’re basically done. 1 changed component and 1 additional component is a small price to pay for the gain.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The main idea here is about the “failure domain” pattern which splits and reduces complexity instead of increasing it using dependent systems like HA-pairs.&lt;/p&gt;

&lt;h3 id=&quot;some-math---or-not&quot;&gt;Some math - or not&lt;/h3&gt;

&lt;p&gt;Ever since statistics class in school, I’ve had the gut feeling that using probabilities in the real world is somehow wrong. I was thrilled &lt;a href=&quot;http://www.amazon.com/The-Black-Swan-Improbable-Robustness/dp/081297381X/&quot;&gt;to read&lt;/a&gt; my feeling was right. There is actually a good video about the whole topic by Michael Nygard &lt;a href=&quot;http://www.infoq.com/presentations/Reliability-Engineering-Matters-Except-When-It-Doesnt&quot;&gt;Reliablity engineering matters except when it doesn’t&lt;/a&gt;. Please watch the whole thing or don’t watch it at all. If you stop half way, you’ll get everything wrong.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;blockquote&gt;
    &lt;p&gt;“It is often the failover mechanisms themselves that generate the failure” - Michael Nygard @ 20:20 in “Reliablity engineering matters except when it doesn’t”&lt;/p&gt;
  &lt;/blockquote&gt;
&lt;/blockquote&gt;

&lt;p&gt;The basic heuristic for reliability of systems is:&lt;/p&gt;

&lt;p&gt;&lt;em&gt;The higher the number of dependent components =&amp;gt; the lower the overall availability and the bigger the impact of failure&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;And this is not a linear dependency. As soon as you introduce a dependency like a central service of any kind (think network filesystem, SAN, the network itself) you add a dependency.&lt;/p&gt;

&lt;p&gt;So if you consider this and now think of a cloud system that uses say 1000 compute nodes which, for normal operation, could be rather independent. Then you add some crazy HA-failover logic to your cloud management software that is supposed to fail over VMs via live migration from any node to any node. Well, congratulations, you just &lt;em&gt;decreased&lt;/em&gt; the reliability of your overall system and &lt;em&gt;increased&lt;/em&gt; the risk and impact of failure (total system failure!) by orders of magnitude because you just tied all compute nodes to each other.&lt;/p&gt;

&lt;p&gt;An example that shows up again and again are failures of AWS EBS as a common source of AWS AZ failure, &lt;a href=&quot;http://www.forbes.com/sites/kellyclay/2012/06/30/aws-power-outage-questions-reliability-of-public-cloud/&quot;&gt;like the one around christmas last year&lt;/a&gt;. The Elastic LB had a dependency on EBS. EBS fails. Now the whole region is down.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/2013/04/09/central-fs.png&quot; alt=&quot;Central FS dependency - Can you spot the problem?&quot; /&gt;&lt;/p&gt;

&lt;p&gt;I actually did not provide any calculation here - because I think you can only miscalculate here and come to the conclusion that “it’s actually not that bad”. It is important to get the  connections and implications between dependencies, complexity and how scale increases the impact and likelihood of failure (even if you cannot say by how much).&lt;/p&gt;

&lt;p&gt;Another thing to consider when using the math-toolkit: Most of the reliability calculations that are used, come from mechanical engineering where things actually behave in a somewhat predictable manner. When you’re dealing with just bare metal servers this may apply. If you add virtualisation you now have software added to the stack. And software failure characteristics are very different from hardware.&lt;/p&gt;

&lt;p&gt;Also complexity and non-independent system change the calculations drastically - and you still have to predict probabilities. System failures are no dice rolls!&lt;/p&gt;

&lt;p&gt;If you’re interested in the math (and where it works and where it doesn’t), watch the video mentioned above and read &lt;a href=&quot;http://papers.ssrn.com/sol3/papers.cfm?abstract_id=1850428&quot;&gt;this paper&lt;/a&gt; if you think you can somehow predict stuff in a real, complex system.&lt;/p&gt;

&lt;h3 id=&quot;problems-with-failures-in-big-complex-systems&quot;&gt;Problems with failures in big complex systems&lt;/h3&gt;

&lt;p&gt;Another problem with complexity + scale is the type of failures you get. Most of the failures start local and small but then turn into cascading failures like this &lt;a href=&quot;http://googleappengine.blogspot.de/2012/10/about-todays-app-engine-outage.html&quot;&gt;Google App Engine failure&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;There are many ways this can happen and a few ways you can protect against this - some of which are shown in &lt;a href=&quot;http://www.amazon.de/Release-It-Production-Ready-Pragmatic-Programmers/dp/0978739213/&quot;&gt;Release It!&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The general approach here is: make failure as local as possible and if something starts to go wrong, make it fail hard and small and contain the failure. Again: Defined small, failure domains and independent systems.&lt;/p&gt;

&lt;p&gt;If you have a lot of dependencies in the infrastructure you’re not only increasing the likelihood of failure but also make recovery harder. The &lt;a href=&quot;http://en.wikipedia.org/wiki/Thundering_herd_problem&quot;&gt;Thundering herd problem&lt;/a&gt; comes to mind.&lt;a href=&quot;https://aws.amazon.com/message/680342/&quot;&gt;AWS EBS&lt;/a&gt; has been hit by this more than once.&lt;/p&gt;

&lt;h2 id=&quot;the-importance-of-partial-failure&quot;&gt;The importance of partial failure&lt;/h2&gt;

&lt;p&gt;Even though the system design that is communicated to the outside is “expect one complete cloud zone failure” it is important to design the system so that it can actually fail partially and work in a degraded mode. So to have small failure domains (e.g. compute nodes) that fail in a predictable manner (e.g completely and only in hardware) helps with that. So a degraded operation might be: 20 of 100 nodes failed but the other 80 are fine and don’t care about the failure.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;blockquote&gt;
    &lt;p&gt;One of my favourite examples of partial failure/degraded operation is the Airbus flight control software with its different &lt;a href=&quot;http://en.wikipedia.org/wiki/Flight_control_modes_\(electronic\)#Flight_control_laws_.28Airbus.29&quot;&gt;flight control laws&lt;/a&gt;. A lot of stuff can fail and the plane is still maneuverable. As far as I know nobody ever died from a failure of this system.&lt;/p&gt;
  &lt;/blockquote&gt;
&lt;/blockquote&gt;

&lt;h2 id=&quot;you-have-to-design-for-failure-anyway&quot;&gt;You have to design for failure anyway&lt;/h2&gt;

&lt;p&gt;There’s a great post about &lt;a href=&quot;http://it20.info/2011/04/tcp-clouds-udp-clouds-design-for-fail-and-aws/&quot;&gt;UDP clouds vs. TCP clouds&lt;/a&gt; clouds. I like the analogy. I disagree with Massimo’s conclusion: He puts it as if with TCP you’d never really expect a “connection reset” or anything like that because TCP is reliable. The truth is: You have to design for failure anyway! It does not matter how reliable your underlying infrastructure is. And you can actually implement some very performant and reliable applications on top of UDP… ask some of the IT guys at Wall Street.&lt;/p&gt;

&lt;h2 id=&quot;business-side-of-things&quot;&gt;Business side of things&lt;/h2&gt;

&lt;p&gt;There are also costs to provide reliability at cloud scale. One of the best papers on this topic certainly is &lt;a href=&quot;http://research.google.com/pubs/pub35290.html&quot;&gt;The Datacenter as a Computer: An Introduction to the Design of Warehouse-Scale Machines&lt;/a&gt;. It basically comes to the conclusion that &lt;a href=&quot;http://samj.net/2012/03/simplifying-cloud-reliability.html&quot;&gt;Software reliability is cheaper than hardware reliability at scale&lt;/a&gt; because the additional costs of a software deployment are basically zero.&lt;/p&gt;

&lt;p&gt;One thing to consider here is also this scenario: Most web scale systems consist of a large stateless part and a small stateful part. The stateless part is easily scalable via scale out and a single component does not have to be reliable. Using this setup, it does not make sense to host the stateless part of the system on a highly reliable cloud system (if we pretend that it exists). You don’t want to cast pearls before swine, do you?&lt;/p&gt;

&lt;p&gt;The main idea of a compute cloud is to be a general purpose compute environment. To make it as flexible and cheap as possible for customers to use, it does not make sense to provide a super reliable infrastructure.&lt;/p&gt;

&lt;h2 id=&quot;now-what&quot;&gt;Now what?&lt;/h2&gt;

&lt;p&gt;I hopefully showed why a single compute node or zone of the cloud will never be reliable. This “reliable cloud” problem really only exists if you think about compute instances in the cloud of “physical servers”. &lt;a href=&quot;http://www.jamiebegin.com/why-an-ec2-instance-isnt-a-server/&quot;&gt;They really aren’t servers&lt;/a&gt;. So the real question really becomes: WHAT does have to be reliable and does it have to be a certain part of the infrastructure? Everybody seems to have accepted that hard disks will fail all the time and we find ways to design around it. I think the same is true for “the server” in a cloud setting or better “the cloud compute instance”.&lt;/p&gt;

&lt;p&gt;So if we accept this reality and move on, it turns out we can actually build reliable applications on top of such infrastructure. Mission critical apps in the cloud? Well, &lt;a href=&quot;http://www.infoq.com/presentations/Keynote-MythBusters-Cloud-Computing-NASA&quot;&gt;NASA does it&lt;/a&gt; and they don’t seem to use their rocket scientists to solve that problem.&lt;/p&gt;

&lt;p&gt;More in part 3.&lt;/p&gt;

</content><updated>2013-04-09T00:00:00+00:00</updated><category term='openstack'/><link href='/2013/04/09/there-will-be-no-reliable-cloud-part-2/' rel='alternate'/></entry><entry><id>/2013/04/03/there-will-be-no-reliable-cloud-part-1</id><title type='text'>There will be no reliable cloud (part 1)</title><content type='html'>&lt;p&gt;Stop wasting your time trying to find one. Stop wasting your time (and money) trying to build one. If you find a service provider that claims that they have it: Maybe question their understanding of cloud - and business.&lt;/p&gt;

&lt;p&gt;With all that free time, start to build reliable systems on top of unreliable clouds.&lt;/p&gt;

&lt;p&gt;After all these bold claims I’ll convince you that this is a - some will say - sad but still valid fact of life.&lt;/p&gt;

&lt;p&gt;The main issue here is scale. Things (very generally) work very, very different at scale. And cloud infrastructures are all about scale. Keep in mind that complexity of systems does increase exponentially and thus the things that work fine with small systems might completely fail with bigger systems.&lt;/p&gt;

&lt;p&gt;Let’s look at the different approaches to reliability that are out there and how they map to the cloud space. I start with the “building blocks” at the lowest layers and then move up to a whole cloud infrastructure (based in OpenStack) and some example services on top - because cloud for cloud’s sake is a bit boring.&lt;/p&gt;

&lt;h2 id=&quot;high-avaiblity-vs-service-resiliency&quot;&gt;High Avaiblity vs. Service resiliency&lt;/h2&gt;

&lt;p&gt;The “HA” term seems to be prevalent with current system design. You just add an “HA”-pair to your system and your safe. At least that’s how vendors seem to pitch this kind of design.&lt;/p&gt;

&lt;p&gt;There is actually &lt;a href=&quot;http://engineering.cloudscaling.com/2013/03/service-resiliency-doesnt-always-mean-ha-or-cluster/&quot;&gt;a very good presentation on the matter&lt;/a&gt; which goes into the differences of HA vs. resiliency by Randy Bias and Dan Sneddon of Cloudscaling.&lt;/p&gt;

&lt;p&gt;I was in the audience at that presentation and was very excited to hear all the things that are problematic with the HA-pair-approach of doing things: HA-pairs fail in a very catastrophic way, they don’t really scale (out), etc.&lt;/p&gt;

&lt;p&gt;And I was very disappointed to hear that the actual examples in the presentation were only about resiliency of stateless services.&lt;/p&gt;

&lt;p&gt;Why does this matter? Because making stateless services resilient/available is indeed not the domain of HA-pairs. It’s the poster child of scale-out architectures like the Web or the internet routing backbone at layer L3.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;blockquote&gt;
    &lt;p&gt;Side note: One property of resilient systems that surfaces here is the client knowledge of more than one endpoint. Think of multiple DNS entires for a domain that hosts a webpage. In the routing example this is not that obvious but if you look at IPv6 you can see multiple routing entries on the client side.&lt;/p&gt;
  &lt;/blockquote&gt;
&lt;/blockquote&gt;

&lt;p&gt;So making stateless services resilient just means: replicate all the data and serve it from multiple endpoints and let the client know about multiple endpoints. There are several possibilities on how to do that from an architectural standpoint. Choose the one you like and you’re done. Easy.&lt;/p&gt;

&lt;p&gt;The interesting part - which was left out of the presentation - is resilience of stateful services. And - while most services can actually be designed to be stateless - you have to store your data somewhere and be able to change it. Otherwise this whole information business would be kind of boring and useless.&lt;/p&gt;

&lt;p&gt;For [stateful services](http://en.wikipedia.org/wiki/State_(computer_science) you basically have two options to make it “HA”:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;take a non-distributed base system and tuck HA on top&lt;/li&gt;
  &lt;li&gt;take a distributed system and make the right tradeoffs&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Let’s look at them in detail.&lt;/p&gt;

&lt;h3 id=&quot;non-distributed-base-system-with-ha-on-top&quot;&gt;Non-distributed base system with HA on top&lt;/h3&gt;

&lt;p&gt;This is the classic “HA” case: Take some stateful service that is not distributed in itself like NFS (which is not distributed on the server side) or MySQL add some &lt;a href=&quot;http://www.linux-ha.org/wiki/Pacemaker&quot;&gt;Pacemaker&lt;/a&gt; magic with some &lt;a href=&quot;http://www.drbd.org/&quot;&gt;DRBD&lt;/a&gt; mixed in and you’re good. Or miserable.&lt;/p&gt;

&lt;p&gt;If you look into the details, most of the time your basically cheating your way out of the &lt;a href=&quot;http://en.wikipedia.org/wiki/CAP_theorem&quot;&gt;CAP theorem&lt;/a&gt; by denying the existence of network partitions through a second network/heartbeat link.
Also these kinds of setups are &lt;em&gt;cause&lt;/em&gt; of failures more often than not. For example several github outages were caused by these kind of HA-failures: &lt;a href=&quot;https://github.com/blog/1261-github-availability-this-week&quot;&gt;Github Mysql failover failure&lt;/a&gt;, &lt;a href=&quot;https://github.com/blog/1364-downtime-last-saturday&quot;&gt;Github MLAG failure&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;“Cluster Software” causes more system outtages than hardware failures or software bugs. (See &lt;a href=&quot;http://www.infoq.com/presentations/Event-Sourced-Architectures-for-High-Availability&quot;&gt;Martin Thompson’s presentation on “Event Sourced Architectures for High Availability”&lt;/a&gt;. Around 7:30)&lt;/p&gt;

&lt;p&gt;Another thing to consider with the traditional approach: This approach in itself does only try to limit &lt;a href=&quot;http://en.wikipedia.org/wiki/MTBF&quot;&gt;MTBF&lt;/a&gt;. &lt;a href=&quot;http://en.wikipedia.org/wiki/Mean_time_to_recovery&quot;&gt;MTTR&lt;/a&gt; can be considered but this is much harder to do as - from the system design standpoint - the expected failures of such a system are catastrophic. They are catastrophic, because a system that is not designed to be distributed and then IS distributed can never take distributed failure conditions into account and the best thing that can happen in case of failure is complete failure. You don’t want the two HA-heads failing only “half”. In this case one is enforced via &lt;a href=&quot;http://en.wikipedia.org/wiki/STONITH&quot;&gt;STONITH&lt;/a&gt; or if something goes wrong further: Failure of both heads would still be considered better than a split brain scenario.&lt;/p&gt;

&lt;h3 id=&quot;distributed-system-and-the-right-tradeoffs&quot;&gt;Distributed System and the right tradeoffs&lt;/h3&gt;

&lt;p&gt;In a distributed system the components of the system have some knowledge about the “distributed-ness” of the whole system and can therefore accommodate certain kinds of failures. Depending on the system they can actually work with partial failures (like network partitions or outtage of several different components) or handle &lt;a href=&quot;http://en.wikipedia.org/wiki/Byzantine_fault_tolerance&quot;&gt;byzantine failures&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Examples of these kinds of database systems are &lt;a href=&quot;http://www.percona.com/software/percona-xtradb-cluster&quot;&gt;Percona Xtradb Cluster&lt;/a&gt; (MySQL with distributed backend), &lt;a href=&quot;http://basho.com/riak/&quot;&gt;Riak&lt;/a&gt; (distributed database where you can make CAP-tradeoffs at the request level), &lt;a href=&quot;http://research.google.com/archive/spanner.html&quot;&gt;Google Spanner&lt;/a&gt;, &lt;a href=&quot;http://cassandra.apache.org/&quot;&gt;Cassandra&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The database &lt;a href=&quot;http://www.datomic.com/&quot;&gt;Datomic&lt;/a&gt; is interesting in this regard. The design actually considers the state at the smallest possible level: The transaction level. You get Web-scale like Read-Scalability with stateless semantics on the read side and limited write scalability on the write side.&lt;/p&gt;

&lt;p&gt;Btw. this is not about SQL vs. NoSQL. There are distributed versions of both “camps” available - with different tradeoffs. I won’t go into detail here.&lt;/p&gt;

&lt;p&gt;There are also block level and filesystem level systems available that are distributed form the ground up: &lt;a href=&quot;http://ceph.com/&quot;&gt;Ceph&lt;/a&gt;, &lt;a href=&quot;http://xtreemfs.org&quot;&gt;Xtreemfs&lt;/a&gt;, &lt;a href=&quot;http://www.gluster.org/&quot;&gt;Glusterfs&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;I’ll cover some of the tradeoffs later, when we talk about “layers of the cloud cake”.&lt;/p&gt;

&lt;p&gt;So these two approaches are fundamentally different. While the “let’s accept distributed systems as a fact” approach is harder, because you actually have to make tradeoffs. The “classic” approach tries to hide the “distributedness” of the system and abstract it away. This actually does work - at a certain scale for certain types of systems. Even up to pretty large ones - if you put in enough effort and money.&lt;/p&gt;

&lt;h2 id=&quot;definition-of-availability--reliability&quot;&gt;Definition of availability / reliability?&lt;/h2&gt;

&lt;p&gt;As we move to the whole picture view of things, let’s think about what availability and reliability actually mean. In the and the end user cares about the overall availability of “the system”. No user actually cares about MySQL or some Webserver. They care about the service they are using.&lt;/p&gt;

&lt;p&gt;Also availability is not only about hardware either: It’s also about software failures (See Joe Amstrong’s Thesis: &lt;a href=&quot;http://www.erlang.org/download/armstrong_thesis_2003.pdf&quot;&gt;“Making reliable distributed systems in the presence of software errors”&lt;/a&gt; ). HA systems that need to go down for “maintenance”/software updates or fixes are a kind of a joke. They are “highly available, as long as you exclude things that would bring down availability like updates”.&lt;/p&gt;

&lt;p&gt;Another thing to consider is the definition of availability at the different service layers: Is a service that is 2 seconds not available, still available? Is it ok, if i just don’t loose a request? Or is 0.5 seconds ok, but I might drop requests.&lt;/p&gt;

&lt;p&gt;If you think about it, you really have to do MTBF/MTTR considerations at the request/transaction level. “Is it ok, if I drop a request if no answer is there for 3ms? Try another endpoint then. If I get an answer within another 2ms, I’m fine =&amp;gt; available” - or “I do a ‘stat’ system call and it’s ok, to wait 2 minutes, but do not ever let that call return with a failure”.&lt;/p&gt;

&lt;p&gt;I’ll get back to that picture in the “layer” discussion. But one spoiler: Most of the really highly reliable services actually solve these kinds of problems very, very high in the stack and do not care that much about reliability of the lower layers…&lt;/p&gt;

&lt;h2 id=&quot;we-have-all-the-ingredients-so-lets-build-that-reliable-cloud&quot;&gt;We have all the ingredients, so let’s build that reliable cloud!&lt;/h2&gt;

&lt;p&gt;What does this whole HA/resiliency thing have to do with a reliable (or not) cloud?&lt;/p&gt;

&lt;p&gt;With the text so far you could come to the following conclusion:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;A cloud infrastructure is a distributed system, it has some stateless and stateful components (I did not explicitly mention that. But just look at &lt;a href=&quot;http://docs.openstack.org/folsom/openstack-compute/admin/content/figures/openstack-logical-arch-folsom.jpg&quot;&gt;this picture&lt;/a&gt;. If that’s not distributed… I don’t know what is ;-) )&lt;/li&gt;
  &lt;li&gt;We use the stateless approach for stateless parts (as shown in the Cloudscaling presentation)&lt;/li&gt;
  &lt;li&gt;We throw in some distributed data store for the stateful parts (You could use the “classic” approach for that but why bother, if there are options like distributed MySQL servers available and arguably better)&lt;/li&gt;
  &lt;li&gt;While were at it, put everything stateful on the VM side (e.g. base images) on a distributed datastore like Ceph, Xtreemfs or Glusterfs&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;We have all the ingredients, so let’s build a reliable cloud, already. It cannot be that hard!&lt;/p&gt;

&lt;p&gt;Well, if we look at the current approaches that are out there of the big cloud providers (Amazon, Google, Microsoft, HP Cloud, etc.), we can see that they follow this model only up to a point. And we can see, that this “distributed stateful part” on the backend side (in AWS terms: &lt;a href=&quot;http://aws.amazon.com/ebs/&quot;&gt;EBS&lt;/a&gt;) is one of the main causes for outages…&lt;/p&gt;

&lt;p&gt;So the idea of “let’s just make that part more reliable - and get rid of this insane availability zone business while were at it to use just ONE big reliable backend” somehow seems to be wrong.&lt;/p&gt;

&lt;p&gt;I’ll show you why this approach won’t make sense (business and availability wise) in the next part. Feel free to comment, question and fight my thoughts and ideas. They can only get better by attacking them!&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://blog.hendrikvolkmer.de/2013/04/09/there-will-be-no-reliable-cloud-part-2/&quot;&gt;Read part 2&lt;/a&gt;&lt;/p&gt;
</content><updated>2013-04-03T00:00:00+00:00</updated><category term='openstack'/><link href='/2013/04/03/there-will-be-no-reliable-cloud-part-1/' rel='alternate'/></entry><entry><id>/2012/12/01/deploying_a_multi_node_setup_of_openStack_folsom_on_ubuntu_12.04.1_lts</id><title type='text'>Deploying a multi node setup of OpenStack Folsom on Ubuntu 12.04.1 LTS with one command</title><content type='html'>&lt;p&gt;We’re going to cook some OpenStack today, so get your ingredients ready:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;http://www.vagrantup.com&quot;&gt;vagrant&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://git-scm.com/&quot;&gt;git&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://www.opscode.com/hosted-chef/&quot;&gt;A Hosted Chef Account&lt;/a&gt; (You can use your own chef server, of course. Installing a chef server e.g. via &lt;a href=&quot;http://fnichol.github.com/knife-server/&quot;&gt;knife-server&lt;/a&gt; is out of scope of this tutorial, though)&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/applicationsonline/librarian&quot;&gt;librarian-chef&lt;/a&gt; - &lt;code&gt;gem install librarian&lt;/code&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://wiki.opscode.com/display/chef/Spiceweasel&quot;&gt;spiceweasel&lt;/a&gt; - &lt;code&gt;gem install spiceweasel&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;To be honest, if you count the environment set up commands it’s not one command but about five for the whole process. But after the environment set up you can repeat the process using the one setup command over and over again. This is pretty useful for environment specific testing, CI, etc.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Instead of using vagrant with VirtualBox you can of course use your favourite virtualisation solution for testing or use a bare metal setup. All you need is at least two running machines with Ubuntu 12.04 on them. Instead of &lt;code&gt;vagrant up&lt;/code&gt; you would then use &lt;code&gt;knife bootstrap&lt;/code&gt; with the &lt;code&gt;single-controller&lt;/code&gt; and &lt;code&gt;single-compute role&lt;/code&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;So let’s cook:&lt;/p&gt;

&lt;h2 id=&quot;checkout-the-chef-cookbooks-and-vagrantfile&quot;&gt;Checkout the Chef cookbooks and Vagrantfile&lt;/h2&gt;

&lt;pre&gt;&lt;code&gt;git clone https://www.github.com/cloudbau/openstack-chef-repo.git
librarian-chef update
&lt;/code&gt;&lt;/pre&gt;

&lt;h2 id=&quot;set-up-chef-server-environment&quot;&gt;Set up Chef server environment&lt;/h2&gt;

&lt;p&gt;Using hosted chef is the easiest way to get started, but you can of course use your own Chef server. The Vagrantfile uses 2GB per  node at the moment. So be careful not to exceed your RAM if you increase the compute node count.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;vi config.rb # Change the Chef server settings
&lt;/code&gt;&lt;/pre&gt;

&lt;h2 id=&quot;upload-cookbooks-to-chef-server&quot;&gt;Upload cookbooks to chef server&lt;/h2&gt;

&lt;pre&gt;&lt;code&gt;spiceweasel infrastructure.yml | sh
&lt;/code&gt;&lt;/pre&gt;

&lt;h2 id=&quot;deploy&quot;&gt;Deploy&lt;/h2&gt;

&lt;p&gt;Now deploy Openstack!&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;vagrant up
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Get a coffee, tea or whatever you like while it’s cooking…&lt;/p&gt;

&lt;h2 id=&quot;use-it&quot;&gt;Use it&lt;/h2&gt;

&lt;p&gt;Open a browser window at &lt;code&gt;http://10.0.112.10&lt;/code&gt; to log in to your OpenStack dashboard. The default username and password is “admin” and “secrete”. If you want to change that, have a look at the attributes of the keystone cookbook.&lt;/p&gt;

&lt;h2 id=&quot;whats-next&quot;&gt;What’s next&lt;/h2&gt;

&lt;p&gt;The &lt;a href=&quot;http://www.opscode.com/solutions/chef-openstack/&quot;&gt;community chef cookbooks&lt;/a&gt; are still under development and the version used here is a slightly modified so that it works with OpenStack Folsom. These changes will be merged back (pull requests are pending) to the community cookbooks and the cookbooks will certainly evolve and also cover OpenStack services like &lt;a href=&quot;http://wiki.openstack.org/Cinder&quot;&gt;cinder&lt;/a&gt; and &lt;a href=&quot;http://wiki.openstack.org/Quantum&quot;&gt;quantum&lt;/a&gt;.&lt;/p&gt;

</content><updated>2012-12-01T00:00:00+00:00</updated><category term='openstack'/><link href='/2012/12/01/deploying_a_multi_node_setup_of_openStack_folsom_on_ubuntu_12.04.1_lts/' rel='alternate'/></entry><entry><id>/2012/11/07/things-to-omnifocus</id><title type='text'>Things to OmniFocus</title><content type='html'>&lt;p&gt;I’ve been using &lt;a href=&quot;https://culturedcode.com/things/&quot;&gt;Things&lt;/a&gt; for about three years now and it’s great. After re-reading &lt;a href=&quot;http://www.amazon.com/Getting-Things-Done-Stress-Free-Productivity/dp/0142000280/ref=sr_1_1?ie=UTF8&amp;amp;tag=hendrvolkm-21&quot;&gt;GTD&lt;/a&gt; a few weeks ago I realised why the system is not working for me as good as it used to:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;Things does not have the concept of “Contexts”. It has “Tags” that you can use to simulate them but it does not feel the same&lt;/li&gt;
  &lt;li&gt;No folder structure to organise projects - only a flat list. This is fine for a few projects but if you have dozens it is hard to keep track of them. This makes reviews harder and thus I’m more likely to skip them.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href=&quot;http://www.omnigroup.com/products/omnifocus/&quot;&gt;Omnifocus&lt;/a&gt; can organise task and projects exactly the way I want so I gave it a try. The Omnifocus sync options are more flexible, too.&lt;/p&gt;

&lt;p&gt;Of course I wanted to import my tasks and projects from Things. This turned out to be a bigger problem than I thought it would be.&lt;/p&gt;

&lt;p&gt;If you are trying to do the same, here is my solution for Omnifocus 1.10.4 and Things 2.1. This is not ideal and has some drawbacks but it works for the most important stuff: Getting your tasks and projects over to Omnifocus.&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;In Things, move all your projects from “Someday” it active. We will only import active projects.&lt;/li&gt;
  &lt;li&gt;Start Things and Omnifocus&lt;/li&gt;
  &lt;li&gt;Use &lt;a href=&quot;https://gist.github.com/4020468&quot;&gt;this AppleScript&lt;/a&gt; to copy over the projects and tasks. To use the Script just start “AppleScript Editor” and copy/paste the code in the editor, hit “compile” and then “run”&lt;/li&gt;
  &lt;li&gt;Wait while the tasks and projects are being copied over&lt;/li&gt;
  &lt;li&gt;Sort your projects in Omnifocus (e.g. mark “Someday” projects as “on hold”)&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;I’m sure step 5 could be automated using AppleScript somehow. However it was not worth the effort for me. I just went trough the projects and marked them accordingly.&lt;/p&gt;

&lt;p&gt;Also, the Things “Logbook” is not imported at the moment, so all your completed tasks are still in Things.&lt;/p&gt;

</content><updated>2012-11-07T00:00:00+00:00</updated><link href='/2012/11/07/things-to-omnifocus/' rel='alternate'/></entry><entry><id>/2012/11/06/status-of-the-smartos-openstack-port</id><title type='text'>Status of the SmartOS OpenStack Port</title><content type='html'>&lt;p&gt;Since the first blog post about the SmartOS port and after my lightning talk at the Grizzly Summit, several people have asked me about the status of the port. So here’s an update.&lt;/p&gt;

&lt;h2 id=&quot;current-status&quot;&gt;Current status&lt;/h2&gt;

&lt;p&gt;First announcement: It is not production ready. That’s not because the code is bad or unstable. It is just incomplete at the moment. The whole network management code is still missing.&lt;/p&gt;

&lt;p&gt;The whole thing is not a part of core OpenStack. I’m not sure if it ever will be, but that’s not really a problem. The code should be easily pluggable to the current OpenStack code base. If the code is good enough and sufficiently complete I do not see why it should not be part of the core project. With my current understanding of the code organisation this would mean the code would be merged to the nova code tree. If - for some reason - it will not be accepted, it should be easily be distributable as a separate python egg.&lt;/p&gt;

&lt;h2 id=&quot;future-plans&quot;&gt;Future plans&lt;/h2&gt;

&lt;p&gt;Several people asked me why I’m doing this. Who is behind this etc. Well, it’s currently just a hobby project out of curiosity.  I’ve been following the Solaris/OpenSolaris/Illumos/ development for some time because I think they have some pretty cool and different solutions to problems (ZFS, dtrace, etc.).&lt;/p&gt;

&lt;p&gt;Besides my hobby projects I do have work to do, so the development progress on this project will be not predictable. If you are interested in the further development, just watch this blog or the wiki page mentioned below.&lt;/p&gt;

&lt;h2 id=&quot;more-information&quot;&gt;More information&lt;/h2&gt;

&lt;p&gt;Andy Edmonds one of the original creators of the &lt;a href=&quot;https://blueprints.launchpad.net/nova/+spec/smartos-support&quot;&gt;Blueprint&lt;/a&gt; created a &lt;a href=&quot;http://wiki.openstack.org/smartos&quot;&gt;SmartOS wiki page at the OpenStack wiki&lt;/a&gt;. I added some info to it - including the current code base and information about how to set up a SmartOS/OpenStack installation.&lt;/p&gt;

</content><updated>2012-11-06T00:00:00+00:00</updated><category term='openstack'/><link href='/2012/11/06/status-of-the-smartos-openstack-port/' rel='alternate'/></entry><entry><id>/2012/10/25/the-fear-of-openstack-fragmentation-and-the-holy-grail-of-cloud</id><title type='text'>The fear of OpenStack fragmentation and the holy grail of cloud</title><content type='html'>&lt;p&gt;Last week I was at the OpenStack Grizzly Summit and one thing was clear from the beginning: OpenStack generates a lot of interest in all kinds of businesses: Hosting, Enterprise IT, Development shops. All kinds of people want to use cloud infrastructure in one way or another to get the benefits of a more flexible infrastructure.&lt;/p&gt;

&lt;p&gt;At the Folsom Summit in April a lot of talk was about “What is OpenStack?”. A Distribution? A cloud operating system? A Framework. It seems to me that the consesus now is “its a toolkit to build cloud infrastructures”.&lt;/p&gt;

&lt;p&gt;I agree. This is fairly accurate and reflects the way most people use it. There are several cloud products out there that use OpenStack in different ways to solve their problems. It also shows that it’s not an off the shelf product that you just buy right now.&lt;/p&gt;

&lt;p&gt;When people say “OpenStack is not mature”, it’s like saying “The iPhone SDK is not mature”. Well, it is not a product. So this assessment basically does not make sense. It is something that you use to &lt;em&gt;create&lt;/em&gt; a product.&lt;/p&gt;

&lt;p&gt;At this point it is unclear in what direction OpenStack will evolve. Certainly people use it to create products or services with it. And I can see that this creates a fear of fragmentation. A fear that was prominently put out by Gartner and rebutted by several OpenStack thought leaders.&lt;/p&gt;

&lt;p&gt;Saying that this will not happen is not enough, though. It will happen if we do not actively fight it. That’s life. This is how the world works. Things decay. Entropy.&lt;/p&gt;

&lt;p&gt;Why is this important anyway? OpenStack is and will stay OpenSource it will be developed further, it will get better.&lt;/p&gt;

&lt;p&gt;It might get better. Without a clear definition or goal of what OpenStack will provide and what it will not provide, it might end up being what it is now: a toolkit. Everybody picks their tool from it and creates a frankencloud.&lt;/p&gt;

&lt;p&gt;Why is that bad? It solves your IT problem, right? Indeed it does for you, right now. And then, after the successful internal OpenStack deployment project your CIO proclaims “We’re going hybrid!” And you realise that just by using OpenStack internally does not make it compatible with the public Cloud offerings that are out there that use OpenStack as well.&lt;/p&gt;

&lt;p&gt;And this is not an API issue. Just because OpenStack has EC2 APIs does not make OpenStack compatible with EC2. There is more needed to compatibility than just an API. The API is necessary but not sufficient.&lt;/p&gt;

&lt;p&gt;This is the holy grail of the cloud: Cloud interoperability.&lt;/p&gt;

&lt;p&gt;I think it can be done. But it has to be actively developed. This kind of stuff is hard and it does not “happen”. At the analyst panel at the grizzly summit Steve O’Grady of Red Monk shared this view. He compared it with Java/J2EE: You can write once and run anywhere with Java - up to a point.&lt;/p&gt;

&lt;p&gt;“100% no modifications needed”-portability between cloud service providers internal/external clouds will not be possible in every case. But: It &lt;em&gt;is&lt;/em&gt; possible up to a certain point and this point should be the goal.&lt;/p&gt;

&lt;p&gt;How can we achieve this? OpenStack needs an executable Test Suite that everybody can run. Similar to the &lt;a href=&quot;http://en.wikipedia.org/wiki/Technology_Compatibility_Kit&quot;&gt;Java TCK&lt;/a&gt; just without the licensing issues. The OpenStack Foundation should make this kind of thing officially available. From a technical standpoint there already is code that could be a starting point (&lt;a href=&quot;https://github.com/openstack/tempest&quot;&gt;Tempest Project&lt;/a&gt;).&lt;/p&gt;

&lt;p&gt;It should be clear that if your internal cloud deployment passes this test suite and your service provider does also pass it, you should have no problems to deploy your application on the public provider.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://www.rackspace.com/blog/rackspace-private-cloud-certification-program-combines-product-innovation-and-enterprise-stability/&quot;&gt;Rackspace already is starting to create something like this&lt;/a&gt;. While it might make business sense for them to do so, I think this approach is wrong. This kind of offering has to come from the OpenStack foundation! Nobody (except Rackspace) wants a “Rackspace compatible” cloud.&lt;/p&gt;

&lt;p&gt;Troy Toman from Rackspace said: “We have a core that we know is the right thing. So how do we continue to innovate?”. By putting the certification process into the OpenStack Foundation instead of Rackspace as a company.&lt;/p&gt;

&lt;p&gt;For true cloud interop we need a vendor and service provider independent entity - the OpenStack Foundation - that defines what is needed for your cloud service or private cloud product to call it “OpenStack compatible”.&lt;/p&gt;

&lt;p&gt;Everybody goes ahead and creates their own little or large OpenStack cloud and solves problems. This is fine but if we really want to make the best use of the possibilities of cloud computing with OpenStack in the next years a lot of work has to be done to make cloud interop happen.&lt;/p&gt;

&lt;p&gt;This work can either happen at every IT shop that wants to deploy cloud services in a hybrid model - or - at a central point that already manages OpenStack related things: the OpenStack Foundation.&lt;/p&gt;

&lt;p&gt;The latter would be much more effective and would end up costing everybody less. It also would be much more in alignment with how the cloud model works than the “everybody does their own” model.&lt;/p&gt;

&lt;p&gt;There was a comment at the summit that &lt;a href=&quot;http://www.networkworld.com/news/2012/101712-openstack-amazon-263461.html&quot;&gt;OpenStack can tell what Amazon has to do&lt;/a&gt; and at this point it was certainly &lt;a href=&quot;https://twitter.com/justinsheehy/status/259015836495409152&quot;&gt;arrogant&lt;/a&gt; to says so. With a cloud behaviour defining test suite and a strong statement from the OpenStack Foundation that proclaims that “This is how clouds behave” Amazon’s cloud might just behave the same way. And then this is not an arrogant statement anymore but just reality.&lt;/p&gt;

&lt;p&gt;Cloud interoperability is essential to the success of OpenStack in my opinion. This is certainly not the last post on that topic.&lt;/p&gt;
</content><updated>2012-10-25T00:00:00+00:00</updated><category term='openstack'/><link href='/2012/10/25/the-fear-of-openstack-fragmentation-and-the-holy-grail-of-cloud/' rel='alternate'/></entry><entry><id>/2012/10/05/nuking-a-big-cluster-with-pxe-boot-dban-and-crowbar</id><title type='text'>Nuking a big cluster with PXE boot, DBAN and Crowbar</title><content type='html'>&lt;p&gt;When you are deploying clusters on real hardware - again and again - to test the deployment - it is quite helpful to have the hardware in a clean state. Unfortunately there is no real “Factory reset” button on hard drives.&lt;/p&gt;

&lt;p&gt;However, there is an simple solution to this problem: When you install your cluster using PXE boot (like when using Crowbar),  you can easily wipe all the hard drives of the whole cluster using this config.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;A word of warning at this point: The following steps describe how to DELETE data from your whole data centre (if you are not careful). So do backups, use with care, etc. You have been warned.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2 id=&quot;step-1-getting-dban&quot;&gt;Step 1: Getting DBAN&lt;/h2&gt;

&lt;p&gt;&lt;a href=&quot;http://sourceforge.net/projects/dban/files/dban/&quot;&gt;DBAN&lt;/a&gt; is a small custom linux boot image that has only one purpose: Delete all disks.&lt;/p&gt;

&lt;p&gt;Download the ISO and extract the &lt;code&gt;DBAN.BZI&lt;/code&gt; file.&lt;/p&gt;

&lt;h2 id=&quot;step-2-set-up-pxe-boot&quot;&gt;Step 2: Set up PXE boot&lt;/h2&gt;

&lt;p&gt;We are using this setup out of our Crowbar installation, so the PXE environment is already setup. If you use it stand alone, with Cobbler or something else, adjust the paths accordingly.&lt;/p&gt;

&lt;p&gt;In the Crowbar case, create a file &lt;code&gt;/tftpboot/discovery/pxelinux.cfg/nuke&lt;/code&gt; with the following content:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;DEFAULT nuke
PROMPT 0
TIMEOUT 10
LABEL nuke
  KERNEL DBAN.BZI
  append nuke=&quot;dwipe --autonuke --method zero&quot; silent vga=785
  IPAPPEND 2
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Copy the &lt;code&gt;DBAN.BZI&lt;/code&gt; file to &lt;code&gt;/tftpboot/discovery/&lt;/code&gt;&lt;/p&gt;

&lt;h2 id=&quot;step-3-prepare-the-nuke&quot;&gt;Step 3: Prepare the nuke&lt;/h2&gt;

&lt;p&gt;Since we are going to nuke anything anyway and do not want chef to interfere with our evil plans, we stop chef-client on the admin node:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;bluepill chef-client stop
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Now we enable the self destruct button:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;cd /tftpboot/discovery/pxelinux.cfg/
ln -fs nuke default
&lt;/code&gt;&lt;/pre&gt;

&lt;h2 id=&quot;step-4-nuke-the-cluster&quot;&gt;Step 4: Nuke the cluster&lt;/h2&gt;

&lt;p&gt;To nuke the entire cluster (excluding the admin), just delete all nodes from crowbar - either by clicking through the UI or by using the crowbar CLI tool.&lt;/p&gt;

&lt;p&gt;Then reboot the nodes via IPMI and wait for the data destruction to commence.&lt;/p&gt;

&lt;p&gt;Nuking the admin node can be done using the DBAN iso via some virtual IPMI drive.&lt;/p&gt;

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

&lt;p&gt;You can easily reset a lot of machines using PXE boot and DBAN. When you are using Crowbar the setup shown here makes it easy to start completely fresh any time.&lt;/p&gt;

&lt;p&gt;Crowbar “cleans” the hard disks itself when you trigger an install, but some times this does not suffice. Some LVM parts remain intact and the following installation does not work properly. Using the DBAN nuke we can ensure that we really do start with empty hard drives on every node.&lt;/p&gt;

</content><updated>2012-10-05T00:00:00+00:00</updated><category term='openstack'/><link href='/2012/10/05/nuking-a-big-cluster-with-pxe-boot-dban-and-crowbar/' rel='alternate'/></entry><entry><id>/2012/09/26/crowbar-at-scale</id><title type='text'>Deploying OpenStack with Crowbar at scale</title><content type='html'>&lt;p&gt;I’ve been working with &lt;a href=&quot;http://www.twitter.com/ehaselwanter&quot;&gt;@ehaselwanter&lt;/a&gt; on an OpenStack deployment with Crowbar for a project we are currently doing for &lt;a href=&quot;http://www.laboratories.telekom.com&quot;&gt;T-Labs&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;“Scale” means different things to different people. So let us be specific here: We deployed 80 nova compute nodes and 18 Swift nodes, so that adds up to close to 100 nodes with Crowbar.&lt;/p&gt;

&lt;p&gt;The installation from empty, humming bare metal to a running OpenStack cluster takes about 1 to 2 hours. Of course the development effort to make this work took a bit longer.&lt;/p&gt;

&lt;p&gt;I want to share the things we learned because either nobody has done this at this scale before or if someone did they did not talk about it and/or did not share the code changes. And code changes are necessary to get it working.&lt;/p&gt;

&lt;p&gt;The naive approach to this kind of deployment is like this: You say “What works with 5 VMs or 10 physical servers surely works with 100 servers as well”. Of course, it does not.&lt;/p&gt;

&lt;p&gt;We identified the following problems:&lt;/p&gt;

&lt;h2 id=&quot;coordination-problems&quot;&gt;Coordination problems&lt;/h2&gt;

&lt;p&gt;Crowbar uses chef in a very specific way. The Chef run on the Crowbar admin node is basically part of the Crowbar application. It takes place in the crowbar internal installation state transitioning process. This means it creates DHCP and DNS configuration in order to serve the right PXE boot configs etc.&lt;/p&gt;

&lt;p&gt;The problem that arises at about 50 nodes (in our case) is this:
- A node is in state “discovered” and is triggered to be “allocated”
- This triggers a chef-client run on the to-be-installed-node as well as the admin server
- The chef-client run on admin takes longer than the client-run + reboot on the to-be-installed-node which then boots again into discovery mode.&lt;/p&gt;

&lt;p&gt;This was the basic high-level problem that we identified. I guess internally all kinds of strange things happened. The symptoms where like this:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/2012/09/26/crowbar-failure1.png&quot; height=&quot;469px&quot; width=&quot;710px&quot; alt=&quot;Boot problem 1&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/2012/09/26/crowbar-failure2.png&quot; height=&quot;469px&quot; width=&quot;710px&quot; alt=&quot;Boot problem 2&quot; /&gt;&lt;/p&gt;

&lt;p&gt;We had the following options:&lt;/p&gt;

&lt;p&gt;a) Real solution: Coordinate state between admin node and installed node (e.g. reboot node when chef-client run on admin has succeeded and set up the installation correctly)&lt;/p&gt;

&lt;p&gt;b) Hacky, time pressured, get-it-done solution: Make chef-client run on admin fast enough (which is the current behaviour case for smaller setups).&lt;/p&gt;

&lt;p&gt;After we wiped our engineering tears out of our eyes when we realised there was no time for a) we went with b) and reduced the chef-client run time on the admin node from about 3-5 minutes to about 50 seconds. To find slow chef cookbooks, we used this &lt;a href=&quot;https://gist.github.com/3712301&quot;&gt;simple script&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The fixes where quite simple: Remove unnecessary searches, make sure that e.g. DHCP, DNS and PXE boot configs only get changed, when actual changes happen. This was mostly done by enforcing order in hashes/arrays that were used to generate templates. The DNS part was a bit tricky because the “zone serial number” should only change when something else changes and it should not trigger changes itself.&lt;/p&gt;

&lt;h2 id=&quot;networking-setup&quot;&gt;Networking setup&lt;/h2&gt;

&lt;p&gt;The way the nova network config was set up, clearly was created with /24 networks in mind. With 256 hosts it does not matter if you change something for every IP in that range. With a /16 network and over 65k IPs it does matter.&lt;/p&gt;

&lt;p&gt;The fixes here were straight forward and we actually were surprised that there were not more problems with the IP range and network configuration.&lt;/p&gt;

&lt;h2 id=&quot;bonding&quot;&gt;Bonding&lt;/h2&gt;

&lt;p&gt;… or how I stopped worrying about udev and love the crowbar approach. According to the documentation (as I understand it) udev is supposed to name the ethernet devices according to the MAC address. This should result in an ordered naming scheme. However, this is not what we observed.&lt;/p&gt;

&lt;p&gt;With crowbar you can define how network cards will be addressed in the &lt;code&gt;bc-network-template.json&lt;/code&gt; file. We use this approach to create two bonding interfaces (one for 1G and one for 10G networks). The ethX naming is not consistent across nodes, however the two 1G and two 10G interfaces are bonded and assigned to the right interface. The bonding interfaces have to be consistent across nodes (We changed crowbar to make it that way) because OpenStack refers to several network interfaces not only in the config files (which would be fine) but also in the database. With the database as central storage the naming has to be consistent so that OpenStack can find the right interfaces to do its work on.&lt;/p&gt;

&lt;p&gt;The whole bonding setup was quite hard to get working. The reason for this is the way Ubuntu (and I guess Linux networking in general) uses the networking config files: As a way to provide command line options for several tools. This means that transitioning from one setup to another requires steps like this:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;Tear down interfaces based on current settings&lt;/li&gt;
  &lt;li&gt;change config&lt;/li&gt;
  &lt;li&gt;create new networking config from files&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;There is already a lot of code in Crowbar to orchestrate transitions from one setup to another but we had to extend some parts - and we wanted to keep the networking management parts of the distribution.&lt;/p&gt;

&lt;h2 id=&quot;development-workflow&quot;&gt;Development workflow&lt;/h2&gt;

&lt;p&gt;We do not use the Crowbar &lt;code&gt;dev&lt;/code&gt;-tool. It does not do a lot more (that we need) that git does not do already but has a lot of assumptions about how you have to manage our code. So we just use git with &lt;a href=&quot;https://github.com/nvie/gitflow&quot;&gt;git flow&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;We think that git submodules are a pain to use and should be avoided in the future. Different versions of dependencies (barclamps, chef cookbooks, packages etc.) should be managed with tools like &lt;a href=&quot;http://gembundler.com/&quot;&gt;bundler&lt;/a&gt;, &lt;a href=&quot;http://berkshelf.com/&quot;&gt;berkshelf&lt;/a&gt; or &lt;a href=&quot;https://github.com/applicationsonline/librarian&quot;&gt;librarian&lt;/a&gt;. We’re working on a setup that uses these tools in the Crowbar context and we are glad to see that submodules already seem to have vanished from the current development branch.&lt;/p&gt;

&lt;p&gt;For the initial setup it is fine to use the ISO installation approach. To change things on the fly (and or make Crowbar work with actual 100 nodes) we needed a way to change things quicker. Crowbar uses Chef and Chef can do that, so we just configure &lt;code&gt;knife&lt;/code&gt; to point to the crowbar server and to include all cookbook directories from the barclamp source tree and we are good to go. A simple &lt;code&gt;knife cookbook upload nova&lt;/code&gt; and the latest OpenStack config changes can be applied.&lt;/p&gt;

&lt;h2 id=&quot;screenshots&quot;&gt;Screenshots&lt;/h2&gt;

&lt;p&gt;Everybody loves screenshots:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/2012/09/26/crowbar-dashboard.png&quot; height=&quot;909px&quot; width=&quot;710px&quot; alt=&quot;Crowbar dashboard&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/2012/09/26/ganglia-overview.png&quot; height=&quot;577px&quot; width=&quot;710px&quot; alt=&quot;Crowbar dashboard&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/2012/09/26/ganglia-overview2.png&quot; height=&quot;577px&quot; width=&quot;710px&quot; alt=&quot;Crowbar dashboard&quot; /&gt;&lt;/p&gt;

&lt;h2 id=&quot;next-steps&quot;&gt;Next steps&lt;/h2&gt;

&lt;p&gt;We’ve just finished the code for internal use. It is not public yet. We will start to integrate changes to the Crowbar open source repositories in the next days.&lt;/p&gt;

&lt;p&gt;We would love to hear or read other stories from deployments at this scale. You can reach us via Twitter &lt;a href=&quot;http://www.twitter.com/hvolkmer&quot;&gt;@hvolkmer&lt;/a&gt; and &lt;a href=&quot;http://www.twitter.com/ehaselwanter&quot;&gt;@ehaselwanter&lt;/a&gt;&lt;/p&gt;

</content><updated>2012-09-26T00:00:00+00:00</updated><category term='openstack'/><link href='/2012/09/26/crowbar-at-scale/' rel='alternate'/></entry><entry><id>/2012/09/14/reducing-development-production-parity-for-openstack-with-smartos-zones</id><title type='text'>Reducing development-production parity for OpenStack development with SmartOS zones</title><content type='html'>&lt;p&gt;Reducing &lt;a href=&quot;http://www.12factor.net/dev-prod-parity&quot;&gt;Dev/prod parity&lt;/a&gt; has several advantages that are listed and explained at the linked page. Without a useful reduction of the parity &lt;a href=&quot;http://continuousdelivery.com/&quot;&gt;Continuous delivery&lt;/a&gt; is impossible or at least akin to madness.&lt;/p&gt;

&lt;p&gt;In context of OpenStack development and deployment dev/prod parity seems to be not one of the most addresses problems right now. From what I hear the de facto standard development environment for OpenStack is &lt;a href=&quot;http://www.devstack.org&quot;&gt;devstack&lt;/a&gt;. Devstack is a perfect fit to get OpenStack running and to start developing but it is not the way people deploy OpenStack in production. This leads to all kinds of problems that could be avoided.&lt;/p&gt;

&lt;p&gt;Reducing dev/prod parity is very important and that’s why I think of it at this point even though a SmartOS based OpenStack production deployment seems to be a thing of the future right now.&lt;/p&gt;

&lt;h2 id=&quot;development-setup&quot;&gt;Development setup&lt;/h2&gt;

&lt;p&gt;It turns out that SmartOS is fantastic to address this problem. Let’s see how the current development setup looks like:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/2012/09/14/single-host.png&quot; alt=&quot;Single Host Setup&quot; /&gt;&lt;/p&gt;

&lt;p&gt;I basically start up &lt;code&gt;nova-compute&lt;/code&gt; in the global zone to have access to &lt;code&gt;vmadm&lt;/code&gt; and start all the other services in separate zones. At first this seems to be a hassle and to much for development. But it forces you to think of all the things that will go wrong in production. For example: &lt;code&gt;nova-compute&lt;/code&gt; needs to be able to access the database (which will be fixed in the future). So I need to setup the mysql credentials in a way to support that.&lt;/p&gt;

&lt;h2 id=&quot;multi-node-setup&quot;&gt;Multi node setup&lt;/h2&gt;

&lt;p&gt;How would this model look like in a more production like environment?&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/2012/09/14/multi-host.png&quot; alt=&quot;Multi Host setup&quot; /&gt;&lt;/p&gt;

&lt;p&gt;You can see that the basic service separation is the same. From an service standpoint it does not matter if the zones were deployed on a development host or on several physical hosts in the multi node production case.&lt;/p&gt;

&lt;p&gt;Being able to develop OpenStack in a production like setup will reduce the likelihood of surprises when it comes to deployment. SmartOS zones help a lot to achieve this goal.&lt;/p&gt;

&lt;h2 id=&quot;do-you-want-to-know-more&quot;&gt;Do you want to know more?&lt;/h2&gt;

&lt;p&gt;If you want to know more about SmartOS and OpenStack, &lt;a href=&quot;https://www.openstack.org/summit/san-diego-2012/vote-for-speakers/&quot;&gt;vote for my talk proposal “Porting OpenStack to SmartOS”&lt;/a&gt; at the upcoming OpenStack San Diego Summit.&lt;/p&gt;
</content><updated>2012-09-14T00:00:00+00:00</updated><category term='openstack'/><link href='/2012/09/14/reducing-development-production-parity-for-openstack-with-smartos-zones/' rel='alternate'/></entry><entry><id>/2012/09/07/why-smartos-as-an-openstack-base-os</id><title type='text'>Why SmartOS as an OpenStack base operating system?</title><content type='html'>&lt;p&gt;When SmartOS was first announced about a year ago, I downloaded the ISO, booted it in VMware, logged in and then… nothing. What is this? It’s small, it is not supposed to be installed on disk. What do I do with it? What is so special about it? It is just an Illumos distro - a small and strange one. I did not get it.&lt;/p&gt;

&lt;p&gt;I am now &lt;a href=&quot;http://blog.hendrikvolkmer.de/2012/08/31/porting-openstack-to-smartos/&quot;&gt;porting OpenStack to SmartOS&lt;/a&gt; and I think it is a perfect fit for that purpose. It is truly a Cloud OS. What does that mean? Let’s go through the features of SmartOS that make it a perfect fit to be run as a Cloud Base OS.&lt;/p&gt;

&lt;h2 id=&quot;zfs&quot;&gt;ZFS&lt;/h2&gt;

&lt;p&gt;The &lt;a href=&quot;http://en.wikipedia.org/wiki/ZFS&quot;&gt;ZFS&lt;/a&gt; storage model is based on Copy-On-Write which means that snapshots and clones are essentially free. This is fantastic for a Cloud compute node. Say you have a small set of defined VM base images and then spin up 20 VMs of Ubuntu 12.04. The Ubuntu image takes up about 500 MB of disk space. How much do 20 VMs of Ubuntu 12.04 use? Simple math right? Well, with ZFS these 20 VMs take 500 and a few MB. Total. Of course as the instances diverge this ratio gets lower but it is still impressive and very useful. Also spinning up Instances means you only have to clone the base image in ZFS which will take a few seconds the most, compared to copying it on a traditional file system. Somewhere in the internets I can hear someone shouting: “My SAN does the same thing since the 80ies, smartass”. Sure, but it costs quite a bit more and you also get a lot of &lt;a href=&quot;http://radar.oreilly.com/2012/04/complexity-vs-simplicity.html&quot;&gt;complexity&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The local storage needs for the base operating system get even better when you use Zones (see below).&lt;/p&gt;

&lt;h2 id=&quot;dtrace&quot;&gt;DTrace&lt;/h2&gt;

&lt;p&gt;While the open source SmartOS (to my knowledge) lacks the cool graphical reporting possibilities based on DTrace it still contains the real &lt;a href=&quot;http://dtrace.org/blogs/about/&quot;&gt;DTrace&lt;/a&gt; capabilities. Everyone who had to hunt a memory leak or strange process behaviour in production will know what it is worth to have a good tracing capability at hand. DTrace will enable you to find performance and other problems that in a stable and very low overhead way.&lt;/p&gt;

&lt;h2 id=&quot;zones&quot;&gt;Zones&lt;/h2&gt;

&lt;p&gt;Zones let you securely partition your OS without the overhead of another hypervisor (&lt;a href=&quot;http://en.wikipedia.org/wiki/Operating_system-level_virtualization&quot;&gt;OS level virtualisation&lt;/a&gt;). In SmartOS a zone is always the outer “hull” of virtualisation. Either inside is just another SmartOS, or a qemu process with KVM that runs any other operating system. In combination with ZFS and Crossbow this is fantastic basis for virtual environments.&lt;/p&gt;

&lt;p&gt;As Zones have minimal overhead they provide an ideal foundation for PaaS services like databases, load balancers etc. In an OpenStack context this would allow us to just use a special VM image that translates to a zone for a DB. We could thus avoid the whole &lt;a href=&quot;https://lists.launchpad.net/openstack/msg15314.html&quot;&gt;RedDwarf/RedDwarf lite-back-and-forth-disaster&lt;/a&gt;.&lt;/p&gt;

&lt;h2 id=&quot;kvm&quot;&gt;KVM&lt;/h2&gt;

&lt;p&gt;Using KVM allows us to run (almost) any x86 operating system using the Intel VT-D, VT-X extensions with very little overhead. SmartOS has integrated KVM in a way that is easy to use. Actually I’m pretty glad that they did not use libvirt as abstraction layer but created their own.&lt;/p&gt;

&lt;h2 id=&quot;smf---service-management-facility&quot;&gt;SMF - Service Management Facility&lt;/h2&gt;

&lt;p&gt;With &lt;a href=&quot;http://en.wikipedia.org/wiki/Service_Management_Facility&quot;&gt;SMF&lt;/a&gt; you can define services, dependencies and let SMF manage them for you. I do believe that dependencies are important and a good way to model things for services (in contrast to what the  &lt;a href=&quot;http://upstart.ubuntu.com/cookbook/#id74&quot;&gt;Upstart&lt;/a&gt; designers think). Managing services in this model has been proving to work well e.g. with the &lt;a href=&quot;http://www.erlang.org/doc/design_principles/des_princ.html&quot;&gt;Erlang Supervision Tree&lt;/a&gt;. With SMF you can define dependencies and restart behaviours of services as well as alerts when stuff goes awry.&lt;/p&gt;

&lt;h2 id=&quot;crossbow&quot;&gt;Crossbow&lt;/h2&gt;

&lt;p&gt;Illumos comes with its own network virtualisation layer (basically a virtual switch) called Crossbow. In SmartOS the network virtualisation is integrated in the &lt;code&gt;vmadm&lt;/code&gt; tool and works seamlessly. The virtualisation is based on VLANs: Each tenant will get their own VLAN. Crossbow was way ahead of the competition when it was released. With &lt;a href=&quot;http://openvswitch.org&quot;&gt;OpenVSwitch&lt;/a&gt; the Linux world has caught up and maybe even surpassed Crossbow. It will be interesting to see how the development of these technologies will continue.&lt;/p&gt;

&lt;h2 id=&quot;smartos-vm-tools&quot;&gt;SmartOS VM tools&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;imgadm&lt;/code&gt;, &lt;code&gt;vmadm&lt;/code&gt; are tools to manage images and VMs. They are clearly written in a way to be used as part of a cloud platform. No config files with strange syntax or super long command line options. Instead these tools work with short and clear command line commands that take JSON files as options to do the real work. This is fantastic when used as an API from a cloud orchestration layer like OpenStack. And it feels a lot more like an API than libvirt (I save the libvirt “API” rant for another time… XML snippets as arguments. Really?).&lt;/p&gt;

&lt;h2 id=&quot;a-true-cloud-os&quot;&gt;A true cloud OS&lt;/h2&gt;

&lt;p&gt;The - at first look strange - model of usb key or PXE booting the base OS is a fantastic fit for cloud environments and makes a lot of problems go away. OS updates? Just reboot. How to install the OS? Don’t. Just use a Ramdisk. Why waste space on disk when you can have a Ramdisk of 250 MB with the whole OS in it?&lt;/p&gt;

&lt;p&gt;As you can see I’m pretty excited about SmartOS in this context. In combination with OpenStack this might be the best open source cloud orchestration stack that you can get.&lt;/p&gt;
</content><updated>2012-09-07T00:00:00+00:00</updated><category term='openstack'/><link href='/2012/09/07/why-smartos-as-an-openstack-base-os/' rel='alternate'/></entry><entry><id>/2012/08/31/porting-openstack-to-smartos</id><title type='text'>Porting OpenStack to SmartOS</title><content type='html'>&lt;h2 id=&quot;general-idea&quot;&gt;General idea&lt;/h2&gt;

&lt;p&gt;&lt;a href=&quot;http://smartos.org&quot;&gt;SmartOS&lt;/a&gt; is a modern operating system that was actually created to run cloud orchestration software. Joyent uses it in their commercial Smart Data centre software. So it makes perfect sense to port &lt;a href=&quot;http://openstack.org&quot;&gt;OpenStack&lt;/a&gt; to it.&lt;/p&gt;

&lt;p&gt;In fact, this idea is so obvious that there is a &lt;a href=&quot;https://blueprints.launchpad.net/nova/+spec/smartos-support&quot;&gt;blueprint&lt;/a&gt; describing this.&lt;/p&gt;

&lt;p&gt;Thijs Metsch wrote a there part (&lt;a href=&quot;http://www.nohuddleoffense.de/2012/02/12/smartstack-smartos-openstack-part-1/&quot;&gt;1&lt;/a&gt;,&lt;a href=&quot;http://www.nohuddleoffense.de/2012/02/15/smartstack-smartos-openstack-part-2/&quot;&gt;2&lt;/a&gt;,&lt;a href=&quot;http://www.nohuddleoffense.de/2012/02/28/smartstack-smartos-openstack-part-3/&quot;&gt;3&lt;/a&gt;) blog posts series about this endeavour. But it ends where it gets interesting: The part where you actually would start VMs, copy images, set up networking etc.&lt;/p&gt;

&lt;p&gt;I built on his work and started where he stopped.&lt;/p&gt;

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

&lt;ol&gt;
  &lt;li&gt;Create a nova Hypervisor backend for SmartOS based on the current folsom (master) branch of Openstack Nova.&lt;/li&gt;
  &lt;li&gt;Integrate networking through Quantum&lt;/li&gt;
  &lt;li&gt;???&lt;/li&gt;
  &lt;li&gt;Profit&lt;/li&gt;
&lt;/ol&gt;

&lt;h2 id=&quot;current-status&quot;&gt;Current status&lt;/h2&gt;

&lt;p&gt;I can currently start and stop VMs (both SmartOS zones and KVM based VMs) through the OpenStack API. Glance integration is there (Images from glance will be put into ZFS the way “imgadm” wants them). On the SmartOS side I use the &lt;code&gt;vmadm&lt;/code&gt; and &lt;code&gt;imgadm&lt;/code&gt; tools as an integration API. Basic networking also works. Theres quite a lot of work to do to get security groups, floating IPs etc. working.&lt;/p&gt;

&lt;p&gt;Here are two screenshots that show how it currently looks:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;http://blog.hendrikvolkmer.de/assets/2012/08/31/smartos1.png&quot; alt=&quot;Booting a VM&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;http://blog.hendrikvolkmer.de/assets/2012/08/31/smartos2.png&quot; alt=&quot;Logging into a OpenStack started Zone&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Expect more info to come in the next days and weeks.&lt;/p&gt;
</content><updated>2012-08-31T00:00:00+00:00</updated><category term='openstack'/><link href='/2012/08/31/porting-openstack-to-smartos/' rel='alternate'/></entry><entry><id>/2011/02/25/moving-from-wordpress-on-a-vps-to-jekyll-and-amazon-s3</id><title type='text'>Moving from Wordpress on a VPS to Jekyll and Amazon S3</title><content type='html'>&lt;h2 id=&quot;what-and-why&quot;&gt;What and Why?&lt;/h2&gt;

&lt;p&gt;This blog has gone through a lot of migrations: From &lt;a href=&quot;http://www.movabletype.org/&quot;&gt;Movable Type&lt;/a&gt; to &lt;a href=&quot;http://wordpress.org/&quot;&gt;Wordpress&lt;/a&gt; (several version updates) to &lt;a href=&quot;https://github.com/technoweenie/mephisto&quot;&gt;Mephisto&lt;/a&gt; to &lt;a href=&quot;http://webby.rubyforge.org/&quot;&gt;Webby&lt;/a&gt; and finally to &lt;a href=&quot;http://github.com/mojombo/jekyll&quot;&gt;Jekyll&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://www.wenigeristweniger.de&quot;&gt;My other blog&lt;/a&gt; was set up using &lt;a href=&quot;http://wordpress.org&quot;&gt;Wordpress&lt;/a&gt; from the beginning and moved to &lt;a href=&quot;http://github.com/mojombo/jekyll&quot;&gt;Jekyll&lt;/a&gt; recently as well.&lt;/p&gt;

&lt;p&gt;Why did I do this? Do I hate Worpress or do I care that it’s written in PHP? Not at all. I could care less which programming language is used to serve a page even if I don’t particularliy like the language.&lt;/p&gt;

&lt;p&gt;The main reason for the switch was really that I don’t need most of the features that Wordpress offers and I like the idea of pure static web pages (for stuff that is - at its core, well, … static). When &lt;a href=&quot;http://www.allthingsdistributed.com/2011/02/website_amazon_s3.html&quot;&gt;Amazon announced its new web hosting support for S3&lt;/a&gt;, I noticed that I didn’t really need a VPS to run the few pages that I have and decided to cancel my VPS subscription and put everything on S3.&lt;/p&gt;

&lt;h2 id=&quot;how&quot;&gt;How?&lt;/h2&gt;

&lt;h3 id=&quot;wordpress-to-jekyll&quot;&gt;Wordpress to Jekyll&lt;/h3&gt;

&lt;p&gt;To migrate from Wordpress to Jekyll, I basically followed &lt;a href=&quot;http://paulstamatiou.com/how-to-wordpress-to-jekyll&quot;&gt;Paul Stamatiou’s How to&lt;/a&gt;. He does some special stuff. If you’d like to see the minimal migration, here it is:&lt;/p&gt;

&lt;p&gt;Get your Wordpress articles:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;$ wget --no-check-certificate https://github.com/mojombo/jekyll/raw/master/lib/jekyll/migrators/wordpress.rb
$ ruby -r &quot;wordpress&quot; -e &apos;Jekyll::Wordpress.process(&quot;your_wordpress_db&quot;, &quot;wp_user&quot;, &quot;secretwp_pwd&quot;)&apos;
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;If you happen to have a lot of drafts, edit the wordpress.rb file. Change the SQL from “= ‘published’” to “&amp;lt;&amp;gt; ‘published’” and change the output folder from “_posts” to “_drafts”. Then run the command again to export your drafts.&lt;/p&gt;

&lt;p&gt;Now copy the “_posts” folder to your Jekyll folder. As recommended by the Jekyll author, you can just clone his repo, remove the copyrighted stuff and put your posts folder in. I like to have a clean git repo to start with, so also deleted the .git folder.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;$ git clone https://github.com/mojombo/tpw.git
$ rm -rf .git _posts images
$ cp -r your_wordpress_dump_directory/_posts _posts
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;You can now try to run jekyll and see how it looks like:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;$ jekyll --auto --server
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;And go to http://localhost:4000. Change CSS and HTML templates as necessary.&lt;/p&gt;

&lt;p&gt;Now for the S3 part. I just added a Rakefile with the following task to my repository:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;task :default =&amp;gt; :deploy

desc &quot;Deploy to S3&quot;
task :deploy do
  sh &quot;jekyll&quot;
  sh &quot;s3cmd sync _site/* s3://blog.hendrikvolkmer.de/&quot;
end
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;You need to install s3cmd from &lt;a href=&quot;http://s3tools.org/&quot;&gt;s3tools&lt;/a&gt; for it to work. If you’re using a Mac you can use Macports:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;$ sudo port install s3tools
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;The S3 setup is rather simple as well. Just set up a bucket with the name of your Domain (including subdomain), activate the webhosting inside the  “Website configuration” tab of “Properties”&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;{
 &quot;Version&quot;:&quot;2008-10-17&quot;,
 &quot;Statement&quot;:[{
     &quot;Sid&quot;:&quot;PublicReadForGetBucketObjects&quot;,
     &quot;Effect&quot;:&quot;Allow&quot;,
       &quot;Principal&quot;: {
        &quot;AWS&quot;: &quot;*&quot;
      },
   &quot;Action&quot;:[&quot;s3:GetObject&quot;],
   &quot;Resource&quot;:[&quot;arn:aws:s3:::blog.hendrikvolkmer.de/*&quot;
   ]
  }
 ]
} 
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Change the Domain to your bucket name which is your domain name. You then have to point your DNS record of your domain to the Amazon S3 name of your bucket (e.g. blog.hendrikvolkmer.de.s3-website-eu-west-1.amazonaws.com CNAME blog.hendrikvolkmer.de).&lt;/p&gt;

&lt;p&gt;You can then deploy your newly created static website using:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;$ rake
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Check out the &lt;a href=&quot;http://docs.amazonwebservices.com/AmazonS3/latest/dev/HostingWebsiteQS1.html&quot;&gt;S3 Website Hosting documentation&lt;/a&gt; for further information.&lt;/p&gt;

&lt;h3 id=&quot;webby-to-jekyll&quot;&gt;Webby to Jekyll&lt;/h3&gt;

&lt;p&gt;The process from webby to Jekyll straightfoward as both systems are static web page generators. You might wonder, why to migrate at all. Webby really is a static web page generator. It has support for blog posts but it feels like it is put on top and just isn’t integrated that well. Jekyll in the other hand was designed for blogs. I also like the idea of liquid templates better than plain ERB. Both Webby and Jekyll support Textile and both use &lt;a href=&quot;https://github.com/mojombo/jekyll/wiki/yaml-front-matter&quot;&gt;YAML Front Matter&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The standard webby blog page structure can be migrated to Jekyll posts using the following command:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;find content/????/*/* -name index.txt | 
while read file
do 
  mv $file _posts/$(echo $file | sed -e &apos;s/content\///&apos; -e &apos;s/\//-/g&apos; -e &apos;s/-index.txt/.textile/&apos; )
done
&lt;/code&gt;&lt;/pre&gt;

&lt;h2 id=&quot;bonus-seo-tricks---or-just-being-a-good-web-citizen&quot;&gt;Bonus: SEO tricks - or just being a good web citizen&lt;/h2&gt;

&lt;h3 id=&quot;urls&quot;&gt;URLs&lt;/h3&gt;

&lt;p&gt;The &lt;a href=&quot;http://www.w3.org/Provider/Style/URI&quot;&gt;W3 recommends that you design your URLs in a way that they don’t change&lt;/a&gt; - or at least redirect to the new URL. That is generally a good idea and also has some benefits for &lt;a href=&quot;http://en.wikipedia.org/wiki/Search_engine_optimization&quot;&gt;SEO&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;S3 doesn’t support redirects (as far as I know). So my solution is this: I create pages via Jekyll, copy the pages to the “old” folder structure and use the &lt;a href=&quot;http://googlewebmastercentral.blogspot.com/2009/02/specify-your-canonical.html&quot;&gt;canonical tag&lt;/a&gt; to direct search engines to the new URL.&lt;/p&gt;

&lt;p&gt;I use this for date URLs in blogs (e.g. /2011/3/3/foo -&amp;gt; /2011/03/03/foo) and for pagination (see below). Some how every blog system has a different default regarding date URLs… I once forgot to change them and now I’m stuck with both URL schemes. &lt;a href=&quot;http://en.wikipedia.org/wiki/Murphy&apos;s_law&quot;&gt;Murphy’s law&lt;/a&gt; mandates that you basically receive no incoming liks execpt directly before and after you change your URL schema, so that you have to support both forever. That’s what happened to me ;-)&lt;/p&gt;

&lt;p&gt;I use the following code to generate the additional pages:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;task :old_redirects =&amp;gt; :generate do
  require &apos;fileutils&apos;
  Dir.chdir(&quot;_site/&quot;) do 

  # Redirect 2009/2/3/foo to 2009/02/03/ by copying the destination file
  # Canonical tag takes care of the rest
  Dir.glob(&quot;200?&quot;) do |year|
    Dir.chdir(year) do
      Dir.glob(&quot;0*&quot;) do |month|
        Dir.chdir(month) do
          Dir.glob(&quot;0*&quot;) do |day|
            FileUtils.cp_r day, day.gsub(&quot;0&quot;,&quot;&quot;)
          end
        end
        FileUtils.cp_r month, month.gsub(&quot;0&quot;,&quot;&quot;)
      end
    end
  end
end
end
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;In my layout I use this go generate the canonical tag:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;&amp;lt;link rel=&quot;canonical&quot; href=&quot;http://blog.hendrikvolkmer.de(( page.url | canonical_url ))&quot; /&amp;gt; 
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;(Use the standard liquid curly braces instead of parentheses in your code. Apparently &lt;a href=&quot;http://tesoriere.com/2010/08/25/liquid-code-in-a-liquid-template-with-jekyll/&quot;&gt;it is impossible to escape liquid templates&lt;/a&gt;). See filter implementation and reason for it below.&lt;/p&gt;

&lt;h3 id=&quot;pagination&quot;&gt; Pagination&lt;/h3&gt;

&lt;p&gt;To paginate the index page I used &lt;a href=&quot;https://gist.github.com/227621&quot;&gt;this gist&lt;/a&gt;. Somehow pagination seems to be not that common among Jekyll users. I didn’t find that much information.&lt;/p&gt;

&lt;p&gt;The paginator generates URLs like this “/page2/”, “/page3/” whereas my old structure was just “/2/”,”/3/” etc. To make both work I used the same idea as above (in a rake task):&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;# Inside Dir.chdir(&quot;_site&quot;) block
Dir.glob(&quot;page*&quot;) do |pagination|
  FileUtils.cp_r pagination, pagination.gsub(&quot;page&quot;,&quot;&quot;)
end
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Jekyll then generates “http://blog.hendrikvolkmer.de/page2/index.html” as “page.url” which I found ugly. So I added the “canonical_url” filter by creating “_plugins/canonical.rb” with the following content:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;module CanonicalFilter

  def canonical_url(arg)
    arg.gsub(&quot;/index.html&quot;,&quot;&quot;) 
  end
end

Liquid::Template.register_filter(CanonicalFilter)
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Send comments to &lt;a href=&quot;http://www.twitter.com/hvolkmer&quot;&gt;@hvolkmer&lt;/a&gt;&lt;/p&gt;

</content><updated>2011-02-25T00:00:00+00:00</updated><link href='/2011/02/25/moving-from-wordpress-on-a-vps-to-jekyll-and-amazon-s3/' rel='alternate'/></entry><entry><id>/2010/11/08/two-years-of-git-a-retrospective</id><title type='text'>Two years of git – a retrospective</title><content type='html'>&lt;blockquote&gt;
  &lt;p&gt;This post was first published on the imedo.de devblog. The blog went offline in 2012, so I migrated the posts to my personal blog.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;We started using git in late 2008 mainly not because it was cool but because it solved one particiular problem: Slow deployment.&lt;/p&gt;
&lt;p&gt;To understand this you have to know that our codebase was rather big and monolithic back then. One big rails project with a lot of small files and lots of plugins. This meant we had about 3 times as much files to deploy (3 files per file in every directory in the .svn-directory) using capistrano which bascially does a checkout for a new deploy.&lt;/p&gt;
&lt;p&gt;This process took about 45 minutes in the end (yes, 45 minutes!) which was not acceptable. We could have thought about other solutions but as there were other advantages to git we switched to git and the deployment process went back to about 2 minutes.&lt;/p&gt;
&lt;p&gt;Over the last two years we tried different models and workflows and ended up with what many people consider the standard workflow for git:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;master&lt;/strong&gt; is the master branch and main development branch, CI runs off master&lt;/li&gt;
&lt;li&gt;We create &lt;strong&gt;feature branches&lt;/strong&gt; and local &quot;try and experiment&quot; branches but they normally live no longer than a few days and are constantly rebased to master.&lt;/li&gt;
&lt;li&gt;If all tests in our continuous integration environment succeed, the code will automatically be merged into a branch called “&lt;strong&gt;live&lt;/strong&gt;“. We deploy only from “&lt;strong&gt;live&lt;/strong&gt;” and can therefore deploy at any time knowing that all tests have been run on the code we are deploying&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;A few things we learned:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;never rebase remote branches – I think you can do it right somehow but if you don’t it will blow up your repository&lt;/li&gt;
&lt;li&gt;Changing history is ok – locally – never amend or rebase – a commit that has been published – or: don’t use git push -f&lt;/li&gt;
&lt;li&gt;git bisect is fantastic to find code breaking commits (running tests for each bisected commit) or in specific code changes (using grep &amp;lt;change&amp;gt;) e.g. “Which commit did remove of some word in copy on a website”&lt;/li&gt;
&lt;li&gt;git is fast – most of the time&lt;/li&gt;
&lt;li&gt;Developing a certain discipline regarding branching is very important. Branches are useful for certain things, but a lot of long lived, diverging branches is certainly a smell&lt;/li&gt;
&lt;li&gt;The ability to split and merge repositories without losing history is very useful (some information will get lost, when splitting and then remerging the same repo, but we never did that anyways)&lt;/li&gt;
&lt;li&gt;The git index/additional step required when commiting is rather annoying at first but no one wants to live without it after a while&lt;/li&gt;
&lt;li&gt;Local branches, commit –amend and rebase -i allow us to re-fit the commits into logical chunks which aren’t always apparent at first when developing a new feature. This is really useful if a commit is reviewed in the future&lt;/li&gt;
&lt;li&gt;Having all commits available on every developer machine is very useful for speed, offline-development and backup reasons&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;What could be better? What’s missing? We thought about that last week and didn’t come up with anything. Git seems to be a rather perfect SCM – at least for us at the moment.&lt;/p&gt;
</content><updated>2010-11-08T00:00:00+00:00</updated><category term='imedo'/><link href='/2010/11/08/two-years-of-git-a-retrospective/' rel='alternate'/></entry><entry><id>/2010/08/23/migrating-from-active_messaging-to-resque-with-zero-code-changes-using-background_lite</id><title type='text'>Migrating from Active Messaging to Resque with zero code changes using background_lite</title><content type='html'>&lt;blockquote&gt;
  &lt;p&gt;This post was first published on the imedo.de devblog. The blog went offline in 2012, so I migrated the posts to my personal blog.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Most people ask us why we use &lt;a href=&quot;http://github.com/imedo/background_lite&quot;&gt;background_lite&lt;/a&gt; at all, as it doesn’t provide any background job functions itself. Why do you use ActiveRecord and not plain SQL? Abstraction? Exactly!&lt;/p&gt;
&lt;p&gt;The goal of background_lite is to abstract the interface of background handling and let you configure the actual background layer. We’ve been using &lt;a href=&quot;http://code.google.com/p/activemessaging/wiki/ActiveMessaging&quot;&gt;active_messaging&lt;/a&gt; for background jobs since we use background jobs (mid 2007). And we soon felt that the way we had to use its API was kind of obtrusive. So we created background and later background_lite as an abstraction layer for background jobs.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://code.google.com/p/activemessaging/wiki/ActiveMessaging&quot;&gt;active_messaging&lt;/a&gt; was quite convenient to use but there were several things that we didn’t like about it:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The backend we use (ActiveMQ) is Java – This is not a Java-bashing reason. The problem with Java infrastructure (for us) is that monitoring and starting/stopping processes isn’t the same as all the other infrastructure we use&lt;/li&gt;
&lt;li&gt;ActiveMessaging pollers aren’t easy to monitor/start/restart – They should be if you look at the code. But we never got them to start/restart as we wanted them to&lt;/li&gt;
&lt;li&gt;ActiveMQ showed some strange behaviour: Polling the queue started to fail for no apparent reason from time to time and so did pushing stuff into the queue. Restarting ActiveMQ helped sometimes but not always. And it resulted in a corrupted “data” directory which means lost jobs. Recovering from this situation also required restarting our Mongrels (which is rather strange).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;As &lt;a href=&quot;http://github.com/&quot;&gt;github&lt;/a&gt; is successfully using &lt;a href=&quot;http://github.com/defunkt/resque&quot;&gt;Resque&lt;/a&gt; we tried it on a side project via background_lite and found that it works really well. The reasons to chose Resque (and not some other queuing solution) are pretty much the same as &lt;a href=&quot;http://github.com/blog/542-introducing-resque&quot;&gt;described by the github guys&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;As the other project already used Resque via background_lite the required&amp;nbsp;&lt;a href=&quot;http://github.com/imedo/background_lite/commit/f7033bdaeee31ae200193f987f47b62e7caf3ded&quot;&gt;handler for Resque&lt;/a&gt; was already in place. So&amp;nbsp;&lt;strong&gt;the only thing we needed to do to switch from active_messaging to Resque &lt;/strong&gt;(besides the installation of Resque itself) &lt;strong&gt;was to change a simple configuration option!&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;We’re talking about changing a major piece of backend infrastructure. The transition went flawlessly (not a single lost job or application error) and since the switch &lt;strong&gt;one day&lt;/strong&gt; ago &lt;strong&gt;Resque already has processed more than 2 million requests without a single hiccup.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Further information:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://code.google.com/p/activemessaging/wiki/ActiveMessaging&quot;&gt;active_messaging&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://github.com/imedo/background_lite&quot;&gt;background_lite&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://github.com/imedo/background_lite&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://github.com/defunkt/resque&quot;&gt;Resque&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://github.com/blog/542-introducing-resque&quot;&gt;Reasons for Resque&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content><updated>2010-08-23T00:00:00+00:00</updated><category term='imedo'/><link href='/2010/08/23/migrating-from-active_messaging-to-resque-with-zero-code-changes-using-background_lite/' rel='alternate'/></entry><entry><id>/2009/11/20/how-to-troubleshoot-problems-in-server-setups-rails-apps-or-any-other-config-or-code-problem</id><title type='text'>How to troubleshoot Problems in Server Setups, Rails Apps or any other Config or Code Problem</title><content type='html'>&lt;blockquote&gt;
  &lt;p&gt;This post was first published on the imedo.de devblog. The blog went offline in 2012, so I migrated the posts to my personal blog.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This post might be interesting for all people who are faced with strange problems like this: &quot;Yesterday it worked. Now it’s broken&quot; or &quot;It works on my machine (and it does not in production)&quot;.&lt;/p&gt;

&lt;p&gt;I’m sure that all programmers and sysadmins have had an incident like this in their lives. I’ve had a lot of these problems and found out that in the end there’s always an explaination for the problem. Very rarley it’s some quantum mechaincs effect that caused the problem. In most cases there is a really simple explaination for the problem even if it was hard to find. These things include &quot;the cause of a crashing perl script is the java version of the app starting the script&quot;, &quot;failing tests that where caused by a minor version difference of a testing library where the error message lead to something completely different&quot;&lt;/p&gt;

&lt;p&gt;The process described below was used in all cases to find the root cause of the problem which then was solved very easily. We weren’t aware that we used this process but rather did it intuitively. After talking about the process and writing it down, we were able to find more and more problems by following these steps and also to transfer the knowledge to other people so that they will build up the intuition to find root causes of problems as well.&lt;/p&gt;

&lt;h3&gt;General idea&lt;/h3&gt;
&lt;p&gt;Systems that work and system that don’t work differ.&lt;/p&gt;
&lt;p&gt;If you make the not working system equal to the working system, it will work.&lt;/p&gt;
&lt;p&gt;That’s all there is to Troubleshooting (basically).&lt;/p&gt;
&lt;h3&gt;Process to find out the difference&lt;/h3&gt;
&lt;p&gt;The hard part is to find out where the working and not working systems differ.&lt;/p&gt;
&lt;p&gt;The general process is really simple though:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;List all items that can differ&lt;/li&gt;
&lt;li&gt;Check if they differ&lt;/li&gt;
&lt;li&gt;Make them equal (one at a time!)&lt;/li&gt;
&lt;li&gt; Repeat 3 until finished. If still broken, think harder about 1 and start again&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The optimized version of this is, to start with the things that are most likely to cause the problem.&lt;/p&gt;
&lt;p&gt;The term &quot;most likely&quot; is based on&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;your own experience&lt;/li&gt;
&lt;li&gt;information found in the web: blog posts, google searches, etc.&lt;/li&gt;
&lt;li&gt;experiences of your co-workers&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;It is fundamental that you make each step conciously (writing the step/change down helps to do that). If one step doesn’t yield the desired outcome: revert it immediately. Again: having written it done helps not to forget anything. Forgetting steps may make the situation even worse.&lt;/p&gt;

&lt;h3&gt;How can systems differ?&lt;/h3&gt;
&lt;p&gt;The main questions are:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;What changed since it worked (if it is the same system)?&lt;/li&gt;
&lt;li&gt;What is different or changed on the not working system compared to the working system (if it is a different system)?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The latter is a lot easier because you something to compare to. In the former case you have to create the &quot;working system&quot; again. Which in itself may be the solution to the problem.&lt;/p&gt;
&lt;p&gt;If the answer is &quot;nothing&quot;. Think again…! Because time has progressed. So at least the time changed.&lt;/p&gt;
&lt;p&gt;Possible effects of changed time&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt; File system full&lt;/li&gt;
&lt;li&gt;weird time dependend behavior of applications&lt;/li&gt;
&lt;li&gt;system/application restart occured&lt;/li&gt;
&lt;li&gt;data changes happend&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Other things that may have changed:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;software versions through package updates – Minor Changes are important!
&lt;ul&gt;
&lt;li&gt;OS Kernel&lt;/li&gt;
&lt;li&gt;OS packages&lt;/li&gt;
&lt;li&gt;application libraries (ruby gems, jars))&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Database schemas&lt;/li&gt;
&lt;li&gt;Database content&lt;/li&gt;
&lt;li&gt; Filesystem content of any kind (That includes timestamps of a file that is only read!)
&lt;ul&gt;
&lt;li&gt;Location of files&lt;/li&gt;
&lt;li&gt;symlink vs. real files&lt;/li&gt;
&lt;li&gt;timestamps&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt; Hardware&lt;/li&gt;
&lt;li&gt; Increased load
&lt;ul&gt;
&lt;li&gt;Network I/O&lt;/li&gt;
&lt;li&gt;Disk I/O&lt;/li&gt;
&lt;li&gt;CPU&lt;/li&gt;
&lt;li&gt;Exceeded RAM -&amp;gt; Swapping&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Some things will be straightforward and it is obvious why something brakes something else. Some things are not as obvious (at least not at the time when you try to find it – it’s always obvious afterwards!). Don’t jump to conclusions about cause and effect while you debug. If you think &quot;I’ll don’t try X because X has nothing to do with Y&quot; try X! Maybe it has something to do with Y. You don’t know before you try. Revert (or create the equal state to the working system for) the &quot;most obvious&quot; things that &quot;can’t possibly interfere with the problem&quot;. That includes&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Comments in Source or Configuration files&lt;/li&gt;
&lt;li&gt;Whitespaces&lt;/li&gt;
&lt;li&gt;Trivial Code/Configuration changes&lt;/li&gt;
&lt;li&gt;minor version changes in Packages&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The &quot;most likley&quot; rule does apply here, too. Don’t start with whitespace if there are other not so subtle changes still different. Don’t look for access time timestamps if the files on one system are are in completely different locations compared to on the other system. This requires some experience but with time you’ll find which things to look for first.&lt;/p&gt;

&lt;h3&gt;Tools&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt; Filesystem-Analysis: df, ls, find,&lt;/li&gt;
&lt;li&gt; Application-Behavior: strace (dtruss on Solaris and Mac OS), lsof, netstat&lt;/li&gt;
&lt;li&gt; Databases: For mysql: mysql, innotop&lt;/li&gt;
&lt;li&gt; Packages: Debian: apt-get, dpkg&lt;/li&gt;
&lt;li&gt; Finding differences/problem causes in running vs. not running code: Binary Search (e.g. via git bisect, debugger or just plain “print”-Debugging).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;We hope these thoughts help you to debug and troubleshoot strange problems. Feel free to post additions, comments, tool or experiences with troubleshooting.&lt;/p&gt;
</content><updated>2009-11-20T00:00:00+00:00</updated><category term='imedo'/><link href='/2009/11/20/how-to-troubleshoot-problems-in-server-setups-rails-apps-or-any-other-config-or-code-problem/' rel='alternate'/></entry><entry><id>/2009/08/06/testing-pdf-generation</id><title type='text'>Testing PDF generation</title><content type='html'>&lt;blockquote&gt;
  &lt;p&gt;This post was first published on the imedo.de devblog. The blog went offline in 2012, so I migrated the posts to my personal blog.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Generating PDFs in a Rails application is a fairly common task. Maybe you want to create a letter, report, document or maybe an invoice. Either way the stuff that normally ends up in an &lt;span class=&quot;caps&quot;&gt;PDF&lt;/span&gt; is important and you want to make sure the right stuff ends up there.&lt;/p&gt;

&lt;p&gt;This pretty much sounds like a case for automated testing. But how do you test &lt;span class=&quot;caps&quot;&gt;PDF&lt;/span&gt; content? One option would be to generate the &lt;span class=&quot;caps&quot;&gt;PDF&lt;/span&gt; and then create a &lt;span class=&quot;caps&quot;&gt;HTML&lt;/span&gt; out of the &lt;span class=&quot;caps&quot;&gt;PDF&lt;/span&gt; using &lt;a href=&quot;http://pdftohtml.sourceforge.net/&quot;&gt;pdftohtml&lt;/a&gt;, parse the &lt;span class=&quot;caps&quot;&gt;HTML&lt;/span&gt; and make some assertions. As you can guess, this approach isn’t very feasable, because the generated &lt;span class=&quot;caps&quot;&gt;HTML&lt;/span&gt; isn’t very easy to parse.&lt;/p&gt;

&lt;p&gt;Most of the time &lt;span class=&quot;caps&quot;&gt;PDF&lt;/span&gt; generation in Rails applications is done using the &lt;a onclick=&quot;javascript:pageTracker._trackPageview(&apos;/outgoing/rtex.rubyforge.org/&apos;);&quot; href=&quot;http://rtex.rubyforge.org/&quot;&gt;RTex&lt;/a&gt; Plugin – the &lt;span class=&quot;caps&quot;&gt;PDF&lt;/span&gt; is generated via LaTeX. This makes testing a lot easier because you can just parse and check the generated LaTeX-Source.&lt;/p&gt;
&lt;p&gt;Everyone how has seen a LaTeX source file may ask: How the hell do I parse that?&lt;/p&gt;
&lt;p&gt;In our case we added some “helper” comments like ”% &lt;span class=&quot;caps&quot;&gt;SUM BEGIN&lt;/span&gt;” and ”% &lt;span class=&quot;caps&quot;&gt;SUM END&lt;/span&gt;” before and after the part we were interested in and then used basic RegEx to parse out the interesting part. You have to manually check that the markup still looks as expected due to the newline handling of LaTeX (one is ok, two = new paragraph). Most of the time it is sufficient to look for &lt;span class=&quot;caps&quot;&gt;ERB&lt;/span&gt;-Tags and use &amp;lt; %- instead of &amp;lt; %.&lt;/p&gt;

&lt;p&gt;This approach works pretty well for us. One question which you should always keep in mind when you write tests is: What do I test on this level of testing and what do I leave out.&lt;/p&gt;
&lt;p&gt;For the &lt;span class=&quot;caps&quot;&gt;PDF&lt;/span&gt;/LaTeX-Testcase we choose to test the basic interaction between the objects that provide values for the &lt;span class=&quot;caps&quot;&gt;PDF&lt;/span&gt; generation and the Template. We don’t test all combinations, just a few basic cases. Testing all or at least a lot of combinations, edge cases etc. is clearly a concern of unit tests.&lt;/p&gt;
</content><updated>2009-08-06T00:00:00+00:00</updated><category term='imedo'/><link href='/2009/08/06/testing-pdf-generation/' rel='alternate'/></entry><entry><id>/2009/04/08/running-ikanserve-on-google-app-engine</id><title type='text'>Running an Ioke web application on Google App Engine using Ikanserve</title><content type='html'>&lt;p&gt;I like to play around with interesting technologies. So what&amp;#8217;s on the table today?&lt;/p&gt;
&lt;p&gt;1. &lt;a href=&quot;http://appengine.google.com/&quot;&gt;Google App Engine&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;2. &lt;a href=&quot;http://www.ioke.org&quot;&gt;Ioke E&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;3. &lt;a href=&quot;http://olabini.com/blog/2009/03/ikanserve-an-ioke-web-framework/&quot;&gt;Ikanserve&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Google App Engine allows you to run Java applications since a few days. But as no one writes web apps in Java anymore you could either use &lt;a href=&quot;http://olabini.com/blog/2009/04/jruby-on-rails-on-google-app-engine/&quot;&gt;JRuby on App Engine&lt;/a&gt; or try out another fine language on the &lt;span class=&quot;caps&quot;&gt;JVM&lt;/span&gt;. (That&amp;#8217;s why I think the &lt;span class=&quot;caps&quot;&gt;JVM&lt;/span&gt; kicks ass and I still like it after several years of programming mostly in Ruby: It&amp;#8217;s a great plattform to run things&amp;#8230; not just Java programms but any language that&amp;#8217;s on the &lt;span class=&quot;caps&quot;&gt;JVM&lt;/span&gt;. And there will be more&amp;#8230;). But I digress&amp;#8230;&lt;/p&gt;
&lt;p&gt;So, let&amp;#8217;s get into it:&lt;/p&gt;
&lt;p&gt;0. Create a temp dir to play in&lt;br /&gt;
&lt;pre class=&quot;prettyprint&quot;&gt;&lt;code&gt;$ mkdir appgarage
$ cd appgarage
&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;1. &lt;a href=&quot;http://appengine.google.com/&quot;&gt;Get an App Engine Account&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;2. Sign Up for the &lt;a href=&quot;http://appengine.google.com/promo/java_signup&quot;&gt;Java App Engine Account&lt;/a&gt; &amp;#8211; According to TechCrunch the first 10k developers get an account. So hurry up!&lt;/p&gt;
&lt;p&gt;3. Get ioke E&lt;/p&gt;
&lt;p&gt;You need git and java 1.6 to do that.&lt;br /&gt;
&lt;pre class=&quot;prettyprint&quot;&gt;&lt;code&gt;$ git clone git://github.com/olabini/ioke.git
$ cd ioke
$ ant
$ cd ..
&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;3. Get Ikanserve&lt;/p&gt;
&lt;pre class=&quot;prettyprint&quot;&gt;&lt;code&gt;$ git clone git://github.com/olabini/ikanserve.git
$ cd ikanserve
$ ant
$ cd ..
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;4. &lt;a href=&quot;http://code.google.com/appengine/downloads.html&quot;&gt;Get the Java App Engine &lt;span class=&quot;caps&quot;&gt;SDK&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;pre class=&quot;prettyprint&quot;&gt;&lt;code&gt;$ unzip appengine-java-sdk-1.2.0.zip
$ cd appengine-java-sdk-1.2.0
$ cd ..
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Optional: Try out the app engine demos and/or the ikanserve demo locally&lt;/p&gt;
&lt;p&gt;5. Merge Ikanserve with appengine&lt;/p&gt;
&lt;pre class=&quot;prettyprint&quot;&gt;&lt;code&gt;$ mkdir myikanserveengine
$ cd myikanserveengine
$ unzip ../ikanserve/jetty/webapps/root.war 
$ cp ../ioke/lib/ioke.jar lib/
$ cat &amp;gt; WEB-INF/appengine-web.xml 
&amp;lt;appengine-web-app xmlns=&quot;http://appengine.google.com/ns/1.90&quot;&amp;gt;
  &amp;lt;application&amp;gt;myikanserveengine&amp;lt;/application&amp;gt;
  &amp;lt;version&amp;gt;1&amp;lt;/version&amp;gt;
^D
$ cd ..
&amp;lt;/appengine-web-app&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;A few explanations:&lt;br /&gt;
You need to unzip the war file because app engine only takes war dirs not files. And you you need to copy the ioke jar because the ioke version supplied with ikanserve (at this point in time) doesn&amp;#8217;t work with appengine. The current Ioke version does work.&lt;/p&gt;
&lt;p&gt;6. Deploy your application&lt;/p&gt;
&lt;p&gt;Go to the &lt;a href=&quot;http://appengine.google.com/&quot;&gt;App Engine Admin Interface&lt;/a&gt; log in and create an application with the same name you choose in your appengine-web.xml file (Here it was &amp;#8220;myikanserveengine&amp;#8221;).&lt;/p&gt;
&lt;pre class=&quot;prettyprint&quot;&gt;&lt;code&gt;$ cd appengine-java-sdk-1.2.0
$ bin/appcfg.sh -e yourgoogleaccountemail@yourdomain.com update ../myikanserveengine
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Done.&lt;/p&gt;
&lt;p&gt;Goto &lt;a href=&quot;http://myikanserveengine.appspot.com&quot;&gt;http://myikanserveengine.appspot.com&lt;/a&gt; and enjoy your first Ioke web application in the cloud. Try URLs like &lt;a href=&quot;http://myikanserveengine.appspot.com/foo&quot;&gt;foo&lt;/a&gt; or &lt;a href=&quot;http://myikanserveengine.appspot.com/xxx&quot;&gt;xxx&lt;/a&gt; to see some extra funky stuff ;-)&lt;/p&gt;</content><updated>2009-04-08T00:00:00+00:00</updated><link href='/2009/04/08/running-ikanserve-on-google-app-engine/' rel='alternate'/></entry><entry><id>/2009/02/01/predictably-irrational</id><title type='text'>Predictably Irrational</title><content type='html'>&lt;p&gt;&lt;object width=&quot;425&quot; height=&quot;344&quot;&gt;&lt;param name=&quot;movie&quot; value=&quot;http://www.youtube.com/v/pbS9H-4ftAg&amp;color1=0xb1b1b1&amp;color2=0xcfcfcf&amp;feature=player_embedded&amp;fs=1&quot;&gt;&lt;/param&gt;&lt;param name=&quot;allowFullScreen&quot; value=&quot;true&quot;&gt;&lt;/param&gt;&lt;embed src=&quot;http://www.youtube.com/v/pbS9H-4ftAg&amp;color1=0xb1b1b1&amp;color2=0xcfcfcf&amp;feature=player_embedded&amp;fs=1&quot; type=&quot;application/x-shockwave-flash&quot; allowfullscreen=&quot;true&quot; width=&quot;425&quot; height=&quot;344&quot;&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/p&gt;
&lt;p&gt;I just finished reading &lt;a href=&quot;http://www.amazon.de/gp/product/0007256523?ie=UTF8&amp;amp;tag=hendrvolkm-21&quot;&gt;Predictably Irrational by Dan Ariely&lt;/a&gt; It&amp;#8217;s a fantastic book, very well written and super interesting. I highly recommend reading it to get some insight in irrational human behaviours.&lt;/p&gt;
&lt;p&gt;More about the book and behavioural economics on the website &lt;a href=&quot;http://www.predictablyirrational.com/&quot;&gt;predicatbly Irrational&lt;/a&gt;&lt;/p&gt;</content><updated>2009-02-01T00:00:00+00:00</updated><category term='english'/><category term='life'/><link href='/2009/02/01/predictably-irrational/' rel='alternate'/></entry><entry><id>/2009/01/29/deploying-a-rails-application-on-opensolaris-with-passenger-aka-modrails</id><title type='text'>Deploying a Rails application on OpenSolaris with passenger aka modrails</title><content type='html'>&lt;p&gt;&lt;img src=&quot;http://blog.hendrikvolkmer.de/assets/2009/1/29/opensolaris.png&quot; alt=&quot;&quot; /&gt; &lt;img src=&quot;http://blog.hendrikvolkmer.de/assets/2009/1/29/modrails.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Two technologies I wanted to play around with for some time are &lt;a href=&quot;http://www.opensolaris.org&quot;&gt;OpenSolaris&lt;/a&gt; and &lt;a href=&quot;http://www.modrails.com&quot;&gt;passenger&lt;/a&gt;. OpenSolaris because of &lt;a href=&quot;http://opensolaris.org/os/community/zfs/&quot;&gt;&lt;span class=&quot;caps&quot;&gt;ZFS&lt;/span&gt;&lt;/a&gt;, &lt;a href=&quot;http://opensolaris.org/os/community/zones/&quot;&gt;Zones&lt;/a&gt;, &lt;a href=&quot;http://opensolaris.org/os/community/smf/&quot;&gt;&lt;span class=&quot;caps&quot;&gt;SMF&lt;/span&gt;&lt;/a&gt; and the latest addition &lt;a href=&quot;http://opensolaris.org/os/project/pkg/&quot;&gt;&lt;span class=&quot;caps&quot;&gt;IPS&lt;/span&gt;&lt;/a&gt; and passenger because it seems to be the new default Rails deployment model and is really easy to configure.&lt;/p&gt;
&lt;p&gt;So I deceided to combine those to and get started. Here&amp;#8217;s what I did. Maybe it&amp;#8217;s useful for someone who&amp;#8217;s trying to do the same.&lt;/p&gt;
&lt;p&gt;I grabbed the &lt;a href=&quot;http://virtualboximages.com/OpenSolaris-2008.11&quot;&gt;OpenSolaris 2008.11 Virtualbox image&lt;/a&gt; from virtualboximages.com and booted it in VirtualBox.&lt;/p&gt;
&lt;p&gt;I wanted to make sure to have the latest updates so I updated the image (all commands are executed as root):&lt;br /&gt;
&lt;pre class=&quot;prettyprint&quot;&gt;&lt;code&gt;# pfexec pkg image-update&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;A reboot later I installed the necessary parts for a Rails environment:&lt;/p&gt;
&lt;pre class=&quot;prettyprint&quot;&gt;&lt;code&gt;# pfexec pkg install SUNWruby18
# pfexec pkg install gcc-dev
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;SUNWruby18 installes ruby 1.8.6p287 which is exactly what I needed.&lt;/p&gt;
&lt;p&gt;The mysql installation was a bit harder:&lt;/p&gt;
&lt;pre class=&quot;prettyprint&quot;&gt;&lt;code&gt;# pfexec pkg install SUNWmysql5
# /usr/mysql/5.0/bin/mysql_db_install
# chown -R mysql:mysql /var/mysql/5.0/data
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;I needed to manually chown the data dir. Otherwise mysql wouldn&amp;#8217;t start.&lt;/p&gt;
&lt;p&gt;You can confirm that your mysql is running via:&lt;br /&gt;
&lt;pre class=&quot;prettyprint&quot;&gt;&lt;code&gt;# svcs -l mysql
&lt;/code&gt; &lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;The logfile gives further information if something goes wrong.&lt;/p&gt;
&lt;p&gt;To access mysql try:&lt;br /&gt;
&lt;pre class=&quot;prettyprint&quot;&gt;&lt;code&gt;# /usr/mysql/5.0/bin/mysql
&lt;/code&gt; &lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;The &amp;#8220;5.0&amp;#8221; in the path is important because there&amp;#8217;s also a mysql version 4 installed. This will be of interest when installing the mysql ruby gem. The command to correctly install the gem is:&lt;br /&gt;
&lt;pre class=&quot;prettyprint&quot;&gt;&lt;code&gt;# pfexec gem install mysql -- --with-mysql-lib=/usr/mysql/5.0/lib/mysql --with-mysql-include=/usr/mysql/5.0/include
&lt;/code&gt; &lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;Thanks to Amanda Waite for &lt;a href=&quot;http://blogs.sun.com/mandy/entry/segmentation_fault_when_running_rails&quot;&gt;this hint&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The next installation step is Apache:&lt;br /&gt;
&lt;pre class=&quot;prettyprint&quot;&gt;&lt;code&gt;# pfexec pkg install SUNWapch22&lt;/code&gt; &lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;Make sure it starts via svcadm:&lt;br /&gt;
&lt;pre class=&quot;prettyprint&quot;&gt;&lt;code&gt;# svcadm enable apache22&lt;/code&gt; &lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;Check that it runs:&lt;br /&gt;
&lt;pre class=&quot;prettyprint&quot;&gt;&lt;code&gt;# svcs -l apache22&lt;/code&gt; &lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;(or just type http://localhost in your browser)&lt;/p&gt;
&lt;p&gt;I needed memcached, so I installed it:&lt;br /&gt;
&lt;pre class=&quot;prettyprint&quot;&gt;&lt;code&gt;# pfexec pkg install SUNWmemcached&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;It didn&amp;#8217;t start right away, though. There are some changes you have to apply to run &lt;a href=&quot;http://blogs.sun.com/trond/entry/memcached_in_solaris&quot;&gt;memcached in solaris&lt;/a&gt;&lt;/p&gt;
&lt;pre class=&quot;prettyprint&quot;&gt;&lt;code&gt;# svccfg
svc:&amp;gt; select memcached
svc:/application/database/memcached&amp;gt; setprop memcached/options=(&quot;-u&quot; &quot;nobody&quot; &quot;-m&quot; &quot;2048&quot;)
svc:/application/database/memcached&amp;gt; quit
# svcadm refresh memcached
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Of course we need rails:&lt;/p&gt;
&lt;pre class=&quot;prettyprint&quot;&gt;&lt;code&gt;pfexec gem install rails
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The current stable version of passenger doesn&amp;#8217;t support Solaris but the egde version does. So I downloaded the &lt;a href=&quot;http://github.com/FooBarWidget/passenger/downloads/master&quot;&gt;passenger edge Version&lt;/a&gt; off github.&lt;/p&gt;
&lt;p&gt;It didn&amp;#8217;t compile right away. There are some compiler flags that aren&amp;#8217;t supported in Solaris so I used &lt;a href=&quot;http://github.com/farra/passenger/commit/b1af92376e150471c4e825957f145fe0b0dc527d&quot;&gt;these changes&lt;/a&gt; to make passenger compile.&lt;/p&gt;
&lt;p&gt;Commandwise this looked like this: I unpacked the tarball into /opt/passenger and then did a&lt;/p&gt;
&lt;pre class=&quot;prettyprint&quot;&gt;&lt;code&gt;# cd /opt/passenger
# vi lib/passenger/platform_info.rb # see above
# bin/passenger-install-apache2-module
# chown -R webservd /opt/passenger
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Add the mentioned config snippet to /etc/apache2/httpd.conf and restart apache &lt;br /&gt;
&lt;pre class=&quot;prettyprint&quot;&gt;&lt;code&gt;# svcadmin restart apache2&lt;/code&gt; &lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;Now were all set to create a new rails app. I created a seperate &lt;span class=&quot;caps&quot;&gt;ZFS&lt;/span&gt; partition to serve the apps. Just because it&amp;#8217;s so easy to do with &lt;span class=&quot;caps&quot;&gt;ZFS&lt;/span&gt; and it gives you more control on how much space is used by your apps etc.&lt;/p&gt;
&lt;pre class=&quot;prettyprint&quot;&gt;&lt;code&gt;# zfs create rpool/apps&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Now it&amp;#8217;s time for the demo app:&lt;/p&gt;
&lt;pre class=&quot;prettyprint&quot;&gt;&lt;code&gt;# cd /rpool/apps
# rails demo
# chown -R webservd demo&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;I added the DocumentRoot of the app to the apacheconfig (&lt;code&gt;DocumentRoot /rpool/apps/demo/public&lt;/code&gt;) and restarted apache again (&lt;code&gt;svcadm restart apache2&lt;/code&gt; &amp;#8211; you know the drill by now).&lt;/p&gt;
&lt;p&gt;And that&amp;#8217;s it. A http://localhost gave me the demo welcome page. Nice.&lt;/p&gt;
&lt;p&gt;Later I wanted do deploy a rails app via capistrano so I needed git. There isn&amp;#8217;t a &lt;span class=&quot;caps&quot;&gt;IPS&lt;/span&gt; package for git yet, so I decided to take the standard compile route. I downloaded git and compiled it like this:&lt;/p&gt;
&lt;pre class=&quot;prettyprint&quot;&gt;&lt;code&gt;# ./configure --prefix=/opt/git
# make install
# ln -s /opt/git/bin/git /usr/bin/git
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;I used the symlink because capistrano wasn&amp;#8217;t able to find git otherwise &amp;#8211; setting scm_command didn&amp;#8217;t work.&lt;/p&gt;
&lt;p&gt;If anyone tries this recipe and it works or it doesn&amp;#8217;t work&amp;#8230; just let me know. Have fun with OpenSolaris. It&amp;#8217;s worth checking out.&lt;/p&gt;</content><updated>2009-01-29T00:00:00+00:00</updated><link href='/2009/01/29/deploying-a-rails-application-on-opensolaris-with-passenger-aka-modrails/' rel='alternate'/></entry><entry><id>/2009/01/26/setting-your-custom-deploy-strategy-in-capistrano</id><title type='text'>Setting your custom deploy strategy in capistrano</title><content type='html'>&lt;blockquote&gt;
  &lt;p&gt;This post was first published on the imedo.de devblog. The blog went offline in 2012, so I migrated the posts to my personal blog.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Capistrano 2 supports custom deploy strategies. You basically just have to implement the “deploy!” and “check!” methods in your class and you’re good to go.&lt;/p&gt;

&lt;p&gt;But how do you tell Capistrano to use your strategy?&lt;/p&gt;

&lt;p&gt;I looked into the code and found no way of setting your strategy. So I &lt;a href=&quot;http://github.com/hvolkmer/capistrano/commit/3c3c69332ee60ac852e8e42a54ae5e68ae48a20a&quot;&gt;changed capistrano&lt;/a&gt;, that it’s possible to set the strategy. When I asked &lt;a href=&quot;http://weblog.jamisbuck.org/&quot;&gt;Jamis Buck&lt;/a&gt; to pull the change, he suggested that I just set the strategy directly. This approach wouldn’t need any changes to to code base.&lt;/p&gt;

&lt;p&gt;Well then we went ahead and did just that. So here’s the code for setting your custom deploy strategy (Don’t forget to require the file with your code)&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;
set :strategy, Capistrano::Deploy::Strategy::DifferentAppRootRemoteCache.new(self)
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;It works like a charm.&lt;/p&gt;

</content><updated>2009-01-26T00:00:00+00:00</updated><category term='imedo'/><link href='/2009/01/26/setting-your-custom-deploy-strategy-in-capistrano/' rel='alternate'/></entry><entry><id>/2008/11/22/praesentationen-und-die-lieben-bullet-points</id><title type='text'>Präsentationen und die lieben Bullet Points</title><content type='html'>&lt;p&gt;Wer kennt das nicht: Man sieht oder hört etwas, was man vorher noch nie gesehen oder gehört hat und danach kann man es nicht mehr ignorieren. Sei es ein kleiner Kratzer im Autolack, ein bestimmtes Wort was manche Leute besonders oft sagen, oder &amp;#8211; worum es hier nun gehen soll &amp;#8211; Aufzählungspunkte in Präsentationen. Natürlich habe ich die &amp;#8220;Bullet points&amp;#8221; schon immer gesehen, aber seit ich &lt;a href=&quot;http://www.presentationzen.com&quot;&gt;presentationzen&lt;/a&gt; in meinem &lt;span class=&quot;caps&quot;&gt;RSS&lt;/span&gt;-Reader habe, nehme ich die Folien von Präsentationen anders wahr. Die &amp;#8220;Bullet points&amp;#8221; werden fast zu &amp;#8220;bullets&amp;#8221;, die vom Beamer abgefeuert meinen Kopf treffen und den ganzen Inhalt töten. &amp;#8211; OK, man muss nicht übertreiben, aber ich sehe diese Viecher nun deutlich intensiver.&lt;/p&gt;
&lt;p&gt;Egal ob bei firmeninternen Präsentationen, bei Vorträgen auf Konferenzen, User-Group treffen oder bei Vortägen, die man im Internet so sehen kann (z.B. bei &lt;a href=&quot;http://www.infoq.com&quot;&gt;InfoQ&lt;/a&gt;, oder &lt;a href=&quot;http://www.ted.com&quot;&gt;&lt;span class=&quot;caps&quot;&gt;TED&lt;/span&gt;&lt;/a&gt; ). Ich frage mich nun immer: Was machen diese Punkte denn da? Welche Information wollen sie mir vermitteln? Wäre es nicht sinnvoller, einfach die Worte auf die Folie zu schreiben ohne die Punkte? Vielleicht ein Bild dazu?&lt;/p&gt;
&lt;p&gt;Schlimmer als die Punkte an sich sind aber zu volle Folien. Früher habe ich nur gedacht &amp;#8220;oh&amp;#8230; da ist aber viel drauf&amp;#8221;. Nun erschlägt mich die Vielzahl an Informationen fast. In Seth Godins &lt;a href=&quot;http://www.sethgodin.com/freeprize/reallybad-1.pdf&quot;&gt;Really bad powerpoint&lt;/a&gt; steht: Niemals mehr als sieben Wörter pro Folie. &lt;span class=&quot;caps&quot;&gt;NIE&lt;/span&gt;. Mehr als ein Satz (bei Zitaten auch mal zwei oder drei) sollte wirklich nicht auf einer Folie stehen. Die Zuschauer sollten bei einem Vortrag zuhören und nicht die Folien lesen müssen.&lt;/p&gt;
&lt;p&gt;Wenn ich mich an mein Studium erinnere: Da gab es teilweise Folien mit 7 Sätzen oder 70 Wörtern&amp;#8230; Als ich mir vor drei Wochen beim &lt;a href=&quot;http://www.ba-stuttgart.de/themen/aktuelles/meldung/2008/10/-62796fbe97.html&quot;&gt;25 Jährigen Jubiläum des Studiengangs Wirtschaftsinformatik an der BA-Stuttgart&lt;/a&gt; die Vortäge anhörte, wurde ich wieder daran erinnert.&lt;/p&gt;
&lt;p&gt;Als Denkanstoß kann ich nur das Buch von &lt;a href=&quot;http://www.amazon.de/gp/product/0321525655?ie=UTF8&amp;amp;tag=hendrvolkm-21&quot;&gt;Presentation Zen von Garr Reynolds&lt;/a&gt; empfehlen (oder wer es auf deutsch lieber liest: &lt;a href=&quot;http://www.amazon.de/gp/product/3827327083?ie=UTF8&amp;amp;tag=hendrvolkm-21&quot;&gt;&lt;span class=&quot;caps&quot;&gt;ZEN&lt;/span&gt; oder die Kunst der Präsentation&lt;/a&gt; ) &amp;#8211; Das ganze gibt&amp;#8217;s auch im Internet kostenlos und aktuell (aber nicht so schön verpackt) als Blog: &lt;a href=&quot;http://www.presentationzen.com&quot;&gt;presentationzen&lt;/a&gt;&lt;/p&gt;</content><updated>2008-11-22T00:00:00+00:00</updated><link href='/2008/11/22/praesentationen-und-die-lieben-bullet-points/' rel='alternate'/></entry><entry><id>/2008/10/09/really-adobe-really</id><title type='text'>Really Adobe? Really?</title><content type='html'>&lt;p&gt;I just encountered &lt;a href=&quot;http://kb.adobe.com/selfservice/viewContent.do?externalId=kb400587&amp;amp;sliceId=2&quot;&gt;this problem&lt;/a&gt; and I can totally understand this blog post: &lt;a href=&quot;http://www.wemakepretty.com/2007/04/24/if-adobe-were-a-man-i-would-punch-him/&quot;&gt;If Adobe were a man, i would punch him&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Let me remind you: This is a product that costs about 1K &lt;span class=&quot;caps&quot;&gt;EUR&lt;/span&gt; and it&amp;#8217;s the year 2008.&lt;/p&gt;
&lt;p&gt;So &lt;a href=&quot;http://dearadobe.com/&quot;&gt;Dear Adobe&lt;/a&gt; : Please fix your products!&lt;/p&gt;</content><updated>2008-10-09T00:00:00+00:00</updated><link href='/2008/10/09/really-adobe-really/' rel='alternate'/></entry><entry><id>/2008/10/01/some-thoughts</id><title type='text'>Some thoughts</title><content type='html'>&lt;p&gt;&amp;#8230; not my own&amp;#8230; well actually most of them are.&lt;/p&gt;
&lt;blockquote&gt;
&lt;ul&gt;
	&lt;li&gt;helping other people helps me&lt;/li&gt;
	&lt;li&gt;having guts always works out for me&lt;/li&gt;
	&lt;li&gt;thinking life will be better in the future is stupid. i have to live now&lt;/li&gt;
	&lt;li&gt;starting a charity is surprisingly easy&lt;/li&gt;
	&lt;li&gt;being not truthful works against me&lt;/li&gt;
	&lt;li&gt;everyting i do always comes back to me&lt;/li&gt;
	&lt;li&gt;assuming is stifling&lt;/li&gt;
	&lt;li&gt;drugs feel great in the beginning and become a drag later on&lt;/li&gt;
	&lt;li&gt;over time i get used to everything and start taking for granted&lt;/li&gt;
	&lt;li&gt;money does not make me happy&lt;/li&gt;
	&lt;li&gt;travelling alone is helpful for a new perspective on life&lt;/li&gt;
	&lt;li&gt;keeping a diary supports personal development&lt;/li&gt;
	&lt;li&gt;trying to look good limits my life&lt;/li&gt;
	&lt;li&gt;material luxuries are best enjoyed in small doses&lt;/li&gt;
	&lt;li&gt;worrying solves nothing&lt;/li&gt;
	&lt;li&gt;complaining is silly. either act or forget&lt;/li&gt;
	&lt;li&gt;actually doing the things I set out to do increases my overall level of satisfaction&lt;/li&gt;
	&lt;li&gt;everybody thinks they are right&lt;/li&gt;
	&lt;li&gt;low expectations are a good strategy&lt;/li&gt;
	&lt;li&gt;whatever I want to explore professionally, its best to try it out for myself first&lt;/li&gt;
	&lt;li&gt;everybody who is honest is interesting&lt;br /&gt;
&lt;/blockquote&gt;&lt;br /&gt;
by &lt;a href=&quot;http://sagmeister.com/sagmeister.html&quot;&gt;Stefan Sagmeister&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;via [ &lt;a href=&quot;http://www.ted.com/index.php/talks/stefan_sagmeister_on_what_he_has_learned.html&quot;&gt;Stefan Sagmeister: Things I have learned in my life so far&lt;/a&gt; ]&lt;/p&gt;</content><updated>2008-10-01T00:00:00+00:00</updated><link href='/2008/10/01/some-thoughts/' rel='alternate'/></entry><entry><id>/2008/09/22/memory-leak-links</id><title type='text'>Memory leak links</title><content type='html'>&lt;blockquote&gt;
  &lt;p&gt;This post was first published on the imedo.de devblog. The blog went offline in 2012, so I migrated the posts to my personal blog.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Here are some usefull links if you have to find memory leaks in Rails apps:&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;&lt;a href=&quot;http://scottstuff.net/blog/articles/2006/08/17/memory-leak-profiling-with-rails&quot;&gt;Memory leak profiling&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href=&quot;http://ola-bini.blogspot.com/2007/11/ruby-memory-leaks.html&quot;&gt;Ruby Memory leaks&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href=&quot;http://tomcopeland.blogs.com/juniordeveloper/2007/09/tracking-down-a.html&quot;&gt;Tracking down a rails memory leak&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href=&quot;http://ruby-prof.rubyforge.org/&quot;&gt;Ruby prof&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href=&quot;http://zdavatz.wordpress.com/2007/07/18/heap-fragmentation-in-a-long-running-ruby-process/&quot;&gt;Heap fragmentation in a long running ruby process&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href=&quot;http://eigenclass.org/hiki.rb?ruby+live+process+introspection&quot;&gt;Ruby live process introspection&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href=&quot;http://weblog.jamisbuck.org/2006/9/22/inspecting-a-live-ruby-process&quot;&gt;Inspecting a live ruby process&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</content><updated>2008-09-22T00:00:00+00:00</updated><category term='imedo'/><link href='/2008/09/22/memory-leak-links/' rel='alternate'/></entry><entry><id>/2008/09/18/using-rails-engines-with-jruby-and-glassfish</id><title type='text'>Using Rails engines with JRuby and glassfish</title><content type='html'>&lt;blockquote&gt;
  &lt;p&gt;This post was first published on the imedo.de devblog. The blog went offline in 2012, so I migrated the posts to my personal blog.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;If you try to deploy your Rails app which is using &lt;a href=&quot;http://rails-engines.org/&quot;&gt;Rails Engines&lt;/a&gt; with &lt;a href=&quot;http://jruby.codehaus.org/&quot;&gt;JRuby&lt;/a&gt; in an Java application server, you end up with errors on the first request. Basically JRuby is complaining that it cannot create directories. This is due to the fact that engines tries to copy over assets from the plugins into the public dir of the rails app.&lt;/p&gt;

&lt;p&gt;In an application server the rails directory structure is &quot;turned inside out&quot; as &lt;a href=&quot;http://blog.nicksieger.com/&quot;&gt;Nick Sieger&lt;/a&gt; calls it. So the public directory is actually inside the base dir of the deployed app and the class files are in the WEB-INF dir.&lt;/p&gt;

&lt;p&gt;You can easily fix that if you put the following code right after your engines require in your environment.rb (or inside an initializer file):&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;
if Object.const_defined?(&quot;PUBLIC_ROOT&quot;)
  Engines.public_directory = PUBLIC_ROOT
end
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;&lt;span class=&quot;caps&quot;&gt;PUBLIC&lt;/span&gt;_ROOT is defined inside JRuby (or warble) and set to the correct path by warble.&lt;/p&gt;

&lt;p&gt;I found out about this behavouir in the Rails Tutorial Session &lt;a href=&quot;http://en.oreilly.com/railseurope2008/public/schedule/detail/3598&quot;&gt;Take the Jruby Challenge: Deploy Your Rails Application With JRuby and Taste the Difference&lt;/a&gt;  with the helping hand of &lt;a href=&quot;http://blog.nicksieger.com/&quot;&gt;Nick Sieger&lt;/a&gt;&lt;/p&gt;
</content><updated>2008-09-18T00:00:00+00:00</updated><link href='/2008/09/18/using-rails-engines-with-jruby-and-glassfish/' rel='alternate'/></entry><entry><id>/2008/09/09/longtime-value-of-tests</id><title type='text'>Longtime value of tests</title><content type='html'>&lt;p&gt;I wrote back in January 2007 that &lt;a href=&quot;http://blog.hendrikvolkmer.de/2007/1/27/are-you-test-infected&quot;&gt;I&amp;#8217;m test infected&lt;/a&gt; and that is still true. But sometimes, as with all things, I forget about the value of tests &amp;#8211; at least in some contexts and then I find the value again.&lt;/p&gt;
&lt;p&gt;Last week I attended &lt;a href=&quot;http://blog.jayfields.com/&quot;&gt;Jay Fields&amp;#8217;&lt;/a&gt; talk about &lt;a href=&quot;http://en.oreilly.com/railseurope2008/public/schedule/detail/2424&quot;&gt;functional testing lessons learned&lt;/a&gt; and he really gave some interesting insights on the value of tests. Do you need tests for everything? Certainly not. 100% code coverage? Bad idea. Do you always need tests? Maybe. As always: it depends. What Jay Fields said was: If you intend to use the code again and want to change it sometime, you better have tests.&lt;/p&gt;
&lt;p&gt;And if you think about it: That&amp;#8217;s almost always the case. The last weekend I ported two small applications to new releases of some libraries (one was a &lt;a href=&quot;http://blog.hendrikvolkmer.de/2008/9/9/java-like-experiences-with-merb&quot;&gt;merb app&lt;/a&gt;, the other one was a Rails app + some internal &lt;a href=&quot;http://www.imedo.de&quot;&gt;imedo&lt;/a&gt; libraries). Those two applications where nothing like &amp;#8220;business critical&amp;#8221; &amp;#8211; they were indeed some kind of testing/prototyping application to try some things out. So did I write tests back when I wrote them? No. Because I didn&amp;#8217;t see value in writing tests, when I wrote these application. It just seemed like some additional work and well, those apps where so simple and just used to try some stuff: Why do you need tests for them?&lt;/p&gt;
&lt;p&gt;In retrospective I think rather different about those two apps. You don&amp;#8217;t even need to change your own code to get vaue out ouf tests. What if you upgrade to some newer version of a library or some external service changed their &lt;span class=&quot;caps&quot;&gt;API&lt;/span&gt;? How do you notice that those changed? Maybe they haven&amp;#8217;t. Maybe the &lt;span class=&quot;caps&quot;&gt;API&lt;/span&gt; is still the same, but its behavoir is different &amp;#8211; This shouldn&amp;#8217;t be the case, but who knows? How do you know that those changes don&amp;#8217;t brake your application in the weirdest ways you can think of. Maybe it&amp;#8217;s some strange edge case that almost never happens but it just happens to be the case that you excercise this edge case.&lt;/p&gt;
&lt;p&gt;Or there was a bug in the library which you thought of as a feature (as in &amp;#8220;every behaviour of a library &amp;#8211; intended or not &amp;#8211; is a feature&amp;#8221;&amp;#8230;) used it and now it got &amp;#8220;fixed&amp;#8221; which for you means: it breaks your app. And trust me, it&amp;#8217;s very frustrating to hunt down bugs in your application which then turn out to be caused by changes in external libraries/services. Without tests you have no idea, if it&amp;#8217;s your fault or &amp;#8220;theirs&amp;#8221;.&lt;/p&gt;
&lt;p&gt;How do you know what&amp;#8217;s going on under the hood, if you don&amp;#8217;t have tests? This doesn&amp;#8217;t meant that you should write tests for the external libraries (although that sometimes is indeed a good idea), it means you should be sure which beavhiour is caused by your app and which isn&amp;#8217;t.&lt;/p&gt;
&lt;p&gt;This, to me, showed again the value of tests. And that for the most part it manifests itself later in the project, not necessarily when you&amp;#8217;re writing them. I don&amp;#8217;t talk about &lt;span class=&quot;caps&quot;&gt;TDD&lt;/span&gt; (or &lt;span class=&quot;caps&quot;&gt;BDD&lt;/span&gt;) here. That&amp;#8217;s another thing (which you can see value in). It&amp;#8217;s the value of tests in the long term. That&amp;#8217;s why &amp;#8220;test code is as important as application code&amp;#8221; (to quote Jay Fields again).&lt;/p&gt;
&lt;p&gt;So there&amp;#8217;s absolutely now excuse to write no tests for valuable code. Be it backend code that uses databases, external services, your own business logic, or JavaScript based frontend code. If the code is of value to the user, you better have tests for it.&lt;/p&gt;</content><updated>2008-09-09T00:00:00+00:00</updated><link href='/2008/09/09/longtime-value-of-tests/' rel='alternate'/></entry><entry><id>/2008/09/09/java-like-experiences-with-merb</id><title type='text'>Java like experiences with merb</title><content type='html'>&lt;p&gt;&lt;a href=&quot;http://www.java.com/&quot;&gt;Java&lt;/a&gt;? &lt;a href=&quot;http://merbivore.com/&quot;&gt;merb&lt;/a&gt;? What do they have in common? They are both multithreaded, fast, modular? You can choose which &lt;span class=&quot;caps&quot;&gt;ORM&lt;/span&gt;, templating and JavaScript and testing framework you want to use?&lt;/p&gt;
&lt;p&gt;With all these things being true, they have another thing in common: It can be very frustrating to develop a web app using these technologies.&lt;/p&gt;
&lt;p&gt;I played around with merb at the beginning of the year just because it was something new and I like new things. I used something like 0.3.0 which as the version number suggests is an early development release. Things are supposed to change. And they have. merb was splittet into &lt;a href=&quot;http://github.com/wycats/merb-core/tree/master&quot;&gt;merb-core&lt;/a&gt; and &lt;a href=&quot;http://github.com/wycats/merb-more/tree/master&quot;&gt;merb-more&lt;/a&gt; and lots of other gems. Which in itself is a good idea but made it real hard to figure out what you really need.&lt;/p&gt;
&lt;p&gt;Engouraged by the infos I got in the BoF session about merb by &lt;a href=&quot;http://yehudakatz.com/&quot;&gt;Yehuda Katz&lt;/a&gt; at &lt;a href=&quot;http://en.oreilly.com/railseurope2008/public/content/home&quot;&gt;RailsConf Europe&lt;/a&gt;, I wanted to play around with some new merb features.&lt;/p&gt;
&lt;p&gt;On Saturaday I &amp;#8220;ported&amp;#8221; a very small (as in &amp;#8220;the standard blog&amp;#8221; app) merb 0.3.0 app to the current 0.9.5. And by &amp;#8220;ported&amp;#8221; I really mean: I&amp;#8217;ve thrown the old implementation away and rewrote it from scratch &amp;#8211; because after an hour or so of hunting errors and trying to find missing gems that I needed,  I figured it would be easier to start with a new 0.9.5 app.&lt;/p&gt;
&lt;p&gt;It&amp;#8217;s a little bit ironic that the merb guys want to create a public &lt;span class=&quot;caps&quot;&gt;API&lt;/span&gt; that doesn&amp;#8217;t change often and yet it changed very often until now. You can&amp;#8217;t really blame them &amp;#8211; there is no official release yet &amp;#8211; it&amp;#8217;s a development version &amp;#8211; but it makes playing around with this kind of thing really hard. I almost was at the point where I said &amp;#8220;F&amp;#8217; it, i&amp;#8217;ll use Rails and be happy with it&amp;#8221; &amp;#8211; which would have missed the point of playing around with merb.&lt;/p&gt;
&lt;p&gt;To play with merb you have to read the code. There is documentation which is ok on some parts and missing on other but there are no useful tutorials or blog post. Ok, there are&amp;#8230; but you have no idea which version of merb they are about so they&amp;#8217;re pretty much useless: If you don&amp;#8217;t use the exact version of merb the tutorial was written for it won&amp;#8217;t work. &amp;#8211; That&amp;#8217;s a general problem with tutorials/blog posts for new technologies (I experienced the same with some rspec posts). So please, if you write a post or tutorial, mention which version of the tools you&amp;#8217;re using.&lt;/p&gt;
&lt;p&gt;So to summarize what do I like and don&amp;#8217;t like about merb:&lt;/p&gt;
&lt;p&gt;I like&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;the modular architechture (construction kit: pic what you need), merb-slices, etc.&lt;/li&gt;
	&lt;li&gt;that it is small and thus a good fit for focussed services&lt;/li&gt;
	&lt;li&gt;that it orm, js library, rendering framework agnostic&lt;/li&gt;
	&lt;li&gt;the idea of a public api that doesn&amp;#8217;t change often&lt;/li&gt;
	&lt;li&gt;that there&amp;#8217;s no real magic inside the code&lt;/li&gt;
	&lt;li&gt;that it&amp;#8217;s rack based&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I don&amp;#8217;t like&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;the naming of the gems. It&amp;#8217;s &lt;a href=&quot;http://github.com/wycats/merb-plugins/tree/master/merb_activerecord&quot;&gt;merb_activerecord&lt;/a&gt; but &lt;a href=&quot;http://github.com/wycats/merb-more/tree/master/merb-assets&quot;&gt;merb-assets&lt;/a&gt;. Why is it &amp;#8220;-&amp;#8221; one time and &amp;#8220;_&amp;#8221; the other time. If there&amp;#8217;s some kind of logic behind that I was not smart enough to figure it out.&lt;/li&gt;
	&lt;li&gt;the merb-more gems sometimes just don&amp;#8217;t work. e.g. form_for doesn&amp;#8217;t work for me in 0.9.5 &amp;#8211; and there are no specs/tests for it! Or at least I didn&amp;#8217;t find them.&lt;/li&gt;
	&lt;li&gt;that it is hard to get started with, especially if you&amp;#8217;re a spoiled Rails child. There should be a generator &amp;#8220;merb-gen app &amp;#8212;rails-like&amp;#8221; which should hook you up with alle the things that rails has (and merb has as well if you choose the according orm, js, helper gems, etc.)&lt;/li&gt;
	&lt;li&gt;that things like pagination are quite hard (there&amp;#8217;s &lt;a href=&quot;http://github.com/myobie/merb_paginate/tree/master&quot;&gt;merb_paginate&lt;/a&gt; + &lt;a href=&quot;http://github.com/mislav/will_paginate/tree/master&quot;&gt;will_paginate&lt;/a&gt; and it works) &amp;#8211; This isn&amp;#8217;t really a merb problem and more a problem of how some rails plugins are too rails focussed &amp;#8211; hopefully this will change when there are more Ruby web frameworks out there&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;#8220;So you just wanted to write a rant and say the J-Word, Hendrik?&amp;#8221; &amp;#8211; Not really. I think merb is a great framework but, as every piece of software  has some flaws, all of them can easily be fixed and let&amp;#8217;s see what merb 1.0 will bring us. If you want to try out merb I recommend waiting until 1.0 (which is due in about a month) &amp;#8211; or take the latest checkout from github where maybe everything is ok.&lt;/p&gt;
&lt;p&gt;And if you use merb for something in production and don&amp;#8217;t have tests (which is a bad idea in the first place), write them before you even think about upgrading to a newer version. This experience has once again shown the value of tests for me.&lt;/p&gt;</content><updated>2008-09-09T00:00:00+00:00</updated><link href='/2008/09/09/java-like-experiences-with-merb/' rel='alternate'/></entry><entry><id>/2008/09/05/railsconf-europe-quotes</id><title type='text'>RailsConf Europe quotes</title><content type='html'>&lt;p&gt;There were a lot of cool presentations at RailsConf Europe this year. I&amp;#8217;ll write some summaries later.&lt;/p&gt;
&lt;p&gt;For now, here are some quotes I really liked:&lt;br /&gt;
&lt;blockquote&gt;&lt;br /&gt;
&amp;#8220;Java is to Javascript what car is to carpet&amp;#8221; &amp;#8211; at BoF &amp;#8220;Xing on Rails&amp;#8221;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;#8220;Using tables to store objects is like driving your car home and then disassembling it to put it in the garage. It can be assembled again in the morning, but one eventually asks whether this is the most efficient way to park a car.&amp;#8221; &amp;#8211; Esther Dyson (was quoted in the Maglev BoF)&lt;/p&gt;
&lt;/blockquote&gt;</content><updated>2008-09-05T00:00:00+00:00</updated><link href='/2008/09/05/railsconf-europe-quotes/' rel='alternate'/></entry><entry><id>/2008/08/29/hug-a-developer</id><title type='text'>Hug a developer</title><content type='html'>&lt;p&gt;&lt;embed src=&quot;http://blip.tv/play/gYwjwZJqjdEh&quot; type=&quot;application/x-shockwave-flash&quot; width=&quot;503&quot; height=&quot;312&quot; allowscriptaccess=&quot;always&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/embed&gt;&lt;/p&gt;
&lt;p&gt;via [ &lt;a href=&quot;http://www.marcelscherf.com&quot;&gt;Marcel&lt;/a&gt; ] via [ juixie &lt;a href=&quot;http://www.juixe.com/techknow/index.php/2008/08/28/hug-a-developer/&quot;&gt;hug a developer&lt;/a&gt; ]&lt;/p&gt;
&lt;p&gt;And indeed: It&amp;#8217;s funny because it&amp;#8217;s so true.&lt;/p&gt;</content><updated>2008-08-29T00:00:00+00:00</updated><link href='/2008/08/29/hug-a-developer/' rel='alternate'/></entry><entry><id>/2008/08/12/umkleidekabinen-hack-in-kaufhaeusern</id><title type='text'>Umkleidekabinen-Hack in KaufhÃ¤usern</title><content type='html'>&lt;p&gt;Ich habe eben mal wieder in Interview mit &lt;a href=&quot;http://www.schneier.com&quot;&gt;Bruce Schneier&lt;/a&gt; gehört und darin hat er zum wiederholten Male erwähnt, dass man Sicherheit oder ein Interesse an Sicherheit nicht lernen kann, sondern damit geboren wird. Ich glaube, ich habe das Interesse daran auch mitbekommen. Wenn ich unterwegs bin und irgendwelche Sicherheitsmaßnahmen sehe, denke ich unweigerlich darüber nach, wo Lücken und Probleme sind.&lt;/p&gt;
&lt;p&gt;Vor kurzem war ich z.B. Kleidung einkaufen. Genauer gesagt, war ich nur dabei, als andere eingekauft haben. In den Ankleidekabinen werden ja seit einiger Zeit bei manchen Geschäften so &amp;#8220;Teile-Anzahl-Anzeiger&amp;#8221; verteilt, wenn man in die Kabine möchte. Ich nehme stark an, dass das dazu da ist, um zu kontrollieren, ob man genau so viele Teile wieder mit raus bringt, wie man mit hin genommen hat und nichts einfach so unter der eigenen Kleidung anzieht.&lt;/p&gt;
&lt;p&gt;Das System funktioniert auch ganz gut, wenn das schön kontrolliert wird. (Was meistens auch passiert). Manche Geschäfte haben nun aber keine Marke mit &amp;#8220;0&amp;#8221; und da meine ich nun eine Lücke im System ausgemacht zu haben: Wenn man keine Marke bekommt, wenn man nichts mit reinnimmt, woher wollen die dann beim rausgehen wissen, ob ich schon am Anfang nichts dabei hatte?&lt;/p&gt;
&lt;p&gt;Ein Angriff sähe dann beispielsweise so aus (das geht natürlich nur, wenn es realativ voll ist und die Person, die die Marken verteilt sich nicht zusätzlich merkt, wie viele Teile ich mit hatte):&lt;/p&gt;
&lt;p&gt;Ich nehme z.B. 2 Kleidungsstücke mit rein und erhalte eine Marke mit einer &amp;#8220;2&amp;#8221; drauf. Dann gehe ich in die Kabine und ziehe die Kleidungsstücke unter meine Kleidung an. Beim Rausgehen, zeige ich natürlich die &amp;#8220;2&amp;#8221;-er Marke nicht und sage auf ggf. Nachfrage, dass ich nichts dabei hatte (man braucht natürlich hier einen Komplizen, der wirklich ein Stück wieder mit raus nimmt). Gäbe es eine Marke mit &amp;#8220;0&amp;#8221; müsste jeder der die Kabinen betritt eine Marke am Ende abgeben.&lt;/p&gt;</content><updated>2008-08-12T00:00:00+00:00</updated><link href='/2008/08/12/umkleidekabinen-hack-in-kaufhaeusern/' rel='alternate'/></entry><entry><id>/2008/08/10/dhl-vs-ups</id><title type='text'>DHL vs. UPS</title><content type='html'>&lt;p&gt;The package was shipped from its source about 400km from its destination on July, 24th and the tracking system showed that it was on its way to Berlin and should have been there on July, 28th. But then I saw the message &amp;#8220;Receipient unknown&amp;#8221; in the tracking system. I was sure that I supplied the correct adress when I ordered and confirmed that. It was indeed the correct address.&lt;/p&gt;
&lt;p&gt;It only showed the adress but not the full receipient name. The adress is correct, by the way. That&amp;#8217;s the office building I wanted the package to be delivered to. So I called their customer support and asked, what went wrong. They couldn&amp;#8217;t tell me. In fact, they said they cannot access more address information than I was seeing on the web page and that the package would be sent back. What? Are you kidding me?&lt;/p&gt;
&lt;p&gt;So I mailed the company that I ordered the product from. They said they talked to &lt;span class=&quot;caps&quot;&gt;DHL&lt;/span&gt; and they would change the address and redeliver it, without sending it back.&lt;/p&gt;
&lt;p&gt;Which didn&amp;#8217;t work. A few days later the package arrived back at the sender and they had do resend it. How stupid of &lt;span class=&quot;caps&quot;&gt;DHL&lt;/span&gt; was that?&lt;/p&gt;
&lt;p&gt;They finally managed to deliver the package&amp;#8230; at August, 5th. Or so I thought, after reading this:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://blog.hendrikvolkmer.de/assets/2008/8/10/dhl_1.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;but it took them two days after it arrived in Berlin in their central warehouse. The message on the tracking system said something like that:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://blog.hendrikvolkmer.de/assets/2008/8/10/dhl_2.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Which means &amp;#8220;due to vacation, public holidays or company holidays the package will be stored in the warehouse.&amp;#8221;. It was delivered the next day which was August, 6th. As it turned out there wasn&amp;#8217;t enough space on the truck the day before. &lt;span class=&quot;caps&quot;&gt;WTF&lt;/span&gt;?&lt;/p&gt;
&lt;p&gt;Ok. Now a similar story with a &lt;span class=&quot;caps&quot;&gt;UPS&lt;/span&gt; package delivery. There was also a problem with the address. This time I messed up and forgot to add the company name (I think that was the same problem with the &lt;span class=&quot;caps&quot;&gt;DHL&lt;/span&gt; delivery&amp;#8230;). So I got an E-Mail from &lt;span class=&quot;caps&quot;&gt;UPS&lt;/span&gt;, telling me that they weren&amp;#8217;t able to deliver the package and that I should call their customer support. Which I did. They changed the address and delivered the package the next day. Easy. That&amp;#8217;s how it&amp;#8217;s supposed to work.&lt;/p&gt;
&lt;p&gt;Let&amp;#8217;s assume the problem was indeed the missing company name and they had no idea at which company the receipient &amp;#8220;Hendrik Volkmer&amp;#8221; would work. They could have called the sender and ask if they have additional information. Either when they were standing in the lobby of the building or second best, when they returned to the local warehouse. Or they could have asked the receptionist in the office building to call the secretary of the biggest company in the building (which would have failed) and then the second biggest (which would have succeeded). Or they could have provided a better web tracking system which would show the complete address, so that I could have seen a problem with the address and provide them with the correct information. First I thought that not showing the complete address is some kind of privacy protection thing. But that cannot be true, as you can see in the screenshots: At different times the full address details will be shown. Also: After entring a 20 digit tracking number and a zip code I should be authorized to see the details.&lt;/p&gt;
&lt;p&gt;I can hardly believe that sending the package back was the cheapest option for them. And even if it was&amp;#8230; it was the worst option for the customer.&lt;/p&gt;</content><updated>2008-08-10T00:00:00+00:00</updated><link href='/2008/08/10/dhl-vs-ups/' rel='alternate'/></entry><entry><id>/2008/08/07/do-you-like-apple</id><title type='text'>Do you like ï£¿?</title><content type='html'>&lt;p&gt;And with  I might mean &lt;a href=&quot;http://www.apple.com&quot;&gt;Apple&lt;/a&gt; or the fruit &lt;a href=&quot;http://en.wikipedia.org/wiki/Apple&quot;&gt;apple&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Ok. This entry is totally useless&amp;#8230; I just wanted to use the  sign ;-) &amp;#8211; Does that &amp;#8220;&amp;#8221; even look like an Apple on windows machines? Is it a &lt;span class=&quot;caps&quot;&gt;UTF&lt;/span&gt;-8 character?&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Update&lt;/b&gt;:&lt;br /&gt;
Apparently it&amp;#8217;s the unicode character 63743 in the &lt;a href=&quot;http://sitening.com/extras/utf-8-character-html-encoding/&quot;&gt;&lt;span class=&quot;caps&quot;&gt;UTF&lt;/span&gt;-8 private space&lt;/a&gt;. And it depends on the font if it really gets displayed as &amp;#8220;the Apple apple&amp;#8221;. Interesting.&lt;/p&gt;</content><updated>2008-08-07T00:00:00+00:00</updated><link href='/2008/08/07/do-you-like-apple/' rel='alternate'/></entry><entry><id>/2008/08/06/falling-asleep-mindfully</id><title type='text'>Falling asleep mindfully</title><content type='html'>&lt;p&gt;When I was going to sleep yesterday I realized that I pictured my thoughts and wondered if I can consciously realize the moment I fall asleep. There weren&amp;#8217;t many thoughts. It was like a big black void and some &amp;#8220;thoughts&amp;#8221; where flying around. Then they started to disappear, fading out or just going away. Then I thought: &amp;#8220;I&amp;#8217;m&amp;#8230;. going&amp;#8230; to fall asleep&amp;#8230;. now&amp;#8221;. Then I was asleep. I think it&amp;#8217;s the second time that had this experience. It&amp;#8217;s quite intersting.&lt;/p&gt;
&lt;p&gt;Did this ever happen to you?&lt;/p&gt;</content><updated>2008-08-06T00:00:00+00:00</updated><link href='/2008/08/06/falling-asleep-mindfully/' rel='alternate'/></entry><entry><id>/2008/06/17/helmlos</id><title type='text'>Helmlos</title><content type='html'>&lt;p&gt;Ich fahre relativ viel Fahrrad hier in Berlin und mir ist aufgefallen, dass sehr wenige Leute Helme tragen. Der Kopf scheint wohl nicht von vielen als schützenswertes Körperteil angesehen zu werden.&lt;/p&gt;
&lt;p&gt;Heute morgen sah ich dann gleich zwei mal eine sehr skurrile Kombination. Einmal Mutter (ohne Helm) mit Kind (mit Helm) und einmal Vater (ohne Helm) mit Kind (mit Helm) &amp;#8211; die Kinder jeweils im Kindersitz auf dem Gepäckträger.&lt;/p&gt;
&lt;p&gt;Ich fragte mich dann, wie die Eltern ihren Kindern erklären, warum die Kinder Helme tragen müssen, Erwachsene aber nicht&amp;#8230;&lt;/p&gt;
&lt;p&gt;&amp;#8220;Wenn du älter wirst, wird dein Kopf ganz hart und dann braucht man keinen Helm mehr.&amp;#8221;&lt;/p&gt;
&lt;p&gt;&amp;#8220;Mami zieht keinen Helm auf, weil das doof aussieht, aber dir steht das echt gut.&amp;#8221;&lt;/p&gt;
&lt;p&gt;&amp;#8220;Ein Helm ist wichtig, damit man bei einem Sturz nicht verletzt wird. Ich möchte nicht, dass du verletzt wirst. Mir ist es aber egal, wenn ich selbst verletzt werde.&amp;#8221;&lt;/p&gt;
&lt;p&gt;Das hab ich mir alles nur ausgedacht. Ich hab echt keine Ahnung, was die Leute ihren Kindern erzählen. Ich war kurz davor den einen Herren zu fragen&amp;#8230; dachte aber dann: &amp;#8220;Man muss die Leute ja nicht noch zusätzlich vor ihren Kindern blamieren&amp;#8230;&amp;#8221;&lt;/p&gt;</content><updated>2008-06-17T00:00:00+00:00</updated><link href='/2008/06/17/helmlos/' rel='alternate'/></entry><entry><id>/2008/06/13/nette-polizisten</id><title type='text'>Nette Polizisten in Berlin</title><content type='html'>&lt;p&gt;Als ich letztens morgens mit dem Fahrrad zur Arbeit fuhr vielen mir die vielen Polizisten um die Kreuzung auf, in deren Nähe ich wohne. Ich wurde dann auch gleich von einem Polizisten mit Funkgerät in Zivil angehalten mit dem Hinweis, dass die Polizei gerade eine Kontrolle von Fahrradfahrern durchführt.&lt;/p&gt;
&lt;p&gt;Ich hatte zwar Licht und Steckschutzbleche dran, aber es gab sicher das ein oder andere Ding an meinem Fahrrad auszusetzen, was nicht ganz StVZO konform war. Und ich dachte schon, &amp;#8220;Verdammt&amp;#8230; nun bist du mindestens 15 &lt;span class=&quot;caps&quot;&gt;EUR&lt;/span&gt; los&amp;#8221;. Es fing auch schon gut an &amp;#8220;Sie wissen ja, dass man eigentlich nicht auf dem Gehweg fahren darf&amp;#8230;&amp;#8221; &amp;#8211; doch dann kam alles ganz anders.&lt;/p&gt;
&lt;p&gt;&amp;#8220;&amp;#8230; würd ich auch machen. Auf der Straße ist es teilweise echt zu gefährlich.&amp;#8221; Der nette Polizist wies mich noch darauf hin, dass ich aufpassen soll, wenn ich abbiege (LKWs) und ich auf Fußgänger achten soll. Es müsste ja nicht sein, dass ich der 16. Verkehrstote in einem Jahr bin &amp;#8211; 15 gab es wohl letztes Jahr.&lt;/p&gt;
&lt;p&gt;Ich war echt überrascht. Bisher hatte ich zwar nie wirklich Probleme mit der Polizei, aber das war dennoch ungewöhnlich nett.&lt;/p&gt;</content><updated>2008-06-13T00:00:00+00:00</updated><link href='/2008/06/13/nette-polizisten/' rel='alternate'/></entry><entry><id>/2008/06/13/beautiful-new-bmw-design</id><title type='text'>Beautiful new BMW design</title><content type='html'>&lt;p&gt;Check this out:&lt;/p&gt;
&lt;p&gt;&lt;object width=&quot;425&quot; height=&quot;344&quot;&gt;&lt;param name=&quot;movie&quot; value=&quot;http://www.youtube.com/v/kTYiEkQYhWY&amp;#38;hl=en&quot;&gt;&lt;/param&gt;&lt;embed src=&quot;http://www.youtube.com/v/kTYiEkQYhWY&amp;#38;hl=en&quot; type=&quot;application/x-shockwave-flash&quot; width=&quot;425&quot; height=&quot;344&quot;&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;
&lt;p&gt;&lt;br /&gt;
[ via &lt;a href=&quot;http://www.37signals.com/svn/posts/1075-bmws-fascinating-gina-light-visionary-model-design-study&quot;&gt;SvN&lt;/a&gt; ]&lt;/p&gt;
&lt;/p&gt;</content><updated>2008-06-13T00:00:00+00:00</updated><link href='/2008/06/13/beautiful-new-bmw-design/' rel='alternate'/></entry><entry><id>/2008/05/26/mountainbiking-in-berlin</id><title type='text'>Mountainbiking in Berlin</title><content type='html'>&lt;p&gt;&amp;#8230; geht tatsächlich. Und zwar gar nicht so schlecht. Ich war am Wochenende mit &lt;a href=&quot;http://www.christianangele.de&quot;&gt;Christian&lt;/a&gt; unterwegs. Es gibt sogar sogar einen Fotobeweis, für alle Ungläubigen, in seinem Bericht über unsere (kurze) &lt;a href=&quot;http://christianangele.de/2008/05/26/mountainbike-tour-berlin-grunewald/&quot;&gt;Mountainbike Tour in Berlin Grunewald&lt;/a&gt;&lt;/p&gt;</content><updated>2008-05-26T00:00:00+00:00</updated><link href='/2008/05/26/mountainbiking-in-berlin/' rel='alternate'/></entry><entry><id>/2007/12/07/faster-and-smaller-supercomputers</id><title type='text'>Faster and smaller supercomputers </title><content type='html'>&lt;p&gt;&amp;#8220;Faster and smaller supercomputers &amp;quot;:http://www-03.ibm.com/press/us/en/pressrelease/22769.wss will be possible in the near future. This is cool stuff. I can&amp;#8217;t wait to see the first CPUs which use light for internal communication. Maybe we have to adjust Moore&amp;#8217;s Law a bit then :)&lt;/p&gt;
&lt;p&gt;There are a bunch of cool things coming out of research lately. Let&amp;#8217;s see when they really make into the market. I&amp;#8217;m &lt;a href=&quot;http://blog.hendrikvolkmer.de/2007/1/19/wann-sind-solid-state-disks-endlich-marktreif&quot;&gt;still waiting&lt;/a&gt; for solid state disks to become affordable&amp;#8230;&lt;/p&gt;</content><updated>2007-12-07T00:00:00+00:00</updated><link href='/2007/12/07/faster-and-smaller-supercomputers/' rel='alternate'/></entry><entry><id>/2007/11/09/forbidden-pictures-from-a-train</id><title type='text'>Forbidden pictures from a train</title><content type='html'>&lt;p&gt;Now &lt;a href=&quot;http://www.schneier.com/blog/archives/2007/11/taking_pictures.html&quot;&gt;this&lt;/a&gt; is ridiculous. As if Terrorists haven&amp;#8217;t heard of &lt;a href=&quot;http://maps.google.com&quot;&gt;google maps&lt;/a&gt; or knew how to buy paper based maps&amp;#8230;&lt;/p&gt;</content><updated>2007-11-09T00:00:00+00:00</updated><link href='/2007/11/09/forbidden-pictures-from-a-train/' rel='alternate'/></entry><entry><id>/2007/10/04/monome</id><title type='text'>Monome 40h</title><content type='html'>&lt;p&gt;This is an fantastic and yet very simple device: 64 buttons, 64 leds, no inside logic&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.flickr.com/photos/bdu/133709235/&quot;&gt;&lt;img src=&quot;http://blog.hendrikvolkmer.de/assets/2007/10/4/monome_on_flickr.jpg&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;If you want to know what you can do with it, check out the website of the &lt;a href=&quot;http://monome.org&quot;&gt;creators&lt;/a&gt; or some of the &lt;a href=&quot;http://www.youtube.com/results?search_query=monome&amp;amp;search=Search&quot;&gt;youtube videos&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;[via: &lt;a href=&quot;http://www.37signals.com/svn/posts/616-cool-design-detail-at-monome&quot;&gt;37signals&lt;/a&gt; ]&lt;/p&gt;</content><updated>2007-10-04T00:00:00+00:00</updated><link href='/2007/10/04/monome/' rel='alternate'/></entry><entry><id>/2007/09/25/railsconf-europe-2007-berlin-day-2</id><title type='text'>Railsconf Europe 2007 Berlin - Day 2</title><content type='html'>&lt;h2&gt;Day 2&lt;/h2&gt;
&lt;h3&gt;Cyndi Mitchell &amp;#8220;Bring Ruby to the Enterprise, Not the Other Way &amp;#8217;Round&amp;#8221;&lt;/h3&gt;
&lt;p&gt;I arrived a bit late for the first talk. Cyndi Mitchell had really nice slides (or &lt;span class=&quot;caps&quot;&gt;IIRC&lt;/span&gt; just one &amp;#8220;growing&amp;#8221; slide).&lt;/p&gt;
&lt;h3&gt;Best Practices Marcel Molina Jr., Michael Koziarski&lt;/h3&gt;
&lt;p&gt;Next up was &amp;#8220;Best Practices Marcel Molina Jr., Michael Koziarski&amp;#8221;. I really should try to follow the &amp;#8220;7&amp;#215;7 rule&amp;#8221; more, which means max. 7 lines of code per controller and a maximum of 7 methods per controller. Everything else should probably &lt;a href=&quot;http://weblog.jamisbuck.org/2006/10/18/skinny-controller-fat-model&quot;&gt;go into the model&lt;/a&gt; and/or in a separate controller. Another thing that I leared (once again) is that you really have to find the right level of abstraction for any method of code you write. One lined methods aren&amp;#8217;t bad (even if you end up with more code in the end &amp;#8211; including the definitions). In fact they can make your code much more readable. e.g.:&lt;/p&gt;
&lt;pre class=&quot;prettyprint&quot;&gt;
&lt;code&gt;
  if user.credits &amp;gt; 15
    do_expensive_stuff
  end
&lt;/code&gt;
&lt;/pre&gt;
could be more readable if it was written like this

&lt;pre class=&quot;prettyprint&quot;&gt;
&lt;code&gt;
def minimum_credits_for_transaction
  15
end

def sufficient_credits_for(user)
  user.credits &amp;gt; minimum_credits_for_transaction
end

if sufficient_credits_for(user)
  do_expensive_stuff
end
&lt;/code&gt;
&lt;/pre&gt;
&lt;p&gt;Another advantage they mentioned was that code like this could be easier tested. I agree to that extend that every method could be tested in seperation. On the other hand, the more specific the tests focus on implementation details, the more brittle they get. I&amp;#8217;d probably only test if a use could &amp;#8220;do_expensive_stuff&amp;#8221; or not and not all methods in isolation.&lt;/p&gt;
&lt;h3&gt;JRuby on Rails at ThoughtWorks by Ola Bini&lt;/h3&gt;
&lt;p&gt;The next talk I attended was &amp;#8220;JRuby on Rails at ThoughtWorks by Ola Bini&amp;#8221;. Well, it seems as if JRuby is ready for production. If you&amp;#8217;d like to deploy a Rails App with your infrastructure department which only supports Java App servers: No problem. Just install that &amp;#8220;other Java library&amp;#8221; (JRuby + Rails) and off you go. There are some performance problems with test cases run with Jruby but the overall performance aparently is quite good. I might have a look at &lt;a href=&quot;http://studios.thoughtworks.com/mingle-project-intelligence&quot;&gt;Mingle&lt;/a&gt; the &amp;#8220;first production ready JRuby application&amp;#8221;&lt;/p&gt;

&lt;h3&gt;Creating Hybrid Web and Desktop Applications with Rails and Slingshot by Luke Crawford&lt;/h3&gt;
&lt;p&gt;Hm&amp;#8230; what can I say. I don&amp;#8217;t really get those Web-Apps for the desktop like &lt;a href=&quot;http://www.joyent.com/developers/slingshot/&quot;&gt;Slingshot&lt;/a&gt;, &lt;a href=&quot;http://gears.google.com/&quot;&gt;Google Gears&lt;/a&gt; etc. They might be usefull for some szenarios but just the security problems which arise from this deployment model make it hard for me to see many places to use applications in this way.&lt;/p&gt;
&lt;h3&gt;Outsourcing to Open Source by Tobias Luetke&lt;/h3&gt;
&lt;p&gt;This has been a really great talk. Tobias explained how open souring parts of &lt;a href=&quot;http://www.shopify.com&quot;&gt;Shopify&lt;/a&gt; namely &lt;a href=&quot;http://www.liquidmarkup.org&quot;&gt;Liquid&lt;/a&gt; and &lt;a href=&quot;http://www.activemerchant.org/&quot;&gt;AchtiveMerchant&lt;/a&gt; helped both his company and the open source community. After the talk he mentioned that Shopify uses &lt;a href=&quot;http://lucene.apache.org/solr/&quot;&gt;Solr&lt;/a&gt; for full text search. We currently use &lt;a href=&quot;http://ferret.davebalmain.com/trac/&quot;&gt;ferret&lt;/a&gt; which sometimes can be a bit quirky.&lt;/p&gt;

&lt;h3&gt;Extending Rails to Use the Presenter by Pattern Jay Fields&lt;/h3&gt;
&lt;p&gt;&amp;#8220;I&amp;#8217;m sorry it didn&amp;#8217;t work.&amp;#8221; &amp;#8211; I don&amp;#8217;t now if that was what Jay Fields actually said, but that&amp;#8217;s basically a summary of his talk. He and his team tried the Presenter Pattern, first it seemed to work and then it failed and they went back to &lt;span class=&quot;caps&quot;&gt;MVC&lt;/span&gt;. End of story, end of talk.&lt;/p&gt;
&lt;h3&gt;PhD on Rails: An Introduction to the Metadata Cascade by Sam Aaron&lt;/h3&gt;
&lt;p&gt;I didn&amp;#8217;t know what I had to expect exactly although Sam explained his PhD topic to me before. I have to say: Great talk! Entertaining, nice slides, of cource the three colour transition ;-), and a &lt;a href=&quot;http://sam.aaron.name/2007/6/3/wish-upon-a-dsl&quot;&gt;&lt;span class=&quot;caps&quot;&gt;DSL&lt;/span&gt;&lt;/a&gt; created in &lt;span class=&quot;caps&quot;&gt;BDD&lt;/span&gt; Style. That was a good presentation for the Conference to end with.&lt;/p&gt;
&lt;h3&gt;Fin&lt;/h3&gt;
&lt;p&gt;The ending was a bit strange, though. I didn&amp;#8217;t listen to the announcments in the morning (because I was a bit late), so I had no idea what was supposed to happen after the last talk. Last year, Dave Thomas gave his very inspiring keynote, then everybody (not everybody but some smaller or bigger groups of people) went out to Pubs, had a few beers, talked etc. &amp;#8211; This year was different. Noone seemed to know what should happen. Some people gathered at the hotel bar to have a beer, most people just left.&lt;/p&gt;
&lt;p&gt;The conference itself was a bit like Rails 2.0: Nothing that groundbreaking and new, but very usefull small, increments of usefull information and of course very nice people :)&lt;/p&gt;
&lt;p&gt;That&amp;#8217;s it for now. I will put in some links to speaker&amp;#8217;s blogs, slides, additional information later.&lt;/p&gt;</content><updated>2007-09-25T00:00:00+00:00</updated><link href='/2007/09/25/railsconf-europe-2007-berlin-day-2/' rel='alternate'/></entry><entry><id>/2007/09/25/railsconf-europe-2007-berlin-day-1</id><title type='text'>Railsconf Europe 2007 Berlin - Day 1</title><content type='html'>&lt;h2&gt;Day 1&lt;/h2&gt;
&lt;h3&gt;Keynote: &lt;span class=&quot;caps&quot;&gt;DHH&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;Rails 2.0 is coming, yay. David showed the first version of the &amp;#8220;blog in 15 minutes&amp;#8221; video. Which seemed to include very, very complicated steps (Setting up apache, creating the databases). It really showed how spoiled we Rails developers are and reminds me of the pain I had to suffer when I did Java development. I also liked the frenche cheese and wine image in his presentation. I&amp;#8217;d love to have some! :)&lt;/p&gt;
&lt;h3&gt;Deployment and Continuous Integration from the Trenches Fernand Galiana&lt;/h3&gt;
&lt;p&gt;The title of the talk was a bit misleading. It was only about capistarno 2.0 but turned out to be very useful for me. The new deployment strategies (tar file, svn cache) and dependency checks (for gems) are features which I&amp;#8217;ll definitely use when we&amp;#8217;ll switch to cap 2.&lt;/p&gt;
&lt;h3&gt;Meta-Magic in Rails: Become a Master Magician Dr. Nic Williams&lt;/h3&gt;
&lt;p&gt;Well&amp;#8230; there&amp;#8217;s not much to say. If you ever have the chance to see a talk by Dr.Nic or just speak to him in person: Take the chance. That was a very entertaining talk and I learned a few new metaprogramming tricks as well. I also liked these funny little comments about Java&amp;#8230; &amp;#8220;because we&amp;#8217;re cool and they&amp;#8217;re not&amp;#8221;. If any Java developer reads this and feels offended&amp;#8230; Try to pick up some sense of humour&amp;#8230; and read &lt;a href=&quot;http://www.jroller.com/obie/entry/top_10_reasons_why_java&quot;&gt;this&lt;/a&gt; ;-)&lt;/p&gt;

&lt;h3&gt;Really Scaling Rails Britt Selvitelle,&lt;/h3&gt;
&lt;p&gt;Not so much new stuff for me here&amp;#8230; I didn&amp;#8217;t really understand why &lt;span class=&quot;caps&quot;&gt;BIG&lt;/span&gt;-IP =&amp;gt; Apache 2.2 =&amp;gt; mongrel is faster than &lt;span class=&quot;caps&quot;&gt;BIG&lt;/span&gt;-IP =&amp;gt; mongrel. Jason Hoffman said that the latter was faster and Britt said that the former was faster&amp;#8230; I&amp;#8217;m a bit confused but &amp;#8211; as with all things &amp;#8211; it might depend on the application and you just have to find out for your self. And one thing to notice: If you want to scale web applications: Find out wich parts doesn&amp;#8217;t have to be real time for the user doing the request and send these tasks off to a queuing system of any kind.&lt;/p&gt;

&lt;h3&gt;&lt;span class=&quot;caps&quot;&gt;REST&lt;/span&gt;, Legacy stuff =&amp;gt; Lightning Talks&lt;/h3&gt;
&lt;p&gt;The talk about legacy and &lt;span class=&quot;caps&quot;&gt;REST&lt;/span&gt; somehow was canceled. I&amp;#8217;ve been a bit late due to talks in the break so I didn&amp;#8217;t realized that the talk was cancled until the second speaker turned up. David Cheminzkey of Rspec fame should rspec view tests and story tests which I found very impressing. That really helped me to understand the philosphy of rspec. Bascially you can define what your app should do and get testing and a executable specification at the same time. Brilliant!&lt;/p&gt;
&lt;p&gt;Matt Wood of the Sanger institute was also very impressive. He explaind how the institute is replacing 10 year old perl scripts piece by piece with ruby and Rails applications. &amp;#8220;Does Rails Scale?&amp;#8221; &amp;#8211; They move terabytes of data per day and per cluster node around &amp;#8211; with rails applications&amp;#8230;&lt;/p&gt;

&lt;h3&gt;Beyond Startups: Rails Demand in the Global 2000 Jonathan Siegel&lt;/h3&gt;
&lt;p&gt;That talk was a bit strange. Not so much new stuff in there for me. Big companies starting to use Rails for different things and are happy with it.&lt;/p&gt;
&lt;h3&gt;&lt;a href=&quot;http://conferences.oreillynet.com/cs/railseurope2007/view/e_sess/14847&quot;&gt;The Rest of &lt;span class=&quot;caps&quot;&gt;REST&lt;/span&gt; Roy T. Fielding&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;This talk was also strange but for a different reason. Some parts of it very entertaining and interesting other parts where just to abstract for me. And there where to many words on those slides. Seven is ok, maybe twelve but not twelve lines&amp;#8230; It was very interesting to hear how the whole web evolved and that you can surf the complete web in one hour or so (if there are only 50 web servers :-))&lt;/p&gt;
&lt;h3&gt;Rails and the Next Generation Web Craig R. McClanahan&lt;/h3&gt;
&lt;p&gt;The best quote of his talk &amp;#8220;Developing web applications in Java after working with Rails would probably not be a particularly pleasant experience&amp;#8221;. He mentioned one thing I concur with: There are plugins who should be written more abstract so that you can use them with any Object and not only with ActiveRecord. That&amp;#8217;s one thing about Java which I&amp;#8217;ve found really good: explicit interfaces. You can do the same, or even better things with ruby and duck typing, but you have to force yourself to do it, the language won&amp;#8217;t&amp;#8230;&lt;/p&gt;
&lt;h3&gt;Rejectconf&lt;/h3&gt;
&lt;p&gt;We managed to find the Rejectconf location but we arrived a bit late. So the best seats were already taken. Nevertheless I really liked the short presentations and got me excited to attend the next &lt;a href=&quot;http://www.pechakucha-stuttgart.de/&quot;&gt;Pecha Kucha&lt;/a&gt; event in Stuttgart. Thomas Fuchs had really nice C64 Design slides and this awesome 3 colour keynote transition. Dr Nic posted a &lt;a href=&quot;http://www.viddler.com/explore/crafterm/videos/6/&quot;&gt;video of his talk&lt;/a&gt; More info about &lt;a href=&quot;http://www.rug-b.de/wiki/show/RejectConf&quot;&gt;RejectConf&lt;/a&gt;&lt;/p&gt;</content><updated>2007-09-25T00:00:00+00:00</updated><link href='/2007/09/25/railsconf-europe-2007-berlin-day-1/' rel='alternate'/></entry><entry><id>/2007/09/24/too-late</id><title type='text'>Too late</title><content type='html'>&lt;p&gt;The last time I&amp;#8217;ve been to Berlin we went back to Stuttgart by train. Of course, it was late. This time I traveled by plane so everything should be fine. Wrong! My flight was 90 minutes delayed&amp;#8230; At least I had internet access at the aiport and my battery was almost full&amp;#8230;&lt;/p&gt;</content><updated>2007-09-24T00:00:00+00:00</updated><link href='/2007/09/24/too-late/' rel='alternate'/></entry><entry><id>/2007/09/24/railsconf-europe-2007-berlin-wrap-up</id><title type='text'>Railsconf Europe 2007 Berlin - Wrap up</title><content type='html'>&lt;p&gt;RailsConf Europe 2007 is over and it&amp;#8217;s time to wrap up.  So&amp;#8230; I don&amp;#8217;t want reproduce the content of all the presentations I&amp;#8217;ve attended because several other people already did. I&amp;#8217;ll just link to their posts. Instead I want to to give a subjective view of all the talks I&amp;#8217;ve seen.  I have no idea if that&amp;#8217;s of any value to anybody else but maybe it is. No pictures this year&amp;#8230; I was to lazy to bring my &lt;span class=&quot;caps&quot;&gt;DSLR&lt;/span&gt; camera and forgot to borrow a smaller point and shoot cam&amp;#8230; There are a lot of pictures of the event on &lt;a href=&quot;http://www.flickr.com/photos/tags/railsconfeurope07/&quot;&gt;flickr&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Check out the days in order:&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;&lt;a href=&quot;/2007/9/24/railsconf-europe-2007-berlin-day-1&quot;&gt;Day -1: Before Railsconf&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href=&quot;/2007/9/24/railsconf-europe-2007-berlin-day-0&quot;&gt;Day 0: Tutorial Day&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href=&quot;/2007/9/25/railsconf-europe-2007-berlin-day-1&quot;&gt;Day 1: First conference day&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href=&quot;/2007/9/25/railsconf-europe-2007-berlin-day-2&quot;&gt;Day 2: Second conference day&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</content><updated>2007-09-24T00:00:00+00:00</updated><link href='/2007/09/24/railsconf-europe-2007-berlin-wrap-up/' rel='alternate'/></entry><entry><id>/2007/09/24/railsconf-europe-2007-berlin-day-1</id><title type='text'>Railsconf Europe 2007 Berlin - Day -1</title><content type='html'>&lt;p&gt;&lt;strong&gt;Bratwurst on rails&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Railsconf started with the &lt;a href=&quot;http://www.bratwurst-on-rails.com/&quot;&gt;Bratwurst on rails&lt;/a&gt; event organized by the &lt;a href=&quot;http://www.rug-b.com/wiki/show/HomePage&quot;&gt;Berlin Ruby User Group&lt;/a&gt;. Free Bratwurst for everyone :)&lt;/p&gt;
&lt;p&gt;Talking to interesting, intelligent people form all over the world has been a great experience. One thing which stuck in my mind was one guy from the UK (I am so bald with names&amp;#8230;) who referred to himself as a &amp;#8220;agile convert&amp;#8221;. Having been in the software business for about 20 years he couldn&amp;#8217;t believe that &amp;#8220;this agile thing would work&amp;#8221;. And now he doesn&amp;#8217;t want to do anything else :)&lt;/p&gt;</content><updated>2007-09-24T00:00:00+00:00</updated><link href='/2007/09/24/railsconf-europe-2007-berlin-day-1/' rel='alternate'/></entry><entry><id>/2007/09/24/railsconf-europe-2007-berlin-day-0</id><title type='text'>Railsconf Europe 2007 Berlin - Day 0</title><content type='html'>&lt;h2&gt;Day 0: (Tutorial day)&lt;/h2&gt;
&lt;h3&gt;Ruby (and Rails) Testing Techniques: Charity Tutorial Chad Fowler, Marcel Molina Jr.&lt;/h3&gt;
&lt;p&gt;There was quite a queue in front of the check in counter (about 50m long). While I was waiting there, at some point, somewone said: You can register later. Just go to the session you want to see. So I just jumped in to the next room which happened to be the room where the testing tutorial with Chad Folwer and Marcel Molina jr. was held. It was very interesting to see who these guys not only did pair programming but pair teaching. Marcel really loves long expressive method names and almost never uses &amp;#8220;magic numbers&amp;#8221; in his code and test code. So instead of saying:&lt;/p&gt;
&lt;pre class=&quot;prettyprint&quot;&gt;
&lt;code&gt;
  Card.new(:number =&amp;gt; 5 )
&lt;/code&gt;
&lt;/pre&gt;

&lt;p&gt;he would write&lt;br /&gt;
&lt;pre class=&quot;prettyprint&quot;&gt;&lt;br /&gt;
&lt;code&gt;
  Card.new(:number =&amp;gt; low_card_number )&lt;/p&gt;
and then define a helper method
def low_card_number
5
end
&lt;p&gt;&lt;/code&gt;&lt;br /&gt;
&lt;/pre&gt;&lt;/p&gt;
I think that this approach is really valuable but, as with everything, you can overdo it. If I only had really small and only a few test cases for a small class, I probably wouldn&amp;#8217;t write as much helpers as Marcel did.

Marcel never uses def.self some_method for defining class methods but always

&lt;pre class=&quot;prettyprint&quot;&gt;
 &lt;code&gt;
 class &amp;lt;&amp;lt; self
    def some_method
    
    end
 end
&lt;/code&gt; 
&lt;/pre&gt;
At first I did&amp;#8217;t really see the advantage of that but when Chad explained why he does it that way, it became quite clear:

- you can structure your classes better: all class methods are in on place
- it is more &lt;span class=&quot;caps&quot;&gt;DRY&lt;/span&gt; than writing &amp;#8220;def self.&amp;#8221; all the time


&lt;h3&gt;Scaling a Rails Application from the Bottom Up in Europe Jason Hoffman&lt;/h3&gt;
&lt;p&gt;I&amp;#8217;ve been to Jason&amp;#8217;s &amp;#8220;Rails a system view&amp;#8221; talks last year and realized that this years talk basically was a updated version of last year. Which isn&amp;#8217;t a bad thing. There just wasn&amp;#8217;t that much new stuff in it for me this time.&lt;/p&gt;
&lt;p&gt;But what came out again was: There is no &amp;#8220;Rails scaling problem&amp;#8221;. &amp;#8220;Can Rails scale?&amp;#8221; as a question doesn&amp;#8217;t really make sense. There&amp;#8217;s nothing in Rails which makes it hard to scale. The fact that it&amp;#8217;s statless and shared nothing is actually a good thing if you want to scale. The bottlenecks are in front of Rails (Load balancer, network) or behind (database, network).&lt;/p&gt;
&lt;h3&gt;Keynote: Dave Thomas&lt;/h3&gt;
&lt;p&gt;I liked Dave Thomas&amp;#8217; Keynote very much. It was very inspiring and he once again underlined that all programmers should take pride in what they do and should sign their work like artists do. Here is a &lt;a href=&quot;http://rails.nomad-labs.com/?p=14&quot;&gt;good summary of his keynote&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;Bof&lt;/h3&gt;
&lt;p&gt;I had no idea what a &amp;#8220;Birds of a Feathers session&amp;#8221; was and I still haven&amp;#8217;t figured it out. At least I think it was very usefull and there will come something out of our session. We talked about Rails documentation in general and how we could i18ize it. There&amp;#8217;s a &lt;a href=&quot;http://groups.google.com/group/international-rails-documentation&quot;&gt;google group about i18zing the rails documentation&lt;/a&gt; if you&amp;#8217;d like to join the conversation.&lt;/p&gt;</content><updated>2007-09-24T00:00:00+00:00</updated><link href='/2007/09/24/railsconf-europe-2007-berlin-day-0/' rel='alternate'/></entry><entry><id>/2007/09/18/too-early</id><title type='text'>Too early</title><content type='html'>&lt;p&gt;It&amp;#8217;s not that easy to get up at 7 o&amp;#8217;clock. It&amp;#8217;s even harder if you realize that you could have slept almost an hour more&amp;#8230; Someone told us yesterday that the keynote speech would start at 8:15 so we managed to get here at 8 just to realize that the keynote will start at 9. At least we&amp;#8217;ll get good seats then.&lt;/p&gt;
&lt;p&gt;I&amp;#8217;ll try to get some coffee now&amp;#8230; I really need it.&lt;/p&gt;</content><updated>2007-09-18T00:00:00+00:00</updated><link href='/2007/09/18/too-early/' rel='alternate'/></entry><entry><id>/2007/09/16/heading-for-railsconfeurope-07</id><title type='text'>Heading for RailsConfEurope 07</title><content type='html'>&lt;p&gt;I remember sitting here almost exactly one year ago, without a Mac and without a job where I can do Rails development full time. I&amp;#8217;m lucky that I can say: the dark days of Java development are over :). Wow, it&amp;#8217;s really been one year since the last Rails Conf Europe. Time progresses fast. I&amp;#8217;m really excited to hear interesting speakers and talk to people who also do Rails stuff or are interested in doing it. You can get a vast amount of conference material (videos, slides) on the internet these days, but you cannot get the &amp;#8220;conference feeling&amp;#8221;, the conversations with other people and all that stuff. And that&amp;#8217;s what I like the most about these conferences. Especially with the Ruby and Rails communities, where the people seem to be particularly nice and friendly.&lt;/p&gt;
&lt;p&gt;Last year I deceided to arrive in the morning. It was stressfull. I had to get up really early and almost didn&amp;#8217;t make it in time for the opening keynote. And I wasn&amp;#8217;t able to attend the Rails-Pizza-Event thing. So this year I will arrive a day before the conference which opens the opportunity to attend the Bratwurst-on-Rails event this evening.&lt;/p&gt;
&lt;p&gt;German Airports suck btw. At least this tiny one in Stuttgart. Although there&amp;#8217;s a &lt;span class=&quot;caps&quot;&gt;WLAN&lt;/span&gt; you have to pay for it. When will free Wifi be available everywhere or at least at airports?&lt;/p&gt;</content><updated>2007-09-16T00:00:00+00:00</updated><link href='/2007/09/16/heading-for-railsconfeurope-07/' rel='alternate'/></entry><entry><id>/2007/05/28/russian-technology</id><title type='text'>Russian technology</title><content type='html'>&lt;p&gt;I&amp;#8217;ve been using &lt;a href=&quot;http://nginx.net/&quot;&gt;russian technology&lt;/a&gt; for about a week now and it works really well with Rails and is easy to set up in general.&lt;/p&gt;
&lt;p&gt;I&amp;#8217;d like to thank &lt;a href=&quot;http://errtheblog.com&quot;&gt;err&lt;/a&gt; for his &lt;a href=&quot;http://errtheblog.com/post/3908&quot;&gt;nginx config generator&lt;/a&gt; and &lt;a href=&quot;http://www.brainspl.at/&quot;&gt;Ezra&lt;/a&gt; for making me aware of nginx and his &lt;a href=&quot;http://brainspl.at/nginx.conf.txt&quot;&gt;config file&lt;/a&gt;. This combination got me up and runing with ngnix in about 5 minutes.&lt;/p&gt;
&lt;p&gt;However, I needed to modify the generated config file a bit to fit the standard debian file paths and users. So I modified the &lt;span class=&quot;caps&quot;&gt;ERB&lt;/span&gt; template which is used to generate the config file. It should be fully backwards compatible, so if you don&amp;#8217;t need all of these modifications you could use it and just use the modifications you need. Here&amp;#8217;s the &lt;a href=&quot;http://pastie.caboo.se/65434&quot;&gt;template with my modifications&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;My &lt;span class=&quot;caps&quot;&gt;YAML&lt;/span&gt; file looks like this:&lt;/p&gt;
&lt;p&gt;user: www-data&lt;br /&gt;
group: www-data&lt;/p&gt;
&lt;p&gt;pid_path: /var/run/&lt;br /&gt;
config_path: /etc/nginx/&lt;br /&gt;
log_path: /var/log/nginx_&lt;/p&gt;
&lt;ol&gt;
	&lt;li&gt;This defines the default roots and alternate roots.&lt;/li&gt;
	&lt;li&gt;The name (or key) of your site will be sprintf&amp;#8217;d with&lt;/li&gt;
	&lt;li&gt;the below root, right.&lt;br /&gt;
root: &lt;br /&gt;
  blog:  /srv/hendrikvolkmer.de/blog/public&lt;br /&gt;
  www: /var/www&lt;/li&gt;
&lt;/ol&gt;
&lt;ol&gt;
	&lt;li&gt;All your vhosts.&lt;br /&gt;
sites: &lt;br /&gt;
  blog:&lt;br /&gt;
    upstream: &lt;br /&gt;
      &amp;#8211; 127.0.0.1:3000&lt;br /&gt;
      &amp;#8211; 127.0.0.1:3001&lt;/li&gt;
&lt;/ol&gt;
server_name: blog.hendrikvolkmer.de
&lt;ol&gt;
	&lt;li&gt;I added a special feeds config which generates the&lt;/li&gt;
	&lt;li&gt;if ($http_user_agent !~ FeedBurner)  line before the actual rewrite&lt;/li&gt;
	&lt;li&gt;line. Works fine with Mephisto and, of course Feedburner, &lt;span class=&quot;caps&quot;&gt;YMMV&lt;/span&gt;&lt;br /&gt;
    feeds:&lt;br /&gt;
      &amp;#8211; ^/feed/atom.xml http://feeds.feedburner.com/hendrikvolkmer&lt;br /&gt;
      &amp;#8211; ^/feed/all_comments.xml http://feeds.feedburner.com/hendrikvolkmer_comments&lt;/li&gt;
&lt;/ol&gt;
root: blog
www:
root: www
server_name: hendrikvolkmer.de
&lt;p&gt;Also, it&amp;#8217;s really easy to compile nginx 0.5.20 for Debian: Just download the source, make the necessary modifications to the current deb file specifications and compile. :)&lt;/p&gt;</content><updated>2007-05-28T00:00:00+00:00</updated><link href='/2007/05/28/russian-technology/' rel='alternate'/></entry><entry><id>/2007/05/10/small-differences-that-matter</id><title type='text'>Small differences that matter</title><content type='html'>&lt;p&gt;Almost everybody who knows me knows that I like Macs and Mac OS X. So being able to work on a Mac again I discovered some small differences which make the work on these machince even more enjoyable.&lt;/p&gt;
&lt;p&gt;First, there&amp;#8217;s &lt;a href=&quot;http://de.wikipedia.org/wiki/MagSafe&quot;&gt;Magsafe&lt;/a&gt;. One of the best inventions since the invention of laptops. A small change with huge impact. The load status indicator &lt;span class=&quot;caps&quot;&gt;LED&lt;/span&gt; on the power plug is a nice feature, too.&lt;/p&gt;
&lt;p&gt;Another thing I noticed is the &amp;#8220;low power&amp;#8221; warning message. On windows, if your laptop runs out of power, you get a warning message. And if you don&amp;#8217;t put the power plug in, the computer goes to sleep mode which is fine. But if you reopen the lid and Windows comes to life again, you still get these warning messages. It doesn&amp;#8217;t matter if you&amp;#8217;ve put the power plug back in or not. It still says &amp;#8220;I need power. Put the plug in or I&amp;#8217;ll die!&amp;#8221;. On the Mac however, the moment you put the plug in the message automatically disappears. That&amp;#8217;s a small, litte thing but very convenient and it just makes sense.&lt;/p&gt;
&lt;p&gt;Multi-Monitor Mode. Ok, this one really sucks on Windows. I don&amp;#8217;t know if this has to do with the fact, that the monitor on the MacBook is plugged in via &lt;span class=&quot;caps&quot;&gt;DVI&lt;/span&gt; (which isn&amp;#8217;t possible on most PC laptops due to the lack of an &lt;span class=&quot;caps&quot;&gt;DVI&lt;/span&gt; port) or if it&amp;#8217;s just Windows itself. I guess it&amp;#8217;s the latter.&lt;/p&gt;
&lt;p&gt;So you have a second Monitor plugged into your WinXP Laptop. Unplug it, and all the windows which where on the second monitor just stay there (in the phantom monitor, if you will) and you cannot access them properly. On the Mac (again, I think this has to do with &lt;span class=&quot;caps&quot;&gt;DVI&lt;/span&gt; somehow) all the open windows are just moved to the laptop screen, so you can access all the windows.&lt;/p&gt;
&lt;p&gt;Also, WinXP forgets about the alignment of the monitors every now and then. So normally the second one on the left (I configured it this way). But sometimes, Windows decides that the monitor is now on the right. Or even better, it throws all my desktop icons on the second monitor.&lt;/p&gt;
&lt;p&gt;Have you ever tried to set different wallpapers for your two monitors in XP? Without any additional software? It&amp;#8217;s impossible. Or if it&amp;#8217;s not, then it&amp;#8217;s not intuitive to find. With Mac OS X, you get a selection box for the wallpaper on the monitor you want to set the wallpaper (so one dialog on every monitor). It&amp;#8217;s the same for the screen resolution setup: One dialog on every monitor.&lt;/p&gt;
&lt;p&gt;Another nice thing about the MacBook is the position of the fan outtakes: They are in front of the display, behind the keyboard. As far as I know the Mac laptops are the only ones which fold the display like they do. Hard to explain. If you don&amp;#8217;t know what I mean check out some pictures ;-). So the warm air flows up the display. What&amp;#8217;s the advantage of that? Well, ever put a &amp;#8220;normal&amp;#8221; laptop in your bed or some other thing where it could &amp;#8220;sink in&amp;#8221;? If the outtakes are on the side or even worse, the bottom, they will be blocked and bad things will happen.&lt;/p&gt;
&lt;p&gt;So that aren&amp;#8217;t mission critical things (or maybe some of them are) but to me it shows how Apple seems to think more about the acutal user experience than Microsoft. Granted that Apple has the advantage of creating their own hardware and therefore beeing able to fine tune the setup.&lt;/p&gt;</content><updated>2007-05-10T00:00:00+00:00</updated><link href='/2007/05/10/small-differences-that-matter/' rel='alternate'/></entry><entry><id>/2007/04/27/usefull-error-messages-part-iii</id><title type='text'>Usefull error messages - Part III</title><content type='html'>&lt;p&gt;Today I found another one:&lt;br /&gt;
&lt;pre class=&quot;prettyprint&quot;&gt;&lt;br /&gt;
&lt;code&gt;
postfix/qmgr[10675]: warning: problem talking to service rewrite: Success
&lt;/code&gt;&lt;br /&gt;
&lt;/pre&gt;&lt;/p&gt;</content><updated>2007-04-27T00:00:00+00:00</updated><link href='/2007/04/27/usefull-error-messages-part-iii/' rel='alternate'/></entry><entry><id>/2007/04/27/all-legal-documents-should-be-like-this</id><title type='text'>All legal documents should be like this...</title><content type='html'>&lt;p&gt;This is awesome: &lt;a href=&quot;http://enterpriselinuxlog.blogs.techtarget.com/2007/03/22/red-hats-new-one-page-sla/&quot;&gt;Red Hat&amp;#8217;s new one page &lt;span class=&quot;caps&quot;&gt;SLA&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;[via &lt;a href=&quot;http://www.37signals.com/svn/posts/401-red-hat-if-we-ship-it-we-support-it&quot;&gt;SvN&lt;/a&gt; ]&lt;/p&gt;
&lt;p&gt;If only all legal documents could be as short as this one. Unfortenately they are not. Trust me, if seen some in the last months&amp;#8230;&lt;/p&gt;</content><updated>2007-04-27T00:00:00+00:00</updated><link href='/2007/04/27/all-legal-documents-should-be-like-this/' rel='alternate'/></entry><entry><id>/2007/04/07/strange-errors-and-simple-solution</id><title type='text'>Strange errors and simple solution</title><content type='html'>&lt;p&gt;If you get strange errors like&lt;/p&gt;
&lt;pre class=&quot;prettyprint&quot;&gt;
&lt;code&gt;
cannot remove Object::ViewTranslation
&lt;/code&gt;
&lt;/pre&gt;
&lt;p&gt;if you execute rake tasks, just install the mysql client library and everything works fine. At least for me.&lt;/p&gt;
&lt;p&gt;I wrote about &lt;a href=&quot;/2007/1/21/usefull-error-messages&quot;&gt;useful error messages&lt;/a&gt; before.&lt;/p&gt;</content><updated>2007-04-07T00:00:00+00:00</updated><link href='/2007/04/07/strange-errors-and-simple-solution/' rel='alternate'/></entry><entry><id>/2007/03/12/shift-happens</id><title type='text'>Shift happens</title><content type='html'>&lt;p&gt;Interesting and inspiring video:&lt;/p&gt;
&lt;p&gt;&lt;object width=&apos;464&apos; height=&apos;348&apos;&gt;&lt;param name=&apos;movie&apos; value=&apos;http://www.glumbert.com/embed/shift&apos;&gt;&lt;/param&gt;&lt;param name=&apos;wmode&apos; value=&apos;transparent&apos;&gt;&lt;/param&gt;&lt;embed src=&apos;http://www.glumbert.com/embed/shift&apos; type=&apos;application/x-shockwave-flash&apos; wmode=&apos;transparent&apos; width=&apos;496&apos; height=&apos;372&apos;&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div&gt;&lt;a href=&apos;http://www.glumbert.com/media/shift&apos;&gt;glumbert.com &amp;#8211; Shift Happens&lt;/a&gt;&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;&lt;br&gt;&lt;/p&gt;
&lt;p&gt;[ via &lt;a href=&quot;http://www.wals.lib.wi.us/blogs/winnefox2.0/&quot;&gt;Winnefox 2.0&lt;/a&gt; ]&lt;/p&gt;</content><updated>2007-03-12T00:00:00+00:00</updated><link href='/2007/03/12/shift-happens/' rel='alternate'/></entry><entry><id>/2007/03/11/paper-sculptures</id><title type='text'>Paper sculptures</title><content type='html'>&lt;p&gt;Amazing paper sculptures by &lt;a href=&quot;http://www.jenstark.com/sculpture_01.html&quot;&gt;Jen Stark&lt;/a&gt;:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://blog.hendrikvolkmer.de/assets/2008/4/30/PaperAnomaly.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;[via &lt;a href=&quot;http://www.valuesofn.com/blog/2007/03/jens-starks-paper-sculptures.html&quot;&gt;Valuesofn&lt;/a&gt;]&lt;/p&gt;</content><updated>2007-03-11T00:00:00+00:00</updated><link href='/2007/03/11/paper-sculptures/' rel='alternate'/></entry><entry><id>/2007/03/08/http-referer-and-redirect_to-back</id><title type='text'>HTTP-Referer and redirect_to :back</title><content type='html'>&lt;p&gt;Rails has a convenient way of going back to the &lt;span class=&quot;caps&quot;&gt;URI&lt;/span&gt; you just came from: redirect_to :back. Internally this redirect is done by a redirect to the referring &lt;span class=&quot;caps&quot;&gt;URI&lt;/span&gt; using the &lt;a href=&quot;http://www.rfc-editor.org/rfc/rfc2616.txt&quot;&gt;&lt;span class=&quot;caps&quot;&gt;HTTP&lt;/span&gt;-Referer-Header&lt;/a&gt; . While this is convenient and works most of the time, it relies on the fact that the client&amp;#8217;s browser sends the referer-header field. If it doesn&amp;#8217;t, the &lt;a href=&quot;http://api.rubyonrails.org/classes/ActionController/Base.html#M000271&quot;&gt;redirect_back method throws a RedirectBackError&lt;/a&gt; .&lt;/p&gt;
&lt;p&gt;The Rails source itself suggests that we should catch this exception if we want to impelement some kind of fallback behavoir. Apparently not many people have ever done this. At least noone seemes to talk about it. So I will.&lt;/p&gt;
&lt;p&gt;Most of the browsers will send a Referer header, but the main problem, I see, is corporate firewalls. Most of them are configured to eleminate the Referer-Header for outgoing requests. So if someone behind such a firewall tried to access your web application which is relying on a Referer-based redirect, it won&amp;#8217;t work.&lt;/p&gt;
&lt;p&gt;And the Referer field is optional (at least as I understand &lt;a href=&quot;http://www.rfc-editor.org/rfc/rfc2616.txt&quot;&gt;rfc2616&lt;/a&gt; ).&lt;/p&gt;
&lt;p&gt;Now for the solution I went for. It may not be perfect, but it works.&lt;/p&gt;
&lt;p&gt;And this in your application.rb (Inspired by &lt;a href=&quot;http://rails.co.za/articles/2006/03/20/jumpback&quot;&gt;this post&lt;/a&gt;)&lt;/p&gt;
&lt;pre class=&quot;prettyprint&quot;&gt;
&lt;code&gt;
before_filter :jumpback
protected
  def jumpback
    session[:jumpback] = session[:jumpcurrent]
    session[:jumpcurrent] = request.request_uri
  end  

 def rescue_action_in_public(exception)
    case exception
     when ::ActionController::RedirectBackError
       jumpto = session[:jumpback] || {:controller =&amp;gt; &quot;/my_overview&quot;}
       redirect_to jumpto
     else
       super
     end
  end
&lt;/code&gt;
&lt;/pre&gt;
&lt;p&gt;Now the redirect_to :back will work without referer header.&lt;/p&gt;
&lt;p&gt;Update: It&amp;#8217;s obviously a bad idea to overwrite rescue_action in ActionController::Base. And it&amp;#8217;s not really neccessary. There&amp;#8217;s rescue_action_in_public for exactly that purpose. I updated the code above to reflect that change.&lt;/p&gt;</content><updated>2007-03-08T00:00:00+00:00</updated><link href='/2007/03/08/http-referer-and-redirect_to-back/' rel='alternate'/></entry><entry><id>/2007/03/03/paranoia</id><title type='text'>Paranoia</title><content type='html'>&lt;p&gt;So true&amp;#8230;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://blog.hendrikvolkmer.de/assets/2007/3/8/paranoia.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://digitalfury.popmartian.com/images/20070202/paranoia.jpg&quot;&gt;Quelle&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;[via &lt;a href=&quot;http://www.schneier.com/blog/archives/2007/03/paranoia_poster.html&quot;&gt;Schneier on Security&lt;/a&gt; ]&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Update&lt;/em&gt;: For people who don&amp;#8217;t know what this is about:&lt;/p&gt;
&lt;p&gt;English: &lt;a href=&quot;http://www.schneier.com/blog/archives/2007/02/nonterrorist_em.html&quot;&gt;Non-Terrorist Embarrassment in Boston&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;German: &lt;a href=&quot;http://www.spiegel.de/panorama/0,1518,463601,00.html&quot;&gt;Sprechender Milchshake legt Boston lahm&lt;/a&gt;&lt;/p&gt;</content><updated>2007-03-03T00:00:00+00:00</updated><link href='/2007/03/03/paranoia/' rel='alternate'/></entry><entry><id>/2007/02/23/acts_as_sluggable</id><title type='text'>acts_as_sluggable and Rails 1.2</title><content type='html'>&lt;p&gt;There are some &lt;a href=&quot;http://www.jroller.com/page/obie/20070203&quot;&gt;Blog posts&lt;/a&gt; out there about Rails and nice URLs for &lt;span class=&quot;caps&quot;&gt;SEO&lt;/span&gt;. I don&amp;#8217;t know if it really works, but it&amp;#8217;s easy to do and nice URLs can never be wrong, can they?&lt;/p&gt;
&lt;p&gt;There&amp;#8217;s also a plugin called &lt;a href=&quot;http://dev.2750flesk.com/acts_as_sluggable/&quot;&gt;acts_as_sluggable&lt;/a&gt; which does exactly that, so that you can do things like&lt;/p&gt;
&lt;pre class=&quot;prettyprint&quot;&gt;
&lt;code&gt;
class BlogPost
  acts_as_sluggable :with =&amp;gt; :title
end
&lt;/code&gt;
&lt;/pre&gt;
&lt;p&gt;And get &lt;span class=&quot;caps&quot;&gt;URIS&lt;/span&gt; like&lt;/p&gt;
&lt;p&gt;&lt;code&gt;
http://www.example.com/blogposts/3-my-cat-ate-my-flowers
&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;There are some problems with act_as_slugable and Rails 1.2, though. Acts_as_sluggable comes with some ActiveRecord monkey patching for the find_from_ids method. As mentioned by Obie Fernandez this isn&amp;#8217;t necessary for Rails 1.2 because Rails all the to_i-stuff itself. So if you want to use the plugin with Rails 1.2 just comment out the active_records_overrides.rb contents and you should be fine.&lt;/p&gt;</content><updated>2007-02-23T00:00:00+00:00</updated><link href='/2007/02/23/acts_as_sluggable/' rel='alternate'/></entry><entry><id>/2007/02/21/installing-trac-on-windows</id><title type='text'>Installing Trac on Windows</title><content type='html'>&lt;p&gt;This is not a tutorial. There is a &lt;a href=&quot;http://trac.edgewall.org/wiki/TracOnWindows&quot;&gt;good one&lt;/a&gt; on the TracWiki. I just want to tell everyone, that if you ever consider installing Trac on Windows, then just don&amp;#8217;t do it and install it on a *nix machine. This will save you a lot of time and nerves. There are even &lt;a href=&quot;http://buildix.thoughtworks.com/&quot;&gt;pre-build environments&lt;/a&gt; available with &lt;a href=&quot;http://subversion.tigris.org&quot;&gt;&lt;span class=&quot;caps&quot;&gt;SVN&lt;/span&gt;&lt;/a&gt;, &lt;a href=&quot;http://trac.edgewall.com&quot;&gt;Trac&lt;/a&gt; and &lt;a href=&quot;http://cruisecontrol.sf.net&quot;&gt;Cruisecontrol&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I spent almost an entire day to configure Trac on Windows. It&amp;#8217;s not funny. If you have to do it, be sure to use the &lt;a href=&quot;http://trac.edgewall.org/wiki/TracModPython&quot;&gt;mod_python setup&lt;/a&gt;. It&amp;#8217;s far easier to install than trying to set up &lt;span class=&quot;caps&quot;&gt;CGI&lt;/span&gt; on a Windows box (which I think would be the first and easiest setup on *nix machines). I may not be the smartest person on earth but the Apache error messages on Windows are just plain useless. I don&amp;#8217;t care if it&amp;#8217;s Apache&amp;#8217;s fault, Windows&amp;#8217; fault or my own. It&amp;#8217;s &lt;a href=&quot;http://www.thisisbroken.com/&quot;&gt;just broken&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;So if you have no other choice than using Windows, make sure that you use a plain Apache from &lt;a href=&quot;http://httpd.apache.org&quot;&gt;apache.org&lt;/a&gt; &amp;#8211; No &lt;a href=&quot;http://www.apachefriends.org/&quot;&gt;xampp&lt;/a&gt;, &lt;a href=&quot;http://typo3.org/download/installers/&quot;&gt;Typo 3 package&lt;/a&gt; or anything like that. Some of these packages come with their own version of Python which really fucks things up, if it&amp;#8217;s not the version you need). This will save you a lot of trouble.&lt;/p&gt;
&lt;p&gt;The main problem we had here was the &amp;#8220;We already have an Apache on this server, so why not install on this one?&amp;#8221;-thing. The Apache installation turned out to be one of the packages mentioned above which made things not really easier.&lt;/p&gt;</content><updated>2007-02-21T00:00:00+00:00</updated><link href='/2007/02/21/installing-trac-on-windows/' rel='alternate'/></entry><entry><id>/2007/01/31/waterfall-2006</id><title type='text'>Waterfall 2006</title><content type='html'>&lt;p&gt;I just listened to the &lt;a href=&quot;http://se-radio.net/index.php?post_id=116460&quot;&gt;SE-Radio Episode 26&lt;/a&gt;, where &lt;a href=&quot;http://www.jeckstein.de/&quot;&gt;Jutta Eckstein&lt;/a&gt; mentioned the &lt;a href=&quot;http://www.waterfall2006.com&quot;&gt;Waterfall 2006&lt;/a&gt; conference. If you have a look at the website and know only one or two of the names on the list and recognize the date of conference, you just know what this &amp;#8220;conference&amp;#8221; thing is about. If you want to have a laugh just read through the descriptions of the talks.&lt;/p&gt;
&lt;p&gt;The most surprising thing however was, that there apparently where people who thought this was a real thing and said things like &amp;#8220;I always thought that people like Kent Beck would finally understand what is important&amp;#8221;. (Check out the podcast at about 25:00)&lt;/p&gt;
&lt;p&gt;If you click on the registration link you get this message:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;We&amp;#8217;re sorry but registration is not yet ready. Our software developers have a really wonderful design. They&amp;#8217;re almost done entering it into it a &lt;span class=&quot;caps&quot;&gt;UML&lt;/span&gt; tool. They&amp;#8217;ve told us not to worry and that finishing it will be &amp;#8220;trivial&amp;#8221; because &amp;#8220;all that&amp;#8217;s left is the coding.&amp;#8221;&lt;/p&gt;
&lt;p&gt;We&amp;#8217;re not sure what features will be on the registration pages because the developers haven&amp;#8217;t talked to us about what we&amp;#8217;d like but we&amp;#8217;re sure it will be wonderful. Meanwhile, you may want to plan on just showing up at the conference with a credit card and if there&amp;#8217;s space available, we&amp;#8217;ll let you in.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;All that happened about a year ago and I discovered it just now, but I think it&amp;#8217;s still funny, though.&lt;/p&gt;</content><updated>2007-01-31T00:00:00+00:00</updated><link href='/2007/01/31/waterfall-2006/' rel='alternate'/></entry><entry><id>/2007/01/30/vista-launch-in-europa</id><title type='text'>Vista Launch in Europa</title><content type='html'>&lt;p&gt;Heute ist es soweit! Endlich ist es da, das tolle neue Betriebsystem vom sympatischen Hersteller aus Redmond. Ich habe es bisher selbst noch nicht getestet, aber allerhand Infos im Netz dazu gelesen.&lt;/p&gt;
&lt;p&gt;Ich bin zu dem Schluß gekommen, dass Windows Vista zu 95% von Mac OS X abgekupfert ist, was die Features angeht. Aber wenn man das genauer anschaut, stellt sich das als falsch herraus. Den Beweis liefert David Pogue in &lt;a href=&quot;http://youtube.com/watch?v=TaIUkwPybtM&quot;&gt;diesem Video&lt;/a&gt;. Apple sieht das etwas anders (siehe Video von der &lt;a href=&quot;http://youtube.com/watch?v=N-2C2gb6ws8&quot;&gt;WWDC06&lt;/a&gt; ).&lt;/p&gt;
&lt;p&gt;Und die norwegischen &lt;a href=&quot;http://www.engadget.com/2007/01/29/microsoft-demoes-vista-on-an-imac&quot;&gt;Microsoft-Mitarbeiter zeigen Vista sogar öffentlich auf &amp;#8217;nem iMac&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Ich freue mich schon auf das neue Mac OS. Mal schauen, was da wieder als Kopiervorlage dabei sein wird ;-)&lt;/p&gt;
&lt;p&gt;Am wichtigesten bleibt aber: Jeder soll das System nehmen, das einem am meisten zusagt. Es hat keinen Wert andere von seinem Lieblings-OS zu überzeugen und andere damit dann unglücklich zu machen. Da hat keiner was von.&lt;/p&gt;</content><updated>2007-01-30T00:00:00+00:00</updated><link href='/2007/01/30/vista-launch-in-europa/' rel='alternate'/></entry><entry><id>/2007/01/27/are-you-test-infected</id><title type='text'>Are you test infected?</title><content type='html'>&lt;p&gt;I certainly am. There&amp;#8217;s an interesting article over at &lt;a href=&quot;http://www.developertesting.com/archives/month200701/20070126-developer%20testing%20test-infected%20gene.html&quot;&gt;Developer testing&lt;/a&gt; .&lt;br /&gt;
I think I have the T1 testing gene which is described as follows:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;T1 &amp;#8211; Very susceptible to test infection. Show them a single JUnit example and they get it immediately &amp;#8211; and start using it regularly and with great fervor. When time pressure hits, they fight hard for enough time to test and would rather quit than produce code without tests. They often have framed pictures of Kent Beck on their desk :-).&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I haven&amp;#8217;t got a framed picture of Kent Beck at my desk&amp;#8230; yet. ;-)&lt;/p&gt;</content><updated>2007-01-27T00:00:00+00:00</updated><link href='/2007/01/27/are-you-test-infected/' rel='alternate'/></entry><entry><id>/2007/01/24/oh-schreck-es-schneit</id><title type='text'>Oh Schreck, es schneit!</title><content type='html'>&lt;p&gt;Und das mitten im Januar! Im Winter! Wer hätte das erwartet? Klar, dass es dann ein Chaos geben muss.&lt;/p&gt;
&lt;p&gt;Folgende Nachricht findet sich z.B. auf der Seite des &lt;a href=&quot;http://vvs.de/&quot;&gt;&lt;span class=&quot;caps&quot;&gt;VVS&lt;/span&gt;&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt; Beeinträchtigung im Schienen- und Busverkehr&lt;/p&gt;
&lt;p&gt;Witterungsbedingt kommt es im S-Bahn- und im &lt;span class=&quot;caps&quot;&gt;SSB&lt;/span&gt;-Schienenbereich durch starken Schneefall und Weichenstörungen zu Verspätungen von bis zu 60 Minuten. Der Busbetrieb ist im gesamten &lt;span class=&quot;caps&quot;&gt;VVS&lt;/span&gt;-Gebiet fast vollständig eingestellt bis die Fahrbahnen wieder geräumt sind. Die wenigen rollenden Busse fahren quasi ohne Fahrplan.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Autobahnen werden gesperrt, es gibt Unfälle und bestimmte auch Leute, die noch mit Sommerreifen am Auto unterwegs sind. Ist es wirklich so verwunderlich, dass es im Winter mal schneit, dass nun so ein Chaos ausbricht?&lt;/p&gt;
&lt;p&gt;OK, es hat über Nacht mal eben 25cm geschneit. Was für Stuttgart recht viel ist, aber in den letzten Jahren auch schon öfters mal vorgekommen ist. Und wirklich überraschend war&amp;#8217;s irgendwie nicht. Laut Wetterprognose sollte es diese Woche schneien.&lt;/p&gt;
&lt;p&gt;Ein gewisses Chaos wird sich wohl nie vermeiden lassen, aber irgendwie kommt mir das alles so vor, als ob alle (Verkehrsbetriebe, Straßenwacht, Autofahrer, etc.) total überrascht sind von der Tatsache, dass es im Januar, im Winter, schneit.&lt;/p&gt; 
&lt;p&gt;Update:&lt;br&gt;
Apropos überraschte Autofahrer: Ein Kollege erzählte mir gestern, er hätte morgens Autofahrer gesehen, die hektisch die Winterreifen aufgzogen haben&amp;#8230; Sorry, aber da fällt mir echt nix mehr zu ein.&lt;/p&gt;</content><updated>2007-01-24T00:00:00+00:00</updated><link href='/2007/01/24/oh-schreck-es-schneit/' rel='alternate'/></entry><entry><id>/2007/01/21/using-a-chess-clock-to-track-time</id><title type='text'>Using a chess clock to track time</title><content type='html'>&lt;p&gt;In the current &lt;a href=&quot;http://www.drunkandretired.com/2007/01/19/drunkandretiredcom-podcast-episode-79-applying-dynamic-languages-to-http-client-in-java-hitlers-monads-pgp-and-email-charles-day-getting-to-continuous-personal-improvement-and-backlogs/&quot;&gt;DrunkAndRetired.com episode&lt;/a&gt; &lt;a href=&quot;http://www.cogentdude.com/&quot;&gt;Charles&lt;/a&gt; explains that he uses a chess clock to track his real working time. So one clock shows the time spent on work and the other one the time spent on making coffee, eating, surfing the web &lt;a href=&quot;http://dilbert.com/&quot;&gt;reading&lt;/a&gt; &lt;a href=&quot;http://questionablecontent.net/&quot;&gt;comics&lt;/a&gt; etc. I like the idea of tracking your real net amount of time spent on actual work. So I need to get a chess clock and try it out&amp;#8230;&lt;/p&gt;</content><updated>2007-01-21T00:00:00+00:00</updated><link href='/2007/01/21/using-a-chess-clock-to-track-time/' rel='alternate'/></entry><entry><id>/2007/01/21/usefull-error-messages</id><title type='text'>Useful error messages... </title><content type='html'>&lt;p&gt;&amp;#8230; are great. Here&amp;#8217;s one I came across while trying to recover data from a hard disk image of a broken hard disk:&lt;/p&gt;
&lt;pre&gt;
core backup # xfs_repair -f data.image
Phase 1 - find and verify superblock...
superblock read failed, offset 249108103168, size 2048, ag 0, rval 58

fatal error -- Success
core backup #
&lt;/pre&gt;
&lt;p&gt;fatal error &amp;#8212; Success. Now that&amp;#8217;s a useful message, isn&amp;#8217;t it? Btw. the image wasn&amp;#8217;t recoverable&amp;#8230;&lt;/p&gt;</content><updated>2007-01-21T00:00:00+00:00</updated><link href='/2007/01/21/usefull-error-messages/' rel='alternate'/></entry><entry><id>/2007/01/19/wann-sind-solid-state-disks-endlich-marktreif</id><title type='text'>Wann sind Solid-State-Disks endlich marktreif?</title><content type='html'>&lt;p&gt;Das frage ich mich schon seit mindestens einem Jahr. Mit &amp;#8220;marktreif&amp;#8221; meine ich vor allem &amp;#8220;für normalsterbliche Menschen bezahlbar&amp;#8221;. &lt;a href=&quot;http://www.heise.de/newsticker/meldung/71100&quot;&gt;Alle kündigen&lt;/a&gt; &lt;a title=&quot;Schnelle Flash-Disk als Festplattenersatz&quot; href=&quot;http://www.heise.de/newsticker/meldung/83173&quot;&gt;das Zeug an&lt;/a&gt; und zu Festplattenpreisen sind die Dinger immer noch nicht zu haben. Und nur damit alles schön leise und schneller ist zahl ich nicht das 6-10 fache pro GB.&lt;/p&gt;
&lt;p&gt;Vielleicht wird&amp;#8217;s ja bald was mit &lt;a title=&quot;SATA-Flash-Disk mit 64 GByte&quot; href=&quot;http://www.heise.de/newsticker/meldung/83687&quot;&gt;&lt;span class=&quot;caps&quot;&gt;PQI&lt;/span&gt;&lt;/a&gt;. &lt;a href=&quot;http://www.dvhardware.net/article16337.html&quot;&gt;Die Nachricht&lt;/a&gt; ist zwar schon eine Woche alt, aber ich wurde gerade durch minutenlanges Rattern meiner Festplatte daran erinnert, dass ich so ein Teil brauche.&lt;/p&gt;</content><updated>2007-01-19T00:00:00+00:00</updated><link href='/2007/01/19/wann-sind-solid-state-disks-endlich-marktreif/' rel='alternate'/></entry><entry><id>/2007/01/16/fake-smile-or-real-smile</id><title type='text'>Fake smile or real smile</title><content type='html'>&lt;p&gt;Can you spot the difference? Take the &lt;a href=&quot;http://www.bbc.co.uk/science/humanbody/mind/surveys/smiles/index.shtml&quot;&gt;test&lt;/a&gt;! I got only four smiles wrong. I&amp;#8217;m surprised because sometimes it seemed quite hard. It&amp;#8217;s a fun test and it makes you smile, too. =)&lt;/p&gt;
&lt;p&gt;via [&lt;a href=&quot;http://headrush.typepad.com/creating_passionate_users/2007/01/whod_you_make_s.html&quot;&gt;Kathy Sierra&amp;#8217;s Blog&lt;/a&gt;]&lt;/p&gt;</content><updated>2007-01-16T00:00:00+00:00</updated><link href='/2007/01/16/fake-smile-or-real-smile/' rel='alternate'/></entry><entry><id>/2007/01/11/the-coffee-brings-you-back</id><title type='text'>The coffee brings you back</title><content type='html'>&lt;p&gt;&lt;a title=&quot;Kultobject - The coffee brings you back&quot; href=&quot;http://www.archive.org/download/1bit_007/1bit_007_-_02_-_Kultobjekt_-_The_Coffee_Brings_You_Back.mp3&quot;&gt;It&lt;/a&gt; does. If you like ambient, electro and sometimes strange sounding electronic music, check out the &lt;a href=&quot;http://www.1bit-wonder.com/&quot;&gt;1-bit wonder&lt;/a&gt; net label for great music under a &lt;a href=&quot;http://creativecommons.org/&quot;&gt;Creative Commons&lt;/a&gt; license. Pure mp3 &amp;#8211; no &lt;span class=&quot;caps&quot;&gt;DRM&lt;/span&gt; involved. Yaay.&lt;/p&gt;</content><updated>2007-01-11T00:00:00+00:00</updated><link href='/2007/01/11/the-coffee-brings-you-back/' rel='alternate'/></entry><entry><id>/2007/01/09/apple-iphone</id><title type='text'>Apple iPhone</title><content type='html'>&lt;p&gt;It&amp;#8217;s there. The &lt;a href=&quot;http://www.apple.com/iphone/&quot;&gt;Apple iPhone&lt;/a&gt;. I want to have one. That was the first thought after browsing through the product page. This is how mobile phone UIs should look like. The touch screen just looks awesome. I like the multiple touch points.&lt;/p&gt;
&lt;p&gt;People who know me already know that I like Apple products. But whatever your thoughts on all past apple products have been: This is a product that you can easily like.&lt;/p&gt;
&lt;p&gt;And Microsoft thought their Zune was innovative. Excuse me, I have to go to bed&amp;#8230; laughing. ;-)&lt;/p&gt;</content><updated>2007-01-09T00:00:00+00:00</updated><link href='/2007/01/09/apple-iphone/' rel='alternate'/></entry><entry><id>/2007/01/03/massengruesse</id><title type='text'>MassengrÃ¼Ãe</title><content type='html'>&lt;p&gt;Moderne Kommunikationsmittel sind schon toll. Man kann auf ein Mal viele Leute erreichen und Informationen verbreiten. Sei es per E-Mail, &lt;span class=&quot;caps&quot;&gt;SMS&lt;/span&gt; oder &amp;#8211; wie hier &amp;#8211; mit einem Blog.&lt;/p&gt;
&lt;p&gt;Weihnachten ist nun vorbei, das neue Jahr hat begonnen und es sind sicher wieder einige Millionen E-Mails mit Weihnachts- und Neujahrsgrüßen verschickt worden. Dabei ist mir aufgefallen, dass es zwei Arten von Gruß-Mails/&lt;span class=&quot;caps&quot;&gt;SMS&lt;/span&gt; gibt: Persönliche und Unpersönliche.&lt;/p&gt;
&lt;p&gt;Wenn in einer Nachricht &amp;#8220;Hallo Hendrik&amp;#8221; steht, dann weiß ich, dass sich der Absender oder die Absenderin Gedanken gemacht hat, dass er/sie mir eine Nachricht schreibt. Wenn hingegen &amp;#8220;Hallo du/ihr!&amp;#8221; oder sowas in der Art drin steht, dann weiß ich das als Empfänger nicht. Das soll nun nicht bedeuten, dass ich solche Nachrichten nicht schätze. Es gibt nur keine Möglichkeit zu erkennen, ob hier willkürlich mal das ganze Adressbuch markiert (oder die Gruppe &amp;#8220;Bekannte und Freunde&amp;#8221; o.ä.), ein Text eingegeben und dann mal auf &amp;#8220;absenden&amp;#8221; geklickt wurde.&lt;/p&gt;
&lt;p&gt;In letzterem Fall würde ich gar behaupten, dass der Absender/die Absenderin gar keine Grüße sendet. Ok, das mag jetzt etwas philosophisch und haarspalterisch klingen, aber &amp;#8220;Wann ist ein Gruß ein Gruß?&amp;#8221; Für mich bedeutet ein Gruß oder ein Glückwunsch, dass ich zumindest kurz an den Empfänger denke und mir überlege, wie es ihm/ihr wohl gerade geht und dann eben schreibe, dass ich den Empfänger oder die Empfängerin grüße, ihm &amp;#8220;Frohe Weihnachten&amp;#8221; oder ihr &amp;#8220;Ein Frohes neues Jahr&amp;#8221; wünsche.&lt;/p&gt;
&lt;p&gt;Wer das hier liest und mir einen &amp;#8220;generischen Gruß&amp;#8221; gesendet hat, mag bitte nicht böse sein. Wie ich oben schrieb, kann es gut sein, dass alle Empfänger der Nachricht von Hand ausgesucht wurden und somit eigentlich doch in die von mir erfundene &amp;#8220;echte Gruß&amp;#8221; Kategorie fallen. Es gibt nur keine Möglichkeit das herauszufinden.&lt;/p&gt;
&lt;p&gt;Was ich mit diesem Post bewirken will ist, dass alle, die &amp;#8211; wie immer auch &amp;#8211; Grüße versenden, kurz darüber nachdenken, ob es vielleicht besser ist, einen persönlichen Gruß zu versenden. Der Empfänger könnte es zu schätzen wissen. Ich tue es bestimmt. :)&lt;/p&gt;</content><updated>2007-01-03T00:00:00+00:00</updated><link href='/2007/01/03/massengruesse/' rel='alternate'/></entry><entry><id>/2006/12/27/the-value-of-learning-and-programming-languages</id><title type='text'>The value of learning and programming languages</title><content type='html'>&lt;p&gt;Sometimes I wander around or take a shower and then it just strikes me. Something becomes absolutely clear in my mind and I begin to understand an idea or something I thought about for a long time.&lt;/p&gt;
&lt;p&gt;It happened again this morning when I was walking from the bus stop to the office. I thought about which new programming language I want to learn next year (Part of Tip 8 of &amp;#8220;The Pragmatic Programmer&amp;#8221; book) and about learning in general. I think I found the value of learning for myself. &lt;/p&gt;
&lt;p&gt;I want to learn a &lt;a href=&quot;http://en.wikipedia.org/wiki/Functional_programming_language&quot;&gt;functional programming language&lt;/a&gt; next year, because I haven&amp;#8217;t learned one yet and some aspects of functional programming find their way into &amp;#8220;everyday programming languages&amp;#8221; (not meaning that there aren&amp;#8217;t functional programming languages which can&amp;#8217;t be used for &amp;#8220;everyday tasks&amp;#8221;). Closures, for example. I love blocks in Ruby! Unfortunately closures will find their way into Java in Java 7 at the earliest. There isn&amp;#8217;t even a &lt;span class=&quot;caps&quot;&gt;JSR&lt;/span&gt; yet. It&amp;#8217;s on the &lt;a href=&quot;http://blogs.sun.com/ahe/entry/java_se_7_wish_list&quot;&gt;wish list&lt;/a&gt; . But I&amp;#8217;m loosing track.&lt;/p&gt;
&lt;p&gt;So I looked at &lt;a title=&quot;Haskell&quot; href=&quot;http://www.haskell.org&quot;&gt;Haskell&lt;/a&gt; which is a purely functional language. Then I found out that it has syntactically relevant white space, which is&amp;#8230; let&amp;#8217;s say something you have to get used to (and I never really liked in &lt;a href=&quot;http://www.python.org&quot;&gt;Python&lt;/a&gt; ). Another point which I found why not to choose Haskell was: There are no &amp;#8220;real&amp;#8221; applications out there written in Haskell. There are of course a lot of applications written in Haskell but they seem to be some fun or research projects and no &amp;#8220;End user&amp;#8221; application among them.&lt;/p&gt;
&lt;p&gt;So why learn something which I wouldn&amp;#8217;t be able to use &amp;#8220;in real life&amp;#8221;. Alternatives I have considered are &lt;a title=&quot;The Caml Language&quot; href=&quot;http://caml.inria.fr/&quot;&gt;OCaml&lt;/a&gt; which is used in some &amp;#8220;real&amp;#8221; applications put it&amp;#8217;s not a purely functional language and &lt;a href=&quot;http://erlang.org/&quot;&gt;Erlang&lt;/a&gt; which seems to be focused on concurrency and actually was created in a &amp;#8220;real life&amp;#8221; environment. There&amp;#8217;s even a Web framework for Erlang available now: &lt;a href=&quot;http://erlyweb.org/&quot;&gt;ErlyWeb&lt;/a&gt; .&lt;/p&gt;
&lt;p&gt;Then I thought: OK. So I want to learn something about functional programming. Haskell is a purely functional Language so why should I care whether I can use the language for anything useful at all? The answer is: I shouldn&amp;#8217;t care! The learning process itself is the value I get out of it (and of course the functional way of thinking of programs)! And that&amp;#8217;s the main goal of this whole &amp;#8220;learning a new language&amp;#8221; experience, isn&amp;#8217;t it?&lt;/p&gt;
&lt;p&gt;That could be the whole point about learning in general. Of course it matters what I learn (if I want to use the knowledge or skills I learned). But if I learned nothing useful at all, I still learned something about learning. That may sound a bit self referential but I think that&amp;#8217;s what excites me about learning new things. That&amp;#8217;s a good motivation for learning. The process of learning something new is so interesting that it doesn&amp;#8217;t really matter what I learn.&lt;/p&gt;</content><updated>2006-12-27T00:00:00+00:00</updated><link href='/2006/12/27/the-value-of-learning-and-programming-languages/' rel='alternate'/></entry><entry><id>/2006/12/24/merry-christmas</id><title type='text'>Merry Christmas!</title><content type='html'>&lt;p&gt;Enjoy the holidays!&lt;/p&gt;</content><updated>2006-12-24T00:00:00+00:00</updated><link href='/2006/12/24/merry-christmas/' rel='alternate'/></entry><entry><id>/2006/12/16/windows-task-manger-fun</id><title type='text'>Windows Task manger fun</title><content type='html'>&lt;p&gt;I never liked Windows, but in the last years I learned to live with it. But sometimes it reminds me why I will never ever even consider liking it. Check this out:&lt;/p&gt;
&lt;p&gt;&lt;img height=&quot;382&quot; alt=&quot;taskmanager&quot; src=&quot;http://sundevil.de/hendrik/wp-content/uploads/2006/12/taskmanager.jpg&quot; width=&quot;447&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Some process got wild and I wanted to kill it using the Task Manager &amp;#8211; which apparently caused the task manager to go nuts as well. I&amp;#8217;ve seen processes which I couldn&amp;#8217;t kill in Linux but I never saw &amp;#8220;kill&amp;#8221; itself go crazy.&lt;/p&gt;</content><updated>2006-12-16T00:00:00+00:00</updated><link href='/2006/12/16/windows-task-manger-fun/' rel='alternate'/></entry><entry><id>/2006/12/11/baby-saugt-an-burst-der-mutter-klage-wegen-sexueller-belaestigung</id><title type='text'>Baby saugt an Burst der Mutter: Klage wegen sexueller BelÃ¤stigung</title><content type='html'>&lt;p&gt;&amp;#8230; naja, die Überschrift habe ich nun erfunden. Aber lange dauert&amp;#8217;s wohl nicht mehr, bis es soweit ist:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.spiegel.de/panorama/justiz/0,1518,453730,00.html&quot;&gt;Vierjähriger der sexuellen Belästigung beschuldigt.&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Nicht anklicken. Vorher raten in welchem Land das geschehen ist&amp;#8230; Richtig! Das ist das Land, in dem nackte Menschen böse sind, aber angezogene mit Waffen kein Problem. -&lt;br /&gt;
Finde nur ich das krank? Und dann wundert man sich wahrscheinlich, wenn der Mensch in 10 Jahren ein gestörtes Verhältnis zur Sexualität hat.&lt;/p&gt;</content><updated>2006-12-11T00:00:00+00:00</updated><link href='/2006/12/11/baby-saugt-an-burst-der-mutter-klage-wegen-sexueller-belaestigung/' rel='alternate'/></entry><entry><id>/2006/12/07/remote-system-management-using-ms-windows</id><title type='text'>Remote system management using MS Windows</title><content type='html'>&lt;p&gt;or: Remote access the painful way&lt;/p&gt;
&lt;p&gt;If you are lucky enough to use the &lt;span class=&quot;caps&quot;&gt;RDC&lt;/span&gt; protocol it&amp;#8217;s not that painful. But if you are forced to use something like PC Anywhere via a dialup line and then &lt;span class=&quot;caps&quot;&gt;VNC&lt;/span&gt; to another machine. Oh boy, that&amp;#8217;s just pure pain. I had to do something like this yesterday and I really wished I had a simple &lt;span class=&quot;caps&quot;&gt;SSH&lt;/span&gt; connection.&lt;/p&gt;
&lt;p&gt;Who came up with this stupid &amp;#8220;a server OS needs a &lt;span class=&quot;caps&quot;&gt;GUI&lt;/span&gt;, too&amp;#8221;-idea in the first place? Being forced to use a &lt;span class=&quot;caps&quot;&gt;GUI&lt;/span&gt; on a server is just plain stupid and being forced to use it for Remote Access is even worse. I know there&amp;#8217;s &lt;span class=&quot;caps&quot;&gt;SSH&lt;/span&gt; for Windows and stuff&amp;#8230; but it&amp;#8217;s not in the standard distribution and probably never will be. I don&amp;#8217;t want to imagine the Vista based Server OS from Microsoft and how the &lt;span class=&quot;caps&quot;&gt;GUI&lt;/span&gt; will look then.&lt;/p&gt;</content><updated>2006-12-07T00:00:00+00:00</updated><link href='/2006/12/07/remote-system-management-using-ms-windows/' rel='alternate'/></entry><entry><id>/2006/12/07/nette-busfahrer</id><title type='text'>Nette Busfahrer</title><content type='html'>&lt;p&gt;Ich bin heute wie jeden Tag zur Bushaltestelle gelaufen. Zur meiner Überraschung kam der Bus dann schon angefahren (laut meiner Uhr ca. 2 Minuten zu früh). Glücklicherweise sind noch andere Leute eingestiegen, so dass der Bus warten musste.&lt;/p&gt;
&lt;p&gt;Als ich rennend an der hinteren der drei Türen ankam, bemerkte ich, wie die LEDs in den Türöffnungsschaltern erloschen. Vielen Dank, Herr Busfahrer. Der hat mich garantiert anrennen sehen.&lt;/p&gt;
&lt;p&gt;Glücklicherweise ging sein Plan nicht auf und ich konnte in die noch offene mittlere Tür einsteigen.&lt;/p&gt;
&lt;p&gt;Es ist doch schön zu sehen, wie Menschen, gerade in der Weihnachtszeit aufeinander achten und nett zueinander sind.&lt;/p&gt;</content><updated>2006-12-07T00:00:00+00:00</updated><link href='/2006/12/07/nette-busfahrer/' rel='alternate'/></entry><entry><id>/2006/11/28/precrime-endlich</id><title type='text'>PreCrime - Endlich!</title><content type='html'>&lt;p&gt;Wurde ja auch langsam Zeit! Kann ja nicht sein, dass tausende potentielle Mörder und Sexualstraftäter frei rum laufen. Wo kommen wir denn da hin!? Endlich soll es sowas wie &lt;a href=&quot;http://www.spiegel.de/panorama/justiz/0,1518,451021,00.html&quot;&gt;PreCrime geben&lt;/a&gt;. Im Unterschied zum &lt;a href=&quot;http://www.imdb.com/title/tt0181689/&quot;&gt;Film&lt;/a&gt; jedoch nicht in Washington sondern in Grossbritanien.&lt;/p&gt;
&lt;p&gt;Die Leute, die solche Ideen haben sollten diesen Film vielleicht nochmal anschaün, um das Gefahrenpotential zu sehen&amp;#8230; oder wenn das zu schwer ist: Einfach mal überlegen, was dort mit dem Unterstützer des Programms am Ende passiert&amp;#8230;&lt;/p&gt;
&lt;p&gt;Was war noch gleich die &lt;a href=&quot;http://de.wikipedia.org/wiki/Unschuldsvermutung&quot;&gt;Unschuldsvermutung&lt;/a&gt;? Brauchen wir sowas noch? Ach nee, das würde ja bedeuten, dass wir in einem &lt;a href=&quot;http://de.wikipedia.org/wiki/Rechtsstaatsprinzip&quot;&gt;Rechtsstaat&lt;/a&gt; leben und die Menschenrechte irgendwie für echte Rechte halten. Sowas geht natürlich in so harten Zeiten mit Mördern und so nicht. Wo kämen wir denn da hin?&lt;/p&gt;</content><updated>2006-11-28T00:00:00+00:00</updated><link href='/2006/11/28/precrime-endlich/' rel='alternate'/></entry><entry><id>/2006/11/28/killerspiele-bei-christiansen</id><title type='text'>Killerspiele bei Christiansen</title><content type='html'>&lt;p&gt;Ich habe gestern mehr oder weniger zufällig Chrstiansen angeschaut und da ich gerade Emails gecheckt hatte, war der Rechner noch an. Als ich dann das Thema &amp;#8220;Killerspiele&amp;#8221; bzw. Gewalt bei Jugendlichen mitbekommen habe, dachte ich. Da tippst du mal selbst bissle mit und bloggst das dann. Hier das das Ergebnis. Ist &amp;#8217;ne Art Protokoll. Eigene Kommentare sind kursiv.&lt;/p&gt;
&lt;p&gt;Titel der Sendung war &amp;quot;Randale, prügeln, &amp;#8220;ballern&amp;#8221; &amp;#8211; was tun gegen Gewalt?&amp;quot;&lt;/p&gt;
&lt;p&gt;Gäste in der Diskussionsrunde sind:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Willi Lemke (Senator für Bildung und Wissenschaft in Bremen, &lt;span class=&quot;caps&quot;&gt;SPD&lt;/span&gt;)&lt;/li&gt;
&lt;li&gt;Ralf Möller (Schauspieler)&lt;/li&gt;
&lt;li&gt;Susanne Fröhlich (Autorin, Moderatorin)&lt;/li&gt;
&lt;li&gt;Udo Nagel (Innensenator von Hamburg, parteilos)&lt;/li&gt;
&lt;li&gt;Harald Dörig (Förderverein Gutenberg-Gymnasium Erfurt)&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;Im Studiopublikum&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Christian Chmiel (mehrfacher Meister &amp;#8220;counter strike&amp;#8221;)&lt;/li&gt;
&lt;li&gt;Önder Kurt (Streetworker in Berlin-Wedding)&lt;/li&gt;
&lt;li&gt;Dieter Bergmann (Berater für Seniorensicherheit)&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;Ziemlich schnell ist man sich einig: Probleme liegen in der Familie, zu wenige Dialoge, Emotionale Verwahrlosung. Aber trotzdem: &amp;#8220;Killerspiele&amp;#8221; müssen weg. &lt;em&gt;What? Wo ist da der zusammenhang? &lt;/em&gt;Christiansen schlägt Internet Überwachung vor! Suchbegriffe nach &amp;#8220;Amok&amp;#8221; etc. &lt;em&gt;Das ist &lt;span class=&quot;caps&quot;&gt;DIE&lt;/span&gt; Lösung.&lt;/em&gt; Problem bei Jugendlichen ist laut Herrn Nagel: Alle wissen was, aber keiner sagt bescheid. Amokläufe wird man nie verhindern können, sagt Hr. Nagel. Wili Lemke meint, &amp;#8220;Killerspiele&amp;#8221; seien der falsche Einstieg in eine solche Diskussion. Killerspiele seien blöd, aber keine Ursache! &amp;#8220;Alle Studien zeigen &amp;#8211; diese Spiele sind gefährlich&amp;#8221;. sagt Fr. Fröhlich. Gibt aber zu, dass es einen Schwarzmarkt gibt. Sie ist auch für Ganztagsschulen für Kinder.&lt;/p&gt;
&lt;p&gt;Chrstiansen geht immer wieder auf die Computerspiele los. Zum zweiten mal ein wird ein Ausschnitt von Counter Strike gezeigt. Nur Tötungszenen werden gezeigt. Keine taktischen Aspekte oder irgendwelche Details von Maps. Teams sind nicht erkennbar. Das Counter-Terrorist-Team gewinnt. &lt;em&gt;Passender wäre hier zum Thema &amp;#8220;Terrorists win&amp;#8221; gewesen.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Wili Lemke ist auch gegen Spiele, sagt aber auch, dass &amp;#8220;Spiele weg &amp;#8211; Problem gelöst&amp;#8221; nicht stimmt. &lt;em&gt;Man hat den Eindruck als wäre er eigentlich gar nicht so sehr gegen diese Spiele. Aber irgendwie sagt er dann doch nicht &amp;#8220;Die Spiele sind nicht das Problem &amp;#8211; also lassen wir die mal komplett aus der Diskussion raus&amp;#8221;.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Ich muss eben mal lachen.&lt;/em&gt; Herr Nagel von der Polizei sagt &amp;#8220;Verbote lösen Probleme hat man ja z.B bei Drogen gesehen.&amp;#8221;. &lt;em&gt;Genau &amp;#8211; Heroin und Crack, etc ist verboten und deswegen gibt&amp;#8217;s ja auch keine Probleme mit diesen Drogen mehr in Deutschland.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Fr. Fröhlich meint &amp;#8220;Ursache verbieten&amp;#8221;.&lt;/p&gt;
&lt;p&gt;Lemke meint, Verbot bringt nix. Weil Jugendliche Alles wieder runterladen. &amp;#8220;Was denken Sie wie lange ein Jungendlicher braucht, sich sowas wieder aus dem Internet zu laden? 5 Minuten?&amp;#8221;&lt;/p&gt;
&lt;p&gt;Herr Dörig ist auch für Verbot &amp;#8211; bei &amp;#8220;hoher Schwelle&amp;#8221;. Er sieht CS als eher Strategiespiel. Kurz Applaus im Publikum.&lt;/p&gt;
&lt;p&gt;Jetzt im Publikum der Pro-Spiele Gast: Christian Chmiel. War Zivildienstleistender und ist Gewaltgegner. Spielt seit 7 Jahren und es hat ihm offentsichtlich nicht geschadet.&lt;/p&gt;
&lt;p&gt;Herr Nagel kann Spiele die einen Totungsaspekt haben nicht als Strategiespiel sehen.&lt;/p&gt;
&lt;p&gt;Für Christiansen ist &amp;#8220;Internet&amp;#8221; = &amp;#8220;Killerspiel&amp;#8221;.&lt;/p&gt;
&lt;p&gt;Es stellt sich heraus: Waffen sind verboten und es wird ein Schwarzmarkt geben. &lt;em&gt;Sehe nur ich hier eine Parallele zum Killerspielverbot?&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Möller: Berieselung ist das Problen (Fernsehen etc. ) Die Selbstachtung bei Jungendlichen fehlt.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Es ist unglaublich, wie Fr. Christiansen manchmal ihre Zähne nicht auseinander bekommt.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Hr. Lemke meint, dass Problem sei zu wenig Zuwendung. Kinder müssen durch Liebe gestärkt werden.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Alle denken irgendwie: Killerpsiele ist nicht das Problem. Aber trotzdem sollte man die erstmal verbieten.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Flimausschnitt von Film &amp;#8220;Pathfinder&amp;#8221; mit Ralf Möller. Man sieht ein wenig Schwertmetzelei. Nix besonderes. Kein Blut o.ä.. Ist wohl ab 12 Jahre, der Film. Möller kann das kaum glauben, meint der sei in &lt;span class=&quot;caps&quot;&gt;USA&lt;/span&gt; bestimmt ab 13 bzw. ab 17/18 (nennt das &amp;#8230;-Rating-Pendant für dieses Alter).&lt;/p&gt;
&lt;p&gt;Großer Unterschied: Selbst machen bei Spiel &amp;#8211; nur angucken beim Film. Fr. Fröhlich &amp;#8220;alle Studien&amp;#8221; sagen: Die Menge des Konsums ist entscheidend.&lt;/p&gt;
&lt;p&gt;Hr. Möller hat den Abschiedsbrief wirklich gelesen. Sieht daraus: Großer Leistungsdruck in der Gesellschaft.&lt;/p&gt;
&lt;p&gt;Fr. Fröhlich findet &amp;#8220;jede Untersuchng&amp;#8221; toll. &lt;em&gt;Schön, dass sie alle gelesen hat.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;5% der Spieler werden zu Amokläufern bzw. Gewalttätern (Fr. Fröhlich) &amp;#8220;95% aller Computerspieler sind ja nicht gewalttätig&amp;#8221;.&lt;/p&gt;
&lt;p&gt;Müller stellt die Kampagne &amp;#8220;&amp;#8221;http://www.ralf-moeller.de/sonstiges/starketypen.php&amp;quot;&amp;gt;Starke Typen&lt;/a&gt;&amp;quot; vor. Ziel istWerte vermitteln. Zeigen, wie schwer es für ihn selbst (und andere) war erfolgreich zu werden. Es sollen Perspektiven vermittelt werden. Dazu werden Unternehmer sowie Leute aus Sportvereinen an Schulen gebracht um zu erzählen und auch Ausbildungsplätze anzubieten.&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;
Publikumsgast: Önder Kurzt:&lt;br /&gt;
Frust und Perspektivlosigkeit bei Jugendlichen ist das Hauptproblem.&lt;br /&gt;
Unternehmen haben teilweise noch Vorurteile gegenüber &amp;#8220;Menschen mit Migrationshintergrund&amp;#8221;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;
Lemke: Jeder Schüler hat Stärken! Die Stärken müssen gefunden werden. Diese Schüler müssen in Praktikumsplätze vermittelt werden. Unternehmemer müssen mit machen.&lt;/p&gt;
&lt;p&gt;Fröhlich: Die Änderungen müssen finanziert werden. Unterstützung von Schülern etc. Schüler müssen lernen mit Aggression und Frustration unzugegen.&lt;/p&gt;
&lt;p&gt;Döring: Haftplatz ist teurer als Schulbildung. Geld sollte für Förderung der Schulen etc. eingesetzt werden.&lt;/p&gt;
&lt;p&gt;Nagel: Nicht nur Werte sind wichtig. Sondern auch Grenzen. &lt;em&gt;Ich glaube zu wissen, was er meint. Kam aber irgendwie so als der Hardliner rüber. Nach dem Motto: Das ganze Pädagogenzeugs bringt doch nix. Man muss einfach hart durchgreifen.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;
&lt;em&gt;Es stellt sich für mich über die ganze Sendung hinweg irgendwie immer wieder der Grundtenor da: Im Endeffekt sind alle einig, das Killerspiele sind nicht die Ursache von Amokläufen sind, aber das Problem mit der Schule etc. zu lösen, wäre zu schwer, also verbieten wir mal die Spiele. Dann haben wir wenigstens etwas getan.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Glücklicherweise wurde das Killerspielthema nur am Anfang etwas durchgekaut, danach war das ne relativ sinnvolle Diskussion. Komischerweise sind Themen wie Gewalt in anderen Medien (Fernsehen, Kino) bzw. Gewalt unter Jugendlichen nicht tiefergehend diskutiert worden.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Immer mal wieder kam ein Satz nach dem Motto &amp;#8220;ja, diese Killerspiele sind ja ganz böse &amp;#8211; wenn auch nicht ursächlich für Gewalttaten &amp;#8211; und müssen weg.&amp;#8221;.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Meine Meinung dazu, habe ich ja vor kurzem schon beschrieben: Wenn man mit entsprechenden Werten aufwächst, dann hat man auch kein Problem damit am Computer Pixelgestalten (auch Menschen) zu zerfetzen und dies im echten Leben nicht zu tun. Mal abgesehen davon, dass es zwischen verschiedenen Egoshootern gravierende Unterschiede gibt.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Wenn man jedoch sowieso keine hohe Achtung vor dem Leben an sich hat, dann sieht man vielleicht keinen Unterschied zwischen den Pixeln auf dem Bildschirm und einem echten Menschen und bringt dann vielleicht beide um. Das Problem ist hier jedoch nicht das Spiel &amp;#8211; das vielleicht sogar die Hemmschwellle &lt;span class=&quot;caps&quot;&gt;NOCH&lt;/span&gt; weiter runtersetzt &amp;#8211; sondern die fehlende Wertvorstellung am Anfang. Und genau da sollte man ansetzen und nicht an den Symptomen rumdoktern und die Spiele verbieten.&lt;/em&gt;&lt;/p&gt;</content><updated>2006-11-28T00:00:00+00:00</updated><link href='/2006/11/28/killerspiele-bei-christiansen/' rel='alternate'/></entry><entry><id>/2006/11/22/wahlmaschinen-keine-gute-wahl</id><title type='text'>Wahlmaschinen - Keine gute Wahl!</title><content type='html'>&lt;p&gt;&lt;strong&gt;Ich möchte mich kurz halten, weil die Zeit knapp ist. Die&lt;/strong&gt; &lt;a href=&quot;http://itc.napier.ac.uk/e-Petition/bundestag/view_petition.asp?PetitionID=321&quot;&gt;&lt;strong&gt;Petition&lt;/strong&gt;&lt;/a&gt; &lt;strong&gt;zum Verbot von Wahlmaschinen läuft nächsten Dienstag (28.11.) aus. Bitte durchlesen und unterschreiben.&lt;/strong&gt; Die Petiton hat derzeit ca. 39000 Mitzeichner. (Wer sich wundert, warum das Ding auf einem Server im UK läuft: &lt;a href=&quot;http://www.bundestag.de/ausschuesse/a02/onlinepet/server.html&quot;&gt;Antwort&lt;/a&gt; .)&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;Warum sollte ich unterschreiben? Sollte nach dem durchlesen der Petition klar sein. Hier ist&amp;#8217;s nochmal etwas &lt;a href=&quot;https://berlin.ccc.de/wiki/Anti-Wahlcomputer-Petition#Warum_sollte_ich_die_Petition_unterschreiben.3F&quot;&gt;genauer erläutert&lt;/a&gt; .&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;Wer sich für die ganzen technischen Hintergründe nicht interessiert, kann sich diesen Comic anschauen, um zu verstehen, wie das mit den Wahlcomputern prinzipiell vor sich geht: &lt;a href=&quot;https://berlin.ccc.de/wiki/Der_Wahlschrank&quot;&gt;Der Wahlschrank&lt;/a&gt; .&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;Es gibt diverse Videos und Infos im Internet zum Thema &lt;a href=&quot;http://www.google.de/search?q=Wahlcomputer+manipulation&quot;&gt;Wahlcomputer und deren Manipulation&lt;/a&gt;. Dass sowas in der Tat schon mal aktiv &amp;#8220;im echten Leben&amp;#8221;, versucht wurde, sieht man z.B. in den &lt;span class=&quot;caps&quot;&gt;USA&lt;/span&gt;: &lt;a href=&quot;http://www.hack247.co.uk/2006/11/02/american-election-hacker-testifies/&quot;&gt;Ein Hacker bestätigt eine Manipulation vor Gericht&lt;/a&gt; .&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;Interessant und erschreckend finde ich, das viele diesem System einfach mal blind vertrauen, obwohl sie es weder verstehen noch die Sicherheit nachprüfen können (siehe Ende des Artikels &lt;a href=&quot;http://www.ccc.de/updates/2006/bericht-ob-wahl-cottbus&quot;&gt;Oberbürgermeisterwahl in Cottbus&lt;/a&gt;). Das ist insofern unverständlich, als man normalerweise doch eher mißtrauisch gegenüber Dingen ist, die man nicht kennt. Aber wenn es auf einmal um wichtige Dinge, wie Macht und Demokratie geht, dann &amp;#8220;wird schon alles passen&amp;#8221;? Kann mir jemand diesen Sachverhalt mal erklären?&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;Wie technikkompetent die mit &amp;#8220;e-Government&amp;#8221; betrauten Personen sind, lässt sich auch gut daran erkennen, dass eine Petition max. 24.500 Unterschriften haben kann. Dann gibt&amp;#8217;s technische Probleme. Hatte wohl keiner erwartet, dass Bürger das System tatsächlich nutzen!?&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;Beispiele aus aktueller Vergangenheit, was so schief laufen kann:&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;Neben den technischen Sicherheitsbedenken gibt es weitere, organisatorische Bedenken zum Einsatz von Wahlcomputern. So zeigt sich z. B. bei der &lt;a href=&quot;http://www.ccc.de/updates/2006/bericht-ob-wahl-cottbus&quot;&gt;Oberbürgermeisterwahl in Cottbus&lt;/a&gt; dass die mit der Handhabung der Wahlcomputer betrauten Personen, nicht wissen, wo ggf. Angriffspunkte liegen bzw. warum gewissen Schritte durchgeführt werden (z.B. die Checksummenprüfung, Beobachtung des Geräts etc.). Erschreckend an diesem Bericht ist, wie ich finde, dass die Wahlleiter/-helfer teilweise die Rechtslage nicht kennen.&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;Ein weiteres Beispiel: Kongresswahl in den &lt;span class=&quot;caps&quot;&gt;USA&lt;/span&gt;. In Florida sin spontan mal&lt;a href=&quot;http://www.schneier.com/blog/archives/2006/11/voting_technolo.html&quot;&gt;18000 stimmmen verschwunden&lt;/a&gt;. Inzwischen wird wohl eine &lt;a href=&quot;http://www.schneier.com/blog/archives/2006/11/revoting.html&quot;&gt;Wiederholung der Wahl&lt;/a&gt; verlangt.&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;Weitere Links:&lt;/p&gt;&lt;br /&gt;
&lt;ul&gt;&lt;br /&gt;
&lt;li&gt;Analysen und Infos rund um &lt;a href=&quot;http://www.andreas.org/blog/?cat=14&quot;&gt;Wahlcomputer bei andreas.org&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;
&lt;li&gt;Infos zum Thema &lt;a href=&quot;https://berlin.ccc.de/wiki/Wahlcomputer&quot;&gt;Wahlcomputer beim &lt;span class=&quot;caps&quot;&gt;CCC&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/p&gt;</content><updated>2006-11-22T00:00:00+00:00</updated><link href='/2006/11/22/wahlmaschinen-keine-gute-wahl/' rel='alternate'/></entry><entry><id>/2006/11/22/killerspiele-verbieten-problem-geloest</id><title type='text'>Killerspiele verbieten - Problem gelÃ¶st.</title><content type='html'>&lt;p&gt;So einfach hätten es die Politiker gerne und wenn man die lauten Aufschreihe nach dem Vorfall in der Schule in Emsdetten vernimmt, dann muss man zu dem Schluss kommen, dass Politiker wirklich so denken.&lt;/p&gt;
&lt;p&gt;Ich frage ich mich dann immer, ob diese Menschen das einfach nicht besser wissen (und wirklich glauben was sie sagen) oder ob sie das einfach sagen, damit &amp;#8220;Ruhe&amp;#8221; ist, oder was gesagt wurde und eigentlich wissen, dass sie Bullshit verzapfen. Ich weiß auch nicht, welche Situation denn schlimmer ist.&lt;/p&gt;
&lt;p&gt;Im Jahre 2002 habe ich bereits kurz was zu dem Vorfall in Erfurt geschrieben. Damals unter der Thema &lt;a href=&quot;/2002/7/23/zensur-im-internet/&quot;&gt;Zensur&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Es gibt mehrere Gründe, warum ein Verbot von &amp;#8220;Killerspielen&amp;#8221; das Problem nicht löst.&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;Gehen wir mal davon aus, dass &amp;#8220;Killerspiele&amp;#8221; nichts mit dem Verhalten zu Tun haben. Davon gehe ich persönlich aus und bisher gibt es keine schlüssigen Untersuchungen die nahelegen, dass &amp;#8220;Killerspiele&amp;#8221; der Hauptgrund für Amokläufe sind. Wenn diese Spiele also nicht zu diesem Verhalten führen, warum sollte man diese dann verbieten? Warum soll Tausenden friedlichen Menschen ein Unterhaltungsmedium vorenthalten bleiben, weil ein Mensch einen Fehler begeht?&lt;/li&gt;
	&lt;li&gt;Gehen wir davon aus, dass wirklich die &amp;#8220;Killerspiele&amp;#8221; Auslöser für das Verhalten waren. Was würde ein Verbot dann bringen? Waffenbesitz ist in Deutschland sehr eingeschränkt und quasi für den normalsterblichen &amp;#8220;verboten&amp;#8221;. Hat das diesen Menschen davon abgehalten Waffen zu besitzen und sie einzusetzen, um Menschen zu töten?&lt;/li&gt;
	&lt;li&gt;Generell lösen Verbote das Problem nicht. Wer sich den &lt;a href=&quot;http://www.n-tv.de/734961.html&quot;&gt;Abschiedsbrief&lt;/a&gt; des 18-Jährigen durchgelesen hat und immer noch glaubt, dass &amp;#8220;Killerspiele&amp;#8221; der Auslöser des Durchdrehens waren, der kann wohl lesen, aber nicht verstehen. Ich frage mich, wie viele Politiker wirklich diesen Brief mal gelesen haben und überlegen, was die wirklichen Gründe für das Verhalten sind.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Ich denke, der Täter war einfach zur verzweifelt und wollte Aufmerksamkeit. Die hat er jetzt bekommen. Das Bild was sich mir durch den Brief erschließt ist das eines intelligenten, jungen Menschen, der verzweifelt ist und keinen Sinn mehr im Leben sieht. Für mich ist das kein blutrünstiger, durch Computerspiele abgerichteter Irrer, der meint, Spiele in die Realität umsetzen zu müssen, sondern einfach ein sehr verzweifelter Mensch, der keinen Ausweg mehr aus seiner Situation sieht und ein letztes Mal &amp;#8211; vielleicht ein einziges Mal &amp;#8211; Beachtung finden will. Leider ist es heutzutage so, dass man durch schlechte Taten leichter Beachtung findet, als durch gute.&lt;/p&gt;
&lt;p&gt;Hier ein allgemeines Problem in unserer Gesellschaft zu sehen und &lt;span class=&quot;caps&quot;&gt;DIESES&lt;/span&gt; Problem zu adressieren, halten Politiker wohl nicht für nötig &amp;#8211; oder sie sehen es wirklich nicht, was sehr traurig wäre. Das ist leider auch etwas komplexer und schwieriger als &amp;#8220;Wir verbieten Killerspiele und alles wird gut&amp;#8221; und nicht sehr medienwirksam.&lt;/p&gt;
&lt;h2&gt;Weitere Artikel zu diesem Thema&lt;/h2&gt;
&lt;ul&gt;
	&lt;li&gt;&lt;a href=&quot;http://www.spiegel.de/wissenschaft/mensch/0,1518,449843,00.html&quot;&gt;Rohrkrepierer gegen Ballerspiele&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href=&quot;http://www.heise.de/newsticker/Kritik-an-naiver-Scheindebatte-um-das-Verbot-von-Killerspielen--/meldung/81375&quot;&gt;Kritik an &amp;#8220;naiver Scheindebatte&amp;#8221; um das Verbot von &amp;#8220;Killerspielen&amp;#8221;&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;</content><updated>2006-11-22T00:00:00+00:00</updated><link href='/2006/11/22/killerspiele-verbieten-problem-geloest/' rel='alternate'/></entry><entry><id>/2006/11/22/blog-what</id><title type='text'>Blog-what?</title><content type='html'>&lt;p&gt;That&amp;#8217;s funny. A desktop blogging client which spell check dictionary doesn&amp;#8217;t know the word &amp;#8220;blog&amp;#8221;. It doesn&amp;#8217;t know &amp;#8220;blogging&amp;#8221; either.&lt;/p&gt;
&lt;p&gt;&lt;img height=&quot;213&quot; alt=&quot;log-desk&quot; src=&quot;http://sundevil.de/hendrik/wp-content/uploads/2006/11/log-desk.jpg&quot; width=&quot;450&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Apart from that I really like &lt;a href=&quot;http://www.blogdesk.org/&quot;&gt;BlogDesk&lt;/a&gt; so far.&lt;/p&gt;</content><updated>2006-11-22T00:00:00+00:00</updated><link href='/2006/11/22/blog-what/' rel='alternate'/></entry><entry><id>/2006/11/15/huebsche-windows-fonts</id><title type='text'>HÃ¼bsche Windows Fonts</title><content type='html'>&lt;p&gt;Gestern habe ich &lt;a href=&quot;http://www.microsoft.com/typography/ClearTypeInfo.mspx&quot;&gt;ClearType&lt;/a&gt; entdeck: Anti-Aliasing für Windows Fonts. Keine Ahnung warum das jahrelang an mir vorbei gegangen ist. Dazu die passende &lt;a href=&quot;http://www.microsoft.com/downloads/details.aspx?familyid=22e69ae4-7e40-4807-8a86-b3d36fab68d3&amp;amp;displaylang=en&quot;&gt;Consolas Font&lt;/a&gt; (wer kein Visual Studio hat, kann mit Hilfe von Google auch andere Quellen für die Schrift finden&amp;#8230;) und schon sehen sogar Websphere Logmeldungen hübsch aus:&lt;/p&gt;
&lt;p&gt;&lt;img height=&quot;79&quot; alt=&quot;consola font&quot; src=&quot;http://sundevil.de/hendrik/wp-content/uploads/2006/11/consola_font-1.jpg&quot; width=&quot;321&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Sogar Java-Code kann damit schön aussehen:&lt;br /&gt;
&lt;img height=&quot;125&quot; alt=&quot;consolas code&quot; src=&quot;http://sundevil.de/hendrik/wp-content/uploads/2006/11/consolas_code.jpg&quot; width=&quot;428&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Ein richtiger Augenschmaus ist Firefox 2.0 mit dem schicken Spiegeleffekt in den Tabs (keine Ahnung wie man das wirklich nennt. &amp;#8220;Vista&amp;#8221;-&lt;span class=&quot;caps&quot;&gt;GUI&lt;/span&gt;?) und AA-Fonts:&lt;/p&gt;
&lt;p&gt;&lt;img height=&quot;197&quot; alt=&quot;aa firefox&quot; src=&quot;http://sundevil.de/hendrik/wp-content/uploads/2006/11/aa_firefox.jpg&quot; width=&quot;269&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Die Umstellung von normalen Schriften auf AA-Schriften ist erstmal echt ungewohnt. Man gewöhnt sich aber schnell dran und es sieht für meinen Geschmack deutlich besser, und runder, aus.&lt;/p&gt;</content><updated>2006-11-15T00:00:00+00:00</updated><link href='/2006/11/15/huebsche-windows-fonts/' rel='alternate'/></entry><entry><id>/2006/11/14/morgens-halb-11-in-deutschland</id><title type='text'>Morgens halb 11 in Deutschland</title><content type='html'>&lt;p&gt;Windows XP entschließt sich spontan meinen &lt;span class=&quot;caps&quot;&gt;USB&lt;/span&gt;-Hub (des Monitors) neu zu finden und zu installieren. Es erscheinen lustige &lt;span class=&quot;caps&quot;&gt;USB&lt;/span&gt;-Sybmole im System-Tray und schlußendlich eine gelbe Info-Sprechblase: &amp;#8220;Die Hardware ist nun eingerichtet und kann benutzt werden&amp;#8221;. Fantastisch. War zwar vorher auch so, aber wenigstens ist nix kaputt.&lt;/p&gt;
&lt;p&gt;Manchmal passieren hier komische Dinge.&lt;/p&gt;</content><updated>2006-11-14T00:00:00+00:00</updated><link href='/2006/11/14/morgens-halb-11-in-deutschland/' rel='alternate'/></entry><entry><id>/2006/11/06/mathematics-in-current-education-systems</id><title type='text'>Mathematics in current education systems</title><content type='html'>&lt;p&gt;This is funny: Incidentally I read &lt;a href=&quot;http://steve-yegge.blogspot.com/2006/03/math-for-programmers.html&quot;&gt;two&lt;/a&gt; &lt;a href=&quot;http://headrush.typepad.com/creating_passionate_users/2006/11/why_does_engine.html&quot;&gt;blog posts&lt;/a&gt; about our (they actually mean the U.S. but I think it&amp;#8217;s the same in Germany) education system and how it sucks regarding math or science subjects in general.&lt;/p&gt;
&lt;p&gt;Kathy Sierra mentioned the &lt;a href=&quot;http://www.ted.com/tedtalks/tedtalksplayer.cfm?key=ken_robinson&amp;amp;flashEnabled=1&quot;&gt;&lt;span class=&quot;caps&quot;&gt;TED&lt;/span&gt; talk by Sir Ken Robinson&lt;/a&gt;. It&amp;#8217;s brilliant. You definitely have to check it out!&lt;/p&gt;</content><updated>2006-11-06T00:00:00+00:00</updated><link href='/2006/11/06/mathematics-in-current-education-systems/' rel='alternate'/></entry><entry><id>/2006/11/01/verabreden-gestern-und-heute</id><title type='text'>Verabreden gestern und heute</title><content type='html'>&lt;p&gt;Da stand ich letzte Woche abends an der Bushaltestelle und wollte abends von der Arbeit nach Hause fahren und sehe diesen ca. 13 jährigen Jungen neben mir stehen.&lt;/p&gt;
&lt;p&gt;Er telefoniert &amp;#8211; offensichtlich mit seiner Mutter. &amp;#8220;Ich bin dann etwa in 20 Minuten zu Hause&amp;#8230;&amp;#8221;. Als er auflegt, sehe ich, dass er ein &lt;a href=&quot;http://www.motorola.com/motoinfo/product/details.jsp?globalObjectId=69&quot;&gt;Motorola V3 Razr&lt;/a&gt; in der Hand hält. Vielleicht war es auch der Vorgänger. Jedenfalls ein Handy für viel Geld.&lt;/p&gt;
&lt;p&gt;Richtig überrascht oder geschockt war ich nicht. Eher verwundert, dass er nicht noch &amp;#8217;ne &lt;span class=&quot;caps&quot;&gt;SMS&lt;/span&gt; danach geschrieben hat oder ein neues Spiel ausprobiert hat, sondern das Handy gleich weggesteckt hat. Schien gut erzogen zu sein der Junge.&lt;/p&gt;
&lt;p&gt;Diese Handy-Allgegenwärtigkeit geht mir langsam auf den Keks. In gewissen Situtationen ist ein Handy durchaus hilfreich und auch sinnvoll. Aber irgendwie ist es auch traurig, dass man sich kaum mehr verabreden kann, in dem man sagt &amp;#8220;Wir treffen uns um 20:00 am Schloßplatz bei den Treppen beim Wittwer&amp;#8221; und dann sind einfach alle, die da sein wollen da. Heute sagt man &amp;#8220;kommt mal 20:00 in die Stadt, wir telefonieren dann nochmal.&amp;#8221;&lt;/p&gt;
&lt;p&gt;Ich frage mich, ob der junge Mann von der Bushaltestelle sich jemals ohne Handy wird verabreden (können)? Er wird sich sicher ohne Handy nackt fühlen &amp;#8211; und ich tue es teilweise auch. Aber eben auch nur, weil alle davon ausgehen, dass man es immer dabei hat. Man muss sich fast schon rechtfertigen, warum man sein Handy nicht dabei hat.&lt;/p&gt;
&lt;p&gt;Komischerweise konnte man sich früher auch ohne Handy verabreden. Man war nicht ganz so flexibel, aber irgendwie auch zuverlässiger. Man wußte, wenn ich nicht da bin, dann ist der/die andere umsonst angereist. Da hatte man mehr Verantwortung zu tragen.&lt;/p&gt;</content><updated>2006-11-01T00:00:00+00:00</updated><link href='/2006/11/01/verabreden-gestern-und-heute/' rel='alternate'/></entry><entry><id>/2006/10/31/aerger-mit-zone-alarm</id><title type='text'>Ãrger mit Zone Alarm</title><content type='html'>&lt;p&gt;Auf meinem Firmenlaptop ist seit kurzem eine neue &lt;a title=&quot;Zone Alarn&quot; href=&quot;http://www.zonelabs.com/&quot;&gt;Zone-Alarm&lt;/a&gt; Version installiert, die nur noch nervt. Ich bin sowieso kein Fan von &amp;#8220;&amp;#8221;http://de.wikipedia.org/wiki/Personal_Firewall&amp;quot;&amp;gt;Personal-Firewalls&lt;/a&gt;&amp;#8220;, weil sie eigentlich &amp;#8221;Personal Firewalls austricksen&amp;quot; href=&amp;#8220;http://home.arcor.de/nhb/pf-austricksen.html&amp;#8221;&amp;gt;gegen echte Angreifer relativ nutzlos sind&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Nichtsdestotrotz will man sich natürlich an die vorgegebenen Firmen-Sicherheitsrichtlinen halten. Aber diese Version nervt nur noch. Erstmal löscht sie spontan Session-Cookies der lokalen Websphere-Testumgebung, so dass man quasi nie Zugriff auf eine Session hat. Bestimmt gibt es irgendwo &amp;#8217;ne Einstellung, das zu deaktivieren. Man müsste sicher nur etwa 5 Stunden suchen.&lt;/p&gt;
&lt;p&gt;Außerdem fragt das Teil bei wirklich jeder Aktion, die irgendein Programm macht, nach ob dieses Programm das wirklich darf. &amp;#8220;XY ist potentiell Böse, es überwacht Maus und Tastaturbewegungen&amp;#8221;. &amp;#8220;Task Manager will ein Programm beenden. Darf der das?&amp;#8221;. (Ja, darf er&amp;#8230; das ist der Haupteinsatzzweck dieses Programmes&amp;#8230; zumindest bei mir.) Ich weiß nicht welche System-APIs von Zone Alarm da überwacht werden, aber eins weiß ich sicher: Als Angreifer würde ich zunächst mal Zone Alarm angreifen und könnte dann schön alle Programme überwachen.&lt;/p&gt;
&lt;p&gt;Die typische Reaktion bei zu vielen &amp;#8220;Sind sie sicher?&amp;#8221;-Dialogen ist: Ignorieren bzw. einfach das tun, was einen weiter arbeiten lässt. Mit Tausend &amp;#8220;sind sie sicher?&amp;#8221;-Fragen funktioniert Sicherheit einfach nicht. Im Linux-Magazin war zu diesem Thema vor ein paar Monaten mal ein netter (und technisch fundierter) Artikel. (Vielleicht such ich ihn noch raus).&lt;/p&gt;
&lt;p&gt;Und irgendwie häufen sich die Berichte, dass diese ganze &amp;#8220;Sind sie sicher?&amp;#8221;-Dialoggeschichte in &lt;a href=&quot;http://www.37signals.com/svn/posts/84-web-developers-microsoft-has-no-idea-whats-going-on&quot;&gt;Windows Vista nicht besser wird&lt;/a&gt;.&lt;/p&gt;</content><updated>2006-10-31T00:00:00+00:00</updated><link href='/2006/10/31/aerger-mit-zone-alarm/' rel='alternate'/></entry><entry><id>/2006/10/30/fedora-upgrade-vs-kubuntu-installation-fun</id><title type='text'>Fedora upgrade vs. Kubuntu installation fun</title><content type='html'>&lt;p&gt;So &lt;a href=&quot;http://fedora.redhat.com/&quot;&gt;Fedora Core 6&lt;/a&gt; and (&lt;a href=&quot;http://www.kubuntu.com&quot;&gt;K&lt;/a&gt;)&lt;a href=&quot;http://www.ubuntu.com&quot;&gt;Ubuntu&lt;/a&gt; 6.10 were almost released at the same time last week. First, I tried to upgrade Fedora which failed because of some  package dependencies yum couldn&amp;#8217;t resolve. I have never done a Fedora Update without any hassle. It&amp;#8217;s quite annoying. I wanted to switch back to a Debian based system anyway so I decided to give Kubuntu a try (I&amp;#8217;m more a &lt;span class=&quot;caps&quot;&gt;KDE&lt;/span&gt; user than a Gnome user, hence the K).&lt;/p&gt;
&lt;p&gt;I downloaded the Live-CD image, burned it, booted off it and tried to install&amp;#8230; realizing the main reason why I&amp;#8217;m using Fedora right now: The ability to seamlessly install on a Software &lt;span class=&quot;caps&quot;&gt;RAID&lt;/span&gt; / &lt;span class=&quot;caps&quot;&gt;LVM&lt;/span&gt; setup. Ubuntu doesn&amp;#8217;t support that out of the box. It may be possible with some teawking and stuff&amp;#8230; but I&amp;#8217;m tired of all that. I did enough &lt;span class=&quot;caps&quot;&gt;RAID&lt;/span&gt; / &lt;span class=&quot;caps&quot;&gt;LVM&lt;/span&gt; installations manually back in the day using Debian, Gentoo and whatnot. It was fun, it worked, but I&amp;#8217;m lazy now and I want to have some nice installer do all that for me. Fedora does exactly that (but yum just isn&amp;#8217;t as good as apt). Example (And I don&amp;#8217;t have any fancy external repos configured&amp;#8230; at least not many ;) &amp;#8211; anyway yum should be able to handle that):&lt;br /&gt;
&lt;pre&gt;Error: Unable to satisfy dependencies&lt;br /&gt;
Error: Package elfutils-libs conflicts with elfutils &amp;lt; 0.123-1.fc6.&lt;br /&gt;
Error: Package elfutils needs elfutils-libelf = 0.119-1.2.1, this is not available.&lt;br /&gt;
Error: Package elfutils-libelf conflicts with elfutils &amp;lt; 0.123-1.fc6.&lt;br /&gt;
Error: Package cyrus-sasl-plain needs cyrus-sasl-lib = 2.1.21-10, this is not available.&lt;br /&gt;
Error: Package hal conflicts with kernel &amp;lt; 2.6.17.&lt;br /&gt;
Error: Package autofs conflicts with kernel &amp;lt; 2.6.17.&lt;br /&gt;
Error: Package openoffice.org-core needs libicui18n.so.34, this is not available.&lt;br /&gt;
Error: Package openoffice.org-core needs libicule.so.34, this is not available.&lt;br /&gt;
Error: Package openoffice.org-core needs libgcjawt.so.7, this is not available.&lt;br /&gt;
Error: Package openoffice.org-core needs libicuuc.so.34, this is not available.&lt;br /&gt;
Error: Package elfutils needs libdw.so.1(ELFUTILS_0.119), this is not available.&lt;br /&gt;
Error: Package openoffice.org-core needs libgcj.so.7, this is not available.&lt;br /&gt;
Error: Package elfutils needs elfutils-libs = 0.119-1.2.1, this is not available.&lt;/pre&gt;&lt;br /&gt;
And yum is just f-in&amp;#8217; slow compared to apt in terms of resolving dependencies and installation/upgrade of new packages in general. So basically &lt;a href=&quot;http://www.thisisbroken.com/&quot;&gt;it&amp;#8217;s broken&lt;/a&gt;.&lt;br /&gt;
So I did what I did when I updated Fedora the last time: I downloaded the &lt;span class=&quot;caps&quot;&gt;DVD&lt;/span&gt; Image, burned it, booted off the &lt;span class=&quot;caps&quot;&gt;DVD&lt;/span&gt; and said &amp;#8220;Upgrade&amp;#8221;. That worked quite well and after another &amp;#8220;yum update&amp;#8221; everything was fine. To bad that a simple &amp;#8220;apt-get update &amp;amp;&amp;amp; apt-get dist-upgrade&amp;#8221; would have done the same thing on a Debian based system without problems&amp;#8230; I&amp;#8217;m quite sure.&lt;/p&gt;
&lt;p&gt;So being lazy on one side means having to work more on the other one&amp;#8230; Whatever. I&amp;#8217;m running Fedora Core 6 now and a nice thing I noticed are these anti-aliased fonts. Somehow I didn&amp;#8217;t have anti-aliasing activated&amp;#8230; Now I have and it looks quite nice. The Monospace font in &amp;#8220;Konsole&amp;#8221; is nice to look at, too.&lt;/pre&gt;&lt;/p&gt;</content><updated>2006-10-30T00:00:00+00:00</updated><link href='/2006/10/30/fedora-upgrade-vs-kubuntu-installation-fun/' rel='alternate'/></entry><entry><id>/2006/10/27/ist-denn-heut-schon-weihnachten</id><title type='text'>Ist denn heut&apos; schon Weihnachten?</title><content type='html'>&lt;p&gt;Das fragte sich vor einigen Jahren ein bekannter Herr aus Fussballkreisen in einem Werbespott fuer eine Mobilfunkfirma.&lt;/p&gt;
&lt;p&gt;Und ich frage mich das seit letzter Woche auch. Da geht man nichtsahnend Lebensmittel einkaufen und wird mit Angeboten von Weihnachtsartikeln nur so überhäuft. Adventskalender, Schokonikoläuse, Kugeln, Tannenzweige, Geschenkpapier, goldene Sterne, und so weiter.&lt;br /&gt;
Fürs Protokoll: es ist Mitte/Ende Oktober. Das letzte Mal als ich nachgeschaut habe, war Weihnachten am 24./25. Dezember, was, wenn sich der Kalender nicht voellig geaendert hat, noch ca. 2 Monate entfernt sein dürfte.&lt;br /&gt;
Warum ist nicht einfach jeden Monat Weihnachten? Und am besten noch Ostern! Dann könnte man von 1.-10. Osterhasen verkaufen und vom 10.-28. dann Weihnachtsmänner (28. damit man auch wirklich jeden Monat erwischt). Soweit kommt&amp;#8217;s bestimmt noch. Kranke Welt.&lt;/p&gt;</content><updated>2006-10-27T00:00:00+00:00</updated><link href='/2006/10/27/ist-denn-heut-schon-weihnachten/' rel='alternate'/></entry><entry><id>/2006/10/25/macbook-pro-mit-core-duo-2</id><title type='text'>MacBook Pro mit Core Duo 2</title><content type='html'>&lt;p&gt;Ich habe es schon länger vermutet: &lt;a href=&quot;http://www.apple.com/macbookpro/&quot;&gt;MacBook Pro mit Core Duo 2&lt;/a&gt; noch vor Weihnachten. (Kann man im Nachhinein natürlich immer sagen). Nun ist es soweit. Ob der nun wirklich viel schneller ist, wage ich zu bezweifeln. Viel interessaner ist meiner Meinung die 64-bit-Fähigkeit. Zusammen mit Mac OS X Leopard geht das Ding dann bestimmt gut ab. Mal schauen, ob sich mein Kontostand bis zum Launch von Leopard den MacBook Pro Preisen angenähert hat&amp;#8230;&lt;br /&gt;
[via &lt;a href=&quot;http://www.heise.de/newsticker/meldung/79958&quot;&gt;heise&lt;/a&gt;]&lt;/p&gt;</content><updated>2006-10-25T00:00:00+00:00</updated><link href='/2006/10/25/macbook-pro-mit-core-duo-2/' rel='alternate'/></entry><entry><id>/2006/10/24/zusammenfassung-zum-webmontag</id><title type='text'>Zusammenfassung zum Webmontag</title><content type='html'>&lt;p&gt;Ich bin ziemlich genau um 20 Uhr in der &lt;a href=&quot;http://www.hdm-stuttgart.de/&quot;&gt;HdM&lt;/a&gt; gewesen und musste feststellen, dass der erste Vortrag schon begonnen hatte. Wie ich später herausgefunden habe, ging es wohl schon um 19:50 mit den Vorträgen los. Richtig begeistert von dieser &amp;#8220;Überpünktlichkeit&amp;#8221; war ich nun nicht, aber ich hätte ja auch früher kommen können.  Dem Vortrag von Prof. Capurro konnte ich nur teilweise geistig folgen. Vielleicht, weil ich die ersten Minuten verpasst hatte, vielleicht aber auch, weil für mich wenig Greifbares gesagt wurde. Es ging um Hermeneutik und Semantik. Ein durchaus Interessantes Thema, natürlich auch im Bezug auf das Internet und neue Medien. Aber was nun wirklich die Aussage war, außer &amp;#8220;Es ist nicht einfach&amp;#8221; und &amp;#8220;Das Internet hat alles nochmal verändert&amp;#8221;, habe ich nicht erfassen können.&lt;/p&gt;
&lt;p&gt;Es folgte die Vorstellung eines Web-Log-Projekts von &lt;a href=&quot;http://www.theofel.de/plog/&quot;&gt;Jan Theofel&lt;/a&gt; &amp;#8211; Das WM-Rezept-Blog. Eine sehr nette Idee, wie ich finde. Hier war für mich schon mehr mitzunehmen. Am interessantesten war die Tatsache, aus Bloggen ein Projekt zu machen bzw. für bestimmte Events gezielt Blog-Einträge vorzusehen. In diesem Falle Rezepte aus den Ländern der gegeneinanderspielenden Mannschaften. Mir ist gestern zum ersten mal diese Art des Bloggens bewußt geworden und mir sind gleich ein paar Beispiele eingefallen, wo ich so etwas selbst schon, unbewußt, des Öfteren beobachtet habe &amp;#8211; wenn auch nicht in dieser Größe.&lt;/p&gt;
&lt;p&gt;Was ich etwas beunruhigend fand, war die Folie, wo durchgemachte Nächte am Ende des Projektes zu &amp;#8220;Standard-IT-Vorgehen&amp;#8221; erklärt wurden (&amp;#8220;&amp;#8230; das gehört dazu, ist eben ein IT-Projekt&amp;#8221;). Das hört sich für mich so an, als ob alle IT-Projekte zu &lt;a href=&quot;http://en.wikipedia.org/wiki/Death_march_(software_development)&quot;&gt;Death March&lt;/a&gt; &amp;#8211; Projekten verdammt wären &amp;#8211; quasi per Definition. Ich hoffe, dass das eher als Spaß gemeint war und trotz den vielen Rezepten noch Zeit zum schlafen war. ;-)&lt;/p&gt;
&lt;p&gt;Der geplante dritte Vortrag fand nicht statt, weil &lt;a rel=&quot;nofollow&quot; onkeypress=&quot;return svchk()&quot; onclick=&quot;return svchk()&quot; title=&quot;http://www.lightwerk.com/&quot; target=&quot;_blank&quot; class=&quot;urlextern&quot; href=&quot;http://www.lightwerk.com/&quot;&gt;Veikko Wünsche&lt;/a&gt; nicht da war.&lt;/p&gt;
&lt;p&gt;Danach kam nun Max Völkel mit seinem Vortrag über &lt;a href=&quot;http://ontoworld.org/index.php/Semantic_MediaWiki&quot;&gt;Semantic Wikipedia&lt;/a&gt;. Ein sehr interessanter Vortrag. Es ging im Grunde darum, wie man Wikipedia/Mediawiki erweitern könnte, um Links bzw. Fakten Bedeutung zu geben und somit sinnvoller Informationen abfragen zu können und Redundanzen zu vermeiden. Eine Demo ist unter &lt;a rel=&quot;nofollow&quot; onkeypress=&quot;return svchk()&quot; onclick=&quot;return svchk()&quot; title=&quot;http://ontoworld.org&quot; target=&quot;_blank&quot; class=&quot;urlextern&quot; href=&quot;http://ontoworld.org/&quot;&gt;http://ontoworld.org&lt;/a&gt;  zu sehen.  Evtl. wird wohl dieses Jahr noch eine Demo-Version innerhalb  von Wikipedia gestartet.&lt;/p&gt;
&lt;p&gt;Generell fand ich die Anzahl der Vorträge deutlich angenehmer als letztes Mal. Es war mehr Zeit für Diskussionen, die allerdings kaum genutzt wurde. Nur beim Thema &amp;#8220;Gibt es ein Urheberrecht auf Kochrezepte&amp;#8221; gingen die Meinungen kurz auseinander. Richtig ausdiskutiert wurde das Thema jedoch nicht. Schade.&lt;/p&gt;
&lt;p&gt;Ich bin gespannt auf den nächsten Webmontag. Mal sehen, ob sich jemand den Tipp, Namenschilder nicht zum Anheften in &amp;#8220;Badges&amp;#8221; (wie heißt so ein Ding auf deutsch?) sondern einfach als Ettikett zum Aufkleben zu gestalten, zu Herzen nimmt. Das hätte den großen Vorteil, dass man die Schilder beim gemütlichen Zusammensitzen einfach behalten könnte. Und man muss die Schilder nicht extra in die Plastikhülle stecken. Also deutlich weniger Aufwand und höherer Nutzen. :)&lt;/p&gt;</content><updated>2006-10-24T00:00:00+00:00</updated><link href='/2006/10/24/zusammenfassung-zum-webmontag/' rel='alternate'/></entry><entry><id>/2006/10/16/webmontag-in-stuttgart-am-23-10-2006</id><title type='text'>Webmontag in Stuttgart am 23.10.2006</title><content type='html'>&lt;p&gt;Nächste Woche ist wieder &lt;a href=&quot;http://webmontag.de/&quot;&gt;Webmontag&lt;/a&gt; in Stuttgart. Ich werde wahrscheinlich dort sein. Näher kann er kaum kommen: Die Veranstaltung wird ca. 10 Gehminuten von hier entfernt sein.&lt;/p&gt;
&lt;p&gt;Da ich jetzt zumindest zum letzten Stuttgarter Webmontag einen Vergleich habe, bin ich mal gespannt wie es so wird.&lt;/p&gt;</content><updated>2006-10-16T00:00:00+00:00</updated><link href='/2006/10/16/webmontag-in-stuttgart-am-23-10-2006/' rel='alternate'/></entry><entry><id>/2006/10/04/english-content</id><title type='text'>English content</title><content type='html'>&lt;p&gt;I decided to put some English content up. It will be mostly development and technical stuff. I will not mark the posts as English or German or use some multi language plugin. Just read the article and you&amp;#8217;ll know which language it is written in.&lt;br /&gt;
I thought this through many times and I don&amp;#8217;t know what the best approach to a multi language blog may be. I&amp;#8217;ve never done one before. So maybe I&amp;#8217;ll write some stuff of interest to some people in the world. And as more people speak English than German, well, English is the language to take. Also, writing in English may help me improving my English skills. So, if you find some severe gramatical mistakes, don&amp;#8217;t hesitate to correct me.&lt;/p&gt;</content><updated>2006-10-04T00:00:00+00:00</updated><link href='/2006/10/04/english-content/' rel='alternate'/></entry><entry><id>/2006/08/15/home-nas-hardware-plattform</id><title type='text'>(Home?)-NAS Hardware-Plattform</title><content type='html'>&lt;p&gt;Ich bin schon länger auf der Suche nach einer stromsparenden Plattform für ein kleines Home-&lt;span class=&quot;caps&quot;&gt;NAS&lt;/span&gt;-Serverchen. &lt;a href=&quot;http://www.movidis.com/products/nap.asp&quot;&gt;Das&lt;/a&gt; hört sich ideal an: 16 &lt;span class=&quot;caps&quot;&gt;MIPS&lt;/span&gt; CPUs, 50 W Stromverbrauch, 8x GbE onboard, &lt;span class=&quot;caps&quot;&gt;SATA&lt;/span&gt;/&lt;span class=&quot;caps&quot;&gt;SAS&lt;/span&gt;-Controller onboard, normales &lt;span class=&quot;caps&quot;&gt;ATX&lt;/span&gt;-Board, Unterstützung für Verschlüsselung und läuft unter Linux.. Genau richtig. Nur den Preis findet man nirgends. Wenn das noch für einen 3-stelligen Betrag zu haben sein sollte, steht einem Home-&lt;span class=&quot;caps&quot;&gt;NAS&lt;/span&gt; nix mehr im Weg. Allerdings wird das vermutlich nur an OEMs verkauft werden und somit für den Privatmann nicht zur Verfügung stehen &amp;#8211; egal zu welchem Preis :( &amp;#8211; Schade eigentlich.&lt;br /&gt;
[via &lt;a href=&quot;http://www.heise.de/newsticker/meldung/76816&quot;&gt;heise&lt;/a&gt;]&lt;/p&gt;</content><updated>2006-08-15T00:00:00+00:00</updated><link href='/2006/08/15/home-nas-hardware-plattform/' rel='alternate'/></entry><entry><id>/2006/08/14/sudoku-virus</id><title type='text'>Sudoku-Virus</title><content type='html'>&lt;p&gt;Ich habe mich ja nun relativ lange gehalten&amp;#8230; Aber immun bin ich dann doch nicht. Der Sudoku-Virus hat mich nun auch erreicht. Zum Glück gibt&amp;#8217;s im Internet ja genügend &lt;a href=&quot;http://soduko.org/sudoku-list.php&quot;&gt;Rätsel for free.&lt;/a&gt;&lt;/p&gt;</content><updated>2006-08-14T00:00:00+00:00</updated><link href='/2006/08/14/sudoku-virus/' rel='alternate'/></entry><entry><id>/2006/08/03/webmontag-in-stuttgart</id><title type='text'>Webmontag in Stuttgart</title><content type='html'>&lt;p&gt;Es ist zwar nun schon Donnerstag, aber ich möchte hier trotzdem noch kurz ein paar Gedanken zum &lt;a href=&quot;http://www.webmontag.de/doku.php?id=31.07.2006_stuttgart&quot;&gt;Webmontag in Stuttgart&lt;/a&gt; notieren. Falls ich nicht mehr alles korrekt in Erinnerung habe, bitte nicht zögern, offensichtliche inhaltiche Fehler per Kommetar zu korrigieren.&lt;br /&gt;
Die Veranstaltung war mein erster Webmontag. Ich hatte vom Webmontag an sich über das &lt;a href=&quot;http://www.netzpolitik.org&quot;&gt;netzpolitik-Blog&lt;/a&gt; erfahren, wußte aber bisher nicht, dass sowas auch in Stuttgart stattfindet. Das habe ich dann jedoch zufällig mitbekommen und habe gleich mal am Montag vorbeigeschaut.&lt;/p&gt;
&lt;p&gt;Die Vorträge waren interessant, wobei ich als eigentlich eher technisch interessierter Mensch, die nicht-technischen Themen interessanter fand.&lt;/p&gt;
&lt;p&gt;Eine Inhaltliche Zusammenfassung gibt es bei &lt;a href=&quot;http://www.theofel.de/archives/tags/webmontag/&quot;&gt;Jan Theofel&lt;/a&gt;. Was hier nun kommt ist ganz im Sinne der unten folgenden Definition des Bloggers meine Meinung zu den Vortraegen.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.dirk-baranek.de/&quot;&gt;Dirk Baraneck&lt;/a&gt; referierte über den Unterschied zwischen Journalisten und Bloggern. Kurz zusammengefasst: Journalisten werten Quellen aus und präsentieren objektiv Inhalte und stellen verschiedene Meinungen gegenüber. Blogger teilen ihre Subjektive Meinung mit.&lt;/p&gt;
&lt;p&gt;Wenn man mal drüber nachdenkt, ist das eigentlich ganz logisch. Bisher war mir das aber noch nicht so klar. &amp;#8211; Hab wohl noch nie so recht wirklich drüber nachgedacht.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.squidoo.com/Oliver_Gassner/&quot;&gt;Oliver Gassner&lt;/a&gt; erzählte über &amp;#8220;user generated content&amp;#8221; und den Untergang der Zeitungen (grob gesagt). Der Gassner hat Scheisse erzählt. Hat er gesagt, könne man nun bloggen. Was ich nun getan habe. Stimmt aber nicht (alles klar?)&lt;/p&gt;
&lt;p&gt;Der Vortrag ging flott im Lessing-Stil los, und wurde dann etwas gemächlicher mit der Folienzahl. Fand ich jetzt aber nicht so tragisch, weil die Leertaste des Laptops selbst in der letzten Reihe noch deutlich zu hören war und langsam anfing zu nerven ;) &amp;#8211; Der Vergleich zwischen redaktionellem Content und &amp;quot;user generated content&amp;#8217; war fast ausschliesslich &amp;#8220;offline&amp;#8221; vs. &amp;#8220;online&amp;#8221; bzw. &amp;#8220;Zeitungen&amp;#8221; vs. &amp;#8220;Blogger&amp;#8221;. Interessanterweise gibt es ja aber auch bei reinen Internet-News-Seiten schon Konkurrenz von der User-Front: z.B. &lt;a href=&quot;http://www.slashdot.org&quot;&gt;slashdot&lt;/a&gt; vs. &lt;a href=&quot;http://www.digg.com&quot;&gt;digg&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Der Vortrag zum Thema Innovationsprogramm Web 2.0 der &lt;span class=&quot;caps&quot;&gt;MFG&lt;/span&gt; Baden-Württemberg war informativ. Gut, dass es solche Dinge gibt. :)&lt;/p&gt;
&lt;p&gt;Den Vortrag von Dr. Ulrike Burscheidt fand ich nun eher uninteressant, da mich das ganze an die Recht-Vorlesung aus meinem Studium erinnert hat, wo wir diese Themen (Urheberrecht im Web etc.) schon besprochen haben. Die Folien zu dem Vortrag hatten auch deutlich das höchte &amp;#8220;Wort pro Folie&amp;#8221;-Verhältnis, was für meinen Geschmack manche Folien einfach zum Worthaufen an der Leinwand machten, ohne Inhalte zu kommunizieren. Dass ich nun nicht allzuviel mitbekommen habe, kann aber auch einfach and der Tatsache liegen, dass ich das alles schon mal gehört hatte&amp;#8230;&lt;/p&gt;
&lt;p&gt;Die Technikvorträge von  &lt;a href=&quot;http://www.plusw.de/&quot;&gt;Rolf Schaufelberger&lt;/a&gt; und &lt;a href=&quot;http://alvar.a-blast.org/&quot;&gt;Alvar Freude&lt;/a&gt; zum Thema mod_perl und Assotiationsblaster waren interessant. Der mod_perl-Vortrag war so gestaltet, dass auch Nicht-Techniker angesprochen waren. Allerdings glaube ich dass die meisten, die nichts mit Programmierung zu tun haben spätestens beim Erscheinen der (wenigen) Code-Zeilen abeschaltet haben. Denoch Respekt für die Vortragenden: Es ist sehr schwer, einem gemischten Publikum ein solches Thema vorzustellen.&lt;/p&gt;
&lt;p&gt;Generell fand ich vor allem die Diskussionen im Anschluss an die einzelnen Voträge, sowie das anschließende Zusammensitzen am besten. Die oft zitierte Forderung nach wenigeren/kürzeren Vorträgen kann ich nun nachvollziehen. Ich finde, dass die Diskussionen und damit die Interaktion zwischen den Teilnehmen im &amp;#8220;offiziellen&amp;#8221; Teil etwas zu kurz kamen. Wie nun durch etwas Recherche, sowie einige Anmerkungen von Teilnehmern, die schon auf anderen Webmontagen waren mitbekommen habe, ist der &amp;#8220;offizielle Teil&amp;#8221; in Stuttgart wohl sehr ausgeprägt und auch etwas überorganisiert.&lt;/p&gt;
&lt;p&gt;Ich hatte mir das alles auch etwas spontaner und mit mehr Interaktion vorgestellt.&lt;/p&gt;
&lt;p&gt;Mal schauen wie der Webmontag am 23. Oktober wird. Wenn ich Zeit habe, werde ich auf jeden Fall vorbeischauen. Der Termin findet nämlich ca. 10 Gehminuten von hier entfernt statt.&lt;/p&gt;</content><updated>2006-08-03T00:00:00+00:00</updated><link href='/2006/08/03/webmontag-in-stuttgart/' rel='alternate'/></entry><entry><id>/2006/07/30/cc-zwei</id><title type='text'>CC-Zwei</title><content type='html'>&lt;p&gt;eder da der Computerclub. Diesmal als Podcast. Er heißt &amp;#8220;&amp;#8221;CC Zwei&amp;quot; href=&amp;#8220;http://www.cczwei.de/&amp;#8221;&amp;gt;CC Zwei&lt;/a&gt;&amp;quot; Ich habe den &lt;span class=&quot;caps&quot;&gt;WDR&lt;/span&gt;-Computerclub früher immer gerne geschaut. Weil die beiden Wolfgangs (oder wie immer man die mehrzahl von Wolfgang nennt) Sachverhalte immer einfach und verständlich erklärt haben. Außerdem war das die einzige Computer-Sendung im deutschen Fernsehen. Und nein, &amp;#8220;Neues&amp;#8221; ist keine Computer-Sendung gewesen. Das war höchstens eine MS-Werbesendung.&lt;/p&gt;
&lt;p&gt;Nun ist der Computer-Club wieder da &amp;#8211; zunächst als Podcast. Erstmal nur Audio. Vielleicht ja auch bald wieder mit Video. Ich habe mir die erste Folge (wie wohl viele andere auch) gleich mal runtergeladen und angehört. War nett anzuhören. Allerdings war ich doch etwas überrascht von der (seltsamen) Qualität der Aufnahme an sich. Zumal das ganze in einem professionellen Tonstudio aufgezeichnet wurde. Also die Aufnahme der beiden Wolfgangs war ok und gut verständlich (bis auf den Anfang, da gibt&amp;#8217;s paar Störgeräusche oder sowas), aber die Einspielungen von den zwei Kommentaren war von der Lautstärke her deutlich leiser.&lt;/p&gt;</content><updated>2006-07-30T00:00:00+00:00</updated><link href='/2006/07/30/cc-zwei/' rel='alternate'/></entry><entry><id>/2006/06/15/digg-this</id><title type='text'>Digg this</title><content type='html'>&lt;p&gt;Vor ein paar Tagen bin ich &amp;#8211; ich glaube es war über ein paar Bilder mit Screenshots auf flickr &amp;#8211; auf &lt;a href=&quot;http://diggnation.com/&quot;&gt;Diggnation&lt;/a&gt; gestossen. Kann ich nur empfehlen. Ist eine lustige Sendung/Videopodcast oder wie auch immer man das heute nennt. Inhalt: Bier, Topstories von &lt;a href=&quot;http://digg.com/&quot;&gt;digg.com&lt;/a&gt; und anderes Zeug was eigentlich überhaupt nichts mit alle dem zu tun hat. Sehr lustig.&lt;/p&gt;</content><updated>2006-06-15T00:00:00+00:00</updated><link href='/2006/06/15/digg-this/' rel='alternate'/></entry><entry><id>/2006/05/21/gude-laune</id><title type='text'>Gude Laune</title><content type='html'>&lt;p&gt;http://www.timobenz.de&amp;quot;&amp;gt;Timo&lt;/a&gt; hat mir heut diese lustigen Links geschickt: &amp;#8220;&amp;#8221;http://www.maingold.com/2006/04/19/this-is-all-about-gude-laune/&amp;#8220;&amp;gt;Its al about gude Laune&lt;/a&gt;&amp;#8221; und da ganze noch interaktiv bei &amp;#8220;&amp;#8221;http://www.theshrine.de/&amp;#8220;&amp;gt;The shrine&lt;/a&gt;&amp;#8221;. Ist zwar schon ueber nen Monat her und nicht mehr top-aktuell, aber lustig isses allemal und immer dran denken: &amp;#8220;The message is gude Laune&amp;#8221; ;-)&lt;/p&gt;</content><updated>2006-05-21T00:00:00+00:00</updated><link href='/2006/05/21/gude-laune/' rel='alternate'/></entry><entry><id>/2006/05/20/spam-karma</id><title type='text'>Spam-Karma</title><content type='html'>&lt;p&gt;Nachem ich diese Woche ungefaehr 100 Mails von meinem Wordpress bekam, die mich auf zu moderierende Kommentare hingewiesen haben und diese allesamt Spam waren, habe ich mich entschieden &lt;a href=&quot;http://unknowngenius.com/blog/wordpress/spam-karma/&quot;&gt;Spam-Karma&lt;/a&gt; zu installieren. Ging echt flott und hat alle &amp;#8220;Kommentare&amp;#8221; auch gleich richtig als Spam eingestuft. Mal schauen, wie sich das nun auf meine Mailbox auswirkt. Die normalen 50 Spam Mails pro Tag reichen eigentlich ;-). Thunderbird ist da mittlerweile schon sehr gut, was die Filterquote angeht.&lt;/p&gt;</content><updated>2006-05-20T00:00:00+00:00</updated><link href='/2006/05/20/spam-karma/' rel='alternate'/></entry><entry><id>/2006/05/15/der-mausarm-bei-spon</id><title type='text'>Der &quot;Mausarm&quot; bei SPON</title><content type='html'>&lt;p&gt;&lt;a href=&quot;http://www.spiegel.de/netzwelt/technologie/02C15182C4162662C00.html&quot;&gt;Mit Dehnübungen gegen den &amp;#8220;Mausarm&amp;#8221;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Interessanter Artikel&amp;#8230; komisch nur, dass hier gar nicht auf Alternativen zur Maus bzw. ergonomische Maeuse eingegangen wird. Weiterhin fehlt mit in dem Artikel die Erwaehnung von Tastaturbefehlen. Viele Dinge kann man bequemer und deutlich schneller als mit der Maus per Shortcut mit der Tastatur erledigen.&lt;/p&gt;
&lt;p&gt;Ich finde die Mausbewegung mittlerweile sehr unangnehm bzw. ungewohnt seit ich zu Hause einen Trackball benutze. Beim Arbeiten verwende ich fast immer den &amp;#8220;Nippel&amp;#8221; des Notebooks. Arbeiten mit der Kinesis-Tastatur ist noch nicht moeglich&amp;#8230; dazu bin ich beim Tippen noch zu lahm. Bessert sich aber langsam &amp;#8211; Übung macht den Meister.&lt;/p&gt;</content><updated>2006-05-15T00:00:00+00:00</updated><link href='/2006/05/15/der-mausarm-bei-spon/' rel='alternate'/></entry><entry><id>/2006/04/25/ergonomisch-die-zweite</id><title type='text'>Ergonomisch, die Zweite</title><content type='html'>&lt;p&gt;Endlich ist sie da. Mein neue &lt;a href=&quot;http://www.kinesis-ergo.com/advantage_pro.htm&quot;&gt;Kinesis Advantage Pro &lt;span class=&quot;caps&quot;&gt;USB&lt;/span&gt; Tastatur&lt;/a&gt;. Naja&amp;#8230; ganz neu ist sie nicht. Ich bin dem Tipp eines Kommentars einer Review-Seite gefolgt und habe ein &amp;#8220;refurbished keyboard&amp;#8221; gekauft und somit ca. 50$ gespart. Sieht trotzdem aus wie neu, funktioniert genau so und hat sogar Garantie. Für alle, die sich nun wundern, was eine Tastatur wohl kosten muss, damit man 50$ sparen kann: Weniger als so mancher für Grafikkarten ausgiebt, und mehr als das was normale Menschen für Tastaturen ausgeben ;-)&lt;/p&gt;
&lt;p&gt;Dabei habe ich mir die Tastatur extra aus den &lt;span class=&quot;caps&quot;&gt;USA&lt;/span&gt; mitbringen lassen. Kinesis-Tastaturen sind in Europa nämlich quasi gar nicht zu haben und wenn dann nochmal zum doppelten Preis, vom dem was sie in den &lt;span class=&quot;caps&quot;&gt;USA&lt;/span&gt; kosten. Und das ist dann wirklich jenseits von gut und böse.&lt;/p&gt;
&lt;p&gt;Das Schreiben war die ersten 2 Tage echt ungewohnt und ich kam mir vor wie beim &amp;#8220;Adlersuchsystem&amp;#8221;. Mitterlweile geht es einigermaßen zügig, aber noch nicht so schnell wie auf einer normalen Tastatur. Da ich aufgrund der Tastenanordnung jedoch gezwungen bin mit 10 Fingern zu schreiben, tue ich das auch und benutze gerade die Finger Ringfinger und kleiner Finger deutlich öfter als bisher bei meinem 6-8 Finger-selbsterfunden-System. Die beigelegten &amp;#8220;Adoption Excercises&amp;#8221; habe ich noch nicht durchgemacht&amp;#8230; wird mal Zeit.&lt;/p&gt;
&lt;p&gt;Da die Tastatur relativ hoch ist, liegt sie auf dem Schreibtisch eigentlich viel zu hoch. Da werde ich mir noch eine Alternative zur Befestigung ausdenken müssen. Ein Brett unter der Schreibtischplatte sollte da reichen.&lt;/p&gt;
&lt;p&gt;Bilder folgen.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://del.icio.us/ulkbold/kinesis&quot;&gt;Meine del.icio.us-Links zur Kinesis-Tastatur&lt;/a&gt;.&lt;/p&gt;</content><updated>2006-04-25T00:00:00+00:00</updated><link href='/2006/04/25/ergonomisch-die-zweite/' rel='alternate'/></entry><entry><id>/2006/03/28/danke-spon</id><title type='text'>Danke SPON...</title><content type='html'>&lt;p&gt;Jetzt steht auf der Seite zum Thema &lt;span class=&quot;caps&quot;&gt;DVD&lt;/span&gt;-Beilegern ein Hinweis zur Tonspur:&lt;br /&gt;
&lt;blockquote&gt;Die meisten der DVDs, die kostenlos Zeitschriften beigelegt werden, verfügen leider nur über eine deutsche Tonspur. Zudem sind die Angaben der Verlage über die Ausstattung der DVDs äußerst lückenhaft. Deshalb gilt: Wo das nicht anders vermerkt ist, verfügt die &lt;span class=&quot;caps&quot;&gt;DVD&lt;/span&gt; nur über eine deutsche Tonspur.&lt;/blockquote&gt;&lt;br /&gt;
Quelle:&lt;a href=&quot;http://www.spiegel.de/netzwelt/netzkultur/0,1518,408125-2,00.html&quot;&gt; http://www.spiegel.de/netzwelt/netzkultur/0,1518,408125-2,00.html&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Leider etwas spät für mich, aber immerhin steht&amp;#8217;s nun da&amp;#8230;&lt;/p&gt;
&lt;p&gt;Siehe auch: &lt;a href=&quot;/2006/03/05/der-griff-ins-kl-h-hzeitschriftenregal/&quot;&gt;Der Griff ins Kl^H^HZeitschriftenregal&lt;/a&gt;&lt;/p&gt;</content><updated>2006-03-28T00:00:00+00:00</updated><link href='/2006/03/28/danke-spon/' rel='alternate'/></entry><entry><id>/2006/03/27/fedora-core-05-installiert</id><title type='text'>Fedora Core 5 installiert</title><content type='html'>&lt;p&gt;Am Wochenende hab ich mal FC5 installiert und damit gleich die Neu-Partitionierung meines Rechners (war vorher eher so ein Test-Layout) verbunden. Klappte alles wundbar, nach ein paar Tricks.&lt;/p&gt;
&lt;p&gt;Der Drucker, mein Samsung ML-1610 funktioniert mit &lt;span class=&quot;caps&quot;&gt;CUPS&lt;/span&gt; wie vorher auch mit dem ML-1710-Treiber. VMware ging nach ein paar Fehlfehrsuchen mit dem FC-2.5.15-Kernel nach &lt;a href=&quot;http://clunixchit.blogspot.com/2006/03/dave-joness-2616-12064fc5.html&quot;&gt;dieser Anleitung&lt;/a&gt; ohne Probleme. Netter Nebeneffekt: ein aktueller Kernel &amp;#8211; ohne selbstkompilieren zu müssen. &amp;#8211; Man wird faul mit der Zeit &lt;strong&gt;g&lt;/strong&gt;&lt;br /&gt;
&lt;a href=&quot;http://initng.thinktux.net/&quot;&gt;initNG&lt;/a&gt; läuft in der Version 0.5.5 auch gut. Gestoppt habe ich die Unterschiede zum normalen Init in der Version noch nicht. Dabei habe ich noch ein &lt;a href=&quot;http://initng.thinktux.net/ticket/540&quot;&gt;Problem mit dem Fedora &lt;span class=&quot;caps&quot;&gt;RPM&lt;/span&gt;-Spec für initNG&lt;/a&gt; gefunden &amp;#8211; und war damit wohl &lt;a href=&quot;http://initng.thinktux.net/ticket/539&quot;&gt;nicht alleine&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Mal schauen, wie die &lt;a href=&quot;http://www.xensource.com/products/xen/index.html&quot;&gt;Xen&lt;/a&gt;-Integration nun so aussieht. Damit das endlich mal auf den Heimserver kommt. Gibt&amp;#8217;s für Xen eigentlich auch fertige Images von verschiedenen Linux Distributionen, wie für den VMware Player? &amp;#8211; &lt;strong&gt;notier&lt;/strong&gt; mal danach suchen.&lt;/p&gt;</content><updated>2006-03-27T00:00:00+00:00</updated><link href='/2006/03/27/fedora-core-05-installiert/' rel='alternate'/></entry><entry><id>/2006/03/24/die-vogelgrippe-verschwoerung</id><title type='text'>Die Vogelgrippe-VerschwÃ¶rung</title><content type='html'>&lt;p&gt;Das ist kein Titel von einem neuen Kinofilm und auch keine Reportage auf RTL2&amp;#8230; Ich habe gestern per Mail einen Text bekommen, der aber durchaus diesen Titel tragen könnte.&lt;/p&gt;
&lt;p&gt;Irgendwie klingt er auch in sich logisch. Man mache sich selbst ein Bild (nach Recheche über Google gefunden &amp;#8211; Quellenangaben waren bei der Mail keine dabei.):&lt;/p&gt;
&lt;p&gt;&lt;a title=&quot;Vogelgrippe oder Pharmamarketing&quot; href=&quot;http://www.tierschutz-online.de/index.php?option=com_content&amp;task=view&amp;id=171&amp;Itemid=1&quot;&gt; 				Vogelgrippe oder Pharma-Marketing?&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Man sieht auch hier wieder, wie sehr wir doch von den Medien abhängen bzw. uns beeinflussen lassen. Ob man die Geschichte nun glaubt oder nicht&amp;#8230; ich finde sie macht zumindest nachdenklich.&lt;/p&gt;</content><updated>2006-03-24T00:00:00+00:00</updated><link href='/2006/03/24/die-vogelgrippe-verschwoerung/' rel='alternate'/></entry><entry><id>/2006/03/23/urheber-un-recht</id><title type='text'>Urheber(un)recht</title><content type='html'>&lt;p&gt;Seit gestern ist es wohl durch, das neue Urheberrecht und damit ist klar, das Privatkopien illegal sind. Zumindest manchmal. Also wenn eben Digital-Restrictions-Management-Techniken, das Kopieren verhindern sollen. Da hat die Musikindustrie-&lt;a title=&quot;Lobby&quot; href=&quot;http://de.wikipedia.org/wiki/Lobbyismus&quot;&gt;Lobby&lt;/a&gt; ja ganze Arbeit geleistet.&lt;/p&gt;
&lt;p&gt;Ist doch toll, wenn man den ehrlichen Verbraucher der sich ne CD kauft kriminalisiert, wenn er sich fürs Auto ne Kopie erstellen möchte, oder die CD auch auf seinem mp3-Player hören will.&lt;/p&gt;
&lt;p&gt;Ich frage mich an der Stelle, wie das mit CDs aussieht, die ich schon habe und gebrannt habe, bevor das Gesetz in Kraft tritt? Eigentlich dürfte ich ja nicht rückwirkend bestraft werden, andererseits frage ich mich, wer hier wem beweisen muss, wann die Kopie erstellt wurde.&lt;/p&gt;
&lt;p&gt;Aber ehrlich gesagt, ist mir das alles relativ schnuppe. Ich wollte mich sowieso mal nach Musik im Netz umschauen, die unter CC-Lizenzen steht. Da kann ich dann, je nach Lizenz, privat kopieren, teilweise sogar ändern etc. und alles 100% legal, ohne schlechtes Gewissen. Auch das &amp;#8220;Hm&amp;#8230; darf ich &lt;span class=&quot;caps&quot;&gt;DIESE&lt;/span&gt; CD nun kopieren, nee aber die da&amp;#8230; diese hier ja sowieso nicht, die hat meinen Rechner ja mit nem Rootkit versorgt&amp;#8221; fällt dann weg.&lt;/p&gt;
&lt;p&gt;Im Heise-Forum gab&amp;#8217;s dazu heute allerhand Links, die mir die Suche nach entsprechenden Seiten erspart hat:&lt;br /&gt;
&lt;ul&gt;&lt;br /&gt;
&lt;li&gt;&lt;a target=&quot;_blank&quot; href=&quot;http://ccmixter.org/&quot;&gt;http://creativecommons.org/&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;
&lt;li&gt;&lt;a target=&quot;_blank&quot; href=&quot;http://ccmixter.org/&quot;&gt;http://ccmixter.org/&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;
&lt;li&gt;&lt;a target=&quot;_blank&quot; href=&quot;http://www.shoutcast.com/&quot;&gt;http://www.shoutcast.com/&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;
&lt;li&gt;&lt;a target=&quot;_blank&quot; href=&quot;http://del.icio.us/freemusic/&quot;&gt;http://del.icio.us/freemusic/&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;
&lt;li&gt;&lt;a target=&quot;_blank&quot; href=&quot;http://tonatom.net/&quot;&gt;http://tonatom.net/&lt;/a&gt; &lt;a target=&quot;_blank&quot; href=&quot;http://www.ideology.de/&quot; /&gt;&lt;/li&gt;&lt;br /&gt;
&lt;li&gt;&lt;a target=&quot;_blank&quot; href=&quot;http://www.ideology.de/&quot;&gt;http://www.ideology.de/&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;
&lt;li&gt;&lt;a target=&quot;_blank&quot; href=&quot;http://www.ideology.de/&quot; /&gt;&lt;a href=&quot;http://www.jamendo.com&quot;&gt;http://www.jamendo.com&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;
&lt;li&gt;&lt;a href=&quot;http://www.ocremix.org&quot;&gt;http://www.ocremix.org&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;
&lt;li&gt;&lt;a href=&quot;http://www.mp3.de&quot;&gt;http://www.mp3.de&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;
&lt;li&gt;&lt;a href=&quot;http://www.legaltorrents.com&quot;&gt;http://www.legaltorrents.com&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;
&lt;li&gt;&lt;a target=&quot;_blank&quot; href=&quot;http://www.track4.de/&quot;&gt;http://www.track4.de/&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;
&lt;li&gt;&lt;a target=&quot;_blank&quot; href=&quot;http://www.uptrax.de/&quot;&gt;http://www.uptrax.de/&lt;/a&gt; &lt;a target=&quot;_blank&quot; href=&quot;http://www.musikschleuder.de/&quot; /&gt;&lt;/li&gt;&lt;br /&gt;
&lt;li&gt;&lt;a target=&quot;_blank&quot; href=&quot;http://www.musikschleuder.de/&quot;&gt;http://www.musikschleuder.de/&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;
&lt;li&gt;&lt;a target=&quot;_blank&quot; href=&quot;http://www.musikdieb.de/&quot;&gt;http://www.musikdieb.de/&lt;/a&gt; &lt;a target=&quot;_blank&quot; href=&quot;http://amusic.de/&quot; /&gt;&lt;/li&gt;&lt;br /&gt;
&lt;li&gt;&lt;a target=&quot;_blank&quot; href=&quot;http://amusic.de/&quot;&gt;http://amusic.de/&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;
&lt;li&gt;&lt;a target=&quot;_blank&quot; href=&quot;http://www.boycott-riaa.com/&quot;&gt;http://www.boycott-riaa.com/&lt;/a&gt;&lt;/li&gt;&lt;/p&gt;
&lt;/ul&gt;
&lt;p&gt;Da sollte für jeden Geschmack was dabei sein.&lt;/p&gt;
&lt;p&gt;Interessant ist ja auch mal wieder, dass sich hier wieder genau das zeigt, wovor viele gewarnt haben und als paranoid abgetan wurden: Wenn Daten erstmal da sind, werden sie verwendet &amp;#8211; für alle möglichen Zwecke. Wovon ich schreibe? Vorratsdatenspeicherung. Laut der EU-Richtlinie sollte die Speicherung einzig und allein der Terrorbekämpfung gelten. Jetzt soll sie neben &amp;#8220;schweren Verbrechen&amp;#8221; auch zum Aufspüren von &amp;#8220;Illegalen Raubkopierern&amp;#8221; (er hat das R-Wort gesagt! D&amp;#8217;oh!) genutzt werden.&lt;/p&gt;
&lt;p&gt;Ich bin gespannt, wie es da weiter geht. Aber ich schweife ab&amp;#8230; dazu später mehr.&lt;/p&gt;
&lt;p&gt;Bei Spiegel Online gibt es mittlerweile eine &lt;a title=&quot;Übersicht bei Spiegel&quot; href=&quot;http://www.spiegel.de/netzwelt/politik/0,1518,407467,00.html&quot;&gt;Übersicht über die neuen Regelungen&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Update&lt;/strong&gt;:&lt;/p&gt;
&lt;p&gt;Bei netzpolitik.org gibt&amp;#8217;s ne Übersicht über &lt;a title=&quot;Kopierschutzfreie Musikshops&quot; href=&quot;http://www.netzpolitik.org/2006/drm-freie-onlineshops/&quot;&gt;kopierschutzfreie Musik-Shops&lt;/a&gt;. Und ganz aktuell: Informationen zu freien Video-Inhalten unter dem Titel &amp;#8220;&amp;#8221;Kino neu erfinden&amp;quot; href=&amp;#8220;http://www.netzpolitik.org/2006/kino-neu-erfinden-mit-freien-inhalten/&amp;#8221;&amp;gt;Kino neu erfinden&lt;/a&gt;&amp;#8220;. Das muss ich mir auch mal genauer angucken. &amp;#8221;Cinerella&amp;quot; href=&amp;#8220;http://heroinewarrior.com/cinelerra.php3&amp;#8221;&amp;gt;Cinerella&lt;/a&gt; wollte ich sowieso mal testen.&lt;/p&gt;</content><updated>2006-03-23T00:00:00+00:00</updated><link href='/2006/03/23/urheber-un-recht/' rel='alternate'/></entry><entry><id>/2006/03/05/der-griff-ins-kl-h-hzeitschriftenregal</id><title type='text'>Der Griff ins Kl^H^HZeitschriftenregal</title><content type='html'>&lt;p&gt;Bei Spiegel-Online gibt es seit längerem regelmäßig einen Artikel über Beilage DVDs diverser Zeitschriften. Da bekommt man für 3 &amp;#8211; 7 &lt;span class=&quot;caps&quot;&gt;EUR&lt;/span&gt; (oder so) eine Zeitschrift plus vollwertige Original-&lt;span class=&quot;caps&quot;&gt;DVD&lt;/span&gt;. Teilweise sogar mit nettem Einband. Ich habe also zufällig in der Mittagspause diesen &lt;a href=&quot;http://www.spiegel.de/netzwelt/netzkultur/0,1518,400538,00.html&quot;&gt;Artikel&lt;/a&gt; gelesen, wo &lt;a href=&quot;http://www.imdb.com/title/tt0181865/&quot;&gt;Traffic&lt;/a&gt; als Beilage bei HomeVision angepriesen wird. Also im nächsten Zeitschriftenladen die Zeitschrift geholt (4,90 €) und über den tollen Kauf gefreut.&lt;/p&gt;
&lt;p&gt;Als ich dann den mitgelieferten &lt;span class=&quot;caps&quot;&gt;DVD&lt;/span&gt;-Einband genauer durchgelesen habe, war die Freude schnell vorbei. Die Tonspurauswahl bietet die fantastischen Wahlmöglichkeiten &amp;#8220;Deutsch&amp;#8221; und &amp;#8220;Deutsch&amp;#8221;. Genauer gesagt steht hinten nur &amp;#8220;Deutsch 5.1&amp;#8221; drauf. Man kann im &lt;span class=&quot;caps&quot;&gt;VLC&lt;/span&gt; dann aber 2x Deutsch auswählen. (Den genauen Unterschied habe ich noch nicht rausgefunden).&lt;br /&gt;
Ganz klasse. Da kauft man sich mal ne &lt;span class=&quot;caps&quot;&gt;DVD&lt;/span&gt; und darf den Film dann auf Deutsch gucken. Ob da für die Englische-Tonspur kein Platz mehr war? Oder gab&amp;#8217;s da wieder irgendwelche lizenztechnischen Schwierigkeiten?&lt;/p&gt;
&lt;p&gt;Man sieht hier mal wieder: Der ehrliche Mensch, der sich ne &lt;span class=&quot;caps&quot;&gt;DVD&lt;/span&gt; wirklich kaufen möchte, bekommt irgend ein verkrüpeltes Etwas. Der &amp;#8220;böse Schelm&amp;#8221;, der sich die Filme bei diversen Tauschbörsen im Internet besorgt, hat die große Auswahl an verschiedenen Qualitätssufen, Sprachen, etc.&lt;/p&gt;
&lt;p&gt;Komische Welt&amp;#8230;&lt;/p&gt;
&lt;p&gt;Wobei mir da gerade einfällt, dass ich im Nachhinhein erstaunt bin, dass bei meinem letzten Kinobesuch gar keine &amp;#8220;Ihr seid alle böse Raubkopierer&amp;#8221;-Spots gesehen habe und ich kann mich auch nicht an &amp;#8220;Abfilmen verboten &amp;#8230;&amp;#8221; anzeigen erinnern. Es besteht also noch Hoffnung &amp;#8211; oder mein kopfinterner Spamfilter hat das schon rausgefiltert.&lt;/p&gt;</content><updated>2006-03-05T00:00:00+00:00</updated><link href='/2006/03/05/der-griff-ins-kl-h-hzeitschriftenregal/' rel='alternate'/></entry><entry><id>/2006/03/02/maerz</id><title type='text'>MÃ¤rz</title><content type='html'>&lt;p&gt;Schon wieder ein Monat rum&amp;#8230; so schnell kann&amp;#8217;s gehen.&lt;/p&gt;
&lt;p&gt;Das neue Titelbild ist online. Zu sehen ist ein Kanal im Hamburger Hafen. Blogeinträge gab&amp;#8217;s im Februar leider keine. Aber bald gibt&amp;#8217;s wieder ein paar neue&amp;#8230;&lt;/p&gt;</content><updated>2006-03-02T00:00:00+00:00</updated><link href='/2006/03/02/maerz/' rel='alternate'/></entry><entry><id>/2006/02/13/update</id><title type='text'>Update</title><content type='html'>&lt;p&gt;Ich habe vor circa einer Woche mal das (relativ) neue Wordpress 2.0.1 installiert und gleich das K2-Theme dazu. Außerdem gibt&amp;#8217;s nun meine &lt;a title=&quot;ulkbold&apos;s del.icio.us Tags&quot; href=&quot;http://del.icio.us/ulkbold&quot;&gt;del.icio.us&lt;/a&gt;-&lt;a title=&quot;Tag-Cloud&quot; href=&quot;http://en.wikipedia.org/wiki/Tag_cloud&quot;&gt;Tag-Cloud&lt;/a&gt; an der Seite. Ich werde nun jeden Monat ein neues Titelbild hier einfügen. Und zwar immer &amp;#8211; circa &amp;#8211; am 1. des Monats. Mal schauen ob das hinhaut. Das Bild ist jeweils von mir selbst fotografiert und dann bearbeitet.&lt;/p&gt;
&lt;p&gt;Und neben dem Aussehen kommen nun regelmäßiger neue Inhalte auf die Seite. Ist ja schließlich ein Blog&amp;#8230; oder so.&lt;/p&gt;
&lt;p&gt;Ich möchte noch kurz auf eine nette kleine &lt;a title=&quot;AJAX Erklärung&quot; href=&quot;http://de.wikipedia.org/wiki/Ajax_(Programmierung)&quot;&gt;&lt;span class=&quot;caps&quot;&gt;AJAX&lt;/span&gt;&lt;/a&gt;-Spielrei hinweisen. Das Such-Feld ist nun mit einer Live-Search ausgestattet. Also einfach mal ein paar Buchstaben reintippen und schauen was passiert (- benötigt natürlich JavaScript). Da haben sich die Herren Theme-Gestalter beim &lt;a title=&quot;K2 Wordpress Theme&quot; href=&quot;http://binarybonsai.com/wordpress/k2/&quot;&gt;K2&lt;/a&gt; echt viel Mühe gegeben.&lt;/p&gt;</content><updated>2006-02-13T00:00:00+00:00</updated><link href='/2006/02/13/update/' rel='alternate'/></entry><entry><id>/2006/01/30/ergnomisch-ins-neue-jahr</id><title type='text'>Ergnomisch ins neue Jahr</title><content type='html'>&lt;p&gt;Das Jahr ist nun schon fast einen Monat alt und ich habe immer noch keinen Blogeintrag geschrieben. Das ändert sich ja nun hiermit. Seit Ende letztem Jahres habe ich mich ein wenig mit ergnomischer Desktop-Hardware beschäftigt. Hauptsächlich mit Eingabegeräten und der richtigen Bildschirm- und Sitzposition. Ein neues Eingabegerät habe ich mir dann auch gleich zugelegt: Einen Mausersatz. Die &lt;a href=&quot;http://de.kensington.com/html/7200.html&quot;&gt;Kensington Expert Mouse Optical&lt;/a&gt; &amp;#8211; Der Name ist etwas irreführend. Das Teil ist nämlich ein Trackball. War schon eine kleine Umgewöhnung damit zu arbeiten, aber wenn man das mal drin hat, ist es deutlich angenehmer als mit einer Maus zu arbeiten. Das Handgelenk wird dabei merklich weniger belastet. Ich finde es mittlerweile sogar komisch eine Maus zu bewegen. So schnell kann das gehen. Hier gib&amp;#8217;s noch ne &lt;a href=&quot;http://counsellingresource.com/practice/reviews/expert-mouse/&quot;&gt;nette Review zu diesem Gerät&lt;/a&gt;. Bei Reviews zu solchen Geräten liest man immerzu von Handgelenkbeschwerden, Repetitive Stress Injuries etc. Ich habe (bis jetzt) nichts dergleichen, aber man muss es ja nicht so weit kommen lassen. Ich kann jedenfalls sagen, dass durch den Trackball mein Handgelenk deutlich weniger belastet wird. Durch &lt;a href=&quot;http://www.lorinroche.com/computer.htm&quot;&gt;diese Seite&lt;/a&gt;, habe ich erfahren, dass es gar nicht so schwer sein soll mit links einen Trackball zu bedienen (als Rechtshänder). Ich habe es probiert. Ein bißchen Übung und dann klappt das echt ganz gut. Aber auf einen zweiten Trackball werde ich wohl noch etwas warten. Man muss ja nicht übertreiben. Vorher kommt ein &lt;a href=&quot;http://www.kinesis-ergo.com/advantage_pro.htm&quot;&gt;Kinesis Keyboard&lt;/a&gt; her.&lt;/p&gt;
&lt;p&gt;Unter Windows und Mac OS steht natürlich eine nette Anwendung zur Verfügung, mit der man alle 4 Tasten belegen kann. Unter Linux muss man sich da selbst behelfen. Die X.org Seite sagt zwar explizit, dass das Ding unterstützt wird, aber nicht genau wie. Ich habe dann zig verschiedene Anleitungen aggregiert und schlußendlich eine Lösung gefunden, die hier geht. Und die geht so:&lt;/p&gt;
&lt;p&gt;Die /etc/X11/xorg.conf benötigt bei mir folgenden Mauseintrag:&lt;br /&gt;
&lt;pre&gt;&lt;br /&gt;
Section &amp;#8220;InputDevice&amp;#8221;&lt;br /&gt;
        Identifier  &amp;#8220;Mouse0&amp;#8221;&lt;br /&gt;
        Driver      &amp;#8220;mouse&amp;#8221;&lt;br /&gt;
        Option      &amp;#8220;Protocol&amp;#8221; &amp;#8220;Auto&amp;#8221;&lt;br /&gt;
        Option      &amp;#8220;Device&amp;#8221; &amp;#8220;/dev/input/mice&amp;#8221;&lt;br /&gt;
        Option      &amp;#8220;ZAxisMapping&amp;#8221; &amp;#8220;5 6&amp;#8221;&lt;br /&gt;
        Option      &amp;#8220;Buttons&amp;#8221; &amp;#8220;6&amp;#8221;&lt;br /&gt;
EndSection&lt;br /&gt;
&lt;/pre&gt;&lt;br /&gt;
Merke: Das Scrollrad (ist hier ein Ring um die Kugel) sind wie immer unter X Tasten.&lt;/p&gt;
&lt;p&gt;Das eigentlich interessante ist dann das Mapping der Maustasten auf andere Funktionen. Das ist etwas tricky. Zunächst muss man wilde Dinge mit xmodmap tun: &lt;br /&gt;
~/.Xmodmap&lt;br /&gt;
&lt;pre&gt;&lt;br /&gt;
pointer = 1 2 3 6 4 5&lt;br /&gt;
&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;Das habe ich öfters so gelesen, funktioniert hier auch und ist wie folgt zu verstehen: X nimmt wohl immer die letzten beiden Tasten als Scrollrad bzw. eben die 4 und 5, deswegen müssen die hinten stehen &amp;#8211; oder irgendwie so. Das ist echt etwas wirr, aber so geht das. Die Tasten sind dann folgendermaßen verteilt:&lt;br /&gt;
- Links unten: 1 (Linke Maustaste)&lt;br /&gt;
- Rechts unten: 2 (Rechte Maustaste)&lt;br /&gt;
- Links oben: 3 (Dritte/Mittlere Maustaste)&lt;br /&gt;
- Rechts oben: 6 (Vierte Maustaste? &amp;#8211; wie immer man das Ding normal nennt)&lt;br /&gt;
- Scrollrad: 5/6 hoch/runter&lt;/p&gt;
&lt;p&gt;Dann kommt imwheel ins Spiel:&lt;br /&gt;
&lt;pre&gt;&lt;br /&gt;
&amp;#8220;.*&amp;#8221;&lt;br /&gt;
None, Left, Control_L|W&lt;br /&gt;
&lt;/pre&gt;&lt;br /&gt;
Das habe ich aktuell gerade belegt: Ctrl+W auf der rechten oberen Taste. Da ich sehr exzessiv mit Tabs surfe und gerne mal 20-30 von den Teilen offen habe, braucht man auch ne Möglichkeit, die Tabs schnell wieder los zu werden. Kurzer Klick auf rechts-oben und gut. :)&lt;/p&gt;
&lt;p&gt;Das &amp;#8220;xmodmap .Xmodmap&amp;#8221; und &amp;#8220;imwheel&amp;#8221; muss dann nur noch bei jedem X-Start / Einloggen aufgerufen werden und schon kann man alle Funktionen des Trackballs nutzen. Happy tracking!&lt;/p&gt;</content><updated>2006-01-30T00:00:00+00:00</updated><link href='/2006/01/30/ergnomisch-ins-neue-jahr/' rel='alternate'/></entry><entry><id>/2005/12/04/das-alte-zeug-muss-raus</id><title type='text'>Das alte Zeug muss raus!</title><content type='html'>&lt;p&gt;Ich habe mir heute mal die Mühe gemacht und alte Hardware sortiert, rausgeschmissen und das was übrig geblieben ist in einer kleinen &lt;a href=&quot;http://sundevil.de/hendrik/wp-content/Hardwareinventar.pdf&quot;&gt;Inventarliste&lt;/a&gt; zusammengefasst.&lt;/p&gt;
&lt;p&gt;Da ich keinerlei Verwendung für die auf der Liste befindliche Hardware habe, ist sie hiermit sozusagen zum Abschuss freigegeben. Wer Interesse an dem einen oder anderen Teilchen haben sollte, kann sich &lt;a href=&quot;mailto:solaris@sundevil.de&quot;&gt;bei mir melden&lt;/a&gt;. Das meiste davon ist Kleinkram, dafür möchte ich kein Geld sehen. Ich bin froh, wenn ich die ganzen Kabel los bin. Fast alle Teile der Liste wären quasi gegen eine Versandkostenerstattung zu haben. Bei manchen Teilen fänd ich es fair, wenn ich ein paar Cents zusätzlich sehen könnte. Rechenbeispiel: Duron-Board mit &lt;span class=&quot;caps&quot;&gt;CPU&lt;/span&gt;, Netzteil und 2 GB Platte: 1 Flasche Rotwein &amp;#8211; trocken aus dem Jahr 2003 am besten &amp;#8211; oder so ;-)&lt;/p&gt;
&lt;p&gt;Falls jemand ne Adresse hat oder ne Organisation kennt, wo man sowas irgendwie wohltätig abgeben kann (so ala Möbel beim Roten Kreuz), bitte auch einfach melden. Ich höre da zwar immer ein paar Dinge, aber wirklich konkret kenne ich da nix.&lt;/p&gt;
&lt;p&gt;Wäre ja schade, wenn die ganze funktionierende Hardware auf dem Müll landen würde.&lt;/p&gt;</content><updated>2005-12-04T00:00:00+00:00</updated><link href='/2005/12/04/das-alte-zeug-muss-raus/' rel='alternate'/></entry><entry><id>/2005/12/04/besser-spaet-als-nie</id><title type='text'>Besser spÃ¤t als nie</title><content type='html'>&lt;p&gt;Anfang Oktober habe ich aufgrund von &lt;a href=&quot;http://www.heise.de/newsticker/meldung/61183&quot;&gt;verschiedenen&lt;/a&gt; &lt;a href=&quot;http://www.heise.de/newsticker/meldung/63280&quot;&gt;Nachrichten&lt;/a&gt; entschieden, mein Konto bei &amp;#8220;Amazon.de&amp;#8221; löschen zu lassen und eine Auskunft über die über mich gespeicherten Daten zu verlangen, wie es das Bundesdatenschutzgesetz vorsieht. Dazu habe ich &amp;#8211; wie das Gesetz es ebenso vorsieht &amp;#8211; eine Frist gesetzt, die Ende Oktober / Anfang November abgelaufen ist. Mein Account war bis dahin gelöscht. Allerdings wartete ich vergeblich auf die Datenauskunft. Ein ToDo-Eintrag mit &amp;#8220;Beschwerde bezügl. Datenschutz Amazon.de GmbH&amp;#8221; gab es seit dem bei mir schon. Ich hatte nur noch nicht die Zeit gefunden, sie zu verfassen.&lt;/p&gt;
&lt;p&gt;Am 25.11.2005 ist dann doch die erwünschte Auskunft eingetroffen. Laut dieser Auskunft speichert Amazon lediglich Daten,   &amp;#8220;die helfen, das Einkaufserlebnis bei Amazon.de individuell zu gestalten und zu verbessern&amp;#8221;. Das ist übrigens exakt der gleiche Text wie in der obigen Newsmeldung.  Als Auflistung erhielt ich grob gesagt dann meine Adress- und Kontodaten sowie alle bisher gekauften Artikel und verbrauchte Gutscheine. Und den Hinweis &amp;#8220;Kontakte keine&amp;#8221;. Hier wären dann noch alle persönlichen Emails von und zu Amazon registriert gewesen. Siehe hier zu den &lt;a href=&quot;http://www.daten-speicherung.de/untern.htm#amazon&quot;&gt;Artikel bei daten-speicherung.de&lt;/a&gt;. Zu den in den News erwähnten Clickstreams steht dort natürlich nichts, obwohl Amazon anscheinend ja zugegeben hat, dass sie die genaue Abfolge von Seitenaufrufen durch (eingeloggte) Kunden aufzeichnen und als &amp;#8220;gängige Marketingpraxis im Internet&amp;#8221; bezeichnen. Ich werde mal überlegen, ob ich mir die Mühe mache und da nachhake. Diese Informationen werden wahrscheinlich tief in irgendwelchen Datenbanken drinstecken. Ob die die Daten nun so ad hoc pro Kunde abrufen können, weiß ich nicht. Gespeichert werden sie wohl&amp;#8230; Vgl. oben genannten Artikel bei daten-speicherung.de.&lt;/p&gt;
&lt;p&gt;Als positives Beispiel was Datenauskunft angeht, kann ich &amp;#8220;&lt;span class=&quot;caps&quot;&gt;BSW&lt;/span&gt; Bonus &amp;amp; Club&amp;#8221; nennen. Der Verein ist zwar ziemlich penetrant, was Werbung angeht (auch zurückschicken hilft hier wenig). Nach der Bitte um Auskunft, die innerhalb der Frist beantwortet wurde, kam jedoch nichts mehr.&lt;/p&gt;
&lt;p&gt;Noch ausstehend ist meine Anfrage bei &amp;#8220;&lt;span class=&quot;caps&quot;&gt;DAILING&lt;/span&gt;.de&amp;#8221;. Damals (vor ca. 4-5 Jahren) konnte man dort kostenlos &lt;span class=&quot;caps&quot;&gt;SMS&lt;/span&gt; über das Internet verschicken. Mittlerweile ist das kostenpflichtig und man kann da jamba-like Klingeltöne erwerben. Ich habe mich auf der Internetseite mind. 2x abgemeldet und bekomme immer noch &lt;span class=&quot;caps&quot;&gt;SMS&lt;/span&gt;- und Email-Spam. Hier wird demnächst eine Beschwerde bei der &lt;a href=&quot;http://www.datenschutz.rlp.de/kontrolle/privat.html&quot;&gt;Aufsichtsbehörde für Datenschutz im nicht-öffentlichen Bereich&lt;/a&gt; fällig.&lt;/p&gt;
&lt;p&gt;Fazit: Deutsche Unternehmen nehmen das &lt;span class=&quot;caps&quot;&gt;BDSG&lt;/span&gt; unterschiedlich ernst. Die EU-Regierung würde es am liebsten abschaffen (oder ist schon dabei es zu tun). Das ist aber ein &lt;a href=&quot;http://www.heise.de/newsticker/meldung/66927&quot;&gt;anderes Thema&lt;/a&gt;. Interessant wird die Datenschutzerklärung von Firmen, wenn es sich um internationale Firmen handelt. In den &lt;span class=&quot;caps&quot;&gt;USA&lt;/span&gt; gehören Daten, die über Kunden gespeichert werden z. B. grundsätzlich der Firma. Diese Daten können dann verkauft und verteilt werden, wie es den Firmen so passt (grob gesagt). In Deutschland gehören mir meine Daten (noch!) selbst. Die Frage ist nur, wie lange das noch so bleibt.&lt;/p&gt;</content><updated>2005-12-04T00:00:00+00:00</updated><link href='/2005/12/04/besser-spaet-als-nie/' rel='alternate'/></entry><entry><id>/2005/10/05/zu-ihrer-sicherheit</id><title type='text'>Zu Ihrer Sicherheit...</title><content type='html'>&lt;p&gt;&amp;#8230; haben unsere Geldautomaten nun den grünen Karteneinschubschutz. &amp;#8211; Oder sowas. Das steht seit ein paar Monaten bei den Geldautomaten der &lt;span class=&quot;caps&quot;&gt;LBBW&lt;/span&gt; (jetzt BW-Bank) auf den Monitoren und dort, wo man die Karte einführt ist so eine grün-durchsichtige Plastikführung.&lt;/p&gt;
&lt;p&gt;Warum ich das hier schreibe? Ich möchte gern wissen, wofür dieses Teil wirklich gut ist. &amp;#8220;Zu meiner Sicherheit&amp;#8221;. Coole Sache, das. Äh ja und wie jetzt? Wird dadurch verhindert, dass ich aus versehen die Karte abbreche und dann mit der Spitzen kannte wohlmöglich die Bank überfalle oder wie? Ich versteh es nicht. Ich bin immer kurz davor in die Bank reinzulatschen und die Leute am Schalter zu fragen: &amp;#8220;Wie um alles in der Welt wird &lt;span class=&quot;caps&quot;&gt;MEINE&lt;/span&gt; Sicherheit durch ein grünes, durchsichtiges Stück Plastik vor dem Karteneinschub am Geldautomaten erhöht.&amp;#8221;&lt;/p&gt;
&lt;p&gt;Ich glaube, dass mach ich wirklich bald&amp;#8230; Dieser Spruch da ist doch total bekloppt. Würde da stehen &amp;#8220;Zum Schutz vor Abbrechen Ihrer Karte&amp;#8221; oder irgendsowas &amp;#8211; ok. Aber einfach &amp;#8220;Zu Ihrer Sicherheit&amp;#8221; &amp;#8211; Das ist wieder tolles Sicherheits-Buzzword-Gelaber. Außer mir stört sich da wahrscheinlich keiner dran&amp;#8230; Ottonormalgeldautomatenbenutzer lesen das und denken sich &amp;#8220;Oh-ho! Super. Mehr Sicherheit&amp;#8221;.&lt;/p&gt;
&lt;p&gt;Das liegt vielleicht auch daran, dass ich vor kurzem &lt;a href=&quot;http://schneier.com/book-beyondfear.html&quot;&gt;Beyond Fear&lt;/a&gt; gelesen habe und ich nun immer erstmal alles, was irgendwie &amp;#8220;mehr Sicherheit&amp;#8221; verspricht analysiere&amp;#8230; Ist ein sehr empfehlenswertes Buch btw. Lässt sich gut lesen und durch die netten Anekdoten aus Tierwelt und Geschichte ist das Buch &amp;#8211; trotz des ernsten Themas &amp;#8211; teilweise sogar richtig lustig.&lt;/p&gt;
&lt;p&gt;Also falls jemand rausgefunden hat, wofür das Teil wirklich da ist, möge hier bitte einen Kommentar hinterlassen.&lt;/p&gt;</content><updated>2005-10-05T00:00:00+00:00</updated><link href='/2005/10/05/zu-ihrer-sicherheit/' rel='alternate'/></entry><entry><id>/2005/06/02/tastatur-gereinigt</id><title type='text'>Tastatur gereinigt</title><content type='html'>&lt;p&gt;Heute hab ich mal meine Apple Pro Keyboard meines iMacs zerlegt. Das ganze ging wunderbar nach &lt;a href=&quot;http://www.technology.niagarac.on.ca/people/bgracey/prokeyboardrepair.html&quot;&gt;Anleitung&lt;/a&gt;. Dabei kam allerhand Staub, Krümel und anderes Zeug, was sich eben so nach 3 Jahren Benutzung in einer Tastatur ansammelt, zu Tage. Nun ist die Tastatur wieder sauber. Sie sieht aus wie neu und fühlt sich auch so an. Beim Tippen werden die Tasten eben nicht mehr von riesigen Staubmengen aufgehalten.&lt;/p&gt;
&lt;p&gt;Kleiner Tipp zum machmachen: Ein 1.27mm Inbusschlüssel (also 0.05 Zoll) ist in normalen Baumärkten schwer zu finden. Obi und Zweygart hatten sowas hier nicht. Bei &lt;a href=&quot;http://www.conrad.de&quot;&gt;Conrad&lt;/a&gt; bin ich dann fündig geworden. Für 4 &lt;span class=&quot;caps&quot;&gt;EUR&lt;/span&gt; gibt&amp;#8217;s da einen &amp;#8220;Wiha PicoFinish 263 P&amp;#8221;, mit dem die Keyboard-Demontage klappt.&lt;/p&gt;</content><updated>2005-06-02T00:00:00+00:00</updated><link href='/2005/06/02/tastatur-gereinigt/' rel='alternate'/></entry><entry><id>/2005/05/11/synergy</id><title type='text'>Synergy</title><content type='html'>&lt;p&gt;&lt;img src=&apos;http://www.sundevil.de/hendrik/pics/logo.gif&apos; alt=&apos;Synergy&apos; align=&quot;right&quot; /&gt; Gestern habe ich irgendwie beim rumsurfen nach Infos zum &lt;a href=&quot;http://www.micronet.com/General/minimate.asp&quot;&gt;Mini mate&lt;/a&gt; einen &lt;a href=&quot;http://apple.slashdot.org/comments.pl?sid=147256&amp;cid=12343084&quot;&gt;Slashdot-Kommentar&lt;/a&gt; gefunden, in dem jemand &lt;a href=&quot;http://synergy2.sf.net&quot;&gt;synergy&lt;/a&gt; erwähnt.&lt;/p&gt;
&lt;p&gt;Heute habe ich das Programm spaßeshalber mal getestet. Das Programm erlaubt es von einem Rechner einen anderen Fernzusteuern. Allerdings nicht wie &lt;span class=&quot;caps&quot;&gt;VNC&lt;/span&gt; als Remote Desktop sondern eher wie ein &lt;span class=&quot;caps&quot;&gt;KVM&lt;/span&gt;. Von meinem iMac habe ich die Steuerung des daneben stehenden &lt;a href=&quot;http://www.sundevil.de/hendrik/netzwerk/testi/&quot;&gt;Test-Rechners&lt;/a&gt; (Notiz für mich: Mal wieder gescheite Rechnernamen überlegen) übernommen. Funktioniert eigentlich wunderbar. Nur manchmal ruckelt die Maus etwas. Für normales Arbeiten ist das kein Problem. Man sollte damit nur nicht auf die Idee kommen präzise Arbeiten auf dem anderen Rechner ausführen zu wollen.&lt;/p&gt;</content><updated>2005-05-11T00:00:00+00:00</updated><link href='/2005/05/11/synergy/' rel='alternate'/></entry><entry><id>/2005/05/11/baustellen-in-deutschland-und-baustellen-in-frankreich</id><title type='text'>Baustellen in Deutschland und Baustellen in Frankreich</title><content type='html'>&lt;p&gt;Auf dem Weg zur S-Bahn ist mir in den letzten Tagen eine Baustelle aufgefallen. Nichts großes. Die Baustelle ist circa 50-100m lang und liegt ein einer ruhigen Nebenstraße. Es soll wohl ein Randstein erneuert werden. Die Baustelle ist dort seit Montag. Ich bin mal gespannt, wann die Leute da fertig sind. Bis jetzt sind ca. 20m Randstein ausgetauscht. Es stehen noch allerhand Absperrungen rum und es sind noch Dinge angezeichnet&amp;#8230;&lt;/p&gt;
&lt;p&gt;Was ist nun so besonders an dieser kleinen Baustelle? Eigentlich nichts. Es gibt sicherlich tausende solcher Baustellen in Deutschland. Und ich frage mich immer, warum das so lange braucht, bis man das fertig hat. Ok, vielleicht dauert sowas einfach so lange&amp;#8230;&lt;/p&gt;
&lt;p&gt;&amp;#8230; dann aber nur in Deutschland. Passendes Erlebnis dazu fand vor ca. 1,5 Jahren in Frankreich im Urlaub statt. Morgens (also so gegen 11 ;-)) sind wir zum Strand gefahren, welcher sich ca. 10 km von unserer Ferienresidenz entfernt befand. Da ist uns eine sicherlich an die 5 km lange Baustelle aufgefallen. War nicht sonderlich abgesperrt, aber man erkannte, dass da gearbeitet wurde: Die löchrige, kaputte Straße wurde erneuert. Soweit nichts besonderes.&lt;/p&gt;
&lt;p&gt;Zu unserer Überraschung war die komplette Straße bei der Rückfahrt vom Strand (abends) komplett fertig. Neuer Straßenbelag auf der ganzen Strecke, wo vorher die Baustelle war. Keine Bauarbeiter zu sehen. Das fand ich sehr beeindruckend. Vielleicht kann man das nicht vergleichen und sicherlich ist es auch falsch von einer französischen, schnellen Baustelle auf andere zu schließen. Dennoch war das ein Ereignis, was mir im Kopf blieb. Immer wenn ich nun in Deutschland an Baustellen vorbeifahre, wo es aussieht, als dauert es noch ewig bis sich da was tut, denke ich an die schnellen Franzosen. Und Urlaub. Hat ja auch was ;-)&lt;/p&gt;</content><updated>2005-05-11T00:00:00+00:00</updated><link href='/2005/05/11/baustellen-in-deutschland-und-baustellen-in-frankreich/' rel='alternate'/></entry><entry><id>/2005/05/05/siemens-sp65-mit-isync-01-5</id><title type='text'>Siemens SP65 mit iSync 1.5</title><content type='html'>&lt;p&gt;&lt;img src=&apos;http://www.sundevil.de/hendrik/pics/isync.jpg&apos; alt=&apos;iSync&apos; align=&quot;left&quot; /&gt;&lt;br /&gt;
Gestern kam mein neues Mobiltelefon aka &amp;#8220;Handy&amp;#8221; ;-) an. Es ist ein &lt;a href=&quot;http://communications.siemens.com/cds/frontdoor/0,2241,de_de_0_87805_rArNrNrNrN,00.html&quot;&gt; Siemens SP65&lt;/a&gt;. Das ist quasi ein S65 mit Zusatzfeature &amp;#8220;keine Kamera&amp;#8221;. Klingt komisch, ist aber so.&lt;/p&gt;
&lt;p&gt;&lt;img src=&apos;http://www.sundevil.de/hendrik/pics/siemens_sp65.jpg&apos; alt=&apos;Siemens SP65&apos; align=&quot;right&quot; /&gt;&lt;br /&gt;
Da das Sychronisieren mit dem &lt;a href=&quot;http://www.fscklog.com/2004/09/siemens_s65_mit.html&quot;&gt;S65 und iSync&lt;/a&gt; &amp;#8211; obwohl &lt;a href=&quot;http://www.apple.com/macosx/features/isync/devices.html&quot;&gt;offiziell nicht unterstützt&lt;/a&gt; &amp;#8211; funktioniert, dachte ich mir, dann wird das mit dem SP65 ja auch einfach ohne Probleme gehen.&lt;/p&gt;
&lt;p&gt;Das Telefon wird per Bluetooth als Mobiltelefon erkannt und eine Kopplung ist möglich. Das Übertragen von Dateien funktioniert auch. Allerdings erkennt iSync das Telefon nicht.&lt;/p&gt;
&lt;p&gt;Nach mehrstündiger Web-Recherche und diversen Suchen im lokalen Dateisystem nach &amp;#8220;siemens&amp;#8221; bzw. &amp;#8220;s55&amp;#8221; (damit geht&amp;#8217;s ja offiziell) habe ich schließlich eine Lösung gefunden. Um den Sync hinzubekommen muss man folgende Dinge tun:&lt;/p&gt;
&lt;h2&gt;BTConduit_phones.plist anpassen&lt;/h2&gt;
&lt;p&gt;Die Datei &lt;code&gt;/System/Library/CoreServices/SyncServer.app/Contents/Resources/SupportedBluetoothDevices/ BTConduit_phones.plist&lt;/code&gt; anpassen. Aus &amp;#8220;S55&amp;#8221; einfach &amp;#8220;SP65&amp;#8221; machen (mit TextEdit oder unter der Konsole mit vi). Der Eintrag sieht dann in etwa so aus:&lt;/p&gt;
&lt;pre class=&quot;prettyprint&quot;&gt;&lt;code&gt;
&amp;lt;key&amp;gt;+CGMI

SIEMENS--separator--+CGMM

SP65&amp;lt;/key&amp;gt;
&amp;lt;string&amp;gt;bttool&amp;lt;/string&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;iSync starten und koppeln&lt;/h2&gt;
&lt;p&gt;Die Kopplung vom Telefon aus einleiten. (vorher darf keine Bluetooth-Verbindung zwischen Telefon und Mac eingerichtet sein. Ggf. über die Bluetooth-Einstellungen die Verbindung löschen. Nicht nur die Favoriten!)&lt;/p&gt;
&lt;h2&gt;Gerät suchen&lt;/h2&gt;
&lt;p&gt;&amp;#8220;Gerät suchen&amp;#8221; in iSync &amp;#8211; Das Telefon müsste in iSync angezeigt werden &amp;#8211; nicht im &amp;#8220;Suchen&amp;#8221;-Fenster, sondern direkt in der iSync-Leiste. Evtl. Testweise einen Sync ausführen &amp;#8211; wird aber nicht klappen.&lt;/li&gt;&lt;/p&gt;
&lt;h2&gt;iSync beenden&lt;/h2&gt;
&lt;p&gt;Wichitg: iSync beenden bevor die &lt;code&gt;BTConduitDefaults.plist&lt;/code&gt; angepasst wird.&lt;/p&gt;
&lt;h2&gt;BTConduitDefaults.plist anpassen&lt;/h2&gt;
&lt;p&gt;Die Datei &lt;code&gt;/Library/Application Support/SyncService/501/BTConduitDefaults.plist&lt;/code&gt; öffnen. Den Wert von &lt;code&gt;kBTConduitModelKey&lt;/code&gt; in der Datei ändern: unknown &amp;#8594; S55. Das Ergebnis sieht so aus (Ausschnitt):&lt;/p&gt;
&lt;pre class=&quot;prettyprint&quot;&gt;&lt;code&gt;
&amp;lt;key&amp;gt;kBTConduitModelKey&amp;lt;/key&amp;gt;
&amp;lt;string&amp;gt;S55&amp;lt;/string&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;iSync starten&lt;/h2&gt;
&lt;p&gt;Fröhlich synchronisieren. Fertig.&lt;/p&gt;
&lt;p&gt;Bei mir funktioniert dann der Sync wunderbar. Kalender und Telefonbuch werden abgeglichen. Das &lt;a href=&quot;http://www.fscklog.com/2004/10/nachtrag_zu_s65.html&quot;&gt;Problem mit den Umlauten&lt;/a&gt; wegen &lt;span class=&quot;caps&quot;&gt;UTF&lt;/span&gt;-7 / &lt;span class=&quot;caps&quot;&gt;UTF&lt;/span&gt;-8 tritt bei mir nicht auf. Die paar Adressbucheinträge mit ö, die ich habe werden korrekt übertragen. Vielleicht hat Siemens in der Tat &lt;span class=&quot;caps&quot;&gt;UTF&lt;/span&gt;-7 Support in der aktuellen Firmware mit drin (laut *#06# habe ich Version 47).&lt;/p&gt;
&lt;p&gt;Einziges Problem. Man kann nur einmal pro iSync-Start synchronisieren, dann geht&amp;#8217;s nicht mehr. iSync beenden und neu starten und man kann wieder einmal. Ist nicht gerade hybsch, aber es geht.&lt;/p&gt;
&lt;p&gt;Ich wünsche viel Spaß beim Nachbauen, falls es jemand tut. Für alle Angaben kein Gewähr&amp;#8230; Your milage may vary =)&lt;/p&gt;</content><updated>2005-05-05T00:00:00+00:00</updated><link href='/2005/05/05/siemens-sp65-mit-isync-01-5/' rel='alternate'/></entry><entry><id>/2005/04/11/push-the-button</id><title type='text'>Push the button</title><content type='html'>&lt;p&gt;&lt;img src=&apos;http://www.sundevil.de/hendrik/pics/onebutton.png&apos; alt=&apos;one button&apos; align=&apos;right&apos; /&gt;&lt;br /&gt;
Wenn man täglich Mac OS X benutzt wird, gewöhnt man sich bei aller Liebe zur command line (und &lt;a href=&quot;http://www.ncftp.com/ncftp/&quot;&gt;ncftp&lt;/a&gt;) an die Vorteile der grafischen Oberfläche wie z. B. Drag&amp;amp;Drop.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://onebutton.org/&quot;&gt;OneButton&lt;/a&gt; ist ein &lt;span class=&quot;caps&quot;&gt;FTP&lt;/span&gt; Client für Mac OS X (ab Panther), der mit einem schlichten, übersichtlichen &lt;span class=&quot;caps&quot;&gt;GUI&lt;/span&gt; aufwartet, das eben nicht die für &lt;span class=&quot;caps&quot;&gt;FTP&lt;/span&gt; Clients typischen 2 Spalten hat, sondern nur ein Fenster, dass auf Drag&amp;amp;Drop ausgelegt ist. Das Ding ist unter der &lt;span class=&quot;caps&quot;&gt;GPL&lt;/span&gt; veröffentlicht und befindet sich noch im &amp;#8220;Demo&amp;#8221;-Statium, wie die Entwickler es nennen (Version 0.0.4). Dafür funktioniert es aber ganz gut.&lt;/p&gt;
&lt;p&gt;Ich nutze das Ding nun erst seit heute bin aber von der Oberfläche und der einfachen Bedienung sehr überzeugt. Einfach und gut. Nun denn: Push the button. =)&lt;/p&gt;</content><updated>2005-04-11T00:00:00+00:00</updated><link href='/2005/04/11/push-the-button/' rel='alternate'/></entry><entry><id>/2005/04/10/wireless-link</id><title type='text'>Wireless Link</title><content type='html'>&lt;p&gt;&lt;img src=&apos;http://www.sundevil.de/hendrik/pics/WRT54Gl.jpg&apos; alt=&apos;WRT54G 1.0&apos; align=&quot;left&quot;/&gt;&lt;br /&gt;
&lt;img src=&apos;http://www.sundevil.de/hendrik/pics/arcordslwlanmodem100.gif&apos; alt=&apos;Arcor-DSL WLAN-Modem 100&apos; align=&quot;right&quot; /&gt;&lt;br /&gt;
Ich habe es nun endlich geschafft eine stabile kabellose Verbindung zwischen meinem Arcor Router (basiert auf Zyxel Prestige 660HW-67) und dem kabelbasiertem Netz hinbekommen. Dazu habe ich meinen &lt;a href=&quot;http://www.linksys.com/international/product.asp?coid=8&amp;ipid=455&quot;&gt;Linksys WRT54G &lt;/a&gt;&lt;acronym title=&quot;Wireless Local Area Network&quot; lang=&quot;en&quot;&gt;&lt;span class=&quot;caps&quot;&gt;WLAN&lt;/span&gt;&lt;/acronym&gt;-Router mit &lt;a href=&quot;http://openwrt.org/&quot;&gt;OpenWRT&lt;/a&gt; geflasht und beim ersten Versuch probiert das ganze  &lt;acronym title=&quot;Local Area Network&quot; lang=&quot;en&quot;&gt;&lt;span class=&quot;caps&quot;&gt;LAN&lt;/span&gt;&lt;/acronym&gt; einfach per Wireless-Bridge anzschließen. Das ging jedoch nicht so gut. Die Verbindung war zwar da &amp;#8211; pings gingen durch &amp;#8211; aber surfen war nur teilweise möglich. War irgendwie nicht sehr stabil. Rumspielen mit txpower etc. hat auch nichts gebracht.&lt;/p&gt;
&lt;p&gt;Also habe ich versucht den Router im &amp;#8220;echten&amp;#8221; Client-Modus zu betreiben und zu routen. Zum Glück beherrscht der Arcor Router  &lt;acronym title=&quot;Routing Information Protocol&quot; lang=&quot;en&quot;&gt;&lt;span class=&quot;caps&quot;&gt;RIP&lt;/span&gt;&lt;/acronym&gt;. Eine statische Route ins interne Netz hätte es auch getan, aber die kann man &amp;#8211; zumindest auf dem Webinterface nicht einstellen. Über das Telnet interface ist das vielleicht möglich, aber ich habe mich für &lt;acronym title=&quot;Routing Information Protocol&quot; lang=&quot;en&quot;&gt;&lt;span class=&quot;caps&quot;&gt;RIP&lt;/span&gt;&lt;/acronym&gt; entschieden.&lt;/p&gt;
&lt;p&gt;Auf dem WRT54g (Version 1.0 &amp;#8211; die Version mit den vielen &lt;acronym title=&quot;Light Emitting Diode&quot; lang=&quot;en&quot;&gt;&lt;span class=&quot;caps&quot;&gt;LED&lt;/span&gt;&lt;/acronym&gt;s) habe ich quagga zebra installiert. Dazu habe ich den Router erstmal per &lt;acronym title=&quot;Wide Area Network&quot; lang=&quot;en&quot;&gt;&lt;span class=&quot;caps&quot;&gt;WAN&lt;/span&gt;&lt;/acronym&gt;-Interface ins Netz gehangen:&lt;br /&gt;
&lt;pre&gt;&lt;br /&gt;
nvram set wan_ipaddr=192.168.50.253&lt;br /&gt;
nvram set wan_gateway=192.168.50.254 # Das ist mein Arcor router&lt;br /&gt;
nvram set wan_dns=192.168.50.1              # Das ist core&lt;br /&gt;
nvram commit&lt;br /&gt;
reboot&lt;br /&gt;
&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;Dann erstmal die &lt;acronym title=&quot;Wireless Local Area Network&quot; lang=&quot;en&quot;&gt;&lt;span class=&quot;caps&quot;&gt;WLAN&lt;/span&gt;&lt;/acronym&gt;-Verbindung zwischen den Routern herstellen:&lt;br /&gt;
&lt;pre&gt;&lt;br /&gt;
nvram set wl0_mode=wet    # sta wäre eigentlich Station-Mode, damit hatte ich aber keinen Erfolg&amp;#8230;&lt;br /&gt;
nvram set lan_ipaddr=192.168.40.1&lt;br /&gt;
nvram set security_mode=wep&lt;br /&gt;
nvram set wl0_wep=on&lt;br /&gt;
nvram set wl0_key=5576F62595178EA5585790DFDD # Nein, das ist nicht mein echter &lt;span class=&quot;caps&quot;&gt;WEP&lt;/span&gt; key&lt;br /&gt;
nvram commit &lt;br /&gt;
reboot&lt;br /&gt;
&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;Ping auf den anderen Router. Geht.&lt;/p&gt;
&lt;p&gt;Nach dem reboot dann Zebra installieren:&lt;br /&gt;
&lt;pre&gt;&lt;br /&gt;
ipkg install quagga-ripd&lt;br /&gt;
&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;Wenn man nun zebra testweise starten möchte erhält man die Meldung:&lt;br /&gt;
&lt;pre&gt;&lt;br /&gt;
(Zebra)privs_init: could not lookup user root&lt;br /&gt;
&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;Das liegt daran, dass standardmäßig auf dem OpenWRT keine User installiert sind. Ich habe daraufhin den dropbear -ssh-Server installiert, was angesichts der unsicheren telnetverbindung sowieso eine gute Idee ist. Bei der Installation wird dann automatisch der User &amp;#8220;root&amp;#8221; angelegt.&lt;br /&gt;
/etc/quagga/zebra.conf&lt;br /&gt;
&lt;pre&gt;&lt;br /&gt;
hostname rigel&lt;br /&gt;
password geheim&lt;br /&gt;
enable password geheim&lt;br /&gt;
!&lt;br /&gt;
! Interface&amp;#8217;s description. &lt;br /&gt;
!&lt;br /&gt;
interface lo&lt;br /&gt;
  description Loopback&lt;br /&gt;
interface br0&lt;br /&gt;
  description ethernet-wireless&lt;br /&gt;
!&lt;br /&gt;
! Static default route sample.&lt;br /&gt;
!&lt;br /&gt;
ip route 0.0.0.0/0 192.168.40.254&lt;br /&gt;
!&lt;br /&gt;
&lt;/pre&gt;&lt;br /&gt;
/etc/quagga/ripd.conf&lt;br /&gt;
&lt;pre&gt;&lt;br /&gt;
hostname rigel&lt;br /&gt;
!&lt;br /&gt;
router rip&lt;br /&gt;
  network 192.168.50.0/24&lt;br /&gt;
  network 192.168.40.0/24&lt;br /&gt;
&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;Nun noch die Startup Files anlegen:&lt;br /&gt;
&lt;pre&gt;&lt;br /&gt;
cat &amp;gt;/etc/init.d/S95zebra&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
/sbin/zebra -d -f /etc/quagga/zebra.conf&lt;br /&gt;
^D&lt;br /&gt;
cat &amp;gt;/etc/init.d/S95ripd&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
/sbin/ripd -d -f /etc/quagga/ripd.conf&lt;br /&gt;
^D&lt;br /&gt;
&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;Dann hab ich noch die &lt;acronym title=&quot;Internet Protocol&quot; lang=&quot;en&quot;&gt;IP&lt;/acronym&gt;-Adresse des Arcor Routers auf 192.168.40.254 umgestellt und &lt;acronym title=&quot;Routing Information Protocol&quot; lang=&quot;en&quot;&gt;&lt;span class=&quot;caps&quot;&gt;RIP&lt;/span&gt;&lt;/acronym&gt; aktiviert, die default routes auf den Clients im 50er Netz geändert, einmal rundum gepingt, ob sich alle Rechner sehen können und schon ging&amp;#8217;s über den Wireless Link ins Internet.&lt;/p&gt;</content><updated>2005-04-10T00:00:00+00:00</updated><link href='/2005/04/10/wireless-link/' rel='alternate'/></entry><entry><id>/2005/04/04/danke-hauppauge-teil-2</id><title type='text'>Danke Hauppauge - Teil 2</title><content type='html'>&lt;p&gt;Vor einem dreiviertel Jahr habe ich ja schonmal in &lt;a href=&quot;/2004/08/16/danke-hauppauge/&quot;&gt;Danke Hauppauge&lt;/a&gt; beschrieben, welchen &amp;#8220;Spaß&amp;#8221; ich beim Einrichten einer Hauppauge WinTV Nova-S auf einem Windows-2000-System hatte.&lt;/p&gt;
&lt;p&gt;&lt;img src=&apos;http://www.sundevil.de/hendrik/pics/HauppaugeNovas.jpg&apos; alt=&apos;Hauppauge Nova-S (alt)&apos; align=&apos;right&apos;/&gt;&lt;/p&gt;
&lt;p&gt;Letztes Wochenende wollte ich nun diese Karte in besagtem System gegen ein neueres Modell (mit Fernbedienungsanschluss) tauschen. Das erforderte ein Update der Hauppauge-Software von Version 2.17 auf 2.18c. Um es kurz zu machen: Die Installation (bzw. Deinstallation der alten Software) ging realitv problemlos. Das System stürtze allerdings nach ca. 20 Minuten fernsehen repoduzierbar ab. Software 2.17 mit der neuen Karte wäre sinnlos gewesen, da der einzige Grund für die Installation die Unterstützung der Fernbedienung war. Alte Karte mit neuer Software wäre ebenso sinnlos, da an der alten Karte kein Fernbedienungsanschluss dran ist.&lt;/p&gt;
&lt;p&gt;Im Endeffekt habe ich das System wieder in den &amp;#8220;Urzustand&amp;#8221; zurück versetzt: &amp;#8220;alte&amp;#8221; Karte und Software 2.17. Das läuft nun wieder stabil &amp;#8211; ohne Fernbedienung.&lt;/p&gt;
&lt;p&gt;Es bleibt offen, ob nun die Software einen Schaden hat (was mich nicht wundern würde), oder die Karte. Seltsam ist das Verhalten jedenfalls. Für genaue Untersuchungen blieb keine Zeit, da ich nur auf Besuch vor Ort war und außerdem draußen die Sonne schien, deren Genuß auf jeden Fall einem verkorsten Windows-Rumtest-Nachmittag vorzuziehen ist.&lt;/p&gt;
&lt;p&gt;Sollte ich jemals für mich ein &lt;span class=&quot;caps&quot;&gt;DVB&lt;/span&gt;-System bauen ist eh klar, dass da ein schmuckes Linux mit &lt;a href=&quot;http://www.cadsoft.de/vdr/&quot;&gt;&lt;span class=&quot;caps&quot;&gt;VDR&lt;/span&gt;&lt;/a&gt; drauf kommt. Das läuft bei zwei von mir eingerichteten Systemen (jeweils mit dem großen Bruder der Nova-S &amp;#8211; der Nexus-S) problemlos.&lt;/p&gt;</content><updated>2005-04-04T00:00:00+00:00</updated><link href='/2005/04/04/danke-hauppauge-teil-2/' rel='alternate'/></entry><entry><id>/2005/03/26/von-proteus-zu-adium</id><title type='text'>Von Proteus zu Adium</title><content type='html'>&lt;p&gt;&lt;img src=&apos;http://www.sundevil.de/hendrik/pics/green.png&apos; alt=&apos;Adium&apos; align=&quot;left&quot; /&gt;&lt;br /&gt;
Bis vor kurzem habe ich noch den &lt;acronym title=&quot;instant messenger&quot; lang=&quot;en&quot;&gt;IM&lt;/acronym&gt;-Client Proteus genutzt. Proteus ist jedoch Shareware. Man kann alle Funktionen nutzen, aber die Zahlungsaufforderung immer wegzuklicken führt auf Dauer dann schon zu einem schlechten Gewissen. Auf der Suche nach irgendwelchen Wordpress-Sachen bin ich auf &lt;a href=&quot;http://www.alexking.org/index.php?content=technology/software.php&quot;&gt;Alex King&amp;#8217;s Homepage&lt;/a&gt; auf &lt;a href=&quot;http://adium.sourceforge.net/&quot;&gt; Adium X&lt;/a&gt;  gestoßen. Adium X ist unter der &lt;a href=&quot;http://www.fsf.org/copyleft/gpl.html&quot;&gt;&lt;span class=&quot;caps&quot;&gt;GNU&lt;/span&gt; General Public Licence&lt;/a&gt; lizensiert und kostenlos erhältlich.&lt;/p&gt;
&lt;p&gt;Es  hat allerhand praktische Features, wie z.B. das Auto-resize der Kontaktliste, mehrere tabbed-Chat-Fenster, Bilder für jeden Kontakt, Anzeige der Idle-Time und lässt sich über &lt;a href=&quot;http://www.adiumxtras.com/&quot;&gt;diverse Extras &lt;/a&gt;anpassen.&lt;/p&gt;
&lt;p&gt;Natürlich wollte ich beim Wechsel der Clients die alten Daten (Kontaktliste und Logs) übernehmen. Für die Logs gibt es ein Perl-Script (&lt;a href=&quot;www.visualdistortion.org/misc/proteus_importer.tar.gz&quot;&gt;proteus2adium.pl&lt;/a&gt;). Für die Kontaktliste gibt es nichts (soweit ich das beurteilen konnte).&lt;/p&gt;
&lt;p&gt;Also habe ich mich daran gemacht, die Kontaktlisten von Proteus und Adium zu analsysieren. Beides sind &lt;acronym title=&quot;eXtensible Markup Language&quot; lang=&quot;en&quot;&gt;&lt;span class=&quot;caps&quot;&gt;XML&lt;/span&gt;&lt;/acronym&gt;-Dateien. Proteus benutzt eine &lt;a href=&quot;http://developer.apple.com/documentation/Cocoa/Conceptual/PropertyLists/Concepts/AboutPropertyLists.html&quot;&gt;Apple Property-List&lt;/a&gt; und Adium die Buddy-Liste von &lt;a href=&quot;http://gaim.sf.net/&quot;&gt;Gaim&lt;/a&gt; bzw. libgaim. Bei 2x &lt;acronym title=&quot;eXtensible Markup Language&quot; lang=&quot;en&quot;&gt;&lt;span class=&quot;caps&quot;&gt;XML&lt;/span&gt;&lt;/acronym&gt; kommt natürlich gleich &lt;acronym title=&quot;Extensible Stylesheet Language Transformation&quot; lang=&quot;en&quot;&gt;&lt;span class=&quot;caps&quot;&gt;XSLT&lt;/span&gt;&lt;/acronym&gt; in den Sinn. Ging aber irgendwie nicht, weil die Property-List intern sehr ungleichmäßig verteilt war &amp;#8211; Soll heißen: per XPath auf ein bestimmtes Element bekommt man z.B. nicht alle &lt;acronym title=&quot;(ICQ) unique identification number&quot; lang=&quot;en&quot;&gt;&lt;span class=&quot;caps&quot;&gt;UIN&lt;/span&gt;&lt;/acronym&gt;s der Kontaktliste. Vielleicht habe ich auch die &amp;#8220;plist&amp;#8221; nicht richtig verstanden. Ich habe es jedoch irgendwann einfach aufgegeben.&lt;/p&gt;
&lt;p&gt;Dann habe ich angefangen ein Python-Script zu erstellen, dass die plist durchgeht und alle &lt;acronym title=&quot;(ICQ) unique identification number&quot; lang=&quot;en&quot;&gt;&lt;span class=&quot;caps&quot;&gt;UIN&lt;/span&gt;&lt;/acronym&gt;s einsammelt, egal wie tief sie in &amp;#8220;dict&amp;#8221;- oder &amp;#8220;array&amp;#8221;-Elementen vergraben waren. Da ich hin und wieder auch für andere Sachen Python einsetze habe ich mir mal spontan &lt;a href=&quot;http://pydev.sf.net/&quot;&gt;pydev&lt;/a&gt; angeschaut. Vor allem die &lt;a href=&quot;http://www.logilab.org/projects/pylint&quot;&gt;pylint&lt;/a&gt;-Integration ist sehr praktisch.&lt;/p&gt;
&lt;p&gt;Letztendlich habe ich dann bemerkt, dass Proteus doch irgendwie die Server-side-Contact-List-Geschichte unterstützt und fast(!) alle Kontakte bereits in Adium drin waren. Aber eben nicht alle. Die fehlenden paar habe ich dann von Hand eingetragen. Ganz umsonst war das rumprogrammieren mit Python aber auch nicht. Nun weiß ich wenigstens (ein bißchen&amp;#8230;), wie man &lt;acronym title=&quot;eXtensible Markup Language&quot; lang=&quot;en&quot;&gt;&lt;span class=&quot;caps&quot;&gt;XML&lt;/span&gt;&lt;/acronym&gt;-Dokumente mit Python erstellt und &amp;#8220;parsed&amp;#8221;.&lt;/p&gt;</content><updated>2005-03-26T00:00:00+00:00</updated><link href='/2005/03/26/von-proteus-zu-adium/' rel='alternate'/></entry><entry><id>/2005/03/23/wordpress-01-05-und-so</id><title type='text'>Wordpress 1.5 und so</title><content type='html'>&lt;p&gt;Ich habe am Wochenende auf Wordpress 1.5 umgestellt und festgestellt, dass das Kubrick-Theme da Standard ist. Ich hatte es kurz vor dem Update auf mein Wordpress 1.2 installiert. Noja&amp;#8230; richtig individuell ist es nicht, aber dafür sieht&amp;#8217;s schick aus.&lt;/p&gt;
&lt;p&gt;Mittlerweile ist inhaltlich alles in Wordpress gewandert. Seit 1.5 gibt es ja so eine Art &lt;span class=&quot;caps&quot;&gt;CMS&lt;/span&gt;-Funktion über &amp;#8220;Manage Pages&amp;#8221;, die ich für die statischen Seiten genutzt hab.&lt;/p&gt;
&lt;p&gt;So. Genug der Meta-Bloggerei. Bald gibt&amp;#8217;s hier wieder hinhaltlich hochwerte Einträge (hähä). Dann liest das Ding hier vielleicht auch mal jemand ;-)&lt;/p&gt;</content><updated>2005-03-23T00:00:00+00:00</updated><link href='/2005/03/23/wordpress-01-05-und-so/' rel='alternate'/></entry><entry><id>/2004/12/03/pc-schlaftest-bestanden</id><title type='text'>PC-Schlaftest bestanden</title><content type='html'>&lt;p&gt;Ich bin seit ca. 6 Jahren auf der Suche nach dem &amp;#8220;lautlosen PC&amp;#8221; oder zumindest einem geräuscharmen PC. Bis jetzt ohne Erfolg. Ich habe von Lüfterregelung, Festplattenentkopplung und Gehäusedämmung allerhand versucht und es gab immer irgend etwas, das doch noch lärmte.&lt;/p&gt;
&lt;p&gt;Vor ein paar Wochen haben sich meine Eltern einen neuen PC zugelegt. Dem Aldi-PC zum trotz ein Custom-made-Gerät von &lt;a href=&quot;http://www.upg.de&quot;&gt;&lt;span class=&quot;caps&quot;&gt;UPG&lt;/span&gt;&lt;/a&gt; &amp;#8211; meinem Standard-PC-Händler. Als &amp;#8220;Geräuschquellen&amp;#8221; sind enthalten:&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;&lt;a href=&quot;http://www.arctic-cooling.com/cpu2.php?idx=31&amp;disc=&quot;&gt;Arctic Cooling Ultra Silent TC&lt;/a&gt; auf einem &lt;span class=&quot;caps&quot;&gt;AMD&lt;/span&gt; Athlon 64 3000+&lt;/li&gt;
	&lt;li&gt;Samsung P80 80 GB HD mit &lt;a href=&quot;http://www.aconto.de/&quot;&gt;NoVibes HD Rahmen&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href=&quot;http://shop.upg.de/index.html?prdi=NETFOR003&quot;&gt;Forton / Source Netzteil&lt;/a&gt; soweit ich weiß ohne Lüftermodifikationen&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Also eigentlich keine extreme &amp;#8220;Silent-Hardware&amp;#8221;. Das Ding ist echt leise! Und das sage ich nun nach besagten 6 Jahren nicht erfolgreicher Hardware-Leisemach-Zeit. Ich habe allerhand gelesen über leise Lüfter, leise HD-Rahmen etc. und bin bis zu letzt immer wieder enttäuscht worden. Letztes Beispiel: Silentmaxx HD-Rahmen. Kostet 50 &lt;span class=&quot;caps&quot;&gt;EUR&lt;/span&gt; und die HDs sind nachher lauter als zuvor (ich muss allerdings zugeben, dass ich das Ding bis jetzt nur extern betrieben habe und nicht über die Entkopplungsnoppen aufgehangen habe&amp;#8230; kommt noch mal irgendwann)&lt;/p&gt;
&lt;p&gt;Ich habe vorhin den &amp;#8220;Schlaftest&amp;#8221; gemacht. Also PC aufgestellt in ca. 2m Entfernung zum Bett, PC eingeschaltet, hingelegt, und gehört&amp;#8230; die Umgebungsgeräusche waren lauter.&lt;/p&gt;
&lt;p&gt;Das lässt hoffen. Der c&amp;#8217;t-Artikel &amp;#8220;Hyperventilatoren&lt;br /&gt;
30 leise Kühlsysteme für Athlon-64- und Pentium-4-Prozessoren&amp;#8221; (c&amp;#8217;t 24/04, Seite 202) macht ebenfalls Mut. Ebenso wie das in der gleichen c&amp;#8217;t getestete Whipser-System &amp;#8220;NoiseMagic Highpower PC&amp;#8221;. 3350 &lt;span class=&quot;caps&quot;&gt;EUR&lt;/span&gt; wär mir das zwar nicht wert, es enthält aber allerhand nachamenswerte Ideen zur Systemkühlung.&lt;/p&gt;
&lt;p&gt;Mit einem &lt;span class=&quot;caps&quot;&gt;AMD&lt;/span&gt; 64 Prozessor ist dank Cool&amp;#8217;n&amp;#8217;Quiet und guter &lt;span class=&quot;caps&quot;&gt;CPU&lt;/span&gt;-Kühler (z.B. der Thermalright XP-120 mit &lt;span class=&quot;caps&quot;&gt;NMT&lt;/span&gt; 120W F/2GL Lüfer von aconto.de) und einen entsprechend geregeltem Netzteil(-Lüfter) auch mit weniger Geld ein leistungsfähiges und sehr leises System machbar! Endlich. Nun fehlt mir nur noch das Geld für sowas ;-)&lt;/p&gt;</content><updated>2004-12-03T00:00:00+00:00</updated><link href='/2004/12/03/pc-schlaftest-bestanden/' rel='alternate'/></entry><entry><id>/2004/11/23/natuerlich-auf-eigene-kosten</id><title type='text'>NatÃ¼rlich auf eigene Kosten...</title><content type='html'>&lt;p&gt;&lt;a href=&quot;http://www.heise.de/newsticker/meldung/53559&quot;&gt;heise online &amp;#8211; Auf eigene Kosten abgehört&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Auf welche Kosten auch sonst? Vielleicht bringt das ja was, dass die Leute endgültig aufwachen. Die Email-Überwachung durch die Provider wird außer hohe kosten und verlust von Bürgerrechten jedenfalls nichts bringen.&lt;/p&gt;
&lt;p&gt;Ich werde mich jedoch nicht überwachen lassen. Ab 1.1.2005 verschicke ich nur noch verschlüsselte Mails. Geeigente Programme für diesen Schritt existieren für jedes gängige Betriebsystem und lassen sich einfach in Mailprogramme einbinden. Wer also mit mir in Zukunft per Mail kommunizieren will, sollte dies verschlüsselt tun und ebenfalls einen &lt;span class=&quot;caps&quot;&gt;GPG&lt;/span&gt;/&lt;span class=&quot;caps&quot;&gt;PGP&lt;/span&gt;-Schlüssel seinerseits anbieten, wenn man eine Antwort erwartet. &lt;a href=&quot;http://www.sundevil.de/hendrik/kontakt/gpg-key.txt&quot;&gt; Mein &lt;span class=&quot;caps&quot;&gt;GPG&lt;/span&gt; Key&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Um das auch mit wenig Aufwand zu erreichen werde ich lustige Mailfilter einbauen, die alle nicht verschlüsselten Mails (nach Spam/back-/whitelist-Bearbeitung) mit entsprechendem Hinweis zurücksenden.&lt;/p&gt;
&lt;p&gt;Und wer meint &amp;#8220;och&amp;#8230; überwachte Emails sind doch egal, ich habe doch nix zu verbergen. Wen Interessieren schon meine Mails&amp;#8221;. &amp;#8211; Ich kanns echt nicht mehr hören &amp;#8211; Dem kann ich nur sagen: Verschickt ab jetzt bitte nur noch Postkarten, ist eh billiger und warum Briefe? Habt ja nix zu verbergen.&lt;/p&gt;
&lt;p&gt;Schön anzuschauen, wie unser Grundgesetz immer mehr zerbröckelt: Art 19. GG. Abs 1.  &amp;#8220;Das Briefgeheimnis sowie das Post- und Fernmeldegeheimnis sind unverletzlich.&amp;#8221;&lt;/p&gt;
&lt;p&gt;Na toll. Wer&amp;#8217;s glaub. Ok. Abs 2. sagt, Beschränkungen zum Schutze der demokratischen Grundordnung können Gesetze regeln&amp;#8230; aber wie wird bitte die demokratische Grundordnung durch E-Mailüberwachung geschützt? Sie wird wohl eher zerstört&amp;#8230;&lt;/p&gt;</content><updated>2004-11-23T00:00:00+00:00</updated><link href='/2004/11/23/natuerlich-auf-eigene-kosten/' rel='alternate'/></entry><entry><id>/2004/11/11/almost-there</id><title type='text'>Almost there...</title><content type='html'>&lt;p&gt;Sodele. Heute habe ich mal versucht die Blog-Seite der restlichen Homepage anzupassen. Das ganze war eine wirre &lt;span class=&quot;caps&quot;&gt;CSS&lt;/span&gt; und &lt;span class=&quot;caps&quot;&gt;HTML&lt;/span&gt; Orgie. Nun sieht die Seite fast einheitlich aus. Das Copyright unten sieht noch nicht so aus, wie auf den anderen Seiten, aber das wird irgendwann noch mal richtig gemacht. Genau so wie das Menü rechts, was teilweise in den Text reinragt&amp;#8230;&lt;/p&gt;
&lt;p&gt;Wem das alles zu wirr ist kann ja einfach in seinem Browser auf &amp;#8220;Basic Text Style&amp;#8221; schalten. Dann wird die Seite ohne großes Markup in schicker old-school-&lt;span class=&quot;caps&quot;&gt;HTML&lt;/span&gt;-Manier angezeigt. Die Seite ist dann trotzdem noch lesbar und weicht von der Struktur nicht viel von dem normalen Layout ab.&lt;/p&gt;
&lt;p&gt;Ach ja der Titel dieses Eintrags&amp;#8230; Hang in there, kids. Almost there&amp;#8230; die &lt;a href=&quot;http://www.happytreefriends.com/&quot;&gt;fröhnlichen Baumfreunde&lt;/a&gt;! Viel Spaß!&lt;/p&gt;</content><updated>2004-11-11T00:00:00+00:00</updated><link href='/2004/11/11/almost-there/' rel='alternate'/></entry><entry><id>/2004/11/05/die-obligatorischen-80x15</id><title type='text'>Die obligatorischen 80x15</title><content type='html'>&lt;p&gt;Nun habe auch ich sie in meinem Blog: Die obligatorischen 80&amp;#215;15 Banner, die in keinem Blog fehlen dürfen! ;-)  Man könnte sie schon fast 0815-Banner nennen!&lt;/p&gt;
&lt;p&gt;Einige habe ich &lt;a href=&quot;http://www.scheler.com/blogicons.php&quot;&gt;hier&lt;/a&gt; &amp;#8220;geklaut&amp;#8221;, andere &lt;a href=&quot;http://kalsey.com/tools/buttonmaker/&quot;&gt;dort&lt;/a&gt; generiert.&lt;/p&gt;
&lt;p&gt;Außerdem habe ich heute einige Spam-Filterworte hinterlegt, da schon nach wenigen Tagen Wordpress allerhand Spam-Comments zu finden waren. Das Homepagedesign ist immer noch nicht einheitlich. Vielleicht finde ich ja am Wochenende Zeit um das hier mal wieder in From zu bringen. Die &lt;a href=&quot;http://www.sundevil.de/hendrik/netzwerk/&quot;&gt;Computer-Info-Seite&lt;/a&gt; wartet ja auch schon auf ein Update&amp;#8230;&lt;/p&gt;</content><updated>2004-11-05T00:00:00+00:00</updated><link href='/2004/11/05/die-obligatorischen-80x15/' rel='alternate'/></entry><entry><id>/2004/11/01/weblog-wieder-online</id><title type='text'>Weblog wieder online</title><content type='html'>&lt;p&gt;Der ganze Oktober war quasi blogfrei. Warum? Ich hatte erstens nicht viel Zeit, etwas zu schreiben und außerdem wollte mich mein Movable Type nicht mehr rein lassen. Das Passwort war garantiert richtig, aber nee &amp;#8220;Invalid Login&amp;#8221;.&lt;/p&gt;
&lt;p&gt;Eine Anfrage beim Provider, ob die da was an den Berkeley DB Versionen gedreht haben (was dann zu diesem Verhalten führen kann) ergab, dass dem nicht so ist. Also habe ich heute kurzerhand &lt;a href=&quot;http://wordpress.org&quot;&gt;Wordpress&lt;/a&gt; installiert. Ich muss sagen, dass ich bis jetzt echt begeistert bin. Es hat keine so komische Lizenz wie MT und ist irgendwie in sich logischer aufgebaut (finde ich). Die integrierte &amp;#8220;Links&amp;#8221;-Spalte finde ich auch recht praktisch.&lt;/p&gt;
&lt;p&gt;Die alten Blog-Einträge habe ich von Hand rüberkopiert (ich kam ja ins MT nicht mehr rein, um etwas zu exportieren). Das waren zum Glück ja nicht so viele. Und die Kommentare sind  weggefallen. Bis auf einen ernsthaften Kommentar war da eh nur Spam drin. :/&lt;/p&gt;
&lt;p&gt;Nun ist das Homepagedesign natürlich mal wieder nicht schlüssig. Das werde ich aber heute nicht mehr anpassen. Da muss ich mich nun erstmal wieder bissle in die Templates einarbeiten.&lt;/p&gt;</content><updated>2004-11-01T00:00:00+00:00</updated><link href='/2004/11/01/weblog-wieder-online/' rel='alternate'/></entry><entry><id>/2004/09/21/dsl-down</id><title type='text'>DSL down</title><content type='html'>&lt;p&gt;Gestern war in Ehningen (oder Teilen davon) Stromausfall. Da ich so intelligent war meinen Server nicht an die &lt;span class=&quot;caps&quot;&gt;USV&lt;/span&gt; anzuschließem (also den Strom schon, aber nicht die Datenverbindung) ist er nach dem die &lt;span class=&quot;caps&quot;&gt;USV&lt;/span&gt; aus war schön runtergekracht. Macht aber nix, alle Daten haben zum Glück überlebt.&lt;/p&gt;
&lt;p&gt;Anders das &lt;span class=&quot;caps&quot;&gt;DSL&lt;/span&gt; Modem. Das war tot. Komischerweise ging es einem Bekannten zwei Straßen weiter genau so. &lt;span class=&quot;caps&quot;&gt;DSL&lt;/span&gt; Modem kaputt. Von den neu erworbenen zwei &lt;span class=&quot;caps&quot;&gt;DSL&lt;/span&gt; Modems war das erste dann wieder gleich kaputt. Also nochmal zum T-Punkt und schließlich ging&amp;#8217;s dann mit dem neuen, sowohl bei mir als auch bei meinem Bekannten.&lt;/p&gt;
&lt;p&gt;Kostenpunkt: 89 &lt;span class=&quot;caps&quot;&gt;EUR&lt;/span&gt;. Wahrscheinlich war ein Fehler bei der Telekom schlud am Ableben der Modems, aber wie beweist man das nun? Am besten gar nicht. Das spart Stress, erleichtert aber den Geldbeutel :/&lt;/p&gt;</content><updated>2004-09-21T00:00:00+00:00</updated><link href='/2004/09/21/dsl-down/' rel='alternate'/></entry><entry><id>/2004/09/19/zwiebelfisch</id><title type='text'>Zwiebelfisch</title><content type='html'>&lt;p&gt;Heute bin ich mit dem Zwiebelfisch-Buch namens &amp;#8220;Der Dativ ist dem Genitiv sein Tod&amp;#8221; von Bastian Sick fertig geworden. Es war sehr interessant, lehrreich und lustig :) Was will man mehr?&lt;/p&gt;
&lt;p&gt;Es war ertaunlich, was man alles so falsch schreibt und spricht, wo man doch denkt, dass man seiner Muttersprache mächtig ist.&lt;/p&gt;</content><updated>2004-09-19T00:00:00+00:00</updated><link href='/2004/09/19/zwiebelfisch/' rel='alternate'/></entry><entry><id>/2004/09/18/meine-platten</id><title type='text'>Meine Platten</title><content type='html'>&lt;p&gt;&lt;a href=&quot;http://www.timobenz.de/&quot;&gt;Timo&lt;/a&gt; hat mir die praktische Seite &lt;a href=&quot;http://www.discogs.com/&quot;&gt;Discogs&lt;/a&gt; gezeigt. Dort kann man seine Platten bzw. CD Sammlung eintragen. Das praktische ist, dass ziemliche viele Platten dort schon in der Datenbank eingepflegt sind und man sich seine Sammlung somit einfach zusammenklicken kann.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.discogs.com/collection?user=ulkbold&quot;&gt;Meine Sammlung &lt;/a&gt;ist mittlerweile auch fast vollständig dort enthalten. Die Liste kann man dann auch als Excel exportieren &amp;#8211; leider jedoch nicht direkt als &lt;span class=&quot;caps&quot;&gt;XML&lt;/span&gt; (ok, Excel &amp;#8594; &lt;span class=&quot;caps&quot;&gt;XML&lt;/span&gt; geht auch, aber das ist ja umständlich). Mit so ner &lt;span class=&quot;caps&quot;&gt;XML&lt;/span&gt; liste könnte man dann lustige Dinge tun, um das in die eigene Homepage zu integrieren. Vielleicht baue ich in einer ruhigen Minute mal etwas um die Daten da zu extrahieren&amp;#8230;&lt;/p&gt;</content><updated>2004-09-18T00:00:00+00:00</updated><link href='/2004/09/18/meine-platten/' rel='alternate'/></entry><entry><id>/2004/09/01/video-pundit-r</id><title type='text'>Video Pundit-R</title><content type='html'>&lt;p&gt;Die nächsten Einträge in der Hardware-Kategorie drehen sich um die Video-PC-Einrichtung auf folgender Hardware:&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;Punidt -R&amp;lt;&lt;/li&gt;
	&lt;li&gt;256 MB &lt;span class=&quot;caps&quot;&gt;RAM&lt;/span&gt;&lt;/li&gt;&lt;/li&gt;
	&lt;li&gt;Samsung Spinpoint SP103N 120GB &lt;/li&gt;&lt;/li&gt;
	&lt;li&gt;Hauppauge Nexus-S rev2.1 oder 2.2 &lt;/li&gt;&lt;/li&gt;
	&lt;li&gt;LG &lt;span class=&quot;caps&quot;&gt;GSA&lt;/span&gt;-4120B &lt;span class=&quot;caps&quot;&gt;DVD&lt;/span&gt; Brenner &lt;/li&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Software:&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;Betriebsystem: Linux&lt;/li&gt;&lt;/li&gt;
	&lt;li&gt;Video-Software: &lt;span class=&quot;caps&quot;&gt;VDR&lt;/span&gt;&lt;/li&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Das ganze soll ein schöner, praktischer &lt;span class=&quot;caps&quot;&gt;DVB&lt;/span&gt;-S Digital Video Rechner Rekorder werden&lt;/p&gt;
&lt;p&gt;Zunächst habe ich mein Glück mit &lt;a href=&quot;http://www.linvdr.org/&quot;&gt;linvdr 0.6&lt;/a&gt; versucht. Die Installation ging problemlos. Nachdem ich die anfangs defekte Samsung HD (&lt;span class=&quot;caps&quot;&gt;HDUTIL&lt;/span&gt; meinte: &amp;#8220;Media error&amp;#8221;) gegen eine neute getauscht hatte, bootete der Rechner auch.&lt;/p&gt;
&lt;p&gt;Die ersten Probleme gab&amp;#8217;s dann mit der Fernbedienung. Die funktionierte zwar wunderbar. Aber nach zu viel rungedrücke, stürzte der Rechner nach einem Kernel Oops ab&amp;#8230;&lt;/p&gt;
&lt;p&gt;Also die &lt;a href=&quot;http://www.heise.de/ct/ftp/projekte/vdr/&quot;&gt;c&amp;#8217;t &lt;span class=&quot;caps&quot;&gt;VDR&lt;/span&gt; Distribution&lt;/a&gt; runtergeladen und damit probiert. Installation soweit ok. Es viel mir nur auf, dass die Netzwerkkarte nicht erkannt wird.&lt;/p&gt;
&lt;p&gt;Na super.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;modprobe b44&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;funktionierte nicht. Das geht bei meinem &lt;a href=&quot;http://www.asuscom.de/products/desktop/pundit/overview.htm&quot;&gt;Punidt&lt;/a&gt; (ohne R!) wunderbar. In dem -R ist ein komplett anderes Board verbaut mit ganz anderem Chipsatz.&lt;/p&gt;
&lt;p&gt;Nach ein bißchen Recherche fand ich herraus, dass es sich um eine 3Com Karte handelt, die aber nicht mit dem &amp;#8220;normalen&amp;#8221; 3Com Treiber funktioniert bzw. nicht erkannt wird. Nach &lt;a href=&quot;http://www.fedoraforum.org/forum/showthread.php?t=2885&quot;&gt;wildem Treiber-Code-gepatche&lt;/a&gt; soll das ganze funktionieren. Als Kernel-Coder-Leihe würde ich sagen, bei dem Patch wird einfach die &lt;span class=&quot;caps&quot;&gt;PCI&lt;/span&gt; -ID der Karte in den Code getan, damit er die Karte erkennt und gut ist.&lt;/p&gt;
&lt;p&gt;Jedenfalls ist auf der c&amp;#8217;t &lt;span class=&quot;caps&quot;&gt;VDR&lt;/span&gt; CD kein Kernel-Source drauf&amp;#8230; Super! Also müsste ich den Kernel Code irgendwie auf den Rechner bekommen (&lt;span class=&quot;caps&quot;&gt;UBS&lt;/span&gt;-Stick, CD, Digi-Cam ;-)) und dann dort rumcompilen und dann mal probieren ob das geht.&lt;/p&gt;
&lt;p&gt;Auf der CD fehlt natürlich auch das &amp;#8220;fbtv&amp;#8221;-Paket, so dass ich hier noch nicht mal den vdr auf dem Monitor testen kann. Einen Fernseher mit Scart/Chinch-Eingang habe ich gerade nicht zur Hand&amp;#8230;&lt;/p&gt;
&lt;p&gt;Whatever&amp;#8230; für heute ist erstmal Schluss mit &lt;span class=&quot;caps&quot;&gt;VDR&lt;/span&gt;-en.&lt;/p&gt;</content><updated>2004-09-01T00:00:00+00:00</updated><link href='/2004/09/01/video-pundit-r/' rel='alternate'/></entry><entry><id>/2004/08/31/der-neue-g5-imac</id><title type='text'>Der neue G5 iMac</title><content type='html'>&lt;p&gt;So sieht er nun aus. Der neue G5 Imac&amp;#8230; mir persönlich gefällt er nicht so sehr. Es fehlt irgendwie das gewisse Etwas. Da finde ich den Kugel-(Lampen)-Imac schon besser oder den Alu-Design Powermac G5. Der neue Imac sieht einfach zu gewöhnlich aus. Aber vielleicht kommt das auch erst mit der Zeit&amp;#8230; das man ihn toll findet ;-)&lt;/p&gt;
&lt;p&gt;Von der technischen Seite her ist er ganz ok. G5, Serial Ata Platte, und 8X &lt;span class=&quot;caps&quot;&gt;AGP&lt;/span&gt; Grafikkarte. Fragt sich nur wie leise der dann wirklich ist&amp;#8230;&lt;/p&gt;</content><updated>2004-08-31T00:00:00+00:00</updated><link href='/2004/08/31/der-neue-g5-imac/' rel='alternate'/></entry><entry><id>/2004/08/16/i-m-blogging-this</id><title type='text'>I&apos;m blogging this...</title><content type='html'>&lt;p&gt;Ich blogge dies&amp;#8230;&lt;/p&gt;
&lt;p&gt;Mein erster Blog-Eintrag. Meine Homepage verstaubt schon fast, also musste was her, um sie aktuell zu halten und irgendwelche Leute dazu zu bewegen öfter mal hier her zu schauen. Und da Deutschland ja sowieso so wenige Blogger hat, werde ich nun versuchen diesen Mißstand zu beheben ;-)&lt;/p&gt;
&lt;p&gt;Was wird hier gebloggt?&lt;/p&gt;
&lt;p&gt;Gedanken und Kommentare zu Themen, die teilweise Durchaus als sinnfrei zu bezeichen sein koennten. Ich habe mir zunächst mal folgende Kategorien ausgedacht:&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;Mac &amp;#8211; Alles zum Thema Mac, Mac OS X, hilfreiche Programme, Erfahrunge etc.&lt;/li&gt;
	&lt;li&gt;Unix &amp;#8211; Diverses zum Thema Unix, darunter zaehle ich auch Linux&amp;#8230;&lt;/li&gt;
	&lt;li&gt;Windows &amp;#8211; Gleiches wie oben zur zum Thema Windows eben&lt;/li&gt;
	&lt;li&gt;Hardware &amp;#8211; Betriebsystemunabhaengiges zum Thema Hardware&lt;/li&gt;
	&lt;li&gt;1984 &amp;#8211; Dinge zum Thema Überwachung in der heutigen (digitalen) Gesellschaft&lt;/li&gt;
	&lt;li&gt;Allgemeines &amp;#8211; Alles, was in keine andere Kategorie passt&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Ich behalte mir erstmal das Recht vor, hier alles wild durcheinander zu würfeln, Permalinks zu zerstören und dergleichen mehr&amp;#8230; bis ich das hier alles mal ein bisschen unter Kontrolle habe. Wenn ich merke, dass hier ein paar Leute wirklich was lesen, werde ich mich natuerlich um ein wirklich funktionierendes Archiv bemühen.&lt;/p&gt;
&lt;p&gt;Das ganze hier läuft unter Movable Type 3.01D. Ich habe von dem System bis jetzt keine Ahnung (ok, es läuft, aber das war&amp;#8217;s schon). Demnächst werde ich dann mal die Templates anpassen und meine Homepage auch mal mit einem neuen &lt;span class=&quot;caps&quot;&gt;CSS&lt;/span&gt; ausstatten&amp;#8230;&lt;/p&gt;</content><updated>2004-08-16T00:00:00+00:00</updated><link href='/2004/08/16/i-m-blogging-this/' rel='alternate'/></entry><entry><id>/2004/08/16/danke-hauppauge</id><title type='text'>Danke, Hauppauge!</title><content type='html'>&lt;p&gt;Von meinen Linux Kenntnissen ausgehend dachte ich &amp;#8220;Das wird ja nicht so schwer sein&amp;#8221;. Ok, dass z.B. Nero besondere Rechte braucht, weil es direkt auf den Brenner zugreift mag ja sein, aber dass es echt einige Programme gibt (darunter auch so &amp;#8220;systemnahe&amp;#8221; Programme wie Outlook), die erstmal die Arbeit verweigern, wenn man nicht mit Admin-REchten daherkommt, wollte ich echt nicht glauben. Ich habe also mit den Tools &amp;#8220;RegMon&amp;#8221; und &amp;#8220;FileMon&amp;#8221; von Sysinternals versucht, das neueste und wohl wichtigste Programm auf besagtem Rechner &amp;#8220;Hauppauge &lt;span class=&quot;caps&quot;&gt;DVB&lt;/span&gt; TV&amp;#8221;als normaler User zu betreiben.&lt;/p&gt;
&lt;p&gt;Ich hatte nicht erwartet, dass das Programm gleich läuft. Ein Hinweis auf gewisse Einstellungen, wenn man das Programm als normaler User startet, wäre nett gewesen. Eine Fehlermeldung ala &amp;#8220;Eine Datei kann nicht geöffnet werden&amp;#8221; (kein Name angegeben!) ist da eher weniger hilfreich. Die dann folgende &amp;#8220;Microsoft Visual C++ Runtime Exception&amp;#8221; fand ich auch weniger prikelnd. Nachdem ich in etwa einstündiger Feinarbeit (woher weiss man, dass man nur mit regedt32.exe und nicht mit regedit.exe Berechtigungen auf Registry-Schluessel vergeben darf, oder dass man unter W2K die Shift-Taste drücken muss, um &amp;#8220;Ausführen als&amp;#8230;&amp;#8221; angezeigt zu bekommen, wenn man irgendwo drauf klickt) diese eine Anwendung am laufen hatte, war mir die Lust reichlich vergangen. Ein ähnliches unterfangen wäre nun wahrscheinlich für weitere Programm wie &amp;#8220;Nero&amp;#8221;, &amp;#8220;Photoshop&amp;#8221; (mit Scanner import! &amp;#8211; Ahhhhrl. Hardwarezugriff!) etc. nötig gewesen.&lt;/p&gt;
&lt;p&gt;Was tat ich also? Der normale User kommt wieder in die Gruppe &amp;#8220;Administratoren&amp;#8221;, jedes Programm läuft und es ist Ruhe im Karton. Bis der erste Wurm oder Virus aus versehen als Admin angeklickt wird&amp;#8230; dann rappelt&amp;#8217;s wieder.&lt;/p&gt;
&lt;p&gt;Und da wundert sich noch jemand, dass der normale Home-User, der sich nicht mit Computern auskennt und ihn eigentlich nur &amp;#8220;benutzen&amp;#8221; und nicht administrieren will, im normalfall nun doch mit Admin-Rechten&lt;br /&gt;
arbeitet? Da wundert man sich noch über die weltweite (bzw. windowsweite)Viren- und Wurmplage?&lt;/p&gt;
&lt;p&gt;Ich nicht. Das muss ja quasi so kommen&amp;#8230;&lt;/p&gt;
&lt;p&gt;Und die Schuldfrage? Wer ist denn Schuld an diesem Zustand? Der Enduser, der eigentlich keine Ahnung hat, sicherlich nicht&amp;#8230; oder nur teilweise. Microsoft? Sicherlich schon mehr&amp;#8230; bei der Installation ist der normale benutzer (der immerhin schon angelegt wird) automatisch in der Gruppe &amp;#8220;Administratoren&amp;#8221;, wo er eigentlich nichts zu suchen hat! Und nicht zuletzt die ganzen Softwarehersteller, die scheinbar ihre Programm nichtmal unter einem normalen User-Account testen.&lt;/p&gt;
&lt;p&gt;Fazit? Keine Ahnung. Ein Teufelskreis. Die User entwickeln kein Sicherheitsbewusstsein, weil sie gar nichts anderes kennen als den Allmächtigen AdminAccount und sich somit der Gefahr der Viren etc. ausgesetzt sehen und dies eben als gegeben hinnehmen und sich evtl noch mit Antivirenprogrammen und Personal Firewalls &amp;#8220;schuetzen&amp;#8221;. Microsoft koennte z.B. mehr Wert auf den normalen &amp;#8220;eingeschränkten&amp;#8221; Benutzeraccount legen, was allerdings dazu führen würde, da, ich schätze, 80% aller Awendungen nicht mehr richtig laufen. (Aehnliches passiert ja derzeit mit dem XP Service Pack 2). Also tut MS nichts. Und die Softwarehersteller sehen sich auch nicht gezwungen etwas zu tun, da ja quasi jeder als Admin arbeitet, also warum sollte man sein Programm dann als Multi-User Programm auslegen. Der Kreis schliesst sich.&lt;/p&gt;</content><updated>2004-08-16T00:00:00+00:00</updated><link href='/2004/08/16/danke-hauppauge/' rel='alternate'/></entry><entry><id>/2002/07/23/zensur-im-internet</id><title type='text'>Zensur im Internet</title><content type='html'>&lt;h2&gt;Zensur im Internet&lt;/h2&gt;
&lt;p&gt;Gewisse Bezirksregierungen scheint zur Zeit Freude daran zu haben uns immer mehr Grundrechte zu berauben. In Art. 5 GG steht in Abs. 1 &amp;#8220;&amp;#8230; Eine Zensur findet nicht statt.&amp;#8221; In &lt;span class=&quot;caps&quot;&gt;NRW&lt;/span&gt; scheint das jedoch nicht mehr so ganz zuzutreffen. Internetprovider müssen dort einige von der Regierung festgelegte Seiten filtern (also zensieren).&lt;/p&gt;
&lt;p&gt;Das ist eine Unverschämtheit! Hier wird eindeutig das GG außer Kraft gesetzt und das Recht zur Bildung der eigenen Meinung unterdrückt! Bei den gefilterten Seiten handelt es sich um Seiten die rechtsradikale Inhalte bereitstellen. Ich will so etwas nicht unterstützen! Es sollte jedoch jedem Bürger selber überlassen sein, ob er Zugang zu solchen Angeboten hat oder nicht. Desweiteren werden solche Seiten durch eine Zensur nicht verschwinden, sie werden in Zukunft einfach besser versteckt. Ob das Sinn der Sache ist, wage ich zu bezweifeln. Wenn solche Inhalte als verfassungsfeindlich oder gesetzeswidrig erachtet werden, dann sollen die Server vom Netz genommen werden. Eine Filterung ist jedoch eindeutig Zensur und nicht mit dem GG vereinbar!&lt;/p&gt;
&lt;p&gt;Heute sind es noch Seiten Rechtsradikaler, morgen werden dann Seiten vielleicht gefiltert, die sich kritisch über die derzeitige Regierung äußern&amp;#8230;&lt;/p&gt;
&lt;p&gt;Eine weitere Dreistigkeit der Regierung ist es, die Filterlisten nicht zu veröffentlichen. Man hat also keine Kontrolle über das was gefiltert wird und was nicht.&lt;/p&gt;
&lt;p&gt;Wie einfach durch zwangsproxies eine Zensur im Internet statt finden kann, kann jeder selber testen:&lt;a href=&quot;http://www.odem.org/insert_coin/&quot;&gt; Odem &amp;#8211; Insert Coin&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Aber nicht nur in Deutschland gibt es derartige Bemühungen. In Spanien ist vor kurzem ein neues Gesetz in Kraft getreten, was den auftritt von &amp;#8220;gewerblichen Internetseiten&amp;#8221; regelt. Dass dieses Gesetz aber quasi fast alle Webseitenbetreiber betrifft und mit den Forderungen quasi einer Zensur gleichkommt, kann man &lt;a href=&quot;http://stop1984.com/index2.php?lang=de&amp;text=hello_kampagne_lssi.txt&quot;&gt;hier&lt;/a&gt; nachlesen. Es macht unter anderem das Recht auf eine anonyme Äußerung der Meinung unmöglich. Ein Recht, dass jedem in dem Menschenrechten zugesichert wird. (vgl. &lt;a href=&quot;http://www.epic.org/privacy/intl/lssi.html#conventions&quot;&gt;epic &lt;span class=&quot;caps&quot;&gt;LSSI&lt;/span&gt; page&lt;/a&gt;).&lt;/p&gt;
&lt;h2&gt;Zensur von &amp;#8220;Killerspielen&amp;#8221;&lt;/h2&gt;
&lt;p&gt;Gerade nach dem sogenannten Amoklauf (es war eigentlich keiner. Amokläufe sind was anderes) in dem Erfurter Gymnasium schreien viele danach &amp;#8220;Killerspiele&amp;#8221; zu verbieten. Das vielleicht nicht unbedingt die Spiele daran Schuld sind ist egal. Es gibt einen Grund und das Problem ist einfach zu beheben: Weg mit dem Spielen. Einfach verbieten. Fertig. Tolle Logik. Anscheinend hat die Regierung durch diese Aktion doch etwas gelernt: Schüler, die nach der 10. Klasse vom Gymnasium abgehen sollen ab jetzt einen anerkannten Abschluss erhalten. Schade, dass dafür 22 Menschen sterben mussten.&lt;/p&gt;
&lt;p&gt;Ein ziemlich guter Text zu diesem Thema ist wie ich finde diesen hier. (Alle Leute, die von Zynismus und Satire nix halten, sollten ihn vielleicht nicht lesen).&lt;/p&gt;
&lt;h2&gt;Links&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;http://www.odem.org&quot;&gt;Online Demonstration&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://www.stop1984.org&quot;&gt;Stop 1984! &lt;/a&gt;&lt;/p&gt;</content><updated>2002-07-23T00:00:00+00:00</updated><link href='/2002/07/23/zensur-im-internet/' rel='alternate'/></entry><entry><id>/2002/07/22/ueberwachung</id><title type='text'>Ãberwachung</title><content type='html'>&lt;p&gt;Die Folgen des 11. September 2001 sind weitreichender als man annimmt. Unter dem Vorwand der Terrorbekämpfung oder der Aufdeckung von Kinderpornographie wurden weltweit Gesetze verabschiedet, die freiheitliche Grundrechte weitgehend einschränken.&lt;/p&gt;
&lt;h2&gt;Kameras&lt;/h2&gt;
&lt;p&gt;An immer mehr öffentlichen Plätzen (Bahnhöfen, Flughäfen, etc.) werden Kameras installiert.&lt;/p&gt;
&lt;p&gt;Dadurch werden jedoch kaum Verbrechen verhindert oder aufgeklärt. Zumindest auf Lange Sicht. Ganz dumm sind die Verbrecher ja nun auch nicht. Die Schauplätze von Verbrechen verlagern sich nur von der Innenstadt in die Vororte und Wohngebiete. Also genau dahin, wo man schon immer Verbrechen haben&lt;br /&gt;
wollte: Auf den Straßen wo die Kinder spielen. Wieder ein astreiner, durchdachter Zug unserer Politiker.&lt;/p&gt;
&lt;p&gt;Eine Kamera bringt natürlich sehr viel, wenn jemand Überfallen wird. Man kann dann schön das Verbrechen aufklären&amp;#8230; Eine echt tolle Logik. Mit dem Geld für die Kameras hätte man vielleicht eher Straßenbeleuchtung finanzieren sollen, oder Busse, die auch spät nachts noch fahren. Dann würden vielleicht viele Verbrechen gar nicht passieren. Siehe Artikel &lt;a href=&quot;http://www.heise.de/tp/deutsch/inhalt/te/12824/1.html&quot;&gt;Bessere Straßenbeleuchtung statt Überwachungskameras&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Aber anstatt einen anderen Weg zu suchen wird es weitergehen und es werden Kameras in den Vororten installiert&amp;#8230; Willkommen im totalen Überwachungsstaat. Sobald man das Haus verlässt wird man&lt;br /&gt;
gefilmt, und wenn man dann, nachdem der komplette Weg verfolgt wurde, wieder zu Hause ist und an seinen PC geht, geht es gerade so weiter:&lt;/p&gt;
&lt;h2&gt;Überwachung von Kommunikationswegen&lt;/h2&gt;
&lt;p&gt;Am 31.05.2002 hat der Bundesrat den Gesetzesentwurf &amp;#8220;zur Verbesserung der Ermittlungsmaßnahmen wegen des Verdachts sexuellen Missbrauchs von Kindern&amp;#8221; angenommen. Es ist somit einfacher möglich Kommunikationsverbindungen (Internet, Telefon etc.) von Verdächtigen zu überwachen. Es darf auch das Handy zur Ortung von Personen genutzt werden (man kann mit bestimmten Techniken rausfinden, in welcher Funkzelle ein bestimmtes Handy zur Zeit aktiv, d.h. angeschaltet ist).&lt;/p&gt;
&lt;p&gt;Auch dies ist wieder ein total sinnloser Schritt. Terorristen oder professionelle Kinderpornohändler werden sowieso davon ausgehen, dass sie überwacht werden und ihre Nachrichten verschlüsseln&lt;br /&gt;
oder mittels steganographischen Methoden übertragen, so dass die eigentlichen &amp;#8220;Zielpersonen&amp;#8221; von der Regelung gar nicht betroffen sind und im Endeffekt nur der einfache Bürger betroffen ist.&lt;/p&gt;
&lt;p&gt;Jetzt werden vielleicht viele sagen &amp;#8220;Warum regt sich der so auf? Ist doch nur um Verbrechen aufzuklären&amp;#8230; oder hat der etwas zu verbergen?&amp;#8221;. Die Antowort ist: Ja! Ich habe etwas zu verbergen. Etwas was keinen keinen außer mich was angeht. Und das ist meine Privatsphäre.&lt;/p&gt;
&lt;h2&gt;Privatsphäre&lt;/h2&gt;
&lt;p&gt;Wer meint, er käme ohne Privatsphäre aus, dem sei mal der Text &lt;a href=&quot;http://217.172.182.26/old-cms/print.php?lang=en&amp;amp;text=privatsphaere_texte_twister_nacht.txt&quot;&gt;We don&amp;#8217;t need no data protection&lt;/a&gt; empfohlen. Es reichen schon ein paar Spam Mails von entsrpechenden Pornoanbietern und man ist potentiell&lt;br /&gt;
verdächtig mit Pornos zu handeln. Schon ist ein Grund für die Überwachung gegeben.&lt;/p&gt;
&lt;p&gt;Vielen ist das gar nicht bewußt oder sie denken &amp;#8220;Mich kann man ja ruhig überwachen, ich habe ja nichts zu verbergen&amp;#8221;. Aha!? Warum wohnen die dann nicht in gläsernen Häusern oder lassen Türen und Fenster offen, damit alle reinschauen können? Wie in dem Text unter &lt;a href=&quot;http://217.172.182.26/old-cms/print.php?lang=en&amp;amp;text=privatsphaere_texte_twister_nacht.txt&quot;&gt;We don&amp;#8217;t need no data protection&lt;/a&gt; beschrieben, kann es schneller gehen als man denkt, und man ist selbst verdächtig ohne&lt;br /&gt;
etwas getan zu haben.&lt;/p&gt;
&lt;p&gt;Es darf nicht soweit kommen, dass Leute, die auf ihre Privatsphäre achten schon als potentielle Kriminelle eingestuft werden. &amp;#8220;Wie, du verschlüsselst deine Mail&amp;#8230; und sogar deine Festplatten!? Warum denn?  Hast du da was illegales drauf?&amp;#8221; Das man Privatsphäre hat und sie schützt sollte der Normalfall sein und ist und wird hoffentlich auch niemals illegal! Es ist schon schlimm genug, dass man sie aktiv schüzten muss und dies nicht vom Staat sichergestellt ist.&lt;/p&gt;
&lt;p&gt;Alle, die meinen &amp;#8220;ich habe nichts zu verbergen, mich kann man ruhig durchleuchten&amp;#8221; tragen dazu bei, dass genau das obige Bild von Leuten entsteht, die auf ihre Privatsphäre achten.&lt;/p&gt;
&lt;p&gt;Und denkt daran: &amp;#8220;Just because you aren&amp;#8217;t paranoid, it doesn&amp;#8217;t mean they&amp;#8217;re not out to get you&amp;#8230;&amp;#8221; (Nur weil du nicht paranoid bist, heißt das noch lange nicht, dass sie nicht hinter dir her sind&amp;#8230;). Grundsätzlich kann man davon ausgehen, dass vieles was über die Datenleitungen des Internets fließt überwacht wird. Stichwort Datenspeicherung bei ISPs, Echelon, etc&amp;#8230;&lt;/p&gt;
&lt;h2&gt;Wie kann man sich schützen?&lt;/h2&gt;
&lt;p&gt;Die beste Möglichkeit den Webtraffic zu verschlüsseln, die ich kenne ist der &lt;a href=&quot;http://anon.inf.tu-dresden.de/&quot;&gt;&lt;span class=&quot;caps&quot;&gt;JAP&lt;/span&gt;-Dienst&lt;/a&gt;. Mit dem kleinen Hilfsprogramm wird der ganze Datenverkehr verschlüsselt zu einem sogennanten &amp;#8220;Mix&amp;#8221; übertragen und von dort aus weiter ins Internet. Das hat den Vorteil dass man anonym surft und die Speicherung der Verbindungsdaten sinnlos ist, weil quasi immer nur der Mix-Proxy als Adresse auftaucht. Von dort aus lässt sich der weitere Weg ins Netz nicht weiter verfolgen. Wie das genau funktioniert steht auf der &lt;span class=&quot;caps&quot;&gt;JAP&lt;/span&gt; Webseite. Für Debian User gibt es die Proxy Software auch als &lt;a href=&quot;http://packages.debian.org/unstable/web/anon-proxy.html&quot;&gt;Debian Paket anon-proxy&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Zum Verschlüsseln von Emails empfiehlt sich &lt;a href=&quot;http://www.pgpi.org/&quot;&gt;&lt;span class=&quot;caps&quot;&gt;PGP&lt;/span&gt;&lt;/a&gt; bzw. &lt;a href=&quot;http://gnupg.org&quot;&gt;&lt;span class=&quot;caps&quot;&gt;GPG&lt;/span&gt;&lt;/a&gt;. Zum verschlüsslen von Daten auf der Festplatte z.B. &lt;a href=&quot;http://www.scramdisk.clara.net/&quot;&gt;ScramDisk&lt;/a&gt; unter Windows bzw. das &lt;a href=&quot;http://encryptionhowto.sourceforge.net/&quot;&gt;Crypto Loopback Device unter Linux&lt;/a&gt;. Warum man dafür z.B. nicht das bei Windows 2000 / XP mitgelieferte verschlüsselnde Dateisystem verwenden sollte, beschreibe ich bei meinem Artikel über &lt;a href=&quot;/2002/7/9/sicherheit/&quot;&gt;Sicherheit&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;Weitere Links zu dem Thema:&lt;/h2&gt;
&lt;ul&gt;
	&lt;li&gt;&lt;a href=&quot;http://www.heise.de/tp/deutsch/inhalt/te/12824/1.html&quot;&gt;&lt;br /&gt;
http://www.heise.de/tp/deutsch/inhalt/te/12824/1.html&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href=&quot;http://www.heise.de/newsticker/data/jk-04.07.02-002/&quot;&gt;http://www.heise.de/newsticker/data/jk-04.07.02-002/&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href=&quot;http://www.privacyinternational.org/survey/phr2002/&quot;&gt;http://www.privacyinternational.org/survey/phr2002/&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href=&quot;http://www.rsf.org/IMG/doc-1274.pdf&quot;&gt;http://www.rsf.org/&lt;span class=&quot;caps&quot;&gt;IMG&lt;/span&gt;/doc-1274.pdf&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href=&quot;http://www.heise.de/tp/deutsch/special/ech/6723/1.html&quot;&gt;http://www.heise.de/tp/deutsch/special/ech/6723/1.html&amp;lt;/a&lt;/li&gt;
&lt;/ul&gt;</content><updated>2002-07-22T00:00:00+00:00</updated><link href='/2002/07/22/ueberwachung/' rel='alternate'/></entry><entry><id>/2002/07/14/microsoft-geschaeftspraktiken</id><title type='text'>Microsoft GeschÃ¤ftspraktiken</title><content type='html'>&lt;p&gt;Ich hatte schon immer eine Abneigung gegen die Geschäftspraktiken vom Microsoft. In letzter Zeit häufen sich jedoch die Dreistigkeiten dieser Firma, um ihren Machtbereich weiter auszubreiten bzw. zu sichern, da durch Linux, *BSD und Mac OS X wohl doch ernster zu nehmende Konkurrenten auf den Markt drücken.&lt;/p&gt;
&lt;p&gt;Fangen wir mit der Sache an, die MS wahrscheinlich am meisten zur derzeitigen Marktstellung verholfen bzw. zu ihrer Festigung beigetragen hat: Die sogenannten &lt;span class=&quot;caps&quot;&gt;OEM&lt;/span&gt;-Verträge mit PC-Herstellern. Diese Verträg sind streng geheime Abkommen, die bevorzugten Herstellern erhebliche Preisnachlässe gewähren, wenn sie ihre PCs mit vorinstalliertem Windows ausliefern. In solchen Verträgen wird dann u.a. auch festgelegt, dass keine Konkurrenzsoftware auf den verkauften PCs installiert sein darf. So ist es einem Händler nicht möglich z.B. Mozilla als Standardbrowser zu installieren, ohne einen weithaus höheren Preis für Windows zu bezahlen. Diese Verträge waren sicherlich einer der Gründe warum es OS/2 nicht als Alternative geschafft hat, oder der Internet Explorer jetzt der Quasi-Standard bei Webbrowsern ist. Mit der gleichen Taktik versucht MS nun den Media Player als Standard Applikation für Multimediainhalte zu etablieren.&lt;/p&gt;
&lt;p&gt;Microsoft kommt aber neuerdings mit ganz anderen Dreistigkeiten daher. In einer Lizenz zum im Mai (oder so) erscheinenen Media Player Update wird MS das Recht eingeräumt automatisch Updates auf dem Computer des Benutzers zu installieren, die illegale Kopien von Software oder anderem copyright geschützem Material verhindert. Das wäre dann der erste Schritt in die Richtung, dass MS die Kontrolle über die Softwareinstallationen bzw. Daten auf dem eigenen PC hat! Diese Lizenz wurde mittlerweile wieder etwas geändert, da MS doch gemerkt hat, dass sich die Anwender nicht alles gefallen lassen bzw. der Rummel um diese Änderung ihnen doch irgendwie Angst gemacht haben muss.&lt;/p&gt;
&lt;p&gt;Die neuste Unverschämtheit aus dem Hause Microsoft ist folgende: Die Softwarelizenzen können bald nicht mehr einmalig erworben werden, sondern nur noch jährlich gemietet werden. Das heißt, man ist verpflichtet jedes Jahr neu die Lizenz zu bezahlen, sonst funktioniert die Software nicht mehr. Um diese Politik durchzusetzen wird MS demnächst sicher ihre Kunden zwingen auf eine Software umzusteigen, die dieses Lizenzmodell enthält indem sie den Support für alle alten Softwareversionen einstellt.&lt;/p&gt;
&lt;p&gt;Privatanwender können vielleicht noch einige Zeit mit der alten Software arbeiten, bis die neuen Versionen verbreitet sind und wie immer bei MS Produkten nicht sehr kompatibel mit den alten sein werden (z.B. Dateiformate bei den &amp;#8220;Office&amp;#8221; Produkten).&lt;/p&gt;
&lt;p&gt;Ein weiterer intressanter Punkt sind die Teilweise Verfassungswidrigen Lizensbestimmungen, welche es dem Nutzer verbieten, Kritik an MS Software zu äßen (z.B. Frontpage Lizenz). Siehe dazu &lt;a href=&quot;http://slashdot.org/article.pl?sid=01/09/21/1438251&quot;&gt;Artikel auf /.&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Da die US-Gerichte/Regierung nicht in der Lage sind, bzw nicht die Absicht haben, MS in ihren gesetzeswidrigen Machenschaften zu stoppen, ist die einzige Möglichkeit Microsofts Verhalten entgegen zu wirken der Boykott der Produkte, und das Hinweisen auf die Vorgehensweise von MS. Die meisten merken nämlich gar nicht, wie sie verarscht werden&amp;#8230;&lt;/p&gt;</content><updated>2002-07-14T00:00:00+00:00</updated><link href='/2002/07/14/microsoft-geschaeftspraktiken/' rel='alternate'/></entry><entry><id>/2002/07/09/sicherheit</id><title type='text'>Sicherheit</title><content type='html'>&lt;h2&gt;Eine kleine Geschichte als Einstieg&lt;/h2&gt;
&lt;p&gt;Erstmal aufstehen&amp;#8230; frühstücken und Zeitunglesen. Ich schalte also den tollen Tablet-PC ein auf dem schon das riesige MS Windows Symbol zu sehen ist. &amp;#8220;20. Mai 2004 &amp;#8211; Die Schlagzeilen&amp;#8221;. Naja. Nichts interessantes zu lesen. Kein Wunder. Bei dem Standard Abo&amp;#8230; das Premium Ding war mir einfach zu teuer. Mist. Ich bin auf dem &amp;#8220;Aus&amp;#8221;-Knopf gekommen. Das wars mit den Nachrichten fuer heute. Dank dem tollen ach so sicherheitsbringenden &lt;span class=&quot;caps&quot;&gt;DRM&lt;/span&gt;-System, darf ich diese Datei ja ganze 5 Minuten angucken und wenn man sie schließt, ist&amp;#8217;s vorbei. Nochmal öffnen geht nicht.&lt;/p&gt;
&lt;p&gt;Ich wollte ja heute die Bilder von der DigiCam zum entwickeln bringen, aussortieren der schlechten Bilder ist nicht mehr drin&amp;#8230; alle schon 5x mal auf der Cam angeguckt. Mehr geht nicht. Warum lass ich mich auch immer überreden sie nochmal eben zu zeigen&amp;#8230; Also Cam an den Rechner gesteckt, Bilder hochgeladen und ab übers Internet an den Druckservice&amp;#8230; Ach Scheiße&amp;#8230; keine &lt;span class=&quot;caps&quot;&gt;DRM&lt;/span&gt;-Druck-Credits mehr. Ach war das damals noch schön, als man mit seinen Daten noch tun und lassen konnte, was man will&amp;#8230;&lt;/p&gt;
&lt;p&gt;Zum Musik hören hab ich auch kein Geld mehr übrig&amp;#8230; Hm. Ob ich es wagen soll, den alten mp3 Player in die Stadt mitzunehmen&amp;#8230; 500 &lt;span class=&quot;caps&quot;&gt;EUR&lt;/span&gt; Strafe pro nicht &lt;span class=&quot;caps&quot;&gt;DRM&lt;/span&gt; bzw. &lt;span class=&quot;caps&quot;&gt;TCPA&lt;/span&gt; zertfiziertes Digitalgerät plus die Gebüren für die Musik, die ich nachbezahlen müste sind halt schon happig&amp;#8230; dabei hab ich die Musik doch zu Hause auf Vinyl. Naja&amp;#8230; wenn die das wüssten. Dann wäre das auch gleich noch weg. Nicht-digitale Speicherung von Musik ist ja nicht mehr erlaubt&amp;#8230; nur noch in Museen gestattet.&lt;/p&gt;
&lt;h2&gt;Nur eine Geschichte?&lt;/h2&gt;
&lt;p&gt;Alles nur erfunden. Geht ja technisch gar nicht&amp;#8230;? Bis jetzt. Technisch möglich ist diese Fiktion, die, wenn ich ehrlich bin, schon sehr an &lt;a href=&quot;http://www.gnu.org/philosophy/right-to-read.de.html&quot;&gt;&amp;#8220;Das Recht zu lesen&amp;#8221;&lt;/a&gt; angelehnt ist. Und das ist nur ein kleiner Auszug von dem was mit &lt;span class=&quot;caps&quot;&gt;TCPA&lt;/span&gt; alles möglich ist; nämlich die volle Kontrolle von digitalen Daten. Erstellen, speichern,  kopieren, lesen&amp;#8230; alles das, was bisher ohne weiteres mit digitalen Daten problemlos möglich war, kann damit eingeschränkt, kontrolliert oder gar komplett umöglich gemacht werden. Freiheit und freie Meinungsäußerung  gehören dann der Vergangenheit an.&lt;/p&gt;
&lt;p&gt;Die Kontrolle liegt dann nicht mehr beim Menschen selbst, evtl. bei der Regierung, aber höchstwahrscheinlich bei den Mitgliedern des &lt;span class=&quot;caps&quot;&gt;TCPA&lt;/span&gt;-Kartells. Durch erstellen, sperren oder verteilen von Zertifikaten wird bestimmt welche Software läuft, welche Daten gelesen oder geschrieben werden düfen. Die Macht über alle Informationen, die sich auf &lt;span class=&quot;caps&quot;&gt;TCPA&lt;/span&gt;-Systemen befinden, liegen in einer Hand!&lt;/p&gt;
&lt;p&gt;Eingeführt wird die Hardware, ohne die das System nicht funktionieren kann, jetzt schon. Die Chips sind schon in den neuen &lt;span class=&quot;caps&quot;&gt;IBM&lt;/span&gt; Thinkpad Modellen enthalten, bald werden sie in fast allen x86 Rechnern zu finden sein. Die neue Festplattenschnittstelle Serial &lt;span class=&quot;caps&quot;&gt;ATA&lt;/span&gt;, die das alte Parallel &lt;span class=&quot;caps&quot;&gt;ATA&lt;/span&gt; (also die normale &lt;span class=&quot;caps&quot;&gt;IDE&lt;/span&gt; Schnittstelle) blösen soll, hat auf den Controllerchips auch schon &lt;span class=&quot;caps&quot;&gt;TCPA&lt;/span&gt; Fähigkeiten integriert. Als tolles Sicherheitsfeature getarnt, wird das alles bald heimlich in jede neue Hardware integriert werden. Später wird keine Software mehr ohne diese Chips funktionieren. Die &lt;a href=&quot;http://www.theregister.co.uk/content/4/28016.html&quot;&gt;technischen Hintergründe&lt;/a&gt; beschreibe ich an dieser Stelle nicht.&lt;/p&gt;
&lt;h2&gt;Im Namen der Sicherheit&lt;/h2&gt;
&lt;p&gt;Ganz vorne mit dabei im &lt;span class=&quot;caps&quot;&gt;TCPA&lt;/span&gt; Kartell ist&amp;#8230; wer hätte es gedacht&amp;#8230; Microsoft mit ihrer Softwareseitigen Implementation des &lt;span class=&quot;caps&quot;&gt;TCPA&lt;/span&gt; Systems namens Palladium. Das System soll laut MS die Sicherheit auf den Rechner erhöhen und keinesfalls als Content-Management System dienen. Wer das MS glaubt, glaubt wahrscheinlich auch noch an den Satz von Bill Gates &amp;#8220;Who would &lt;strong&gt;ever&lt;/strong&gt; want to use more than 640 KB of &lt;span class=&quot;caps&quot;&gt;RAM&lt;/span&gt;&amp;#8221;, den er 198x irgenwann mal sagte.&lt;/p&gt;
&lt;p&gt;Was MS als Sicherheit verkaufen will ist absoluter Quatsch. Sicherheit gibt es nicht. Nirgends. Ein bißchen vielleicht, aber keine 100% und schon gar nicht als Produkt. Sei es Software oder Hardware. Sicherheit im Zusammenhang mit Computersystemen ist ein Konzept. Ein Versuch, das System &lt;em&gt;sicherer&lt;/em&gt; zu machen.&lt;/p&gt;
&lt;p&gt;Grundsätzlich kann ich ein System nur dann sicherer machen, wenn ich es kenne. &amp;#8220;Security by Obscurity&amp;#8221; funktioniert nicht. Closed Source Systeme scheiden also für ein sicheres System schon mal aus. Ich weiß bei diesem Systemen nicht, wer wo welche Daten verarbeitet, verschickt oder sonst was.&lt;/p&gt;
&lt;p&gt;Das T in &lt;span class=&quot;caps&quot;&gt;TCPA&lt;/span&gt; steht ja offiziell für trustworthy also vertrauenswürdig. Dieses Sicherheitskonzept halte ich schon mal von vorneherein für total unsinnig. Wenn es um Sicherheitsfragen geht, dann traue ich höchstens einer Person und das bin ich selbst. Keiner Firma und keinem Hardwarehersteller.&lt;/p&gt;
&lt;p&gt;Natürlich müsste ich mit so einer Einstellung alle sicherheitsrelevanten Teile des Systems selber erstellen oder zumindest nachprüfen, ob wirklich keine Backdoors eingebaut sind. Bei Closed Source Systemen oder &lt;span class=&quot;caps&quot;&gt;TCPA&lt;/span&gt; Hardware habe ich diese Möglichkeit nicht. Das ist eine Art Black Box, in der ich nichts ändern oder gar nur anschauen kann. Und das soll dann sicher sein? Bei Open Source Systemen habe ich die Möglichkeit, das nachzuprüfen. Ansonsten vertraue ich eben auf die Community. Ich denke, die Wahrscheinlichkeit, dass mich &lt;span class=&quot;caps&quot;&gt;ALLE&lt;/span&gt; reinlegen wollen ist wesentlich geringer und die Durchführung dieser Aktion ist wesentlich schwieriger, als wenn nur eine Firma etwas derartiges macht.&lt;/p&gt;
&lt;p&gt;Gehen wir mal von einem &lt;span class=&quot;caps&quot;&gt;TCPA&lt;/span&gt; System mit MS Palladium aus. Grundsätzlich kann nun also nur noch &lt;span class=&quot;caps&quot;&gt;TCPA&lt;/span&gt; zertifizierte Software ausgefürt werden. Keine Viren funktionieren. Alles ganz toll und sicher. Wie das tolle &lt;span class=&quot;caps&quot;&gt;VBA&lt;/span&gt;-Scriptbare MS Office nun funktionieren soll, frag ich mich an dieser Stelle&amp;#8230; muss ich dann jedes Script zertifizieren lassen, dass mir 20 Bilder in eine PowerPoint Präsentation einfügt? Könnte ja ein Virus sein. Antwort ist sicher: Script zertifiziert bei MS kaufen&amp;#8230; Aber nun weiter im Szenario. Gehen wir weiter davon aus, dass das System an sich funktioniert.&lt;/p&gt;
&lt;p&gt;Es also keine Umgehungsmöglichkeit gibt (wie z.B. bei dem verschlüsselten Dateisystem bei Win2K, bei dem man durch einen Bug auch ohne Passwörter an die Daten kommt. MS Sicherheit eh?). Das System wird sicher in einer Sprache geschrieben sein die Buffer Overflows erlaubt. Wenn ich nun einen solchen Bug in&lt;br /&gt;
einer zertifizierten Software finden würde, einen Exploit schreibe, dann kann ich Code ausführen, ohne dass er zertifiziert wurde, da er ja aus dem zertifizierten Programm gestartet wurde und das System denkt, es handle sich um zertifizierten Code. (Ist eine rein theoretische Überlegung von mir. Falls das durch &lt;span class=&quot;caps&quot;&gt;TCPA&lt;/span&gt; verhindert werden sollte, bitte eine Mail an mich&amp;#8230;)&lt;/p&gt;
&lt;p&gt;Und selbst wenn das nun nicht ginge&amp;#8230; MS ist ja nicht gerade dafür bekannt auf seine Zertifikate aufzupassen. So war vor ein paar Jahren mal ein MS Zertifkat im Umlauf mit dem dann jeder Fröhlich seine software als von MS Zertifiziert ausgeben konnte. Außerdem werden sich, sobald die komplette Kontrolle von Informationen auf eine (oder wenige) Systeme ausgeht, alle Hacker/Cracker (wie auch immer ;)) Angriffe auf diese Systeme ausrichten und es ist nur eine Frage der Zeit, bis gefälschte Zertifikate im Umlauf sind, mit denen dann Viren etc. zertifiziert und von jedem &lt;span class=&quot;caps&quot;&gt;TCPA&lt;/span&gt; System ausgefürt werden.&lt;/p&gt;
&lt;h2&gt;Zusammenfassung&lt;/h2&gt;
&lt;p&gt;Zusammengefasst kann man sagen, dass die von den Firmen als Marketingargument vorgebrachte Sicherheit der Systeme nichts mit wirklicher IT Sicherheit zu tun hat. &lt;span class=&quot;caps&quot;&gt;TCPA&lt;/span&gt;, Palladium, &lt;span class=&quot;caps&quot;&gt;DRM&lt;/span&gt; und Co. dienen einzig und alleine der Kontrolle von Informationen und Hardwaresystemen durch das &lt;span class=&quot;caps&quot;&gt;TCPA&lt;/span&gt; Kartell. Die Sicherheit liegt alleine in den Gewinnen dieser Firmen, da sie jegliche Art von Information verkaufen können. Und zwar zu den Preisen, die sie wollen.&lt;/p&gt;
&lt;h2&gt;Was kann man tun?&lt;/h2&gt;
&lt;p&gt;Es ist noch nicht zu spät. Noch ist &lt;span class=&quot;caps&quot;&gt;TCPA&lt;/span&gt; nicht verbreitet und jeder kann über die von im erstellten digitalen Informationen selbst entscheiden. Da &lt;span class=&quot;caps&quot;&gt;TCPA&lt;/span&gt; ganz offensichtlich heimlich bzw. als Sicherheitssystem (für die Benutzer, dass es, wie ich oben zeigte garantiert &lt;span class=&quot;caps&quot;&gt;NICHT&lt;/span&gt; ist) eingeführt wird, ist der erste Schritt, so viele Leute wie möglich informieren. Homepages von Leuten und Organisationen, die sich mit dem Thema auseinadersetzen verlinken und die URLs Freunden und Bekannten weitergeben bzw. auch direkt auf das Thema ansprechen. Sonst wird den meisten die Gefahr erst dann bewußt, wenn sie vor ihrem Rechner sitzen und merken, dass sie nicht mehr alleine entscheiden, was darin vor sich geht. Außerdem sollte man auf keinen Fall Hardware von Herstellern kaufen, die potentielle &lt;span class=&quot;caps&quot;&gt;TCPA&lt;/span&gt; Mitglieder sind. Offizielle Listen sind bis jetzt wenige bekannt. Sicher ist jedoch, dass z.b. &lt;span class=&quot;caps&quot;&gt;IBM&lt;/span&gt; in den neuen Thinkpads bzw. Netvista PCs bereits &lt;span class=&quot;caps&quot;&gt;TCPA&lt;/span&gt; kompatible Hardware einsetzt. Infineon hat auf ihrer Homepage auch schon &lt;span class=&quot;caps&quot;&gt;TCPA&lt;/span&gt; fähige Chips vorgestellt. Wie oben schon erwänt sollte man auch Abstand von Serial &lt;span class=&quot;caps&quot;&gt;ATA&lt;/span&gt; Geräten nehmen. Auch wenn diese Schnittstelle technisch einen Fortschritt darstellt, sollte man aufgrund der integrierten &lt;span class=&quot;caps&quot;&gt;TCPA&lt;/span&gt; Hardware auf keinen Fall S/&lt;span class=&quot;caps&quot;&gt;ATA&lt;/span&gt; Controller oder Festplatten kaufen. (Ich frage mich soweiso, wie die tollen 160 MB/s über nen 133 MB/s breiten &lt;span class=&quot;caps&quot;&gt;PCI&lt;/span&gt; Bus laufen sollen&amp;#8230; &amp;#8211; Für heimuser reicht also weiterhin das normale &lt;span class=&quot;caps&quot;&gt;ATA&lt;/span&gt; und für Server gibts &lt;span class=&quot;caps&quot;&gt;SCSI&lt;/span&gt; und Fibre Channel. Hoffentlich noch lange ohne &lt;span class=&quot;caps&quot;&gt;TCPA&lt;/span&gt; Chips). Auf die nächsten Intel und &lt;span class=&quot;caps&quot;&gt;AMD&lt;/span&gt; CPUs sollte man auch ein besonderes Augenmerk haben. Diese Entwicklung ist btw. einer der vielen Gründe warum ich persönlich in Zukunft keine x86-Hardware (also &amp;#8220;&lt;span class=&quot;caps&quot;&gt;IBM&lt;/span&gt; PC kompatible&amp;#8221; oder &amp;#8220;Intel-System&amp;#8221;) mehr kaufen werde. Die bis jetzt so schön schnelle und billige Hardware könnte sich in Zukunft zum krassen Gegenteil entwicklen&amp;#8230;&lt;/p&gt;
&lt;h2&gt;Links&lt;/h2&gt;
&lt;ul&gt;
	&lt;li&gt;&lt;a href=&quot;http://moon.hipjoint.de/tcpa-palladium-faq-de.html&quot;&gt;Deutsche &lt;span class=&quot;caps&quot;&gt;TCPA&lt;/span&gt;/Palladium &lt;span class=&quot;caps&quot;&gt;FAQ&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href=&quot;http://www.heise.de/newsticker/data/cp-30.06.02-001/&quot;&gt;http://www.heise.de/newsticker/data/cp-30.06.02-001/&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href=&quot;http://www.heise.de/newsticker/data/cp-19.10.02-002/&quot;&gt;http://www.heise.de/newsticker/data/cp-19.10.02-002/&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href=&quot;http://www.heise.de/ct/02/22/204/&quot;&gt;http://www.heise.de/ct/02/22/204/&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href=&quot;http://www.lb.shuttle.de/apastron/noTCPAg.htm&quot;&gt;http://www.lb.shuttle.de/apastron/noTCPAg.htm&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href=&quot;http://antitcpa.alsherok.net/&quot;&gt;http://antitcpa.alsherok.net/&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href=&quot;http://www.notcpa.org/&quot;&gt;http://www.notcpa.org/&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href=&quot;http://www.againsttcpa.com/&quot;&gt;http://www.againsttcpa.com/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</content><updated>2002-07-09T00:00:00+00:00</updated><link href='/2002/07/09/sicherheit/' rel='alternate'/></entry></feed>