<?xml version="1.0" encoding="utf-8" ?>

<rss version="2.0">

    <channel>
        <title>Hopelesscom</title>
        <link>http://www.hopelesscom.de</link>
        <description>what's new on hopelesscom? get it while it's hot!</description>
        <language>en-en</language>
        <copyright>Timo Zimmermann</copyright>
        <pubDate>Sun, 05 Feb 2012 11:33:25 GMT</pubDate>

        
            <item>
                <title>A New Editor</title>
                <link>http://www.hopelesscom.de/2012/2/5/a_new_editor.html</link>
                <description><p>In my <a href="http://www.hopelesscom.de/2012/1/7/feature_flood.html">last</a> <a href="http://www.hopelesscom.de/2011/12/18/the_holy_grail__a_programmer_s_editor.html">posts</a> I mentioned that I was evaluating some editors. 
Again. The basic problem is that I just cannot stand vims modal editing and 
look &amp; feel, even AquaMacs does not change this. Sadly I also cannot stand the
alternatives. Till now. I think I found an editor I really can live with. It 
was suggested by some people I know but I did not get why they like it. Now 
after using the new beta for some time I think I am converted.
<!--MORE--></p>

<p>First let us talk about features. Why did I even bother trying IDEs 
like <a href="http://www.eclipse.org/">Eclipse</a> when I actually do not like those bloated pieces of ... 
well, do not get me started. I prefer an editor. It is fast, I do not need to 
create projects and other stuff, do not have to care about anything beside my 
code.</p>

<p>But I tried an IDE. I have seen this fancy features like showing all your 
methods, listing files, jumping from file to file in your project,... They have
a great strategy - they show you all the shiny stuff and hide the fact that it
is still an IDE and just sucks.</p>

<p>So what features should my editor have to compete with an IDE?</p>

<ul>
<li>code completion</li>
<li>easy jumping between files</li>
<li>split view</li>
<li>project view - showing all files in a folder</li>
<li>syntax highlighting for everything I work with</li>
<li>spell checking</li>
<li>git / gist integration</li>
<li>keyboard navigation</li>
</ul>

<p>I still believe that I do not ask for too much. But sadly the only editor that
is actively developed and provides all those features was vim.</p>

<p>And maybe the most important point. I love beautiful things. I work much better
when I am surrounded and use stuff I enjoy using. Guess why I prefer Macs,...</p>

<h3>I am not alone</h3>

<p>Looking at all those emerging projects I am not the only one who wants all
those features and cares about stuff like split views. But those projects
are either really new and still in the first beta - and I have seen how dead
a great project can be even when in development. I am looking at you Intype.
- or they are not as actively developed as I prefer it. Textmate, anyone?</p>

<p>So it is possible that those editors will some day be a great alternative and
that I will pay 40€ for a piece of software I will only use for some months or
a year. Even if the other editors also cost some money. I make my living with
IT. And it is never wasted investing in stuff that makes your life easier,
provides productivity or just helps you getting the job done.</p>

<h2>Workflow</h2>

<p>I admit that I use a mouse. Or a touchpad to be honest. I can remember 
key bindings and I also use those but for some tasks I work faster when I just
move my hand away from the keyboard and click on stuff. Having a project
folder on a side of your project, browsing the structure, creating and deleting
folders and files just helps me a lot to work faster. I do not have to switch
to another window or command line I just do one or two clicks. So a project
drawer or filesystem explorer is essential. This does not mean that I do not
want to be able to navigate with my keyboard. More on this topic in a few 
minutes.</p>

<p>Code completion is tricky. Sometimes it saves you a lot of typing. And when it
is even able to show you a documentation about methods you are using you save
a lot of time browsing documentations or trying to figure out why your
arguments will not work. This is not a must have but a nice to have feature.</p>

<p>When you never used an editor that is capable of split views I suggest you
immediately download one. An easy example would be working on a homepage. I
have 2 windows open. A browser to preview my work and an editor with 2 views.
In one view I have my html file and in the other one my css file. Just 
switching the view without the trouble of placing editors side by side helps
a lot keeping all those tags in the right order when working on your css files.</p>

<p>Command-T or from now on Command-P is awesome. You press the keys, start 
typing and just have a list of files that contain what you just type. One
additional keystroke and you have the file open with your cursor at the
method you were looking for. Fast, efficient, a pleasure to work.</p>

<p>Since I switched to <a href="https://github.com/fallenhitokiri/Zenbo">Zenbo</a> I use my editor to write blog posts. I am
definitely not the best writer the world has ever seen. My grammar is not
as beautiful as it could be, sometimes I make stupid mistakes and have
to look up words in a dictionary. Spell checking is essential. I am working
on it but I think there will always be some words I have to
look up or need a correction since English is not my native language.</p>

<p>I use git for every project and every piece of code I write. But I always
were a bit skeptical using plugins that integrate it with my editor or IDE.
Currently it looks like the git plugin works fine and is a nice to have
feature. We will see how it works out.</p>

