Hudson: Continuous Integration System

Hudson [1] monitors executions of repeated jobs, such as building a software project or jobs run by cron. Among those things, current Hudson focuses on the following two jobs:

  1. Building/testing software projects continuously, just like CruiseControl or DamageControl. In a nutshell, Hudson provides an easy-to-use so-called continuous integration system, making it easier for developers to integrate changes to the project, and making it easier for users to obtain a fresh build. The automated, continuous build increases the productivity.
  2. Monitoring executions of externally-run jobs, such as cron jobs and procmail jobs, even those that are run on a remote machine. For example, with cron, all you receive is regular e-mails that capture the output, and it is up to you to look at them diligently and notice when it broke. Hudson keeps those outputs and makes it easy for you to notice when something is wrong.

Hudson can be extended by plugins and can be integrated into IDEs like Eclipse. There are also a lot of tools like for example Firefox Add on. It is written in Java (1.6) released under the MIT license.

[1] https://hudson.dev.java.net/

Clojure: Lisp dialect for JVM

Clojure [1] is a dynamic programming language that targets the Java Virtual Machine. It is designed to be a general-purpose language, combining the approachability and interactive development of a scripting language with an efficient and robust infrastructure for multithreaded programming. Clojure is a compiled language – it compiles directly to JVM bytecode, yet remains completely dynamic. Every feature supported by Clojure is supported at runtime. Clojure provides easy access to the Java frameworks, with optional type hints and type inference, to ensure that calls to Java can avoid reflection.

Clojure is a dialect of Lisp, and shares with Lisp the code-as-data philosophy and a powerful macro system. Clojure is predominantly a functional programming language, and features a rich set of immutable, persistent data structures. When mutable state is needed, Clojure offers a software transactional memory system and reactive Agent system that ensure clean, correct, multithreaded designs.

[1] http://clojure.org/

IRCcat: Simple posting to IRC from shell scripts

IRCcat [1] does 2 things:

  1. Listens on a specific ip:port and writes incoming data to an IRC [2] channel.

    This is useful for sending various announcements and log messages to irc from shell scripts, Nagios and other services.

  2. Hands off commands issued on irc to a handler program (eg: shell script) and responds to irc with the output of the handler script. This only happens for commands addressed to irccat: or prefixed with ?. (easily extend irccat functionality with your own scripts)

It is written in Java und licensed under GPLv2.

[1] http://github.com/RJ/irccat/ and http://www.metabrew.com/article/how-we-use-irc-at-lastfm/
[2] http://en.wikipedia.org/wiki/Internet_Relay_Chat

Debian Package for RSSOwl 2.0

It has been a while since I first blogged about RSSOwl.

RSSOwl is still my favorite Feed Reader and version 2.0 is still in beta state but quite a good piece of software. I did not much contribute to the project, just filed some bugs and submitted some patches to the project.

Now I started to build a package for Debian and Ubuntu and my scope is to bring RSSOwl 2.0 into Debian. It is not yet perfect, but quite useful.

Feedback is always welcome.

SMSler: Sending SMS over free HTTP web services

In Switzerland, many (all?) mobile operators providing a web service for sending an amount of free SMS over their website. The only thing to do is to register a username and a password. I wanted to use this free service with my servers, so they can inform me by sending also a free SMS over HTTP if there are any problems.

There are two simular projects: SwissSMS for OS X in C# and Java Swing GUI SwissSMSCient. But I just wanted to have a small library in Java, which can be used to send SMS messages by bash scripting or building a GUI based on it, whatever you like.

So I developed a mavenized library named LibJSMS in Java licensed unter LGPL, which can be used in a shell script as following:

1
2
3
4
#!/bin/sh
# Example:
# java -cp LibJSMS-x.y.jar net.renemoser.libjsms.App <userid> <password> <phoneNumber> <message> <provider:default=SunriseCH> 
java -cp LibJSMS-0.4.jar net.renemoser.libjsms.App example@sunrise.ch secret 0761234567 "Error message..." SunriseCH

If you like to use the library in your java code, it would look like this:

1
2
3
4
5
6
7
8
import net.renemoser.libjsms.service.*;
try {
    ShortMessageService Service  = new SunriseCH();
    Service.doLogin(userid, password);
    Service.sendShortMessage(phoneNumber, message);
} catch(Exception e) {
    e.printStackTrace();
}

or by using the service factory class:

1
2
3
4
5
6
7
8
9
import net.renemoser.libjsms.service.*;
String provider = "SunriseCH";
try {
    ShortMessageService Service = ServiceFactory.getService(provider);
    Service.doLogin(userid, password);
    Service.sendShortMessage(phoneNumber, message);
} catch(Exception e) {
    e.printStackTrace();
}

At the moment, the library can only use the 2 Operators Sunrise and Orange. Because those are the 2 only accounts I had.
But the operator Swisscom or even any operator of the world could be added. I would love to the get any patches for additional operator suppport to my email address, which can be found on my contact page.

The library using Java 6 only at the moment. The most recent version of this library can always be found on my GitHub Account.

I also wanted to have a desktop GUI application for using this service. So I developed a small Java desktop application named SMSler licensed under GPLv3 using this library with Netbeans. I know you like screen shots:

You can download my first release in the download section of my GitHub account. I am also providing an exe file for windows users, build with help of launch4j. It is tested on Debian, Ubuntu and Windows XP as long as you have Java 6 installed. Mac OS X 10.5 still uses Java 5, so this won’t work unfortunately.

After starting the application, make sure you are setting up a preferences file under the “Menu File –> Perferences”. This creates a preferences file in your home directory in .smsler/main.preferences.

Feel free to send me feedback and improvements.

EclEmma: Java code coverage tool for Eclipse

EclEmma [1] is a free Java code coverage tool for Eclipse [2], available under the Eclipse Public License. Internally it is based on the great EMMA Java code coverage tool, trying to adopt EMMA’s philosophy for the Eclipse workbench:

  • Fast develop/test cycle: Launches from within the workbench like JUnit [3] test runs can directly be analyzed for code coverage.
  • Rich coverage analysis: Coverage results are immediately summarized and highlighted in the Java source code editors.
  • Non-invasive: EclEmma does not require modifying your projects or performing any other setup.

The Eclipse integration has its focus on supporting the individual developer in an highly interactive way.

The update site for EclEmma is http://update.eclemma.org/.

See also installation howto.

[1] http://www.eclemma.org
[2] http://www.eclipse.org
[3] http://www.junit.org

JSendNSCA: Nagios Passive Checks in Java

JSend NSCA [1] is a Java API and command line tool for sending Nagios [2] Passive Checks to the Nagios NSCA add on.

By using the JSend NSCA core API, you can easily integrate your Java applications into a Nagios monitored environment thereby notifying Nagios of problems and issues during the running of your application.

The Jsend NSCA CLI command line tool wraps the API and allows you to send passive checks from the command line.

Please consider: Nagios has been forked, so it is also known as Icinga.

[1] http://code.google.com/p/jsendnsca/
[2] http://www.nagios.org/

WMD: The Wysiwym Markdown Editor

WMD [1] is a simple, lightweight HTML editor for blog comments, forum posts, and basic content management. You can add WMD to any textarea with one line of code. Add live preview with one line more. WMD works in nearly all modern browsers, and is now completely free to use. The next release will be open source under an MIT-style license.

Try out the demo. Looks good to me.

[1] http://wmd-editor.com/ http://code.google.com/p/wmd/

JOS: Java OpenID Server

JOS [1] (Java OpenID Server) is a multi-domain, multi-user OpenID Provider based on OpenID4Java [2], Spring Framework, Hibernate, Velocity.

[1] http://code.google.com/p/openid-server/
[2] http://code.google.com/p/openid4java/

ztest: Unit Testing for PHP 5.3

ztest [1] is new unit testing library designing to take advantage of the new features of PHP5.3 – namely namespaces and closures. It was extracted from the BasePHP [2] library, a perpetual work-in-progress.

Released under the MIT License.

[1] http://github.com/jaz303/ztest
[2] http://www.phpbase.org/

Next Page »