tiny little gizmos

Skalierung von Webanwendungen

Eine Webanwendung auf einem Server zu installieren ist relativ einfach. Spannend wird es, wenn man grössere Sites betreiben will oder muss.

Mark Jaquith hat zu dem Thema auf der dem WordCamp 2011 in San Francisco eine schöne Einführung gegeben. Stichworte: Versionsverwaltung, Deployment, Multi-Server Configuration und noch so einiges mehr. Zwar bezieht sich Mark auf WordPress, aber das Meiste lässt sich auch auf andere Webanwendungen, wie z.B. Online Shops übertragen.

Quelle: Marcos Blog

Mechatronik für blutige Anfänger (Teil 2)

Mein Bemühen, einen kleinen, einfachen Prototyp eines Hexapods zu bauen ging in die zweite Runde.

Zunächst habe ich mit den Beinen des Roboters begonnen. Diese Woche habe ich erst vier von sechs Beinen fertig, nämlich die vorderen zwei und die hinteren zwei Beine. Die Vorderen werden von den beiden senkrechten Servos angetrieben; sie sind direkt auf dem jeweiligen Steuerhorn befestigt. Die hinteren Beine werden von den vorderen mitbewegt, aber dafür habe ich die verbindende Mechanik noch nicht. Ebensowenig habe ich die mittleren Beine, die von dem waagerechten Servo bewegt werden sollen. Hier sind aber dennoch schon mal zwei Bilder vom Baufortschritt:

Pappmechanik von Oben

Pappmechanik von oben

Pappmechanik von unten

Pappmechanik von unten

Zudem wollte ich mich darum kümmern, die Verkabelung vom unhandlichen Breadboard auf eine Verteilerplatine zu übertragen, die direkt auf den Arduino Controller gesteckt werden kann. Hierzu habe ich mir drei JR-Stecker für den Anschluss der Servos und eine Lochrasterplatine gekauft. Die Platine habe ich mit einem Cutter so zugeschnitten, dass 11 Leiterbahnen quer über den Arduino gehen. Die zugrunde liegende Schaltung ist wie folgt:

Schema Servosteuerung

Schema Servosteuerung

Das führt zu folgendem Platinenlayout:

Layout Servosteuerung

Layout Servosteuerung

Vom der unteren Stiftleiste des Arduino werden 5V (+) und GND (-) nach oben verbunden und von der oberen Stiftleiste die PWM (Pulsweitenmodulation) Anschlüsse 9, 10 und 11. PWM9 und 5V liegen sich genau gegenüber, so dass hier die Leiterbahn getrennt werden muss.

Löten ist fummelig und stinkt. Ausserdem beherrsche ich dieses Handwerk nicht, wie man an der fertigen Platine sieht. Mechanisch passt sie auf den Arduino, aber bevor ich das Biest in Betrieb nehme, werde ich es noch einmal durchmessen um sicherzugehen, dass ich keine Kurzschlüsse oder kalte Lötstellen erzeugt habe. Doch dazu muss ich mir erst einmal noch ein einfaches Messgerät besorgen.

Rohstoffe

Rohstoffe

Verteilerplatine

Verteilerplatine

To be continued…

Mechatronik für blutige Anfänger (Teil 1)

Videos mit selbstgebauten Robotern anschauen – alles schön und gut. Aber jetzt mal Schluss mit der grauen Theorie, dachte ich mir. Ich muss meinen Nerd-Level mal wieder etwas liften. Also liess ich mir unter der Woche ein kleines Päckchen von Watterott mit lustigen Teilen zum Elektronikbasteln schicken – unter anderem einen Ardiuno Uno (Mehr dazu auf Wikipedia). Die ersten kleinen Versuche, in denen ich diverse LEDs blinken liess verliefen ohne nennenswerte Zwischenfälle.

Das macht Mut für mehr.

Mein Fernziel ist es, einen Hexapod (sechsbeiniger Roboter) zu bauen und zu programmieren – aber fangen wir mal ganz behutsam an. Ich hatte zu Hause noch ein paar Teile einer Fernsteueranlage rumliegen – unter anderem 3 Micro Servos (BMS – 306BB). Mit 3 Motoren kann man auch schon einen kleinen Laufroboter bauen, auch wenn der noch etwas ungelenk ist. Ein Servo steuert die linken Beine, einer die rechten Beine (je vorne und hinten) und einer die beiden mittleren Beine links und rechts.

