How developers feel

via http://www.lordofthejars.com/2013/02/the-reality-of-developers-life.html (see more at http://devopsreactions.tumblr.com/)

 

When you upload something to production environment:

When you find a problem solution without searching in Google:

When you close your IDE without saving the code:
 
When you try to fix a bug at 3AM:
 
When your regular expression returns what you expect it:
 
When my boss reported me that the module I have been working will never be used:
 
When I show to my boss that I have fixed a bug:
 
When I upload a code without tests and it works as expected:
 
When marketing folks show to developers what they have sold:
 
The first time you apply a CSS to a web page:
 
When the sysadmin gives you root access:
 
When you run your script the first time after several hours working on it:
 
When you go on weekend and everyone else are at office trying to fix all issues:
 
When your boss finds someone to fix a critical bug:
 
When you receive an extra paid if project ends before deadline:
When something that had worked on Friday and on Monday did not work:
 
When you develop without specifications:
 
When boss tells me that “tests are for those who doesn’t know how to code”:
 
When you update a database script and you note that you have deleted whole database:
 

 

Ö1 Beitrag: Radiokolleg – Software in Frauenhand

Pionierinnen der Informatik (1-4). Gestaltung: Anna Masoner

Anna hat für Ö1 eine vierteilige Beitragsreihe zum Thema Frauen in der Informatik erstellt und unter anderem mich dafür interviewt.

Hier der gesamte Beitrag:

(ich komme etwa ab Minute 46)

Der Teasertext:

Alan Turing, John von Neumann und Konrad Zuse: die Erfindung des Computers, wird meist als eine Geschichte großer Männer dargestellt. Dass auch Frauen an der Entwicklung der ersten speicherprogrammierbaren Rechenmaschinen beteiligt waren, wird gern übersehen. Eine Ausnahme bildet die Englische Adelige Ada Lovelace. Im 19. Jahrhundert arbeitet sie gemeinsam mit dem Mathematiker Charles Babbage an einer mechanischen Rechenmaschine.

Sie wird deshalb gerne als erste Programmiererin bezeichnet, bevor es überhaupt den Computer gab. In den 1940er Jahren befand sich die Entwicklung der ersten Programmiersprachen und der Software für die riesigen Rechenmaschinen häufig in Frauenhand. Das Programmieren galt damals als Nebensache, eine Tätigkeit in der mathematisch interessierte Frauen brillieren konnten. Mit zunehmender auch wirtschaftlicher Bedeutung der Computerprogrammierung, entwickelte sich das Coden jedoch zur gut bezahlten Männerarbeit.

Die Tradition setzt sich bis heute fort. An Österreichs technischen Universitäten und Fachhochschulen studieren kaum 20 Prozent Frauen Informatik. Der von Zahlen besessene Hacker und technikaffine Nerd ist in unserer Gesellschaft beinahe per Definition ein Mann. Wieso entscheiden sich so wenig Frauen für einen technischen Beruf? Welche Konsequenzen hat der Gender Gap in der Informatik? Und wie lässt sich der Frauenanteil erhöhen?

APN bob

Internetzugang:
Name: bob.data
APN: bob.at
Proxy:
Port:
Nutzername: data@bob.at
Passwort: ppp
Server: start.bob.at
MMSC:
MMS-Proxy:
MMS-Port:
MCC: 232
MNC: 11
APN-Typ: default
Authentifizierungstyp: normal od. pap

.

MMS Empfang:
Name: data.bob MMS
APN: mms.bob.at
Proxy:
Port:
Nutzername: data@bob.at
Passwort: ppp
Server:
MMSC: http://mmsc.bob.at
MMS-Proxy: 194.48.124.7
MMS-Port: 8001
MMS-Protokoll: WAP 2.0
MCC: 232
MNC: 11
Authentifizierungstyp: pap
APN-Typ: mms

siehe auch http://konfigurator.bob.at/otauserbob/web/user/index oder  http://konfigurator.bob.at/otauserbob/templates/user/bob/manuals/Installationsanleitung.pdf

Anmerkdung: Stellt man beim Internetempfang den APN-Typ nicht auf “default”, funktioniert der MMS Dienst nicht korrekt

Top 20 lines of a Klingon software developer