<h2>You only know you want it when you try it</h2>

<p>There are some features in my new editor I started using and enjoying in a
blink of an eye. I heard many rumors on Twitter and read some blog posts
how great those are but never thought that I would use them.</p>

<p>One of those features is "distraction free". You basically tell you editor
that you want to see nothing beside him. A dark background and only one
text field to input your text or code. I would not use this feature to write
code but it is a pleasure to use it while writing blog posts. And I will
also give it a chance when I continue working on my first book.</p>

<p>There is an integrated package manager helping you to install plugins.
It is a nice feature to have an integrated search. I had no problem using
the script search on vim.org but if I can have a shortcut I will not 
hesitate using it.</p>

<p>Having snippet and theme support that is actually easy to use and edit
is also really nice. No obscure paths to remember once a year you have to
add or edit something is nice.</p>

<h2>I guess I will,...</h2>

<p>For those of you who cannot guess it yet I am talking about <a href="http://www.sublimetext.com/">Sublime Text</a>.
I will continue using it for my current project which consists of some 
webdesign and <a href="http://www.djangoproject.com/">Django</a> development. I will write some more posts and work on
Zenbo. If Sublime turns out to be what I want I am going to buy it.</p>

<p>But there are some alternatives I also consider if there are some problems.
There is <a href="http://kodapp.com/">Kod</a>, <a href="http://macrabbit.com/espresso/">Espresso</a>, <a href="http://mr-fridge.de/software/tincta/index.php">Tincta</a> and <a href="http://www.vicoapp.com/">Vico</a>.</p>

<p>For my next project that is an iPhone application I will stick to XCode. It
is another workflow and another kind of project. Integrated interface builders
and stuff are also a pleasure. But this will be part of another post. If you
are looking for an editor I only have one suggestion: try them all and use
what fits your workflow and project best - do not trust people like me telling
you why it is great. Experience it first hand.</p>
</description>
                <pubDate>2012-02-05</pubDate>
            </item>
        
            <item>
                <title>OOP: Lesson 2</title>
                <link>http://www.hopelesscom.de/2012/1/24/oop__lesson_2.html</link>
                <description><p>Hello and welcome to a new part of the famous, loved and anticipated
series about object-oriented programming. Today we will be talking about
objects, methods, functions and get a basic understanding what happens
when we use them.
<!--MORE--></p>

<p>I was not sure if I should start with this because we still lack
some basic understanding what variables are, but I think we will
be doing fine. Let us take a look at the code we use today.</p>

<script src="https://gist.github.com/1668731.js?file=lesson2.java"></script>

<p><em>EDIT: I just see that GitHub does not include line numbers 
  I will have to add a way to highlight code by myself for
  hopelesscom. Just click on the link to GitHub to see line numbers</em></p>

<p>Looks pretty simple, doesn't it? What do we have in this code?</p>

<ul>
<li>a class <em>IchObjekt</em> with two <em>variables</em> and three <em>methods</em></li>
<li>our <em>main</em> program with two <em>methods</em></li>
</ul>

<p>We could also create two files, one for each class. When we are writing
larger programs and classes this would be the preferred way to do it.
But since we only got some lines of code this works fine.</p>

<h2>What is a class and an object</h2>

<p>You can think of a <em>class</em> as a template for a number of things. Let
us look at a human, for example. A human has hair, well most of them,
and a hair color. The fact that humans have hair is a fact, the hair 
color varies from being to being.</p>

<p>Those "things" are called <em>objects</em> (humans). When you create an object 
from a class you can also say <em>instance</em> (please remember that we are 
currently not 100% accurate with this). </p>

<p>We create an object from the class in line 28. Each object created from
one class has the same variables and methods but they can contain
different values.</p>

<h3>class and instance variables</h3>

<p>We will be talking about variables in another post. But to understand
the concept of classes and objects I will give you a basic idea about
the different types. This is not the final explanation and will sound
a lot different later on but for now it is okay.</p>

<p>In line 2 and 3 we declare class variables. When you create an object
and set a variable the variable is different from the class variable.
From this point you call it object or instance variable.</p>

<p>Back to humans: That they <code>have_hair</code> (because
they all do) would be an class variable, the hair color an object
variable since it is different for each object. In a later post we
will clarify how to call it and what the real difference is. For now
we will stick to this explanation.</p>

<h3>methods and functions</h3>

<p>They are basically the same thing. A piece of code, if coded well, doing
one thing that can be called multiple times. So you write your code one
time and execute it - maybe - many times.</p>

<p>In Java everything is part of an object. Every function is called
method. Why? When a function is part of an object it is called method.
This is the basic difference. That was the hard part,... ;)</p>

