Saturday, January 22, 2011

200 packages in Npackd!

a new milestone was reached: Npackd default repository now contains over 200 free applications/packages. And what is more important: all of them are up-to-date.

It is not my plan to grow the repository indefinitely as it is a lot of work to monitor packages for new versions and describe them. Most of the packages were added because I needed some software myself or somebody asked me to do so (a much smaller part).

Tuesday, August 17, 2010

Windows Package Repositories Comparison



First of all let me say that I am biased as I work on WPM, but I'll try to be as fair minded as possible.

In the table below is some data about Windows package managers. Some of them are listed by Wikipedia, some are mentioned in answers to this StackOverflow question.

I do not try to compare the software itself, either GUI or command line (maybe next time). I only try to compare the default repositories. The number of available packages does not include different versions of a package.

I did not include application-level package management solutions like PEAR or Maven as they are a different story and are not useful for everybody. I also removed the Windows Installer and some others because there is no central repository and Cygwin because it only works for the packages defined there. There are also some sites like ninite that let you download a package consisting of different useful software at once. They were also not included in this comparison because they are not flexible enough to be called a package manager (unattended installation and un-installation are missing).

So here is the current state of package repositories for Windows:

SoftwareNumber of available packagesNumber of package versions published in August 2010Package formats
Appsnap3790 (3)any
Appupdater84? (2)any
GetIt216 (1)? (2)any
Windows-get2430any
WPM14328any



(1) GetIt does not have an own repository, but uses that of Appupdater, Appsnap and Win-Get

(2) no information available

(3) although the repository was not updated for a long period of time, most packages should be up-to-date as the software uses rules to find the newest package versions








Sunday, January 25, 2009

JAU (Java Annotation Based Utilities) announcement

I am glad to announce a first stable beta ;-) of the JAU library (http://code.google.com/p/jau/). Version 0.6 implements the following methods using annotations (and works for POJOs):
  • equals
  • hashCode
  • toString
  • compareTo
  • copy/clone
  • toMap/fromMap (this one creates a java.util.Map with object properties as entries)
Here is a sample use case:

import com.googlecode.jau.*;

@JAUEquals
@JAUHashCode
@JAUToString
@JAUCompare
@JAUCopy
@JAUToMap
public class UserData implements Comparable, Cloneable {
private String firstName;
private String secondName;
private Date birthDate;
private String login;
private String[] rights = new String[] {"view"};
// constructor omitted

public boolean equals(Object obj) {
return JAU.equals(this, obj);
}

public int hashCode() {
return JAU.hashCode(this);
}

public String toString() {
return JAU.toString(this);
}

public int compareTo(Object obj) {
return JAU.compare(this, obj);
}

public UserData clone() throws CloneNotSupportedException {
UserData r = (UserData) super.clone(this);
JAU.copy(this, r);
return r;
}
}

For example, the output for

JAU.toString(new String[][] {{"a", "b"}, {"1", "2"}})

would be

 java.lang.String[][java.lang.String["a", "b"], java.lang.String["1", "2"]]

Thursday, November 27, 2008

Web-based Task, Time and Project Management Software Comparison

Task, Time and Project Management Software was always an important prerequisite for successful projects and not only in the software industry. Recently a lot of software was written using AJAX (guilty :-) making collaboration a lot easier. I have created a Google Table comparing 42 of them:

Task, Time and Project Management Software

Monday, October 13, 2008

Authentication for GWT based applications on Google App Engine

there is a way to use Java together with Google App Engine: GWT together with python-gwt-rpc. Although python-gwt-rpc has it's own means to allow authentication, there is also an easier way: just check in the Python code whether the user is authenticated and generate a login page or a page for hosting your GWT application.

...
from
google.appengine.api import users

class MyHandler(webapp.RequestHandler):
def get(self):
user
= users.get_current_user()
if user is None:
self.response.out.write('''Login page here...''')
else:
self.response.out.write('''GWT hosting page here...''')

here is how it looks in a live application