Die Programmierung des Bewegungsablaufs (erst mal einfach endlos geradeaus) war recht einfach und in einer Viertelstunde erledigt. Aber – und jetzt kommt der Unterschied zum Programmieren von Internet-Zeugs – man muss tatsächlich erst einmal etwas bauen. Richtig mechanisch.

Da es mir erst einmal auf einen einfachen Prototypen ankommt, versuche ich es zunächst mit fester Pappe. Vorher habe ich auf einem A4-Blatt die Basisplatte entworfen.

3 Servos, etwas Pappe, ein cutter

3 Servos, etwas Pappe, ein Cutter

Basisplatte 9x11cm

Basisplatte 9 x 11cm

Basisplatte mit Servos

Basisplatte mit Servos

Basisplatte mit Servos und Controller

Basisplatte mit Servos und Controller

Bis hier lief erst mal alles gut. Als nächstes muss der Kabelverhau vom Breadboard verschwinden, der Arduino huckepack genommen werden und dann geht es daran, Beine zu basteln.

Mal sehen, ob ich hinbekomme.

Standortbestimmung in Websites für Smartphones

Im Moment bastele ich an einer neuen Version von zzap – meinem Micromessaging Tool, das ich zwischen 2005 und 2008 entwickelt hatte. Zu jeder Nachricht soll dabei der Ort gespeichert werden, an dem die Nachricht versendet wurde.

Das ist eigentlich kein Problem mehr, seit die modernen Smartphones HTML 5 mit der geolocation API unterstützen. Die Methode

navigator.geolocation.getCurrentPosition

wird mit den Namen von zwei Callback Functions für success und error aufgerufen, an die dann das Positionsobjekt mit Angabe zu Längen- und Breitengrad übergeben wird. Interessierten sei hier die offizielle Dokumentation nahegelegt (W3C: Geolocation API Specification).

Eigentlich ganz einfach. Genau – eigentlich!

Der Teufel steckt natürlich mal wieder im Detail. Eine entsprechende Seite war schnell gebaut. zur Darstellung der Karte verwende ich OpenStreetMaps und alles wäre so schön – wenn die zurückgelieferten Koordinaten nicht so schrecklich ungenau wären.

Warum so ungenau?

Ich habe in den letzten zwei Wochen etliche Positionsbestimmungen in Berlin (Kreuzberg, Mitte, Prenzlauer Berg), Hannover und Kirchhorst (einem Vorrort von Hannover) und im Stau auf der A2 ausprobiert. Die Ergebnisse lagen häufig um bis zu 200-300m daneben – egal ob im hochverdichteten Kreuzberg oder auf dem Land. Manchmal stimmten sie aber auch bis auf 5m.

Ich hatte zunächst mein Handy – ein immer nocht recht aktuelles HTC Desire S mit Android 2.3.5 im Verdacht. Andererseits funktioniert die Peilung bei Google Maps sehr schnell und präzise.

Immer exakt gleich falsch

Als ich mir dann die Daten ansah, entdeckte ich, dass ich bei den Meldungen aus Kirchhorst immer um ca. 300m auf den Acker verschoben wurde – und zwar bis auf 8 Nachkommastellen immer auf exakt dieselbe falsche Position. Das machte mich dann doch etwas stutzig. Bei Recherchieren fand ich dann den Artikel “Präzise GPS-Daten über die W3C Geolocation API bekommen” von Rolf Dormann. Seine zusammenfassende Erkenntnis (Zitat):

  1. Es ist möglich, über die W3C Geolocation API an die GPS-Daten zu kommen.
  2. Die ersten Daten, die die beiden dafür vorgesehenen Methoden liefern, sind nie GPS-Daten.
  3. Irgendwann kommen GPS-Daten.
  4. Über einen einmaligen Aufruf von getCurrentPosition kommt man nicht an GPS-Daten.