<p>To execute a block of code aka method you have to <em>call</em> the method. We 
do this in line 30 for example. The way you do it is always the same:
<code>object.method(arguments)</code>. If the method should return something
you have to tell Java where the return value should be stored. You need
a variable of the type matching the return value. The variable that should
hold the return value stand on the left side of the <em>=</em> and the
call on the right side. Look at the lines 20 to 26.</p>

<h3>public and private</h3>

<p>A method is either public or private. If it is public you can always
call it from everywhere.</p>

<p>If it is private you can only call it from the object itself. If we
would have a private method in the class <em>IchObjekt</em> you could only
call it from one of the methods in <em>IchObjekt</em> not from <em>lesson2</em>.</p>

<h3>return values</h3>

<p>If a method is returning nothing it is <em>void</em>. All methods in our
<em>IchObjekt</em> class return nothing so they are all of the type void.</p>

<p>In line 20 we have <code>brauchEineZahl</code> which is supposed to return a
number - an integer - so the method needs to know that it should return 
something from the type <em>int</em>. If you tell a method it should return
something you absolutely have to do it.</p>

<h3>static</h3>

<p>Sometimes you want to call methods without creating an object from a
class. If you have a class that is doing basic math stuff there is
no need to have objects of this class. You just created them to put
some of your code in another files so it is reusable and looks better.</p>

<p>For those methods you use the modifier static. Our main method is
always static because we do not create an object before calling it.
The same goes for the <code>brauchEineZahl</code>. There is no object so the
method has to be static.</p>

<h3>Constructor</h3>

<p>When you create a new object there is always a method called <em>constructor</em>
executed. No matter if you wrote one or not. In our example our constructor
starts at line 5. It always has the same name as the class.</p>

<h3>Arguments</h3>

<p>In line 5 we tell our constructor that it will get an argument when it is
called. If you would create and object without giving the constructor
an argument - see line 28 - Java would complain like a little child that
"it wants it so badly and refuses to do anything before it gets one".</p>

<p>You can specify any number of arguments and they can be from any type
you want. Just make sure you follow the argument order when calling the
function. If the function expects an integer and a string and you call
it supplying a string and an integer it will start complaining again.</p>

<p>As you can see in line 28 and 32 it does not matter if you pass the 
content from a variable or just add the value directly, which is kind
of pointless in a real program, the only thing that matters is that
the type is right. The variables also do not need to have the same name.</p>

<h2>How to build a method</h2>

<p>First we should think about our method and what it is supposed to do.</p>

<ul>
<li>is it bound to an object</li>
<li>what should it return</li>
<li>is it public or private</li>
<li>what arguments do I need</li>
</ul>

<p>When we know all these things we can use what we just learned. You always
build a method the same way.</p>

<p>keywords  name  (  arguments  )</p>

<p>Keywords are <em>public</em>/<em>private</em>, <em>static</em>, <em>return type</em>. Always follow
this order. Do not change it. Seriously, I mean it - changing the order
is like typing Google into Google - you will break the internet. (Cookies
for everyone who knows that this is a quote from IT Crowd)</p>

<p>You need a name for your method - you and Java should both know how to
call this block of code.</p>

<p>Arguments are sometimes needed. Check the types and the order.</p>

<p>Remember to always put your code in <em>{ }</em> and remember that you need a
return statement when you used something else than void.</p>

<h2>Quick summary</h2>

<p>Classes describe a number of variables and functions for objects you
build of them.</p>

<p>You can use methods to run the same code again and again or to change
or extend objects beyond variables. Methods need keywords to know what
they are actually supposed to do.</p>

<p>Java has many things in common with little, spoiled kids.</p>

<h3>German</h3>

<p>As usual a short translation of everything that is important.</p>

<ul>
<li>method + function = frei Übersetzt: Unterprogramm</li>
<li>argument = Argument</li>
<li>keyword = Schlüsselworte / Bezeichner</li>
<li>constructor = Konstruktor</li>
</ul>
</description>
                <pubDate>2012-01-24</pubDate>
            </item>
        
            <item>
                <title>OOP: Lesson 1</title>
                <link>http://www.hopelesscom.de/2012/1/20/oop__lesson_1.html</link>
                <description><p>Today we will be learning the basics of object-oriented programming.
As I mentioned in the <a href="http://www.hopelesscom.de/2012/1/18/object-oriented_programming.html">introduction post</a> to this series we have to
make sure that we know the basic ideas and words that describe them.</p>

<!--MORE-->

<h3>Java, Gists and Eclipse</h3>

<p>We will be using Java examples. You can download the examples clicking
on the "raw" link at the bottom and comment on them or add something on
my <a href="https://gist.github.com/fallenhitokiri">GitHub Gist page</a>. Do not get stuck with Git, Gists or what
this is - go along with the fact that the code examples are hosted there.
If you enable JavaScript for this domain you will also see them embedded
in this post.</p>