Top 20 lines of a Klingon software developer

  1. A TRUE Klingon warrior does not comment his code!
  2. This machine is a piece of GAGH! I need some quad core processors if I am to do battle with this code!
  3. I have challenged the entire ISO-9000 review team to a round of Bat-Leth practice on the holodeck. They will not concern us again.
  4. Behold the keyboard of Kalis! The greatest Klingon code warrior that ever lived!
  5. Defensive programming? Never! Klingon programs are always offensive. Yes, offensive programming is what we do best.
  6. Klingon programs don’t do accountancy. For that, you need a Ferengi programmer.
  7. Klingon function calls do not have ‘parameters’ – they have ‘arguments’ – and they ALWAYS WIN THEM.
  8. This code is a piece of crap! You have no honour!
  9. By filing this bug you have questioned my family honour. Prepare to die!
  10. I am without honour…my children are without honour… My father coded at the Battle of Kittimer…and…and…he… HE ALLOWED HIMSELF TO BE MICROMANAGED. <Shudder>
  11. You question the worthiness of my code?! I should kill you where you stand!
  12. Microsoft Cooperation is actually a secret Ferengi-Klingon alliance designed to cripple the Federation. The Ferengi are doing the marketing and the Klingons are writing the code.
  13. Specs are for the weak and timid!
  14. Klingons do not believe in indentation – except perhaps in the skulls of their project managers.
  15. Klingon search engines don’t just search the internet – they hunt!
  16. Klingons do not “release” software. Klingon software escapes, leaving a bloody trail of design engineers and quality assurance testers in its wake.
  17. Debugging? Klingons do not debug. Bugs are good for building up character in the user!
  18. As for project orders (requirements, goals): Klingons do not deliver; we EXECUTE. For the glory of the empire!
  19. Perhaps it IS a good day to die! I say we ship it!
  20. Qapla [also Kapla from the Klingon language: menaing “success” (or sometimes “absence of failure”)]

Old german version

Neuen Rechner aufsetzen

Meine Checkliste:

  • OS + Updates + fehlende Treiber
  • Daten-Partition erstellen
  • Festplattenverschlüsselung TrueCrypt
  • Virenschutz/Firewall
  • Internetprogramme
    • Firefox/Chrome + firebug +laafi amazon extension
    • Skype
    • Thunderbird + Lightning, Google Contacts, Google Kalender, Smiley Fixer, English Dictionary, Deutsches Wörterbuch, Provider for Google Calendar
    • Vuze
    • Cisco VPN client / OpenVPN client
  • Entwicklungsprogramme:
    • Java SDK, maven, Tomcat
    • IntelliJ
    • Sublime
    • putty
    • WinSCP
    • cygwin / PowerShell
  • anderes
    • Adobe PDF Reader
    • Photoshop
    • Open Office
    • VLC
    • WinAmp
    • WinRAR

Thread dumps, memory dump, and stack traces

1. Getting a Stack Trace

jstack -l [pid]

jstack is for java processes

2. Getting a Thread Dump

kill -3 [pid]

on unix

3. Surviving a OutOfMemoryException in Production

Sometimes you see an “OutOfMemoryException” in production and you need a memory dump of this process now to analyze the memory usage

jmap -J-d64 -dump:live,format=b,file=solr-memory-dump.bin [pid]
jmap generates a memory dump file solr-memory-dump.bin that can be used for further analysis

jhat -J-d64 -J-Xmx4096m solr-memory-dump.bin
jhat opens HTTP server on port ‘7000’

Sonar: PicoLifecycleException and NonUniqueResultException during build

Still with sonar 2.14 the old problem occurs, that with parallel runs/analysis on the same project (with different build versions?) a wrong state is created in the DB.

For postgres the statement for analysis of the problem is:

select project_id, count(project_id) from snapshots
where islast is true
group by project_id
having count(islast) > 1

This statement fixes the problem:

update snapshots old_snap
set islast=false
where islast=true and exists(select * from snapshots new_snap where new_snap.created_at > old_snap.created_at and new_snap.project_id = old_snap.project_id and new_snap.islast=true)

 

see also SONAR-2329 NonUniqueResultException occurs when analyzing both a maven module and its parent

and Sonar 2.11 Embedded error: PicoLifecycleException

 

Stacktrace for this error is (Jenkins Sonar Plugin)

