Sonntag, 2. Oktober 2016

Faces of Maker Faire Berlin 2016

Warum geht man auf eine Maker Faire? Jaja - 3D Drucker, Arduino, Elektronik, Laser, Drohnen, Funk, Computer, Raspberry PI, Lasercutter, Fablabs, Hackerspaces, etc. Vor allem aber wegen der insteressanten Leute, die man dort trifft. Und auch auf diesem event ware wieder viele spannende Personen anzutreffen. Interessant wegen der Dinge, die sie gebaut haben, wegen der Vorträge, die sie halten, oder einfach wegen ihres verwegenen Outfits. In diesem Post nun also ein paar Bilder der anwesenden Maker.
















Hatte ich schon erwähnt, dass das Bad in der Menge der Maker viel Spaß gemacht hat?

Samstag, 1. Oktober 2016

Maker Faire Berlin 2016

Hallo Welt! Ich bin gerade in Berlin - auf der Maker Faire Berlin 2016. Nachdem ich die Make Munich toll fand, musste ich mal über den Tellerrand schauen und mir andere Veranstaltungen anschauen und Berlin ist eh immer eine Reise wert. Allein heute habe ich eine gefühlte Million Fotos gemacht, d.h. das kann ich nicht alles in einem Post abfackeln, daher werde ich wohl mehrere daraus machen.

Das Flair war gattungstypisch - die Standards wie Clubmate ...
... Drohnen ...
... und 3D-Drucker ...


... durften natürlich nicht fehlen.

Ansonsten erstmal ein paar Appetizer mit ersten visuellen Impressionen, wie dieser  Persistance of Vision Installation, die mir gut gefallen hat:



Und hier noch ein weiterer Augenschmaus, auch wenn ich nicht kapiert habe, was das ist:



Fahrzeuge
Ansonsten gab es noch diverse schräge Fahrzeuge zu bewundern:









Mad Max lässt grüßen ;-)




Soviel für jetzt - Fortsetzung folgt.

Dienstag, 19. Juli 2016

HP Microserver: OS Installation

Irgendwie bin ich nie dazu gekommen, den letzten Teil der Server-Serie zu posten. Das soll nun nachgeholt werden:

Heute installieren wir das Betriebssystem: Debian natürlich – die aktuelle stabile Version AKA Jessie AKA Debian 8.

Ein CD Laufwerk hat mein Server nicht, denn im ODD Slot ist ja die SSD eingezogen. Also gibt es im Wesentlichen folgende Optionen für das Installationsmedium:
  1. CD/DVD von externem Laufwerk
  2. Vom USB-Stick
  3. Via debootstrap
  4. Via iLO Virtual Media Image
Außerdem ist zu entscheiden, ob man Tastatur und Monitor anschließen, oder über die Remote Konsole installieren möchte.

Variante 1 ist doof, denn dann muss ich erst eine CD brennen und mit dem externen Laufwerk rumhantieren. Und CDs sind soooo 90er....

Variante 2 ist meine normalerweise favorisierte Option und extrem einfach zu machen: Debian installation image runterladen (ich nehm immer netinst) und dann einfach roh auf den Stick bügeln:

$ dd if=foo/debian-netinst.iso of=/dev/sdX

Dann den Stick einfach einstecken, Server starten, los geht's.

Variante 3 ist etwas aufwändiger und eher was für embedded Systeme wie Raspberry Pi. debootstrap ist im Wesentlichen ein System, mit dem man aus einer anderen Debian Installation heraus eine Neuinstallation auf einem gemounteten Laufwerk machen kann. So hab ich mein Debian z.B. auf eine SD-Karte installiert, um den RPi zum Laufen zu bekommen. Für einen Server nicht uninterressant, denn man kommt so ohne  Keyboard und Monitor aus, aber dafür gibt es auch andere Möglichkeiten.

Variante 4 ähnelt denen in 1 und 2, nur dass das installations image nicht auf ein physikalisches Medium kopiert, sondern auf einem Webserver zur Verfügung gestellt wird und dann von dort gebootet werden kann.

Vorbereitung

Aber erstmal müssen wir ein paar grundlegende Probleme lösen:

Der Server hat zwei SATA Controller. Die SSD hängt am zweiten, der erste bedient die 4 drive bays an der Front. Leider gibt es für Debian keinen Treiber für den RAID-Controller, also Software RAID. Auch gut.

