Too Much Time on Your Hands? Try Minecraft

28. March, 2011

I’m addicted to a new game: Minecraft.

It’s a bit like Lego: Everything is a brick, simple rules, no documentation. Unlike Lego, you got lots of bricks. Lots. The levels are huge.

I actually managed to get lost once. Fortunately, I built my house on the highest mountain that I could find (even above the cloud layer). Right now, I’m turning the mountain into a Swiss cheese :-)

Besides carving your dreams out of a huge pile of rock, you can create stuff in a “crafting area” in your inventory. So far, I managed to craft shovels, hoes, picks, axes, stone, a bucket and a mine shaft trolley.

What can I do with leather?

Nah, don’t tell me, I’ll figure it out myself.


What’s Software Worth?

26. March, 2011
Peter Sunde (TPB)

Image via Wikipedia

I’m back from a presentation by Peter Sunde, one of the founders of Flattr and The Pirate Bay, in Zurich about his new start up Flattr. The audience was really curious why people would pay money for something that they could get for free. I like Sunde’s answer: We also give to charity even though we don’t have to.

So is the future of Software charity? Peter says: It’s one option among many others. In the future, people will have to use all the channels they can to generate income.

I agree. Let’s ask us a few questions around “What’s a piece of software worth …”

  1. … if you download it from the internet and never user or install it.
  2. … if you download it from the internet, install it, but never use it.
  3. … if you download it from the internet, install it, and use it once.
  4. … if you download it from the internet, install it, and use it several times.
  5. … if you download it from the internet, install it, and use it all the time, making a living or even a fortune from it.

If you try to answer these seriously, you’ll quickly run into missing information: What kind of software are we talking here? An OS? Proprietary or Open source? Is that from the point of view of a user or a producer?

When I’m a user, the answers are: 0, 0, X, Y, Z. X can be 0 for the “I used it once and it didn’t work for me”. Or it could saved my life in which case I’d pay a lot more than asked on the price tag.

Y is more complicated. It can be 0 for open source or public domain software. Or it can be 0 because I love the software, and I’d like to buy it but I can’t afford it.

For Z, it becomes hard to come up with an excuse. Or rather any reason to assign 0 to Z is considered an excuse before we even listen. But how about this: In some third world countries, you can make a living from a few bucks per week. So you would need more than 100 years to earn enough money before you can afford to buy the software that allows you to earn the money to buy it. How just can a price be?

If you produce software, the answers are: X, X, X, X, X where X is the number on the price tag plus the cost for the lawyer and the prosecution plus a hefty sum to make sure you lying scoundrel won’t ever have enough money to pay for an Internet connection in your whole life!

But the numbers can even become negative. If you’re a company and you want to kick-start sales, you might offer a free version. If someone doesn’t like it, you not only lost one customer, you lost all his friends, too. And everyone who reads his blog.

Notice the gap? Why do I have to pay for software before I can give it a try? Yeah, shareware works that way but Maya doesn’t. I can’t return software after I bought it because I might have copied it. So when I return software, I must be a criminal. Apparently, “innocent until proven guilty” doesn’t get a lot of love in some parts of the world. Dictatorships, regulars’ tables, software companies, record companies, movie rentals, game sellers.

Now comes Flattr and changes the game. Instead of giving a lot of money to the middle men, it gives money directly to the artist (-10% which is far better than any other offer you can get today).

For some reason, the middle men are upset.

Odd. “Concerned people” were upset when the written letter replaced the face-to-face meetings. And then when the telephone replaced the letter. And when both were replaced by email. And now by mobile phones. Evolution happens. It’s like a glacier: Slow, overwhelming, unstoppable.

So laws are installed. I’m not sure evolution cares much for laws; I hear pupils today don’t have the attention span anymore to read a whole word at once. Good luck suing them. I’m sure after they were found guilty, they will start buying the products as they should have in the first place.

How does Flattr fit into this picture? First of all, Flattr isn’t built on the assumption that there is a God-given right that people have to buy what I produce. Instead, it’s built on love. Love? Doesn’t sound like a very reliable basis.