[INFO] [14:02:05.667] Initializing Hibernate
[INFO] ------------------------------------------------------------------------
[ERROR] BUILD ERROR
[INFO] ------------------------------------------------------------------------
[INFO] Can not execute Sonar

Embedded error: PicoLifecycleException: method 'public void org.sonar.batch.ProjectTree.start() throws java.io.IOException', instance 'org.sonar.batch.ProjectTree@74f9a042, javax.persistence.NonUniqueResultException: Expected single result, but got : [Snapshot[resourceId=3818,buildDate=2012-09-13 13:43:58.638,createdAt=2012-09-13 13:43:58.545,version=WH-3.09-SNAPSHOT,last=true,status=P,purgeStatus=1,scope=PRJ,path=477617.,depth=1,qualifier=BRC,rootId=477617,parentId=477617,rootProjectId=1,period1Mode=previous_analysis,period2Mode=days,period3Mode=days,period4Mode=<null>,period5Mode=<null>,period1Param=2012-09-13,period2Param=5,period3Param=30,period4Param=<null>,period5Param=<null>,period1Date=2012-09-13 13:43:55.266,period2Date=2012-09-08 13:43:58.545,period3Date=2012-08-14 13:43:58.545,period4Date=<null>,period5Date=<null>,id=477626], Snapshot[resourceId=3818,buildDate=2012-09-13 13:49:13.894,createdAt=2012-09-13 13:49:13.737,version=WH-3.09-SNAPSHOT,last=true,status=P,purgeStatus=<null>,scope=PRJ,path=,depth=0,qualifier=TRK,rootId=<null>,parentId=<null>,rootProjectId=3818,period1Mode=previous_analysis,period2Mode=days,period3Mode=days,period4Mode=<null>,period5Mode=<null>,period1Param=2012-09-13,period2Param=5,period3Param=30,period4Param=<null>,period5Param=<null>,period1Date=2012-09-13 13:43:55.266,period2Date=2012-09-08 13:49:13.737,period3Date=2012-08-14 13:49:13.737,period4Date=<null>,period5Date=<null>,id=480765]]
[INFO] ------------------------------------------------------------------------
[INFO] Trace
org.apache.maven.lifecycle.LifecycleExecutionException: Can not execute Sonar
	at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:719)
	at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeStandaloneGoal(DefaultLifecycleExecutor.java:569)
	at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoal(DefaultLifecycleExecutor.java:539)
	at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalAndHandleFailures(DefaultLifecycleExecutor.java:387)
	at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeTaskSegments(DefaultLifecycleExecutor.java:284)
	at org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLifecycleExecutor.java:180)
	at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:328)
	at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:138)
	at org.apache.maven.cli.MavenCli.main(MavenCli.java:362)
	at org.apache.maven.cli.compat.CompatibleMain.main(CompatibleMain.java:60)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at org.codehaus.classworlds.Launcher.launchEnhanced(Launcher.java:315)
	at org.codehaus.classworlds.Launcher.launch(Launcher.java:255)
	at org.codehaus.classworlds.Launcher.mainWithExitCode(Launcher.java:430)
	at org.codehaus.classworlds.Launcher.main(Launcher.java:375)
Caused by: org.apache.maven.plugin.MojoExecutionException: Can not execute Sonar
	at org.codehaus.mojo.sonar.Bootstraper.executeMojo(Bootstraper.java:103)
	at org.codehaus.mojo.sonar.Bootstraper.start(Bootstraper.java:79)
	at org.codehaus.mojo.sonar.SonarMojo.execute(SonarMojo.java:88)
	at org.apache.maven.plugin.DefaultPluginManager.executeMojo(DefaultPluginManager.java:490)
	at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:694)
	... 17 more