Im allwissenden Netz fand ich eine Installationsanleitung, die empfiehlt, den Controller in den AHCI Modus zu schalten (BIOS). Leider kann man dann immer noch nicht direkt von der SSD booten, da das BIOS keine Konfiguration der Boot-Präferenz bezüglich der beiden Controller bietet. Die vorgeschlagene Lösung dafür lautet, grub auf einen USB Stick, oder eine SD-Karte zu installieren, die man dann in die entsprechenden Slots auf dem Motherboard steckt. Dann bootet das System von SD-Karte, der dortige Bootloader startet das System dann von der SSD. Nicht sehr elegant. Und auch nicht unproblematisch, denn die grub Konfiguration ist eine Wissenschaft für sich...

Nach etwas Rumprobieren fand ich dann heraus, dass man die Bootreihenfolge der beiden Controller aber sehr wohl konfigurieren kann, wenn man statt AHCI den SATA Legacy Mode verwendet. Sehr gut - so machen wir das!

Also erstmal ins BIOS booten (F9 oder via iLO: Boot to System RBSU). Dort dann den Modus einstellen:
System Options 
  -> SATA Controller Options 
    -> Embedded SATA Configuration 
      -> Enable SATA Legacy Support

Als nächstes müssen wir die Bootreihenfolge festlegen:

Boot Controller Order
  -> Ctlr:2 
    -> Controller Order 1

Und

Standard Boot Order (IPL) 
  -> IPL:1  Hard Drive C:

OS Installation

Als erstes brauchen wir einen Webserver. Auf diesem stellen wir das Installations-Image per http bereit. Die URL wird dann im iLO als virtuelles Medium eingetragen:

Virtual Media
  -> Scripted Media URL 
    -> http://192.168.0.99/debian-8.5.0-amd64-netinst.iso
  -> Boot on Next Reset -> check
  -> Insert Media


Nun können wir den Server starten/rebooten. Das geht auch aus dem iLO heraus (Server Reset) - sehr cooles Gefühl ;-).

An dieser Stelle trennen sich die Wege: Wenn wir mit Tastatur und Monitor, oder der graphischen iLO remote Konsole (Java oder .NET) installieren, können wir ganz normal arbeiten. Wer's etwas nerdiger mag, der schaltet sich nun per ssh auf das iLO und startet die remote console mit dem Befehl TEXTCONS. Das funktioniert aber nicht out of the box, weil der Debian Installer gerne den VGA Modus verstellt und den Framebuffer aktiviert, womit die virtuelle serielle Konsole nicht klarkommt. Deshalb muss man beim Booten der CD sofort Esc drücken, sobald sich der Isolinux Boot prompt zeigt. Auf diese Weise gelangt man in ein Kommandozeilen-Interface in dem man die Boot-Optionen von Hand eingeben kann. Und genau das tun wir:

    install vga=normal fb=false

Diesen Tip habe ich übrigens im Debian Wiki gefunden.

Die eigentliche Installation ist dann eher unspektakulär – alles wie bei jedem anderen Computer auch. Ein Tipp allerdings: Ich installiere zunächst komplett auf der SSD, als gäbe es die großen Disks nicht. Der Installer unterstützt das komplexe Szenario nicht nach meinem Geschmack und ich richte /home inklusive RAID lieber von Hand ein.

Als nächstes bearbeite ich gewöhnlich /etc/network/interfaces und konfiguriere dort eine statische IP-Adresse. Das ist für Server erheblich angemessener, als DHCP:

iface eth0 inet static
            address 192.168.0.10
            netmask 255.255.255.0
            gateway 192.168.0.1


Nun nur noch die gewünschte Software installieren und es kann losgehen. Apropos Software – mindestens die folgenden Tools sollten an dieser Stelle installiert werden, damit man vernünftig konfigurieren kann:
  • sudo
  • vim
  • hdparm
  • mdadm
Und der verwendete non-root user sollte in /etc/sudoers angelegt werden. Von root logins rate ich grundsätzlich ab – auch unter ssh.

Software RAID einrichten

Als Erstes müssen wir mal herausbekommen, wie unsere diversen Platten heißen:

$ lsblk
NAME        MAJ:MIN RM   SIZE RO TYPE  MOUNTPOINT
sda           8:0    0   3.7T  0 disk  

