Personal Kaizen: das Now & Later Board für elektronische Notizen

Hinterlasse einen Kommentar

Seit langer Zeit benutze ich an meinem Arbeitsplatz den Windows-Texteditor Wordpad als elektronischen Notizzettel. Bei der Anmeldung in Windows wird über den Autostart gleich die Datei notizen.rtf geladen, in die ich alles hinein schreibe, dass ich mir kurzfristig aufheben möchte. Die angeboteten RTF-Formatieroptionen reichen mir dabei völlig aus.

Verschiedene Notizen trenne ich im Editor meist durch mehrere Leerzeilen, gefolgt von einer Zeile mit ein paar Minuszeichen für den Beginn einer neuen Notiz. Was mich schon immer etwas gestört hat, war die “Vermischung” von Notizen zu der Aufgabe, die ich gerade bearbeite, und Notizen, die diese Aufgabe nicht betreffen, die ich aber dennoch aufnehmen muss, weil beispielsweise jemand anruft oder bei mir vorbei kommt und mir etwas mitteilt.

Ich bin, als ich mir das Programm Vitamin-R ansah, über die offensichtliche Lösung für mein Problem gestolpert: das Now & Later Board. das im Wesentlichen ein Editor mit mehreren Tabs ist.

In Java habe ich mir diese Funktionalität nachprogrammiert.

Neben einfachen Formatierungsmöglichkeiten habe ich noch eine Funktion für das Leeren eines Notizblattes implementiert:

Alle Informationen zur aktuell bearbeiteten Aufgaben notiere ich auf dem Notizblatt jetzt, alles, was ich später noch erledigen muss, auf dem Notizblatt später, und den Rest auf dem Notizblatt Schmierzettel. Zwischen den verschiedenen Notizblättern kann ich mit Hotkeys wechseln. Um die Bedienung einfach zu halten, erfolgt das Laden und Speichern der drei Notizblätter automatisch.

Ich nutze mein Now & Later Board nun seit einigen Tagen und überlege, welche Funktionen ich noch einbauen könnte, um meinen “Notiz-Workflow” zu verbessern.

 

Pomodoro-Anwendung ausgebaut

Hinterlasse einen Kommentar

Wie ich hier schrieb, habe ich meine ursprünglich in MS Access implementierte Pomodoro-Anwendung in Java neu geschrieben.

Inzwischen habe ich ein paar neue Features eingebaut.

Tagesplanung

  • ich habe jetzt Buttons mit Icons eingebaut
  • ein Fortschrittsbalken zeigt jetzt grafisch den “Abarbeitungsgrad” der für den Tag geplanten Aufgaben an
  • Aufgaben lassen sich nun markieren, z. B. als Most Important Tasks für den Tag
  • einige Felder lassen sich jetzt in der Tabelle editieren (die Felder, die nicht vom Programm verwaltet werden, also z. B. nicht die Anzahl der Unterbrechungen, denn diese wird nicht geplant)
  • Aufgaben können jetzt im Archiv noch nachträglich bearbeitet werden, incl. Neuberechnung der “historischen” Tageswerte
  • im Archiv wird nun auch die Serviceklasse mit angezeigt und auf Wunsch auch die Aufgaben in Abhängigkeit davon farblich unterlegt:

Archivansicht

Um mir die bisherige unkomfortable Konfiguration des Programms über eine XML-Datei zu ersparen, habe ich auch noch einen Konfigurationsdialog programmiert:

Konfigurationsdialog

Last, but not least gibt es nun auch eine Möglichkeit, wiederkehrende Aufgaben zu verwalten:

Wiederkehrende Aufgabe

Zur Zeit gibt es nur tägliche und wöchentliche Termine, monatliche möchte ich auch noch ergänzen.

Die Anwendung ist jetzt soweit gereift, dass ich sie sehr gut für meine Bedürfnisse einsetzen kann. Durch die kleinen und grösseren Problemen, auf die ich bei der Programmierung stieß, habe ich wieder eine Menge über Java gelernt und ich freue mich, dass mir die Arbeit an dem Programm durch das bereits erworbene Java-Wissen immer leichter fällt.