Mann bekommt zwar sehr schnell Positionsdaten, allerdings aus einer Funkzellenabfrage. GPS Daten kommen erst später, und man muss die Position dazu mehrfach abfragen.

So – und damit soll man nun eine intuitive, schnelle Mobile Website bauen, die dann auch noch auf allen wichtigen Geräten funktioniert. grrrr…

Webmontag Berlin – Outsourcing

Der Webmontag Berlin am 13.02 hatte Outsourcing zum Thema.

Den Opener machte Ivo Bethke von Webcrowd. Er gab einen ersten Überblick über das Outsourcing von IT Leistungen in Länder wie Indien; über die Pros und Contras. Da ich mich aufgrund von negativen Erfahrungen mit diesem Thema schon länger nicht mehr beschäftigt hatte fand ich die Aussage, dass gute Entwickler dort auch schon $25 bis $35 pro Stunde kosten interessant. Vor diesem Hintergrund müssen auch die wesentlich höheren Aufwände des Projektmanagements hier berücksichtigt werden.

Anschliessend gab Ali Shaheen von Coeus Solutions eigene Erfahrungen mit outgesourctem Projekt zum Besten und schloss ebenfalls mit einigen guten Ratschlägen.

Gute Erfahrungen mit dem Outsourcing der Webentwicklung nach Indien hat Daan Löning von Kinderfee.de gemacht. Er erzählte mir in einem anschliessenden Gespräch, dass die Zusammenarbeit mit einem festen Team stattfindet. Der Projektauftakt bestand aus einer gemeinsamen 6 wöchigen Kickoffphase, die interessanterweise beim Dienstleiter in Indien stattfand. Die Zusammenarbeit ist so gut, dass die laufende Betreuung der Site nach dem Launch im letzten Frühjahr weiterhin von demselben Team durchgeführt wird.

Letztlich kann man die Erfahrungen der Referenten wie folgt zusammenfassen:

  • Das Projektmanagement muss beim Auftraggeber vor Ort sein.
  • Ebenso muss das Produktdesign aufgrund unterschiedlicher kultureller Erwartungen der Kunden vor Ort stattfinden.
  • Das Team sollte möglichst gleichbleibend besetzt sein.
  • Die Akteure auf beiden Seiten sollten sich persönlich kennen.
  • Die To-Dos müssen sehr genau definiert sein
  • Das Projektcontrolling muss ständig und umfassend sein. Dinge wie Scrum lassen sich aber nicht gut über die Distanz managen.

Abschliessend gabe es auch noch drei Kurzpräsentationen von fairtrade, einem weiteren Startup, dass ich aufgrund von Gesprächen nicht mitbekommen habe (sorry) und ui-check, mit dessen Gründer Yannis Niebelschütz ich ebenfalls ein kurzes Gespräch geführt habe.

Alles in allem mal wieder in recht interessanter Abend in netter Atmosphäre (siehe Foto).

image

Wie lange wird das denn dauern?

Als Entwickler muss man regelmäßig Aufwandschätzungen abgeben. Der Kunde will wissen, wann etwas fertig wird und man selber möchte ja auch etwas an seiner Arbeit verdienen.

Oder für die Angestellten unter den Lesern: Die Fachabteilung will wissen wann etwas fertig ist und man selber braucht Belege, warum man die nächsten 95 super dringenden Features nicht mehr umsetzen kann.

Wenn man immer dasselbe macht, klappen diese Schätzungen auch ganz gut. Leider steht man in der Realität aber eigentlich immer vor Aufgaben, die man (so) vorher noch nicht gelöst hat. Ist ja klar – die anderen Aufgaben hatte man ja bereits gelöst.

Ich in dem Artikel “Coding” bei den Pickford Bros. über diese Aussage gestolpert:

After nearly 30 years of coding (on and off) I still haven’t the slightest clue how long a given task is going to take.

Als Entwickler verstehe ich diese Aussage voll und ganz. Manchmal löst man komplexe Aufgaben in Rekordtempo und manchmal kommt man bei anscheinend trivialen Dingen tagelang lang nicht vorwärts.

Als Teamleiter bringt einen so ewtas zur Verzweifelung.