But answer this: How do you get along with all the people in your street? Do you hate them? Apparently not because then, you’d move. So we do feel for each other, we just stopped the hugging and kissing – it just takes too much time. A nod must suffice.

Do you see teenagers screaming for their idols? While it may look ridiculous, it’s a very basic human emotion: Enthusiasm. If I like something, I’ll go to great lengths.

So teens buy all the CDs, the books, the magazines, the T-shirts, tickets, you name it. They actually pay a lot of money for something (or someone) they love.

It seems the problem is not the money, it’s the “love” part. If you love computer games and you’re ripped off by a company, you stop buying their games. If you love music but the record industry insists on selling songs by album (so you get 5 good songs), you stop buying CDs. If you love books and you just bought #3 of 4 and you go to Amazon just to find that you can by the first and the fourth but the second is out of print, so sorry.

Flattr works differently. You go somewhere on the ‘Net, see something. You don’t like it, you move on. Nothing gained, nothing lost. Specifically, the artist didn’t get your eternal hatred and you didn’t waste your time. If that had been a CD, you’d been angry for your lost money. So it’s a win over the current situation already.

But you like what you saw. One click later, a little bit of money trickled from you to the creator. It’s not much, often not enough to make a living. But it’s also a message: Someone liked this. That can be worth more than any amount of money.

Now people don’t get rich with this. Today. That doesn’t mean they won’t get enough to afford living from it tomorrow. Or even get rich. And there will always be more consumers than producers. And time is on your side.

If you write a book, that book will be on sale for a decade if it’s a huge success. Only how likely is that? A lot of books are already rare after 3 years. It’s just not economical for publishers to have every title in stock. But the Internet doesn’t forget. This blog post will still be available in ten years. Maybe it will still be relevant (although I hope not). The Flattr button to the right will still be there.

I will make money from this post forever. Even if I only make a penny a day from this, it’ll be a fortune one day. And nothing stops me to write another post.

One word of warning, though: Don’t expect the content industry to embrace this change. Why should they? They are already happy and content. For them, change only means less income or less power which means less income. 50-story skyscrapers don’t come for free. In the current game, they have little to win and everything to lose. Keep that in mind when you read another story of some company suing someone for being curious or social.

PS: I’m a professional software developer. I don’t get paid for my knowledge but for my time.


Eclipse 3.6.2 Artifacts for Maven 2

20. March, 2011
Apache Maven logo.

Image via Wikipedia

Update: The project has its own web site, now.

Two days ago, I told you about Project Dash and my new tools for it. Well, we did run them over the weekend and import a lot of stuff from Eclipse 3.6.2 into a brand new testing Maven 2 repository.

So if you want to use Eclipse bundles in Maven 2 for your own projects (SWT, EMF, even BIRT), have a look and let me know:

  • Did I miss anything?
  • Is anything wrong? Version numbers, names, dependencies, optional dependencies.
  • Any other comments?

Making the world a better place, one line of code at a time! :-)

The tools are here.

New project home page: Maven Tools 4 Eclipse


HTML Generator in Java – renderSnake

19. March, 2011

There is another HTML generator: renderSnake. Here is how it looks:

public class Logo implements Renderable {
    public void renderOn(HtmlCanvas html) throws IOException { //@formatter:off
        html
            .div(id("logo"))
                .div(id("logo_text"))



                    .h1()
                        .a(href("index.html"))
                            .write("render")
                            .style().write(".snake { color:yellow; }")._style()



                            .span(class_("snake")).write("S")._span()
                            .write("nake")
                        ._a()
                    ._h1()
                    .h2().write("lean and mean HTML page writing machine")._h2()._div()



                ._div();
    }
}

I’m not sure about the “_” versions but it sure looks better than JSP :-)

Related articles: Simple HTML Output From Java Using renderSnake


Getting Rid of Checked Exceptions in Java

18. March, 2011

So, you’re tired of rethrowing checked Exceptions that you can’t handle? Did you wish a long time ago IOException and SQLException were in fact RuntimeExceptions (as they should be according to Sun’s own definition)? The pain was there but it got kind of dull over the years? Acceptance of the inevitable and all that. How about this:

    @SneakyThrows
    public void doSomething() { 
        throw new Exception();
    }