<p>Before we start let me say two things. I know that many people use an
IDE like <a href="http://www.eclipse.org/">Eclipse</a> or <a href="http://netbeans.org/">NetBeans</a> for Java development. For the
sake of understanding what happens I will just use an ordinary editor
and the command line in this post. Well, I always use those - this
does not mean that you should too. If you are comfortable with Eclipse
just read the post, understand what it is doing and everything is fine.
You just have to figure out how to create a project and add the code
by yourself.</p>

<p>Now would be a good time, if you have not already, to visit <a href="http://www.oracle.com/technetwork/java/index.html">Oracle</a>
and get the latest <em>JDK</em>. Currently Java SE 7u2. I skip the hint that
you should also install it...</p>

<h2>Our first code</h2>

<p>Let us take a look at the first few lines of code we will be using for
this example. The code is not perfect. And this has a good reasons. We
will use the knowledge we are gaining to make this code better.</p>

<script src="https://gist.github.com/1646775.js?file=lesson1.java"></script>

<p>Really simple, isn't it?</p>

<h3>Compile & Execute</h3>

<p>This is Java specific, but you should now it, so you can work with all the
following examples. For everyone that is not forced to use Java:
"Sorry - I know it sucks, but stop complaining and play nicely with
the rest of us."</p>

<p>There are two stages. First you compile your code to byte code using</p>

<p><code>javac lesson1.java</code></p>

<p>This will generate a file called <em>lesson1.class</em>. We can run our
program using the JVM (Java Virtual Machine)</p>

<p><code>java lesson1</code></p>

<p>No you do not add a file extension. As I said in the first post, sometimes
stuff will be a bit vague. But this is totally fine, you do not need to
know Java internals to understand OOP and how it is working. If you
ever wanted to know what happens when you hit the green "play" button
in Eclipse - now you do.</p>

<h3>Structure</h3>

<p>As you can clearly see there is a <em>class</em> called lesson1. The name of this
class is what you use when you execute your program. Even if you name the
file lesson2, <code>javac</code> will create a lesson1.class file.</p>

<p>Every time you run <code>java something</code> the JVM is looking for a <em>method</em> called
<em>main</em> in something.class. It will start executing stuff you put in there. Always add the
keywords <em>public static void</em> and add <em>String args[]</em> as expected <em>argument</em>.</p>

<h3>Doing stuff</h3>

<p>We print something to the console. But how does Java now what
<code>System.out.println</code> should do? There is an easy and a correct explanation.
I think we should go with the easy one since it is accurate enough, not
confusing and with some exceptions a common definition.</p>

<p>Every time you write a program a set of predefined classes and methods
are automatically added. You do not have to import them or tell the
compiler and runtime (JVM) where they are. They are just there and you can use them.</p>

<h3>Comments</h3>

<p>Most of the time people will tell you to comment your code. Sometimes they
are right sometimes they are just idiots. You have to think what you are
commenting.</p>

<p>Adding a comment that tells everyone that this is the main method is
pretty useless. Everyone looking at your code already knows this.</p>

<p>Adding comments to explain complex procedures, algorithms or give people a
quick idea what your method is actually doing is a good idea. </p>

<p>Methods are a
complex thing when talking about comments. If you just wrote one that only
prints an argument to the screen you do not need comments. On the other hand
if you connect to a database, delete 5 rows and close the connection a short
comment would be a good idea.</p>

<p>The difference between those two comment styles is simply explained. If you
use <code>//</code> everything till the end of the line is a comment. If you use <code>/*</code>
everything till <code>*/</code> is a comment. No matter how many lines are included.</p>

<h2>Quick summary</h2>

<p>There are classes, methods, some of them that are magically available, no
matter if you do something or not and there are comments that tend to be
problematic when two programmers discuss how important and verbose you should
be.</p>

<p>In the next post we will learn how to place <em>{}</em>, why there is <em>public</em>,
<em>static</em>, <em>void</em>, what it means and why methods are no functions.</p>

<h3>German</h3>

<p>As usual a short translation of everything that is important.</p>

<ul>
<li>class = Klasse</li>
<li>method = Methode (Unterprogramm)</li>
<li>argument = Argument(e)</li>
<li>comment = Kommentare</li>
</ul>
</description>
                <pubDate>2012-01-20</pubDate>
            </item>
        
            <item>
                <title>Object-Oriented Programming</title>
                <link>http://www.hopelesscom.de/2012/1/18/object-oriented_programming.html</link>
                <description><p>I have spent some time this weekend explaining Java - well to be more precise a Java
problem - to my precious one and her class mate. There was one problem the whole five
hours I am trying to solve the 2.0 way. 
<!--MORE--></p>

<p>Learning Java without some basic knowledge is a pain. I decided to write a series of 
posts to explain basic OOP (object-oriented programming) concepts and show some 
examples in Java.</p>

<p>We are all from Germany and their teacher is for an unknown reason using
german words in class so I will add a translation to all important words</p>

<h3>Why the .... Java?!</h3>