Letztlich bleibt Aufwandsschätzung nur vorsichtiges, durch jahrelange Erfahrung entschärftes Raten. Und jetzt erklär das mal Deinem Boss/Auftraggeber…

[ Den Artikel hatte ich bereits letztes Jahr geschrieben – aber er wird vermutlich auch die nächsten 30 Jahre seine Gültigkeit behalten. ]

Wetter, digitale Hygiene und Alternativsysteme

Es hätte mich nicht gewundert, wenn in der letzten Woche bei mir oben im vierten Stock mal kurz der eine oder andere Fisch vorbeigeschwommen wäre. Soviel zum Thema Urlaub – nix mit entspanntem abhängen am See und in den Berliner Cafés. Notgedrungen habe ich mich also ersatzweise einigermassen nützlichen Tätigkeiten, vorzugsweise im digitalen Universum, zugewandt.

Digitale Hygiene

Zunächst habe ich mich um die ca. 1000 Fotos auf dem Handy gekümmert. Runterladen, sortieren, archivieren. Was sich so mit der Zeit alles ansammelt…

Sagte ich eigentlich schon mal, dass ich mein Nokia N8 für eines der besten Handies halte, die momentan auf dem Markt sind? Die Hardware ist wirklich erstklassig! Aber ich schweife ab.

Da ich nun schon mal dabei war, habe ich im Anschluss auch gleich noch den iMac aufgeräumt, ziemlich viel Zeug gelöscht (45GB) und danach ein neues Vollbackup gefahren.

Suche nach strategische Alternativen
Meine Macs gefallen mir übrigens auch immer noch sehr. Extrem schöne und solide Geräte mit einem tollen Betriebssystem. Allerdings gefällt mir Apples Geschäftsgebaren immer weniger. Daher halte ich seit einiger Zeit mal wieder Ausschau nach einer zukünftigen Alternative.

Es war also Zeit, sich mal wieder um die aktuellen Linux Distributionen zu kümmern. Anlass hat mir das aktuelle Linux Magazin gegeben, das ich mir neulich in Finnland zugelegt hatte (UK-Ausgabe). Aufmacher ist ein Vergleich verschiedener aktueller Distributionen (ArchLinux, Mint, Debian, OpenSUSE, Ubuntu, Fedora, …), der mit einer beigelegten DVD ergänzt wurde.

Also habe ich die Virtual Box angeworfen, Ubuntu, Fedora und Suse installiert und versucht, mir eine Arbeitumgebung (LAMP, Eclipse, Firefox, Mail, Kalender, Office, Drucker) aufzubauen.

Virtual Box Test

Virtual Box Test

Schön war, dass sich alle Distributionen prinzipiell einfach zum Laufen bringen liessen, ohne dass man schon zu Beginn im System rumrühren muss. Aber die (zeitfressenden) Unterschiede liegen im Detail.

Um das Ergebnis vorwegzunehmen: der eindeutige Sieger ist für mich noch immer Ubuntu.