Pomodoro-Anwendung in Java neu geschrieben

1 Kommentar

Ich hatte mir ja eine eigene Pomodoro-Anwendung geschrieben, und zwar in MS Access, um rasch ein einsatzfähiges System zu haben.

In den letzten Tagen habe ich die Anwendung in Java neu implementiert, um plattformunabhängig zu sein, sprich: sie auch auf Mac OS X, FreeBSD und Linux nutzen zu können.

Ich habe dabei die Bedienung und die Datenbankstrukturen aus der Access-Anwendung  übernommen, mit der Abweichung, dass ich das in  Access noch separat vorhandene “Timer”-Fenster in das Fenster für die Tagesplanung integriert habe.

Die Daten werden in einer lokalen HSQLDB-Datenbank gehalten. Die grafischen Auswertungen habe ich über die Bibliothek JFreeChart realisiert. Hier war ich überrascht, wie schnell ich anhand von im Web gefundenen Code-Beispielen eigene, gut aussehende Grafiken erstellen konnte.

Hier sind einige Screenshots der Java-Anwendung, die hier gerade unter Mac OS X läuft:

laufendes Pomdoro

In der Tabelle sind alle Aufgaben für den Tag aufgelistet. Jede Aufgabe hat eine Aufgabennummer, die zur eindeutigen Identifikation eine Aufgabe dient und fortlaufend vom Programm vergeben wird. Wenn in der Spalte ungeplant ein Haken gesetzt ist, ist die entsprechende Aufgabe nicht morgens geplant worden, sondern überraschend während des Tages neu aufgekommen.  Für jede Aufgabe wird natürlich ihre Beschreibung angezeigt, sowie die Anzahl der geplanten und tatsächlich aufgewendeten Pomodori und die Zahl der Unterbrechungen. Erledigte Aufgaben werden entsprechend gekennzeichnet.

Über die Schaltfläche Neue Aufgabe lässt sich eine neue Aufgabe anlegen, über die Schaltfläche Aufgabe erledigt die aktuell markierte Aufgabe als erledigt markieren (zukünftig soll sich das durch einen Klick direkt in das Erledigt-Kästchen der entsprechenden Aufgabe bewerkstelligen lassen). Teilweise habe ich keine “echten” Buttons verwendet, sondern eingerahmte “Label”, da die Knöpfe sonst, je nach Betriebssystem, von Swing ziemlich unschön angeordnet werden.

Im Bereich darunter ist der “Timer” untergebracht. Über den Button “>” kann man einen Pomodoro für die markierte Aufgabe starten, mit “X” abbrechen. Mit dem Button “||” lässt sich eine Aufgabe kurzzeitig (z. B. 30 Sekunden) unterbrechen. Bei einer Unterbrechung beginnt ein Unterbrechungs-Countdown. Klickt man nicht während des Unterbrechungs-Countdowns noch einmal auf den Button “||”, wird der Pomodoro nach Ablauf des Countdowns als abgebrochen gewertet.  Über diesen drei Buttons wird die Restlaufzeit des aktuellen Pomodoro/der Pause/der kurzen Unterbrechung angezeigt, die auch noch einmal durch einen rückwärts laufenden Fortschrittsbalken visualisiert wird. Neben der Restlaufzeit wird die gerade bearbeitete Aufgabe angezeigt.

Per Doppelklick auf eine Aufgabe lässt sich diese bearbeiten. Der Dialog dazu sieht so aus:

Bearbeiten einer Aufgabe

Bearbeiten einer Aufgabe

Hier hat man auch die Möglichkeit, erfasste Ist-Werte (Anzahl geleisteter Pomodori, Unterbrechungen) noch zu korrigieren, falls man sich in der Tagesplanung “verklickt” hat. Für jede Aufgabe kann man auch aus eine vordefinierte Serviceklasse (Class of Service, CoS) auswählen, um später grob zu sehen, wofür man seine Arbeitszeit aufgewendet hat. Auch das Löschen einer Aufgabe ist über diesen Dialog möglich.

 