<p>Most examples will be written in Java and sometimes I will compare Java to Python
or something else to show the differences and the similarities. I am no Java fan even
if I use it from time to time but they are forced to work with it. If you are trying
to gain some ground in OOP Java is not the worst choice - well this is the only thing
I can imagine where Java is not the worst one so "yay Java, you made it!".</p>

<h3>From Zero to something slightly above</h3>

<p>This will not be you first and only source you ever need to become a Java master. If 
you are already using it you are likely only reading my series to flame me for some 
vague terms or the fact that I disagree with some design principles. </p>

<p>If you are not sure about all this OOP stuff, if you want to learn the basics and if
you are looking for a "reference card" to look up some words this will be perfect for you.
All, well let us call them lessons because we could learn something, lessons will be
as short and precise as possible.</p>

<p>A good example are functions and methods. Even if they are basically the same they
are two different things if you look at them. Since new words can be confusing and
there is already a lot to remember it could be possible that we just call a function
method even if it is not part of a class. Just to give you an example what I mean when
I am talking about vague terms.</p>

<h3>Now what?!</h3>

<p>I am currently building an invoice system and I think it is a good example to
explain some OOP concepts. You know, creating a list of invoices, sorting them and stuff
like that.</p>

<p>In the next few posts we will learn some vocabulary. This is essential if you want to
read and understand code, books, tutorials and maybe, some day write a piece of code.</p>

<p>When we know what we are talking about we will look at the basic structure and start
building our own little invoice system. By the way, it will not be ready for production
use so stop dialing the number of the marketing agency.</p>

<h2>What did we learn?</h2>

<ul>
<li>Object-oriented programming will from now on be remembered as OOP (yeah, I am lazy)</li>
<li>methods and functions are not the same but you will to a certain point think they are</li>
</ul>

<p>Even if you do not need a crash course in OOP and Java, I hope you will at least have some
fun with this series.</p>

<h3>German</h3>

<ul>
<li>methods &amp; functions = Unterprogramme</li>
</ul>
</description>
                <pubDate>2012-01-18</pubDate>
            </item>
        
            <item>
                <title>Short Update</title>
                <link>http://www.hopelesscom.de/2012/1/11/short_update.html</link>
                <description><p>I do not know if you ever founded a business or a start up. If you have not
I suggest that you take some time, think of something cool you really love
and start one. It is fun. It is exciting. It is on of the reasons why I had
so much fun and work the last few days.
<!--MORE--></p>

<p>Beside some problems with moving and founding a business everything went
really smooth. The only real problem is that our fiscal authorities
are sticking to some wired and stupid rules. I moved in my new flat in
October 2010. I am not added to the fiscal authorities files till now. Without
any note that I really live here they cannot hand out everything I need to
write invoices.</p>

<p>After some days I have some clients, nearly finished my first two jobs and
I believe that this will be a lot of fun.</p>

<h2>Hopelesscom</h2>

<p>I am currently working on some design improvements. Especially the archive
page. Currently it is just a list but in the next few days there will be
some visible changes.</p>

<p>There also is a good chance that there will be a way to improve the URLs.
I managed to create a rewrite rule that allows me to use tld/foo/ URLs
that are rewritten to foo.html</p>

<h2>Zenbo</h2>

<p>I now have two more projects using Zenbo and I did not need to add or
remove features. The initial version is just great and helps building 
every kind of page.</p>

<h2>Social Web</h2>

<p>I took a few minutes to decide what social networks I will use to build a
community around my new business. I will stick to Twitter, Facebook, Xing,
Linked In and Google+.</p>

<p>Creating all profiles, filling in the most important data and managing to
stay out of the sight from people that know you is not easy. I want a big
start with everything going live together and this would not be possible if
people start talking about it now.</p>

<p>I think I will stick with Facebook as primary platform and just link
to updates from other sites. Currently Facebook seems like the only real option
if you want to build a community. There are the most users, you are flexible
and you are free how to add it to your page.</p>

<h2>Next few days</h2>

<p>I will be on vacation from Friday to Monday or Tuesday. Just a few days
without work, without anything beside fun and my (maybe little bit 
grumpy) girlfriend... Do you know those times when you hope that your girl 
is not reading your blog?</p>
</description>
                <pubDate>2012-01-11</pubDate>
            </item>
        
            <item>
                <title>Feature Flood</title>
                <link>http://www.hopelesscom.de/2012/1/7/feature_flood.html</link>
                <description><p>Yesterday I took some time to compile a short list of features I
am implementing in <a href="https://github.com/fallenhitokiri/Zenbo">Zenbo</a> the next few days. I have a big list what
Zenbo should be able to do when I release version one and even a
list for version two. Zenbo will be used for two new projects so 
the features needed for those have priority.
<!--MORE--></p>

<h3>Syntax Highlighting</h3>

<p>This is one of the features I really want for Hopelesscom. Writing
posts about python, coding and sometimes stuff that involves the
command line without syntax highlighting just sucks.</p>

