2012 in review

Die WordPress.com Statistikelfen fertigten einen Jahresbericht dieses Blogs für das Jahr 2012 an.

Hier ist eine Zusammenfassung:

4,329 films were submitted to the 2012 Cannes Film Festival. This blog had 35.000 views in 2012. If each view were a film, this blog would power 8 Film Festivals

Klicke hier um den vollständigen Bericht zu sehen.

Ö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?

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

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

Social Media Überfluss

Kurz hab ich Google+ ausprobiert, aber dann gleich wieder gelöscht. Meiner Ansicht ist noch ein Sociales Netzwerk nicht die Lösung und Google+ hat mich einfach nicht begeistert. Dafür hab ich einen soup.io Account angelegt: electrobabe.soup.io

Wir leben sowieso in einer Zeit des Überflusses an Social Media. Ich hab mein Blog, twitter Profil, facebook Profil selbstverständlich, meinen FlickR Account, YouTube AccountXing und LikedIn auch, foursquare Account, Skype account, google talk, Tupalo Account, Pool Party, und unzählige andere wie diaspora, qype, delicious und alle die, die ich nicht mehr benutze. Ich frage mich auch, welche dieser SM Tools ich in fünf Jahren noch benutzen werde.

Happy birthday papierwahl.at!

Vor zwei Jahren habe ich zusammen mit Peter Purgathofer papierwahl.at als erste und bis jetzt einzige E-Voting-Gegenbewegung in Österreich gegründet. Seitdem hat sich einiges getan. Einige Autoren sind dazu gekommen, andere haben sich verabschiedet. Hier mit möchte ich mich bei allen Beteiligten und bei allen Unterstützern bedanken!

Wir haben die letzten zwei Jahre viel politisches Hickhack in Österreich zum Thema E-Voting erlebt, den Aufstieg und Fall von Ex-Minister Hahn, der um jeden Preis E-Voting bei den ÖH-Wahlen umsetzen wollte. E-Voting hat in Österreich wie auch im benachbarten Deutschland (Stichwort Wahlcomputer-Einspruch) versagt, dennoch werden elektronische Wahlen weiterhin in Betracht gezogen – womit papierwahl.at weiterhin gefordert bleibt.

.

Übrigens: Unsere Facebook-Gruppe sucht noch Verstärkung.

Happy Birthday, electrobabe. 5 Jahre Bloggen!

Jetzt war ich mit dem Jobwechsel so beschäftigt, dass ich ganz vergessen habe mein 5 jähriges Bloggerdasein zu feiern. Am 13.4.2005 gab’s meinen ersten Blog-Beitrag (damals noch auf twoday.net), dann den Wechsel auf electrobabe.at, gefolgt von einem sehr erfolgreichen Spinnoff mit papierwahl.at im Oktober 2008!

Es hat sich einiges im Umgang mit den “neuen Medien” in den letzten Jahren verändert. Es gibt ein wesentlich größeres Angebot an unterschiedlichen Plattformen und Apps. Man twittert mehr Kurzes oder schreibt auf Facebook, ist vernetzter, und Blogs mit langen Beiträgen gehören (fast) schon zum alten Eisen. Wie es sugarmelon so treffend in Holiday 2.0 A Digital Holiday Mindshift beschrieb, haben wir früher unsere Urlaubsfotos nach dem Urlaub vielleicht auf private HOMEpages hochgeladen und heute geschieht dies praktisch instant mit dem Internet-Handy auf Facebook oder flickr.

Letztes Wochenende kamen am Barcamp Wien wieder alle österreichischen Geeks/Nerds mit Rang und Namen zusammen, um über Entwicklungen zu fachsimpeln. Neben datadirt hat dChris mit christianlendl.com die schönsten Fotos geschossen. Hier der Beweis: ;)

Dieses Barcamp war wieder mal ein sehr gutes und ich danke allen für den Austausch, die lustigen Gespräche und neue Inspiration.

Interaktives Panorama (c) vollwertmedia

Zukünftige Gelegenheiten zum Socializing und Fachsimpeln unter Geeks/Nerds kann man auf webtermine.at erfahren. Ich persönlich treib mich immer gern auf Barcamps, Digitalks, Girl Geek Dinners oder Twittagessen vorrangig in Wien herum.