So sieht das Aufgabenarchiv aus:

Aufgabenarchiv

Im Aufgabenarchiv werden alle Aufgaben angezeigt, auch deren Erledigungsdatum. Das kann manchmal hilfreich sein, wenn man sich nicht mehr erinnert, ob und wann man etwas gemacht hat. Über den Anzeigefilter kann man die Trefferliste entsprechend einschränken.

 

Die Statistik über die geleisteten Pomodori und die Unterbrechungen sieht so aus:

Statistik geleistete Pomodori und Unterbrechungen

Statistik geleistete Pomodori und Unterbrechungen

Das ist die Darstellung der geplanten und ungeplanten Aufgaben:

Statistik geplante und ungeplante Aufgaben

Statistik geplante und ungeplante Aufgaben

Und so wird die Verteilung der geleisteten Pomodori auf die Serviceklassen präsentiert:

Verteilung nach Serviceklassen (CoS)

Verteilung nach Serviceklassen (CoS)

 

Als nächste Änderungen habe ich mir die Implementierung wiederkehrender Aufgaben vorgenommen, so dass die Aufgabenliste automatisch mit “Standard-Aufgaben” gefüllt wird.

 

 

 

 

NetBeans IDE: Schließen des Hauptfensters bei per GUI-Builder erstellen Swing-Anwendungen abfangen

Hinterlasse einen Kommentar

Ich habe angefangen, ein wenig in Java zu Programmieren, ohne eine systematische Einführung in diese Programmiersprache und die zugehörigen Bibliotheken, wie z. B. Swing, durchgearbeitet zu haben.

Ich stoße daher immer auf für den erfahrenen Java-Programmierer lächerliche Probleme, die mich oft viel Zeit der Recherche und des Probierens kosten. Damit andere Anfänger diese Probleme schneller lösen können, werde ich hier im Blog das ein oder andere Problem mit der Lösung veröffentlichen. Da ich ein Java-Anfänger bin, sind meine Lösungen wahrscheinlich oftmals “suboptimal”, aber sie haben für mich mein Problem gelöst. Den Auftakt bildet ein Problem bei per NetBeans-GUI-Bilder erstellten Anwendungen.

Bei Anwendungen, deren Benutzeroberfläche mit dem NetBeans-GUI-Builder Matisse erstellt wurden, kann man das Schließen des Hauptfensters auf folgende Weise abfangen:

In der entsprechenden AppView-Klasse fügt man einen Window-Listener (hier mit dem Namen Closer) hinzu:

public meineAnwendungView(SingleFrameApplication app) {
super(app);
initComponents();
getFrame().addWindowListener(new Closer());
(...)

 

 

In der gleichen Klasse schreibt man dann den Code für den Listener , aus dem man dann für das saubere Beenden seines Programms sorgen kann:

public void windowClosing(WindowEvent e) {
Programmlogik.programmende();  // hier den entsprechenden eigenen Aufruf eintragen

}

 

In “normalen” per Matisse erstellten GUI-Fenstern (JFrame-Formulare) lässt sich das Schließen abfangen, indem man ein Methode formWindowClosing(java.awt.event.WindowEvent evt) erstellt:

private void formWindowClosing(java.awt.event.WindowEvent evt) {
Programmlogik.programmende();  // hier den entsprechenden eigenen Aufruf eintragen


}

 

 

 

 

 

NetBeans findet manchmal Klassen nicht

Hinterlasse einen Kommentar

Ich bin heute auf ein seltsames Phänomen gestossen: manchmal findet NetBeans nicht alle Framework-Jars.

Als ich meine kleine Journal-Applikation heute bauen wollte, sagte mir NetBeans: org.jdesktop.application does not exist . Das Problem hatten auch schon Andere.
Mit Beenden und Neustarten von NetBeans habe ich das Problem “gelöst”. Im oben genannten Thread ist noch jemand zu folgender “Lösung” gekommen:
I simply removed the Swing Application Framework Libraries from the Project’s Libraries folder and the problem went away. I am confused because I would think that they need to be there. Also, I never added them in. I created my project as the “Netbeans default” Desktop Application and they were there from the start. Anyway, my problem is solved although I don’t understand why.”
Ich habe auch versucht, mir mit dem “Jar Bundler” von Apple eine Mac-like Application zu bauen, und es hat geklappt.

Einarbeitung in Java mit NetBeans

Hinterlasse einen Kommentar

Um mir in Zukunft kleine Anwendungen erstellen zu können, die nicht auf Access angewiesen sind, habe mich mal wieder etwas mit Java beschäftigt und nutze als IDE NetBeans, zur Zeit in der Version 6.7.1.
Auf meinem MacMini CoreDuo bin ich da mit 1 GB RAM etwas untermotorisiert. Ich habe mir noch ein weiteres GB bestellt. Mal gespannt, ob der Einbau entspannt von statten geht…
Die Einarbeitung in Java ist nicht einfach, ich halte mich oft sehr lange an banalen Dingen auf, z. B. das Tagesdatum im Format TT.MM.JJJJ zu bekommen oder eine Datei in einem RTF-Editor innerhalb von Java zu öffnen und zu speichern.
Die Hinweise im Web sind teilweise etwas verwirrend, da es oftmals verschiedene Wege gibt, ein Ziel zu erreichen. Der Knackpunkt ist sicherlich die fehlende Vertrautheit mit den Java-Libraries, insbesondere mit Swing.
Bedauerlicherweise kann ich mich “unter der Woche” nicht intensiv genug mit Java auseinander setzen, da ich an einem für Java-Kenner vermutlich völlig banalen Problem oft Stunden sitze und ja auch “das echte Leben” seinen zeitlichen Tribut fordert. Nichtsdestotrotz habe ich die Absicht, mich weiter mit Java zu beschäftigen.
Als “Aufhänger” habe ich begonnen, eine kleine GUI-Anwendung zu schreiben, in der ich ein tägliches Journal auf der Arbeit führen möchte.
Die Sachverhalte sind leider oftmals schnell wieder aus meinem Gedächtnis entschwunden, so dass ich mir erhoffe, durch die Dokumentation der relevanten Ereignisse/Tätigkeiten den Tag über bei Bedarf noch Sachverhalte, die in der Vergangenheit liegen, klären/auffrischen zu können. Es handelt sich quasi um ein ein Analogon zum “Trusted System” in GTD, nur für die Arbeits-/Informationshistorie. Ich bin gespannt, ob und wie ich das Journal in der täglichen Arbeit nutzen werde.
Zur Zeit kann meine Anwendung noch nicht viel. Sie erlaubt es nur, für jeden Tag in einem festgelegten Verzeichnis eine RTF-Datei anzulegen, zu editieren, und sich jede der Dateien anzusehen. Ich möchte die Journal-Einträge zukünftig mit Tags versehen. Dabei soll es zum einen möglich sein, Tags manuell zu vergeben, andererseits will ich mir aber auch eine Programmfunktion erstellen, die ein “Auto-Tagging” durchführt, also Journal-Einträge (aka RTF-Dateien) nach Schlüsselworten durchsucht und dann die entsprechenden Tags für diesen Eintrag vergibt. Ich habe auch die Idee, Namen in den Dateien automatisch zu taggen (alles, was hinter Fr./Hr., Frau/Herr, Dr. steht). Nach den Tags soll man dann suchen können. Die Krönung wäre dann natürlich eine Volltext-Suche/Indizierung, hier gibt es ja meines Wissens nach schon Java-Libraries für.
Wichtig ist vor allem, dass das Journal sich im täglichen Betrieb leicht bedienen lässt und sich “leicht” anfühlt, also den Workflow nicht behindert.
Das Programmfenster:

Die Bearbeitung von Journaleinträgen:



Java

Hinterlasse einen Kommentar

In den letzten Tagen habe ich mich mit Java beschäftigt, weil ich ein paar kleine Anwendungen darin schreiben will.

Ich hatte schon mal vor ein paar Jahren etwas mit Java auf meinem Apple iBook herum gespielt, doch jetzt sollte es etwas “ernsthafter” sein. Ich habe zur Einarbeitung das OpenBook “Java ist auch eine Insel” von Christian Ullenboom benutzt. Da ich Anwendungen mit grafischer Benutzeroberfläche erstellen möchte, lag darauf mein Fokus. Es hat mich viele Stunden gekostet, zu verstehen, wie man eine Anwendung so schreibt, dass die eigentliche “Arbeitsroutine”, die das Programm verrichtet, nicht die GUI blockiert, wenn sie darüber gestartet wird. Letztlich habe ich es aber hinbekommen, nicht zuletzt dank intensiver Recherche im Netz und dem Durcharbeiten einiger Tutorials von Sun. Im konkreten Beispiel habe ich eine MS-Access-Datenbank ausgewertet und dann passend zum Bearbeitungsstand einen Fortschrittsbalken upgedatet.

In diesem Zusammenhang habe ich mir auch die Eclipse-IDE installiert. Sie hat mir sehr gut gefallen und mich als ziemlicher Anfänger in Java auch sehr gut unterstützt (Vorschläge, um Probleme im Quellcode zu beheben). Da die manuelle Erstellung einer GUI aber ziemlich nervtötend ist, wenn sie annehmbar ausschauen soll, verlangte es mich nach einem GUI-Builder, in dem ich die Fenster und Boxen zusammenklicken kann. Leider habe ich da den offenbar einzig für Eclipse verfügbaren freien Editor VEP nicht ans Laufen bekommen, so dass ich mir die NetBeans-IDE installiert habe. Diese weist einen GUI-Builder auf, der mir sehr gut gefällt. Als IDE gefällt mir zwar Eclipse besser, aber der GUI-Builder ist für mich zur Zeit der ausschlaggebende Faktor. Es gibt zwar eine Portierung des NetBeans-GUI-Builders für Eclipse, diese ist aber nicht frei.

Da ich eine MS-Access-Datenbank ansprechen wollte, habe ich mir zuerst Eclipse unter Windows Vista installiert, um zu sehen, ob ich das mit der Datenbank in Java überhaupt hinbekomme. Ich habe es geschafft, und es war sogar viel einfacher, als ich erwartet habe. Man kann die Datenbanken sogar mit SQL-Kommandos ansprechen. Etwas unschön fand ich nur, dass ich nicht die Felder eine Tabelle mit Namen ansprechen konnte, sondern nur über einen numerischen Index, der sich freilich danach richtete, welcher Felder ich in welcher Reihenfolge im SELECT-Statement angegeben hatte.

Da ich ja FreeBSD und Linux gegenüber Windows bevorzuge , habe ich mir dann die Ecpilse-IDE auf der gleichen Maschine (mein Dell Studio Hybrid-Desktop) unter KUbuntu-Linux installiert – und war sehr überrascht! Unter KUbuntu hat sich Eclipse deutlich zäher angefühlt, da machte das Arbeiten keinen Spaß mit. Ich inbesondere auch deshalb so überrascht, weil ich diesen Test gelesen hatte. Ich habe dann Eclipse auf meinem schwächer motorisierten Thinkpad R60-Notebook unter FreeBSD installiert, und da lief es deutlich performanter als auf dem stärkeren Dell-Desktop. Das spricht für FreeBSD und gegen KUbuntu. Dummerweise bootet mein Dell-Desktop aber nicht mit FreeBSD, so dass ich dort entweder mit langsamer IDE unter KUbuntu oder mit schnellerer IDE und Vista arbeiten muss (eine andere Linux-Distribution möchte ich mir nicht installieren). Einstweilen habe ich mich für Letzteres entschieden. Als IDE nutze ich aber zur Zeit NetBeans.LinkLink

Follow

Bekomme jeden neuen Artikel in deinen Posteingang.