<p>Currently I have some problems filtering the 'code' tags but that
is just because I have not used regex for some time.</p>

<p>I believe that pygments 'guess_lexer' should be fine but there is
a chance that it will sometimes fail. Adding a mark what language
should be used is not the worst idea I had while implementing
everything.</p>

<h3>Crawler</h3>

<p>After generating a page there should be three things happening.</p>

<ul>
<li>checking every link if there is a file in the right folder</li>
<li>deploying the page</li>
<li>checking every link if it works</li>
</ul>

<p>I see some performance issues with this one. Crawling a large page
two times could take some time. I am not sure if I will just check
the links before deploying since I do not believe that there can or
will be issues with broken links or files after uploading the site.</p>

<p>Okay I know that this sentences sounds really stupid and that I
will now run in some deployment issues the next few days,...</p>

<h3>Wordpress Importer</h3>

<p>I really want to migrate my <a href="http://www.timo-zimmermann.de">business blog</a> (german only) to 
Zenbo. There is currently no archive on hopelesscom since I want
to merge the past three ones together. But on my other blog I want
to continue writing without anyone noticing - beside the new layout.</p>

<p>Exporting to an XML file is no problem but sadly there are some
characters that would need a definition. minidom and pyxml throw
an exception while loading the file.</p>

<p>I am not sure if I should write a definition, just replace the parts
that do not work or look for another option to parse the file. I
fear that this will take some time.</p>

<h3>Tags</h3>

<p>Before migration my other blog I want a plugin for tags and / or
categories. And I want a beautiful one not just one file for
every tag.</p>

<p>The idea is one file with a page name, url, all tags and some
JavaScript magic.</p>

<p>If you are using and working with the web for more than 6 or 7
years you could remember the time when JavaScript just plainly sucked.
Every browser implemented it another way, most of the time it did
nothing useful that improved the usability experience and it just 
did not work. Times luckily changed.</p>

<h2>Git Flow</h2>

<p>I am looking into the option to change my workflow a little bit.
<a href="https://github.com/nvie/gitflow">Git Flow</a> implementing an easy way for <a href="http://nvie.com/posts/a-successful-git-branching-model/">Vincent Driessen's 
branching model</a>. If you do not know what I am talking about take
a look at <a href="http://jeffkreeftmeijer.com/2010/why-arent-you-using-git-flow/">Jeff Kreeftmeijer's post</a>.</p>

<p>I had some problems with branching and merging and I do not know
why I ran into them. But the main point is that git flow would force
and assist me to have a clean repository structure. There are far 
worser things.</p>

<h2>Vim vs. TextWrangler</h2>

<p>I have to admit: I switched <a href="http://www.hopelesscom.de/2011/12/18/the_holy_grail__a_programmer_s_editor.html">back to vim</a>. I still like TextWrangler
for writing posts but I just cannot stand coding with it. I do not
know if I just miss modal editing, if I miss the customization or
if I am just used to FuF and other stuff I used for years now.</p>

<p>But coming home to vim just felt natural again. I still do not believe
that modal editing is the best thing since sliced bread but I can stand
it.</p>
</description>
                <pubDate>2012-01-07</pubDate>
            </item>
        
            <item>
                <title>A New Year</title>
                <link>http://www.hopelesscom.de/2012/1/2/a_new_year.html</link>
                <description><p>A new year is always fun. I do not really count to the group of people
that always think about new stuff to do because a date changed or that
try to make live-changing decisions and always brag how they will change.
But I have some plans for this year.
<!--MORE--></p>

<p>The first and most important one is that I will start a new business.
I will not close my old one but run them side by side. There will be a
long post explaining what I will be doing, but this takes some more days
till everything is set. Short preview: I am back - doing IT things.</p>

<p>Beside that I will be traveling a bit more - well at least I think I
will but that depends on my precious one.</p>

<p>I also try to accomplish two new things. Learn a new language. The race
is close but I think I will learn how to communicate with the most arrogant,
ignorant and most hated people I have ever met. France,... </p>

<p>Beside that I will finally get a new 'E'-string for my guitar and play
from time to time. This will be lowest priority since my business will
take most of my time.</p>

<h2>Have Fun</h2>

<p>I hope you all have a great year, a lot of fun, accomplish your goals
and just stay as awesome as you are now.</p>
</description>
                <pubDate>2012-01-02</pubDate>
            </item>
        
            <item>
                <title>Merry Christmas</title>
                <link>http://www.hopelesscom.de/2011/12/24/merry_christmas.html</link>
                <description><p>I wish you all happy holidays. Have a great time with your family or
the things you enjoy. Maybe you even have some spare time and start
working on an amazing project.</p>

<p>Just be as awesome as always :)</p>
</description>
                <pubDate>2011-12-24</pubDate>
            </item>
        
            <item>
                <title>The Holy Grail: A Programmer's Editor</title>
                <link>http://www.hopelesscom.de/2011/12/18/the_holy_grail__a_programmer_s_editor.html</link>
                <description><p>I think everyone who has something to do with programming, system administration