Caused by: org.picocontainer.PicoLifecycleException: PicoLifecycleException: method 'public void org.sonar.batch.ProjectTree.start() throws java.io.IOException', instance 'org.sonar.batch.ProjectTree@74f9a042, javax.persistence.NonUniqueResultException: Expected single result, but got : [Snapshot[resourceId=3818,buildDate=2012-09-13 13:43:58.638,createdAt=2012-09-13 13:43:58.545,version=WH-3.09-SNAPSHOT,last=true,status=P,purgeStatus=1,scope=PRJ,path=477617.,depth=1,qualifier=BRC,rootId=477617,parentId=477617,rootProjectId=1,period1Mode=previous_analysis,period2Mode=days,period3Mode=days,period4Mode=<null>,period5Mode=<null>,period1Param=2012-09-13,period2Param=5,period3Param=30,period4Param=<null>,period5Param=<null>,period1Date=2012-09-13 13:43:55.266,period2Date=2012-09-08 13:43:58.545,period3Date=2012-08-14 13:43:58.545,period4Date=<null>,period5Date=<null>,id=477626], Snapshot[resourceId=3818,buildDate=2012-09-13 13:49:13.894,createdAt=2012-09-13 13:49:13.737,version=WH-3.09-SNAPSHOT,last=true,status=P,purgeStatus=<null>,scope=PRJ,path=,depth=0,qualifier=TRK,rootId=<null>,parentId=<null>,rootProjectId=3818,period1Mode=previous_analysis,period2Mode=days,period3Mode=days,period4Mode=<null>,period5Mode=<null>,period1Param=2012-09-13,period2Param=5,period3Param=30,period4Param=<null>,period5Param=<null>,period1Date=2012-09-13 13:43:55.266,period2Date=2012-09-08 13:49:13.737,period3Date=2012-08-14 13:49:13.737,period4Date=<null>,period5Date=<null>,id=480765]]
	at org.picocontainer.monitors.NullComponentMonitor.lifecycleInvocationFailed(NullComponentMonitor.java:77)
	at org.picocontainer.lifecycle.ReflectionLifecycleStrategy.monitorAndThrowReflectionLifecycleException(ReflectionLifecycleStrategy.java:132)
	at org.picocontainer.lifecycle.ReflectionLifecycleStrategy.invokeMethod(ReflectionLifecycleStrategy.java:115)
	at org.picocontainer.lifecycle.ReflectionLifecycleStrategy.start(ReflectionLifecycleStrategy.java:89)
	at org.picocontainer.injectors.AbstractInjectionFactory$LifecycleAdapter.start(AbstractInjectionFactory.java:84)
	at org.picocontainer.behaviors.AbstractBehavior.start(AbstractBehavior.java:169)
	at org.picocontainer.behaviors.Stored$RealComponentLifecycle.start(Stored.java:132)
	at org.picocontainer.behaviors.Stored.start(Stored.java:110)
	at org.picocontainer.DefaultPicoContainer.potentiallyStartAdapter(DefaultPicoContainer.java:1009)
	at org.picocontainer.DefaultPicoContainer.startAdapters(DefaultPicoContainer.java:1002)
	at org.picocontainer.DefaultPicoContainer.start(DefaultPicoContainer.java:760)
	at org.sonar.api.platform.ComponentContainer.startComponents(ComponentContainer.java:70)
	at org.sonar.batch.bootstrap.Module.start(Module.java:82)
	at org.sonar.batch.bootstrap.BootstrapModule.doStart(BootstrapModule.java:102)
	at org.sonar.batch.bootstrap.Module.start(Module.java:83)
	at org.sonar.batch.bootstrapper.Batch.startBatch(Batch.java:71)
	at org.sonar.batch.bootstrapper.Batch.execute(Batch.java:58)
	at org.sonar.maven.SonarMojo.execute(SonarMojo.java:151)
	at org.apache.maven.plugin.DefaultPluginManager.executeMojo(DefaultPluginManager.java:490)
	at org.codehaus.mojo.sonar.Bootstraper.executeMojo(Bootstraper.java:98)
	... 21 more
