10 Great 100% Free, royalty free icons for commercial projects

I have been searching the net for some time looking for free (and this word gets misused A LOT) and royalty free icons for commercial projects.

This list is what i have compiled to be “the best” completely free icons for use in your commercial projects:

  1. Crystal Icons, by Everaldo : 1300 icons in sizes up to 128×128. The best free icons out there. The end. Preview Download License .
  2. NuoveXT 2. HUGE icons set of icons up to 128×128 - quality almost rivals that of the Crystal icons. Released under LGPL Preview Download License
  3. Silk icons, by Famfamfam: Very beautiful, small icons. I thinksome of them are used in Firefox Preview Download License
  4. Flag icons, by Famfamfam: LOTS of flag icons. Named after the ISO 3166-1 alpha-2 country codes. Cool Preview Download License
  5. Aqua Gloss icons: 32 large, stylish icons in a Live/Vista crossover style Preview Download License (notice on bottom of page)
  6. ColorCons by Ken Saunders: A set of 49 action button icons available in 4 different colors, red, green, blue and grey Preview Download License (The license links to the red icons set as it is only included in this set) Ken Saunders has more free icon sets (not all look free though) on his webpage, as well as free graphics.
  7. RiceBowl icon set. 50+ icons in about 64×64 size Preview Download License (It says on the page that this is covered by the LGPL license, which allows commercial use)
  8. Open Source Icon Set, by Javier Odriozola. Large icon set of small icons Preview Download License
  9. Sweetie Icons. cute icons for many uses Preview Download License
  10. Web control icons. Icons for controlling web apps Preview Download License

Note that these icons are to the best of my knowledge compeltely free and usable for commercial projects as of this writing. However, things can change and i can overlook things, so always check the license of the icons you are using.

RMI made easier

I am at the moment working on my exam assignment in the course “Introduction to distributed systems” at DIKU.

The system i am building uses RMI for inter-thread communication in a java program. To ease this process, i have created an RMIObject object that all my RMI enabled classes inherits from.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
package server.modules;Thisimport java.rmi.AlreadyBoundException;import java.rmi.RemoteException;
 
import java.rmi.registry.LocateRegistry;
 
import java.rmi.registry.Registry;
 
import java.rmi.server.UnicastRemoteObject;
 
import java.util.Calendar;
 
public class RMIObject extends UnicastRemoteObject
 
{
 
private String rmi_name;
 
private String type;
 
public RMIObject(String type) throws RemoteException {
 
this.type = type;
 
rmi_name = this.create_rmi_name();
 
this.bind();
 
}
 
/**
 
* Get unique RMI name
 
* @return
 
* @throws RemoteException
 
*/
 
public String getUniqueRmiName() throws RemoteException
 
{
 
return rmi_name;
 
}
 
private String create_rmi_name()
 
{
 
String rmi_name = "["+ type +":]"
 
+ String.valueOf(Math.round(Math.ceil(Math.random()
 
* Calendar.getInstance().getTimeInMillis())));
 
return rmi_name;
 
}
 
/**
 
* Bind self
 
*
 
* @throws RemoteException
 
*/
 
private void bind() throws RemoteException
 
{
 
try {
 
// Get remote registry
 
Registry registry = LocateRegistry.getRegistry(null);
 
this.rmi_name = this.create_rmi_name();
 
registry.bind(this.getUniqueRmiName(), this);
 
} catch (AlreadyBoundException e) {
 
e.printStackTrace();
 
}
 
}
 
}

This object makes it a lot easier for me to handle RMI objects finding each other, as i can always pass the object to another object, and then have the receiving object cal getUniqueRmiName() in order to get the name to lookup in the registry. And best of all, the names are random enough that i don’t have to keep restarting the rmiregistry between executions.

999credits - My new Flash Game Site