or is reading IT related message boards at least encountered one flamewar about
editors. Most people who do not belong in this category do not understand why
everyone is going crazy about an editor. But they also do not spend many hours a
week using one and trying to be productive.
<!--MORE-->
While developing <a href="https://github.com/fallenhitokiri/Zenbo">Zenbo</a> I was using <a href="http://www.vim.org/">vim</a>. As I did the last 12 years. I currently
use <a href="http://www.barebones.com/products/textwrangler/">TextWrangler</a> to write my blog posts. In an <a href="http://www.hopelesscom.de/2011/12/12/first_day_with_zenbo.html">earlier post</a> I mentioned that I
will try to replace vim with TextWrangler. What do I expect from an editor I use for 
development and writing?</p>

<ul>
<li>syntax highlighting</li>
<li>file system explorer or "Command-T"</li>
<li>using the spelling correction build into OSX</li>
<li>tab-to-space</li>
<li>free (as in beer)</li>
<li>usability</li>
</ul>

<p>Nice to have would be</p>

<ul>
<li>snippets</li>
<li>Tag navigation</li>
<li>auto completion</li>
<li>split windows</li>
</ul>

<p>I do not believe this is too much I ask for but I did not find one editor that really fits
my needs. Writing one by myself is also no option. This would take time and resources
I currently do not have and I am not willing to reinvent the wheel.</p>

<h2>Vim</h2>

<p>I currently use <a href="http://code.google.com/p/macvim/">MacVim</a> and at least it does not look as bad as vim or gvim. But the
limitations are the same. I never was a friend of modal editing. I know some of you
may now hate me but it is just a fact that it feels unusual. And beside that I am a
mouse user. I use this little grey thing for years now and I like it. It works. It feels
more natural for me than remembering letters to do basic stuff.</p>

<p>Beside modal editing that really is against my usability wishes, I also do not like the 
fact that even MacVim is just another port of an *nix application. Text file
configuration, long manpages,... not my world anymore.</p>

<h3>Command-T</h3>

<p>If you know <a href="http://macromates.com/">TextMate</a> you should know what I am talking about. Hitting
Command-T and you can just start typing a file name or even regex based
strings and select the file you want from a menu.</p>

<p>If you use vim you can use <a href="http://www.vim.org/scripts/script.php?script_id=1984">FuzzyFinder</a> to accomplish the same thing. Using FuF made
me disable NERDTree. If I have to use my keyboard to navigate I can use something
better than a filesystem explorer.</p>

<p>After I got used to it it really helps my workflow and makes opening files a lot easier.
It looks like <a href="http://peepcode.com/products/peepopen">PeepOpen</a> could help but I would prefer a free solution.</p>

<h3>Snippets</h3>

<p>I do not care if they are build in or if I have to use a third party application. There
are plenty of them offering enough features that I do not think this will be a big
problem. Of course, build in support is always nice but not mandatory.</p>

<h3>Split Windows</h3>

<p>Having two source files open side by side without starting a second editor, perfectly
arranged is nice to have sometimes. Of course it takes away your focus from one
file and that is also the reason why I do not always use it but it is, as I said, handy
sometimes. Most current editors do not seem to support this.</p>

<h2>non free editors</h2>

<p>TextMate, <a href="http://www.sublimetext.com/">Sublime Text</a>, <a href="http://www.barebones.com/products/bbedit/">BBEdit</a>,.. they would all work to some point. Some
of them have a great feature set, some have some features that could be handy but
sadly they are all priced above $40. I do not make my living editing code and the
update policies to new versions are just ridiculous sometimes. Paying a one time
fee would be fine but paying for every upgrade with new features and sometimes
needed improvements is just a joke.</p>

<p>Beside that some of them are not really developed at a speed that you get new and
needed features in time. Looking at TextMate and how many people stopped using 
it because Version 2 was promised for years and not developed,... just a bad joke.
Also nothing that would justify a fee for updates.</p>

<h2>Emacs</h2>

<p>If you used vim for years it is likely that you tried <a href="http://aquamacs.org/">Emacs</a>. Sadly even with plugins
I do not get what I want and there are some usability and design decisions that 
make Emacs even more unattractive than vim.</p>

<h2>IDEs (Eclipse)</h2>

<p>The most used and suggested IDE for everything is <a href="http://www.eclipse.org/">Eclipse</a>. Now I do not need
a full development environment. I already have tools that work and I do not need
some graphical tool compilation trying to hold them together. Beside that I prefer a
true native look &amp; feel and fast startup times.</p>

<h2>TextWrangler</h2>