Caused by: javax.persistence.NonUniqueResultException: Expected single result, but got : [Snapshot[resourceId=3818,buildDate=2012-09-13 13:43:58.638,createdAt=2012-09-13 13:43:58.545,version=WH-3.09-SNAPSHOT,last=true,status=P,purgeStatus=1,scope=PRJ,path=477617.,depth=1,qualifier=BRC,rootId=477617,parentId=477617,rootProjectId=1,period1Mode=previous_analysis,period2Mode=days,period3Mode=days,period4Mode=<null>,period5Mode=<null>,period1Param=2012-09-13,period2Param=5,period3Param=30,period4Param=<null>,period5Param=<null>,period1Date=2012-09-13 13:43:55.266,period2Date=2012-09-08 13:43:58.545,period3Date=2012-08-14 13:43:58.545,period4Date=<null>,period5Date=<null>,id=477626], Snapshot[resourceId=3818,buildDate=2012-09-13 13:49:13.894,createdAt=2012-09-13 13:49:13.737,version=WH-3.09-SNAPSHOT,last=true,status=P,purgeStatus=<null>,scope=PRJ,path=,depth=0,qualifier=TRK,rootId=<null>,parentId=<null>,rootProjectId=3818,period1Mode=previous_analysis,period2Mode=days,period3Mode=days,period4Mode=<null>,period5Mode=<null>,period1Param=2012-09-13,period2Param=5,period3Param=30,period4Param=<null>,period5Param=<null>,period1Date=2012-09-13 13:43:55.266,period2Date=2012-09-08 13:49:13.737,period3Date=2012-08-14 13:49:13.737,period4Date=<null>,period5Date=<null>,id=480765]]
	at org.sonar.jpa.session.JpaDatabaseSession.getSingleResult(JpaDatabaseSession.java:195)
	at org.sonar.jpa.session.JpaDatabaseSession.getSingleResult(JpaDatabaseSession.java:213)
	at org.sonar.batch.ProjectConfigurator.isLatestAnalysis(ProjectConfigurator.java:84)
	at org.sonar.batch.ProjectConfigurator.configure(ProjectConfigurator.java:71)
	at org.sonar.batch.ProjectTree.doStart(ProjectTree.java:89)
	at org.sonar.batch.ProjectTree.start(ProjectTree.java:66)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at org.picocontainer.lifecycle.ReflectionLifecycleStrategy.invokeMethod(ReflectionLifecycleStrategy.java:110)
	... 38 more
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 5 seconds
[INFO] Finished at: Thu Sep 13 14:02:07 CEST 2012
[INFO] Final Memory: 44M/141M
[INFO] ------------------------------------------------------------------------
Sonar analysis completed: FAILURE
Build step 'Sonar' changed build result to FAILURE
Build step 'Sonar' marked build as failure
Finished: FAILURE

Buchbesprechung: Agile Projekte mit Scrum, XP, Kanban im Unternehmen durchführen – Erfahrungsberichte aus der Praxis

Meine letzte Buchbesprechung für die Wirtschaftsinformatik (hier alle meine Rezensionen):

Agile Projekte mit Scrum, XP, Kanban im Unternehmen durchführen – Erfahrungsberichte aus der Praxis

Agile Projekte mit Scrum, XP, Kanban im Unternehmen durchführen – Erfahrungsberichte aus der Praxis
von Wolf, H. (Hrsg.)

dpunkt.verlag
ISBN 978-3898647526

34.90 €

Rezensent: Barbara Ondrisek, (Wien)

Das Buch sammelt einige Praxisberichte aus verschiedenen agilen Projekten. Dabei werden zwölf Beiträge verschiedener Autoren präsentiert, bei denen es um praktische Probleme und Lösungsideen in agilen Projekten geht. Es wird hierbei etwa auch beschrieben, welche Adaptionen der agilen Kernprozesse notwendig waren, um erfolgreich zu sein.

Vorrangig geht es bei den Beiträgen um die Einführung den Prozessmodells Scrum in diversen Organisationen. Es wird ebenfalls die Vorstellung verschiedener konkreter Entwicklungspraktiken beschrieben, wie etwa die Einführung von eXtreme Programming (XP). Der für mich interessanteste Beitrag war der über die Einführung von Scrum in einem traditionellen Fixpreisprojekt. Ebenfalls lesenswert ist die Vorstellung von Kanban im Operationsumfeld, wie auch die Beschreibung der Probleme von agilen Methoden bei Startups.

Die einzelnen Beiträge sind unabhängig voneinander und können beliebig ohne vorgegebene Reihenfolge gelesen werden. Man kann etwa einzelne Beiträge als Inspiration lesen, wenn man vor ähnlichen Schwierigkeiten im eigenen Projekt steht. Anders als ein Methodenbuch werden keine theoretischen Grundlagen erklärt, sondern eine Reihe von Erfahrungsberichten mit Vor- und Nachteilen der Prozesse beschrieben.

.
Der Artikel direkt bei wirtschaftsinformatik.de