sdb           8:16   0   3.7T  0 disk 
sdc           8:32   0 117.4G  0 disk 
|-sdc1        8:33   0 112.6G  0 part  /
|-sdc2        8:34   0     1K  0 part 
`-sdc5        8:37   0   4.8G  0 part  [SWAP]


OK - also sda und sdb sind unsere RAID-Platten. Diese partitionieren wir nun:

$ sudo fdisk /dev/sda

'g':  create a new empty GPT partition table (for disks >2TB)
'n':  create new partition (accept all defaults)
't':   change partition type to 'LINUX RAID' (21)
'w':  write changes to disk and exit:w

Und analog auch für sdb.

Bei einem RAID Server ist es ratsam, den write-cache der Platten nicht zu verwenden. Also erstmal Status checken:

$ sudo hdparm -W /dev/sda
    /dev/sda:
     write-caching =  0 (off)


Sehr gut – ist aus. Wenn nicht hilft dies:

$ sudo hdparm -W0 /dev/sda

Und natürlich analog für sdb.

Nun legen wir das RAID-System an. In meinem Fall RAID1:

$ sudo mdadm --create /dev/md0 --level=1 \
    --raid-devices=2 /dev/sda1 /dev/sdb1

Das geht recht schnell, aber die eigentliche Musik spielt im Hintergrund, denn vom User unbemerkt wird das RAID synchronisiert.  Den Fortschritt kann man so prüfen:

$ cat /proc/mdstat
    Personalities : [raid1]
    md0 : active raid1 sdb1[1] sda1[0]
          3906887488 blocks super 1.2 [2/2] [UU]
          [>....................]  resync =  0.3% (15118784/3906887488) finish=1872.7min speed=34633K/sec
          bitmap: 30/30 pages [120KB], 65536KB chunk

    unused devices: <none>


Das dauert ewig (bei mir >30 Stunden), aber man muss nicht warten bis es fertig ist.

Nun haben wir ein RAID1, aber dieses ist das Äquivalent einer rohen Platte – d.h. wir müssen noch (mindestens) eine Partition anlegen:

$ sudo fdisk /dev/md0

Und ein Filesystem kann auch nicht schaden:

$ sudo mkfs.ext4 -m 0.1 /dev/md0p1

Die Option -m legt fest, welcher Prozentsatz für root reserviert wird. Default sind 5%, was bei einer 4TB Platte einfach viel zu viel ist.

Als nächstes müssen wir das RAID einbinden, d.h. in /etc/fstab eintragen, damit es automatisch gemountet wird. Nun könnte man das Device /dev/md0p1 verwenden, doch sicherer ist es, die UUID zu verwenden. Und die findet man so:

$ sudo blkid /dev/md0p1
    /dev/md0p1: UUID="0a39c667-1947-4e97-993e-d294cedc6752"

    TYPE="ext4" PARTUUID="1ed56347-2adc-4454-8fb5-c11af8c7e1eb"

In /etc/fstab tragen wir dementsprechend ein:

UUID=0a39c667-1947-4e97-993e-d294cedc6752 /home/ ext4 errors=remount-ro 0 1

Nur noch mounten und das System ist im Wesentlichen fertig:

$ sudo mount -a


Sehr gut. Nun kann es losgehen: D.h. weitere Software je nach Anwendungsfall installieren, Daten draufspielen etc. etc.

Sonntag, 17. Juli 2016

Verflixter Wasserhahn

Grumpf!

Als ich neulich den Katzennapf auswaschen wollte hatte der Wasserhahn eine Überraschung für mich parat: Schwungvoll, wie immer drehte ich den Hahn auf und genauso schwungvoll schoss mir der Kopf des Auslaufs samt Perlator entgegen – dicht gefolgt von jeder Menge Wasser. Genau in mein Richtung. Dabei wollte ich nicht duschen, sondern nur den Napf spülen! Megagrumpf! Wie kann das passieren? Ganz einfach: Am Auslauf hat der Hahn ein drehbares Element, damit man sich leichter tut das Spülbecken zu säubern:
Bisher hatte ich mich nie gefragt, wie dieses drehbare Element sich eigentlich am Auslauf festhält.  Aus gegebenem Anlass interessiert mich die Frage nun. Wie man sieht, sind da zunächst mal zwei Dichtungsringe, damit nix tropft, aber darüber hinaus findet sich ein weißer Plastikring. Letzterer presst sich in eine Vertiefung im Auslauf und fixiert das Ganze:
Und genau dieser Ring ist einigermaßen abgenutzt, weswegen mich der Auslauf so freudig angesprungen hat. Also erstmal ausbauen und genauer studieren:

3D-Drucker zu Hilfe


Wozu habe ich einen 3D-Drucker? Das Teil muss man doch leicht duplizieren können. Also habe ich alles vermessen und die Form so gut es ging nachmodelliert:





Schnell musste ich jedoch feststellen, dass das nicht so der Königsweg war: PLA ist ein echt ein sprödes Zeug und nicht so toll für den Job geeignet. Besser ABS oder Nylon?  Vor allem aber kamen diese Submillimeter-Strukturen des Rings in der Praxis nicht gut raus. Aber braucht man die echt? Eigentlich muss der Ring sich doch nur in die passende Rille pressen und die genaue Form sollte ziemlich wurscht sein – oder?

Low-Tech Ansatz

Also mal weg von High-Tech Lösungen und kurz nachgedacht. Wenn man einfach ein Stück Nylon oder anderes Plastik mit geeigneten Maßen hätte... Zuerst dachte ich daran, ein Plastikrohr mit passendem Durchmesser zu finden und einen Ring abzusägen. Aber dann probierte ich erstmal was viel simpleres: Nylonfilament. Und das gibt's im Baumarkt, Gartencenter oder auf Ebay für kleines Geld – nur heißt es dort nicht Filament, sondern Mähfaden oder Trimmerschnur. Also dieser Faden, den eine Motorsense mit einem Affenzahn im Kreis schleudert, um wucherndes Gras und andere Gewächse in die Schranken zu weisen. In meinem Fall brauchte ich eines mit ca. 2mm Durchmesser. Auf Ebay habe ich für ein paar Euro 25 Meter davon gefunden:

Das ist genug um die Wasserhähne einer mittleren Stadt zu reparieren. 2mm sind etwas mehr, als der original-Ring hatte, d.h. man muss den Faden mit etwas Gewalt in die Rille pressen. Das ist jedoch ganz praktisch, denn so hält das Ganze ohne Klebstoff oder irgendwelche Verrenkungen:

Noch ein bisschen Silikonfett drauf (aber nur auf die schwarzen Dichtungsringe, sonst hält das nicht!) und mit etwas Nachdruck in den Auslauf drücken.
Und siehe da: Wasserhahn repariert. Anfangs war der Auslauf noch etwas schwergängig zu drehen, aber nach einer Weile hatte sich der Plastikfaden offenbar gut eingeschliffen und das Ganze fühlt sich an, wie neu.


Freitag, 4. März 2016

Maker Story Parodie

Ich liebe schöne Maker-Stories. Es hat einfach etwas, zu sehen, wie Leute mit ihren Händen Dinge herstellen. Manche sind zugegebenermaßen etwas schräg, aber in der Regel liebenswert. Einige Filmproduzenten finden diese Maker-Videos offenbar originell und haben begonnen, Parodien zu drehen. Diese hier finde ich besonders gelungen:



;-)

Samstag, 20. Februar 2016

Vimwiki - Personal Wiki in Vim

2016-02-20_vimwiki

Ein Vim sie zu knechten

Vim ist einer der besten Texteditoren, die ich kenne. Zwar fragt sich der VIM-Neuling anfänglich, ob er bei einer Computer-Variante von "Verstehen Sie Spaß" gelandet ist, aber nach einer kurzen Eingewöhnungszeit stellt man dann erstaunt fest, dass man in diesem Editor extrem effizient arbeiten kann, sobald man mal eine paar grundlegende Konzepte und Befehle verinnerlicht hat. Aus diesem Grunde verwende ich ihn seit vielen Jahren für eigentlich alles, was mit Text zu tun hat: Programmieren, Texte schreiben (z.B. in LaTeX) config Files anpassen etc.

Was einen guten Editor ausmacht ist aber nicht nur sein Interface, sondern vor allem, dass man ihn den persönlichen Bedürfnissen anpassen kann. Faustregel bei der Editor-Wahl: Wenn sich das Ding nicht gut konfigurieren lässt und es Erweiterungen nicht unterstützt – Finger weg. Vim lässt sich durch Plugins erweitern, die man entweder in Vimscript schreiben kann, oder aber auch in Python. Ähnliches gilt für den Erzrivalen Emacs, nur dass hier LISP das Mittel der Wahl ist.

Aber wieso mache ich so viel Aufhebens um einen Texteditor? Weil Textfiles unglaublich praktisch sind. Das wird nun vielen Leuten komisch vorkommen und so mancher hat heute gar keine Ahnung mehr, was ich mit Textfile überhaupt meine, wo doch jede Software inzwischen ein neues Dateiformat definiert, das zu allen anderen inkompatibel ist. Ist ja auch viel besser für den Hersteller, wenn ein Wechsel zur Konkurrenz durch die Unverträglichkeit der Dateien erschwert wird.

Aber eigentlich verwende ich stinknormale Textfiles andauernd – z.B. für

  • ToDo Listen
  • Notizen
  • Mitschriften aus Meetings
  • Meinen Wunschzettel
  • Readme Files für Programme
  • Readme Files für Folder in meinem Dateisystem
  • ...

Das ist praktisch, denn es ist kinderleicht ein Textfile zu editieren, man kann es sehr effizient durchsuchen – im Editor oder z.B. mit grep, ich kann es mit diff mit einer anderen Version vergleichen, alle Versionierungssysteme kommen damit klar, es ist schlank, es funktioniert problemlos unter LINUX, Windows, Mac, Android, iOS, DOS, CPM, OS/2, dem Betriebssystem von HAL9000 und überhaupt überall.

Mit anderen Worten es ist ein extrem einfaches und deshalb mächtiges Dateiformat.

Ein Vim sie zu finden

Zahlreiche Textfiles finden sich verstreut auf meinem Computer – ich organisiere sie so gut ich kann durch sinnvolle Ordnerstruktur. Im Großen und Ganzen klappt das gut. Manchmal denke ich mir aber, es wäre nett, wenn ich auch ein tool hätte, das bestimmte Dokumente stärker zusammenhält und verlinkt. Z.B. meine ToDos, Meetingnotizen und kleinere Texte in denen ich meine Gedanken ordne, Konzepte erarbeite etc. Ich hatte in der Vergangenheit schon gelegentlich verschiedene GUI Tools ausprobiert, die versprachen, meine Produktivität zu steigern, das Denken zu fördern, Verbindungen zu managen und den Weltfrieden herbeizuführen. Lange Rede kurzer Sinn – nach einer, meist kurzen, Testphase war ich zurück bei Textfiles in Folders, ggf. mit begleitenden Medien und Dokumenten, wie Photos, PDFs etc.

Warum? Weil alle diese vermeintlichen Produktivitätsbooster irgendwie unbequem zu bedienen waren, nur auf einer oder wenigen Plattformen funktionierten, untereinander vollkommen inkompatibel waren und einfach nervten.

Kürzlich bin ich nun auf etwas sehr angenehmes gestoßen: vimwiki. Das ist exakt, was der Name suggeriert: eine Implementierung eines Wiki Systems als Vim-Plugin. Wikis wurden ursprünglich erfunden, um es dem weniger HTML-erleuchteten Bürger zu ermöglichen, effizient kleine Webseiten zu erstellen, sie untereinander zu verlinken und auf diese Weise eine Menge wertvolle Information organisiert zu kriegen. Wikipedia ist das Vorzeigekind der Familie. Aber es muss nicht gleich ein Lexikon sein – ein Wiki ist auch unglaublich nützlich, um seine eigenen Gedanken Festzuhalten und Informationen, die man von irgendwo her hat zu organisieren. In der Tat waren auch veritable Wiki System unter den oben verworfenen Lösungen – sie waren einfach Overkill für das, was ich haben wollte.

Vimwiki implementiert nun ein minimalistisches Wiki. Die Syntax erinnert an Markdown, ist aber nicht exakt die gleiche, was aber echt wurscht ist. Und so habe ich angefangen, mir ein persönliches Wiki zu bauen und es füllt sich stetig:

  • Todo Liste (eigentlich mehrere, nach Kontext geordnet)
  • Lösungen zu schwierigen Computer-Problemen, die ich nicht verlieren möchte
  • Bookmarks mit ausführlichen Kommentaren für mich selbst
  • Ideen für Bastelprojekte und Blog Beiträge
  • Outlines für längere Texte, an denen ich arbeite
  • Planung unserer Urlaubstermine
  • Skizzen für Blogbeiträge
  • Ideen und Notizen zu Dingen, die gerade lerne oder lernen möchte
  • Meine Wunschliste
  • Geschenkideen für andere
  • und vieles mehr

Das Ergebnis besteht aus einer Vielzahl von Textfiles im vimwiki Markup, die in einem speziellen wiki Ordner liegen und untereinander durch Hyperlinks verbunden sind. Öffne ich das Ganze in Vim fühlt es sich an, wie Websurfen mit einem Text-basierten Browser (lynx/w3m o.ä.). Ich kann von meiner Hauptseite aus wie im Flug durch diverse Links navigieren, bis ich im Zieldokument ankomme. Innerhalb der Dokumente kann ich dann mit den gewohnten Vim Befehlen arbeiten und das Syntaxhighlighting machte es leicht, die Dokumentenstruktur zu erfassen.

Vimwiki kennt mehrere Levels von Überschriften, geordnete und ungeordnete Listen, die sich auch schachteln lassen, Links nach außen (auf Files, Webseiten, Bilder, etc.). Simple Textauszeichnungen, wie fett oder kursiv fehlen ebenfalls nicht.

Ein Vim sie ins Dunkel zu treiben und ewig zu binden

Und natürlich lässt sich das Ganze (oder einzelne Dateien) auch leicht in HTML verwandeln. wozu das nützlich ist? Zum Beispiel, um sein Wiki in aufgehübschter Form zu durchforsten, oder es anderen lesend zur Verfügung zu stellen.

Oder zum bloggen -- dieser Post wurde komplett in vimwiki geschrieben, nach HTML konvertiert und auf blogspot kopiert...

Sonntag, 14. Februar 2016

Code snippet beautification in vim

Hallo Welt! Chris hatte neulich ein schönes tool zum Verhübschen von Source Code vorgestellt (Gist). Das ist nützlich für Blogposts in denen man mal ein Stück Code vorstellen will.

Nun bin ich ein alter VIM user, denn in meinen Augen ist das der beste Editor der Welt und mithilfe diverser Plugins kann man ihm ungeahnte neue Trick beibringen. Einige erstaunliche Sachen kann er aber auch schon ohne solche Erweiterungen. Dazu gehört ein sehr hilfreiches Syntax-Highlighting für ziemliche alle Programmiersprachen, die es so gibt. Und wie es der Zufall so will bringt vim auch einen html Konverter mit! Um den aufzurufen gibt man einfach im Kommandozeilen Modus folgendes ein:

:TOhtml

Das Ergebnis landet in einem neuen Buffer und kann von dort als html File gespeichert oder eben in den Blog kopiert werden – zumindest der Teil zwischen den body tags. Probieren wir das also mal aus mit einem code snippet für die Collatz conjecture. Das sieht dann so aus:

def collatz(number):
    path = [number]
    while number != 1:
        if even(number):
            number /= 2
        else:
            number = number * 3 + 1
        path.append(number)
    return(path)

Die Formatierung passt schon, aber  Syntax-Highlighting wäre toll. Der Grund das es fehlt ist, dass vim per default CSS verwendet, was aber problematisch ist, wenn man nur das snippet kopiert. Man kann das aber auch abschalten, und zwar so:

:let html_use_css=0

Und dann wären Zeilennummern noch schön. Also:

:set number

Das Ergebnis gefällt mit schon sehr gut:

19 def collatz(number):
20     path = [number]
21     while number != 1:
22         if even(number):
23             number /= 2
24         else:
25             number = number * 3 + 1
26         path.append(number)
27     return(path)



Die Zeilennummern gehen bei 19 los, weil das die Zeile im Original File war. Wenn ich für das Snippet lieber bei 1 starten möchte dann muss ich vorher eben noch das Snippet in ein eigenes File tun - auch kein Akt. Und wenn einem das Farbschema nicht gefällt gibt es natürlich diverse zur Auswahl. z.B.:

:colorscheme delek

und man bekommt dies (diesmal mit Nummerierung bei 1 startend):

def collatz(number):
        path = [number]
        while number != 1:
                if even(number):
                        number /= 2
                else:
                        number = number * 3 + 1
                path.append(number)
        return(path)