<p>Currently it looks like TextWrangler will be my best option. Nice look and feel,
at least a document drawer, a great OSX integration and some basic tag managing.
But it is just an editor. Nothing spectacular. I still need some time to evaluate if
syntax highlighting will be okay. But at least, compared to vim, it is stupid easy to
change some colors. Looking forward to the next coding session.</p>
</description>
                <pubDate>2011-12-18</pubDate>
            </item>
        
            <item>
                <title>First day with Zenbo</title>
                <link>http://www.hopelesscom.de/2011/12/12/first_day_with_zenbo.html</link>
                <description><p>Today is the first day with my server running Zenbo. Everything is fine and the only
process currently running is <a href="http://www.lighttpd.net/">Lighttpd</a>. But let us first look at yesterday. This post will
mostly be a recapitulation of what happened and what will happen.
<!--MORE--></p>

<h3>Testing Zenbo</h3>

<p>I was a bit sceptical if everything will work as expected. I first used a
vhost to test everything. While fixing the design I did 23 deploys and I had
not one error. So I was pretty sure everything should work well while blogging.</p>

<p>Using the post-receive hook seems pretty solid. After the repo is pushed it is automatically
checked out and up to date. What I currently do not know is how long it will take when
the repo gets bigger, the load gets higher and if there will be a downtime while the
checkout is running.</p>

<h3>Nice URLs</h3>

<p>I want URLs that do not include a file extensions. Looks and feels wired after all
those years that there is an extension again. I already found a rewrite that works
but sadly I am not sure how to manage multiple extensions based on conditions.</p>

<p>Having a RSS feed with a .html extension looks as wrong as a CSS file with an .html
at the end. Even if it would work it is just not right.</p>

<h3>RFC conform dates</h3>

<p>The date in an RSS feed should be RFC-822 compatible so it validates. Currently I
only add a date on a year-month-day scheme since it is enough for my blog.</p>

<p>Adding hours and minutes should not break my sorting but it could. So I need some
time for testing. Well or I just check if the feed works without a valid date.</p>

<h3>Editor</h3>

<p>I currently use <a href="http://www.barebones.com/products/textwrangler/">TextWrangler</a> to write this post. I will also try to replace vim with it.
After using vim for 12 years now I feel like I should really give something else a fair
chance. Again.</p>

<h3>404</h3>

<p>Definitely need a 404 page. Nothing to add to this point.</p>

<h2>Next few weeks</h2>

<p>I made up my mind what I will fix next. There will be some improvements in my
CSS files and I will add syntax highlighting that actually works. I use pygments and
guess the lexer what does not always work as intended. Than there is the plugin
system that really wants some love and attention.</p>

<p>But basically after Zenbo is now running I will do the most obvious thing. Blogging.
My blog solution works and I am happy that it is released and I also want to add
some features but the basic idea behind Zenbo was that blogging should be fun
again and no fight against strange Ajax interfaces.</p>

<p>I also do not talk about every feature I will add or what I am currently working on.
There is <a href="https://github.com/fallenhitokiri/Zenbo/issues?sort=created&amp;direction=desc&amp;state=open">GitHub Issues</a> that holds every idea and a description how far I got.</p>

<p>If you want to add features I suggest you wait till the plugin system is working. There
will be some major changes and generators will also become plugins. Filters will stay
the same. If you are using Zenbo or start someday drop me a line or add yourself to
the <a href="https://github.com/fallenhitokiri/Zenbo/wiki/Who%3F">GithHub Wiki Page</a>.</p>

<h2>Twitter Comments</h2>

<p>As a side project I am looking in a way to pull all tweets using a specific hashtag in
a local file and load them with every page using JavaScript. Basically a comment
system using Twitter.</p>

<p>Instead of a file it is also possible that I will use <a href="http://redis.io/">redis</a> since I fear some performance
problems with plain/text files and I am also too lazy to work on anything cache
related. Mostly because caches tend to break or mess something up at some point.</p>

<p>But this is nothing that is finished or even in an early alpha stage.</p>

<h2>Webserver</h2>

<p>I use lighttpd for many years now. Compared to <a href="http://httpd.apache.org/">Apache</a> it has enough features, is
sometimes faster, easier to configure and has some regex url magic included.</p>

<p>Since it is possible that I will hit more problems with nice looking URLs and rewrites
I consider using Apache or <a href="http://nginx.org/">Nginx</a>. Load and speed is not really a problem. Especially
since they now only have to serve static files - one of the best arguments against
Apache as far as I know. And if there will be some load problems in future I can still
try to mess around with caching,...</p>

<p>There should be a way to add .htaccess support to Lighttpd. I do not know how stable
and well supported it is. But it should solve most problems.</p>

<p>I think I created something that will entertain me for many months and serve me well
for - I hope - many years. Somehow I feel a bit satisfied... and thankfully my 
significant other did not get mad at me for all the hours I talked about it or, well,
cursed because something just did not work. Thanks to her I will also have a great
logo, so I believe she is not too pissed,... :)</p>
</description>
                <pubDate>2011-12-12</pubDate>
            </item>
        
    </channel>

</rss>

