100 days later - was it worth it?

I completed the 100 days of code challenge. And after a little break, I asked myself the question: was it worth it?

The short answer: Hell yes!

The long answer: It was an experience worth my while. I liked the challenge and the projects I finished surprised me.

But I also found out, that 1 hour per day every day is too much for me. But the continuous exercise is a very powerful tool, too powerful to ignore. So I will try to get 1 pomodoro done per day, without the regime to really do it every day, if my schedule doesn’t allow it.

I am not sure if I will succeed, but I’ll give it a try. And I won’t always do an open source project, so no regular updates, unfortunately.

Adding I18n support on an ionic 2 app

I found many tutorials, but none was really geared toward rc4.

So here is a short and simple way to add I18n support for an ionic 2 app.

First install the ng2-translate plugin:

npm install ng2-translate --save

Then changes to the following two files app.module.ts and app.component.ts are necessary.

In the app.module.ts add the following to your imports statement:

TranslateModule.forRoot({
    provide: TranslateLoader,
    useFactory: (createTranslateLoader),
    deps: [Http]
})

The app.component.ts needs some configuration. Add the following method and exchange the list of languages with your languages.

translateConfig() {
 var userLang = navigator.language.split('-')[0]; // use navigator lang if available
 userLang = /(de|en)/gi.test(userLang) ? userLang : 'en';

 // this language will be used as a fallback when a translation isn't found in the current language
 this.translate.setDefaultLang('en');

 // the lang to use, if the lang isn't available, it will use the current loader to get them
 this.translate.use(userLang);
}

You also need to add the translation service to the constructor:

public translate: TranslateService

and call the method in the constructor.

After that you can use the translate pipe on any page you want:

{{"path.to.translation | translate}}

And how do you store your texts? In a json file per language in the src/app/i18n folder. The english file for the above example would look like this:

en.json
{
    "path": {
        "to": {
            "translation": "test"
        }
    }
}

Starting the 100 Days of Code challenge

It’s been really, really quiet in the blog.

One of the reasons was me not coding in my free time any more. I code for a living and between code fatigue and having too many hobbies, I sometimes started a new project, but abandoned it shortly after starting it.

But no more, I really want to finish something and the 100 Days of Code challenge seems a promising way to keep me on track!

If you don’t know what I’m talking about, have a look here: https://medium.freecodecamp.com/join-the-100daysofcode-556ddb4579e4#.20cpi99aa

I will be coding for 1 hour a day for the next 100 days. I’ll try to follow the exact rules, but I might bend them and allow me to skip a day every week instead of every second week. Often enough, I’ll meet up with friends after work to grab something to eat and play some pen&paper. On those days, I usually come home pretty late. Normally, those days should be limited to once every two weeks, but it can also happen on a weekly basis. Just to give you an excuse upfront 😉

What am I planning to develop: I have two things in mind. First I want a nice, intelligent alarm clock. I want to sleep 8 hours a day, no matter when I go to sleep. So a fixed time to wake up is something I’m trying to avoid. I want this app to activate on a simple button click and it should sound an alarm after 8 hours (and 15 minutes to give me some time so actually go to sleep). I’ll explain the details later in a separate blog post. This is going to be a native Android App.

The second App is a collection of helpful tools for the Star Wars pen&paper RPG from Fantasy Flight Games. I’m still not exactly sure what I want to put in it, but a good start would be a wounds and stress tracker. This is going to be a ionic 2 App.

And here is the link to my log repo.

Ich bin auf der Arbeit damit beschäftigt, eine Desktopanwendung zu entwickeln, die den Workflow bei uns erweitern und vereinfachen soll (ich bin mir nicht sicher, wie weit ich ins Detail gehen kann, daher belasse ich es damit). Da man viel visuell arbeitet und die Programmiersprache der Wahl Java war, habe ich mich umgeschaut, was es denn für Optionen gibt.

Java FX war eine Option, kam aber unter anderem wegen der nicht ganz so sicheren Zukunft nicht in Frage.

Ich war dann eher zufällig auf die Netbeans Rich Client Platform gestoßen, weil ich Netbeans als IDE zum Entwickeln benutze. Gerade die Visual Library bietet sehr viele Optionen, die ich für das Tool benötige, daher haben wir uns dafür entschieden.

Leider ist es so, dass man nur einfache Tutorials findet und habe mir daher überlegt, hier im Laufe der Zeit ein paar Tutorials online zu stellen, vielleicht klappt es ja und ein paar andere können daraus einen Nutzen ziehen. Und damit ich auch motiviert bin, habe ich ein eigenes, privates Projekt gestartet. Es geht mir dabei um ein Tool, mit dem ich Armeen für Tabletop Spiele erstellen kann (es gibt natürlich Alternativen, wie z.B. den OnlineCodex, aber die Bedienung finde ich nicht so gut gelungen).

Ich werde dann berichten, wie ich voran komme 🙂

In den letzten Tagen habe ich ein wenig an einer neuen Anwendung programmiert. Teil davon ist ein Baum in dem eine Hierarchie von Tags abgebildet ist und eine Liste mit Dateien, denen man n Tags zuweisen kann. Nach Dateien soll man über diese Tag-Hierarchie suchen können. Da sich nach einer anfänglichen Konfiguration die Tag-Hierarchie nicht mehr großartig ändert, habe ich mich für das Nested-Set Datenmodell zum Speichern in der Datenbank entschieden.

Die Tabellenstruktur des Baums, der Dateien und der Zuordnungstabelle sieht in etwa so aus:

Nodes { id, lft, rgt, parentId }
FileNodes { id, nodeId, fileId }
Files { id, name }

Im Tag-Baum will ich neben dem Namen des Tags auch die Anzahl der Dateien anzeigen, denen dieser Tag zugeordnet ist. Dabei dürfen natürlich Dateien in der Hierarchie nicht doppelt gezählt werden. Mit diesem Beispiel hier würde ich also für die Knoten folgendes Ergebnis bekommen ([Knoten]: Anzahl):
[1]: 5, [2]: 4, [3]: 3, [4]: 1, [5]: 2, [6]: 2

Continue reading

Unter der Adresse http://www.cayra.net/ kann man sich ein interessantes Brainstorming tool namens Cayra kostenlos herunterladen.

Was das Tool für mich persönlich interessant macht: es ist mit WPF realisiert worden. Optisch sieht es daher wirklich gut aus und solch ein Brainstorming tool sollte eigentlich jeder mal auf dem Computer installiert haben, um schnell Zusammenhänge visualisieren zu können (gute Beispiele dafür gibt es in der Screenshotgallerie: http://www.cayra.net/screenshots ).

Tja, im Augenblick scheint viel los zu sein, eine Veröffentlichung jagt die nächste.

Microsoft hat Visual Studio 2008 (auf Englisch) nun ganz offiziell freigegeben.

Die Express Versionen findet ihr hier: http://www.microsoft.com/express/

Eine Demo der vollen Suite könnt ihr hier runterladen: http://msdn2.microsoft.com/en-us/vstudio/products/aa700831.aspx

Die lang ersehnte nächste Generation von XNA Gamestudio ist zumindest als Beta erschienen: http://creators.xna.com/beta/betahome.aspx

Es handelt sich dabei um ein Framework auf Basis von C# und .NET, mit dem man Spiele für Windows und auch die Xbox360 entwickeln kann.

Das wichtigste neue Feature stellt die Netzwerkmöglichkeiten dar. Jetzt kann man mit seinen Spielen auch das Netzwerk (sowohl lokal wie auch Xbox und Windows Live) ansprechen. Wie immer benötigt man hier aber in den meisten Fällen eine Mitgliedschaft im XNA creators club, sobald die Xbox360 oder Live involviert ist.

Wann es soweit ist, dass man damit auch Spiele auf dem Xbox Live Marketplace (als Arcade Titel) kommerziell vertreiben kann, ist noch unklar.