Did I hear a “WTF”? Say hello to project Lombok.

IBM developerWorks has a great article to get you started with your own custom AST transformations.


Project Dash m4e Tools – Create Maven Artifacts From Eclipse Plug-ins

18. March, 2011

[UPDATE] There is now a testing repo which contains Eclipse 3.6.2

If you use Maven and Eclipse, you know the pain: How do I convert Eclipse plug-ins into Maven artifacts?

The simple step is to run mvn eclipse:make-artifacts (or the ill fated eclipse:to-maven).

But that’s only half of the work. A few of the plug-ins have bad dependencies (stuff isn’t declared optional, polluting your runtime classpath; versions of dependencies are missing). And a major problem is source attachments. Eclipse separates those from the binaries, so you end up with org.eclipse.core.runtime and org.eclipse.core.runtime.sources.

A few days ago, bug 337068 – “Please set up maven.eclipse.org” was fixed. The site exists and there is even a Nexus running on it.

Unfortunately, it’s a bit empty for now. We’re working on it :-)

One of the first steps is a set of tools that takes downloads from eclipse.org and converts them into proper Maven artifacts – with source and all.

Welcome Project Dash m4e Tools. A preliminary version is available on github: https://github.com/digulla/org.eclipse.dash.m4e.tools

It consists of three tools so far:

  1. m4e-import can import downloads (archived or unpacked) into a temporary Maven 2 repository. Your own local repository (${user.home}/.m2/repository) is left untouched!
  2. m4e-merge can merge several a temporary Maven 2 repositories into one.
  3. m4e-attach-sources tries to find all source bundles, moves+renames the source JAR to the right place and name and deletes the unnecessary folder.

Next step is a tool to patch the artifacts. One open issue is: How to handle dependencies which come from Project Orbit (bundling third party libraries for Eclipse projects).

Please visit Bug 340416 – “Resolving dependencies from Project Orbit” if you have an opinion.


Numpty Physics

17. March, 2011

I really liked Crayon Physics. It was simple idea, great brain teaser, the perfect UI.

If you liked it as well, have a look at Numpty Physics.


Urban Hacking

17. March, 2011
GRL Graffiti research Lab http://graffitiresea...

Image via Wikipedia

You like to hack the world? But graffiti feels too destructive?

Now there is another option: LED throwies. They are relatively easy to make, non-destructive and shiny.


Flash in Firefox 4 on Ubuntu 10.10

17. March, 2011

Trouble getting Flash to work on Ubuntu 10.10? Use Flash-Aid.


Building RCP Apps With OSGi

16. March, 2011

Dave Orme wrote a really interesting article about building blocks of a RCP application with OSGiThe OSGi Building Block Pattern: An Invitation

I agree with him: The RCP wizard should really create projects to build a p2 repo and to package the bundles and features into something that a user can download and install.

Right now one of the major stumbling blocks when starting with Eclipse projects is that they either don’t build at all or that I fail to bundle/package them into some “output.”

The typical situation is that I’ve managed to import the project into my workspace. Now I get a lot of compile errors because bundles are missing in my IDE. Problem: I see the names but I have no idea at all where to download them. (See bug 340014 – “Offer a quick fix to install missing dependencies from p2 repositories”)

After manually googling for bundle names, trying to find the p2 repo which might contain them (in former times, p2 repositories offered a way to quickly browse them with a web browser – that doesn’t work anymore, so it’s poking in the dark). After a couple of restarts, the compile errors are gone.

At long last, I can start to fix my problem.

But now what? How can I create the “thing” that I need? (where “thing” can be a RCP app, a p2 repo, a bundle, a feature). Eclipse doesn’t allow to save the final after-build-step anywhere. Users must remember the steps: Export…, select the correct tool out 500, fill out the 100+ options in the little dialogs that pop up, rinse, repeat.

Welcome bug 340018 – “Allow to save export actions in a “launch” config”


Follow

Get every new post delivered to your Inbox.

Join 333 other followers