I’ve recently launched my Flash Game website, 999credits (http://www.999credits.com) On this page i am currently hosting 286 free online games and more are addded every day - each and every one hand-picked for its quality. So support me; tell your friends,Digg it, Facebook it, Twitter it, StumbleUpon it, and spam those who love you (please, oh please spam those who love you)

BTW: It has just earned its first dollar! (Too bad i’ve spent 10$ on advertising :D )

Easy PHP development using PDT

I have started using the PDT plugin for Eclipse, for my PHP development. It is an amazing tool for PHP development. The code completion features you’ve com to expect when using Eclipse coupled with extensive PHP method knowledge, PHPDoc integration, and last but best, the Zend Debugger, makes this the best PHP editor i have tried to date. Try it out yourself:

http://www.eioba.com/a74961/getting_started_with_eclipse_php_development_tools_pdt

Bachelor of Computer Science

I have just finished my Bachelor in CS (not counter-strike :

D) which received a review of A+, so that’s nice. This was the paper i turned in
bachelor paper

Design Patterns

I am currently reading Design Patterns: Elements of Reusable Object-Oriented Software” and only halfway through the book, I can already say that apart from the one that taught me OOPD* it is the most valuable programming book i have ever read. If you program OOPD, do yourself a HUGE favour and read it - better sooner than later!

* (I you don’t know what OOPD is, read about Object Oriented Programming and Design - before you fully grasp that concept, this book is of no value to you)

Clogging!

I am starting a new word trend - clogging.

[to clog, clogging] “The act of commenting on a blog”

Hopefully it will catch on

SQL best practices, part 1

I am starting an SQL “best practices” list here in the blog. Hopefully, it will help some poor souls to avoid making some of the mistakes that i’ve made, and make the world a more safe place DB-wise. This is the first part. Each time an update is posted, I will repost the whole lsit with the new additions.

SQL best practices:

  1. When inserting data, ALWAYS write both columns and value name. This means to write this:
    INSERT INTO fruits (name,taste,dollar_price)
     
    VALUES ('apple','delicious',1)

    Instead of this:

    INSERT INTO fruits
     
    VALUES ('apple','delicious',1)

    This is extremely important, as it will allow you to separate your code from the database organisation. When you do it this way, the code won’t mind if you add extra columns (or attributes as they actually are named) to your DB tables. If you don’t include the column names, adding so will BREAK your code.
    Not including the column names is actually considered very poor design practice.

Enough is enough, George Lucas (spoiler alert)

Well, actually not that much of a spoiler, actually, as I think you won’t miss much.

I saw the Indiana Jones movie yesterday. It was a sad experience.

The plot buildup was from the beginning non-existant.

Indy (now age what - 60-65?) could as picking his nose beat 20 young russian soldiers

The plot advance was also very easily handled - no need to search for clues, let’s just have a crazy man tell them were to go all the time.

Last, but ceartainly not lest - Aliens?!?

Summing up, at no time during the movie did i forget that i was sitting ina movie theater, watching a movie (you know that feeling when you forget you are watching a movie that GOOD movies create.)

To reiterate - it was a sad, sad sight seeing George Lucas butcher another of his old masterpieces. The worst part is, as a trailer before the movie, they showed an animated version of Star Wars - The Clone Wars (which has been running as a spin-off on Cartoon Network for some time.) I wonder if Lucas has used a combination of 3D engines from that show to butcher another of his mastyerpieces even more. He has certainly taken the cleaver in his hand. Houen out.

SQL Join

Here’s a little SQL trick that will save some laguage (e.g. PHP) code and make your programs more readable when querying a database (DB).

Often you need to select something from one DB table and use that information with info from another table to get the full picture. Instead of doing this with two queries and language-based code in between (e.g. sorting through an array of results), you can write it all in just one SQL query. Behold:

1
2
3
SELECT W.pay, E.id, E.name, E.address
FROM work_log W, employees E
WHERE (W.pay > 500 AND W.employee_id = E.id)

This will return pay, id, name and address of all employees that earn more than 500 (dollars per month, fx.). The main thing is the

1
W.employee_id = E.id

line, which ensures that the Employee (E) table data match the Work (W) table data