Bei Suse 11.4 (http://de.opensuse.org) stört mich die langsame Installation und der extrem ungewohnte Desktop. KDE ist irgendwie nicht so recht mein Ding. Kann man sicherlich anpassen, aber wozu, wenn man passendere Lösungen out-of-the-virtual-box bekommen kann?

Fedora 15 (http://fedoraproject.org/de/) war schnell installiert und glänzt mit einem aufgeräumten und gefälligen Desktop. Nicht so schön war, dass sich Updates nicht ohne manuelle Nacharbeit installieren liessen. Auch mein Drucker (HP OfficeJet Pro 8500 am Netzwerk) liess sich zunächst genausowenig einrichten, wie Eclipse. Sicherlich ist das alles machbar, aber es geht eben nicht sofort.

Ubuntu 11.04 (http://www.ubuntu.com/) lief dagegen sofort, liess sich ohne Probleme mit Updates versorgen, erkannte den Drucker, nachdem ich seine IP Adresse eingegeben hatte und installiert den richtigen Treiber. Auch Eclipse PDT und XAMPP liessen sich innerhalb von Minuten installieren. Fein – so soll es sein.

Ein auf guter Hardware sauber aufgesetztes Ubuntu System könnte meine Apple also durchaus leicht ersetzen, wenn sich die Jungs aus Cuppertino nicht bald mal wieder von dem fortschreitenden Kontrollwahn verabschieden. Bin sicher nicht der Einzige mit solchen Gedanken. Consider this, Steve.

HA – Ich kann es noch…

Über 20 Jahre ist es her, dass ich es zum letzten Mal getan habe, aber ich kann es noch. Einer kleine Fingerübung in 6502 Assembler. Memorymap und KickAss sei dank…

.pc =$0801

// 2011 SYS 2062
basicstart:    .byte 12, 8, 219, 7, 158, 32
               .byte 50, 48, 54, 50, 0, 0, 0

               lda #$00
               sta $d020 // Border black
               sta $d021 // Background black

// Address of screen($0400) in zeropage $03/$04
               lda #$00
               sta $03
               lda #$04
               sta $04

// Address of gamefield in Zeropage $05/$06
               lda #< Gamefield
               sta $05
               lda #> Gamefield
               sta $06

               ldx #$00
rowloop:       ldy #$00
colloop:       lda ($05),y
               sta ($03),y
               iny
               cpy #$0b
               bne colloop
// next row: add 32 to source and 40 to target
               clc
               lda $03
               adc #$28
               sta $03
               lda $04
               adc #$00
               sta $04
               clc
               lda $05
               adc #$20
               sta $05
               lda $06
               adc #$00
               sta $06

               inx
               cpx #$0b
               bne rowloop
               rts

Gamefield:
               .text "+---------+                +---+"
               .text "!         !     +-----+    !   !"
               .text "!         !     !     +----+   !"
               .text "!         !     !              !"
               .text "!         !     !     +----+   !"
               .text "!         !     +-----+    !   !"
               .text "!         +---+            ++ ++"
               .text "!             !             ! ! "
               .text "!         +-+ +-------------+ ! "
               .text "!         ! !                 ! "
               .text "+---------+ +-----------------+ "
               .text "01234567890123456789012345678901"

Der Tag der Wahrheit

Montag ist der Tag der Wahrheit. Da wird sich herausstellen, ob sich das letzte halbe Jahr Knüppelei gelohnt hat, und wir vernünftige Systeme hingestellt haben.

Bin gespannt, wie ein Flitzebogen…

Nachtrag, Montag, 13:40

Die drei Shops sind heute morgen online gegangen, es wurde ein Glässchen Sekt gereicht, die ersten Kunden kaufen, es gibt bis jetzt keine Probleme. Sieht gut aus.

Ich schreibe ja normalerweise nicht über Auftrag-/Arbeitgeber. Heute mache ich stolz eine klitzekleine Ausnahme. Hier sind die Shops:

www.street-one.de

www.cecil.de

www.onetouch.de

Auftrag erfolgreich beendet

Ahhh, Freizeit bis Ende des Jahres. Diese Woche habe ich meinen Auftrag bei der Hanseatic Bank beendet. 6 Monate Arbeit vor Ort in Hamburg und damit verbundenes Pendeln und etliche Hotelübernachtungen liegen hinter mir. Ich genieße es, endlich wieder zu Hause zu sein, den Koffer wieder auf den Zwischenboden zu lagern. Ich treffe endlich wieder Freunde und gehe zu Parties. Toll!

Dennoch fiel mir der Abschied nicht ganz so leicht. Die Teilprojekte, an denen ich beteiligt war, waren durchaus fordernd und sind erfolgreich in Produktion gegangen. Die Bezahlung war gut und erfolgte stets pünktlich. Ich hatte sehr nette Kollegen, mit denen ich auch nach der Arbeit etwas unternehmen konnte. Die bei Projekten dieser Größe unvermeidlichen kleineren Abstimmungsprobleme zwischen Fachabteilungen und extenen Dienstleistern wurden stets in konstruktiver und kollegialer Zusammenarbeit geklärt.

Ich bin schon lange genug im Geschäft um zu wissen, daß das alles keine Selbstverständlichkeiten sind. Hat mir Spass gemacht.

« Previous PageNext Page »