WordPress Plug-In development with unison file-system sync and git clean composer.{json,lock} files

This scripted unison I use to keep things separated, clean and synced:

if [ $# != 2 ]; then
    echo "usage: $0 <dir1> <dir2>"
    exit
fi
dir1=$1
dir2=$2

echo "${dir1} <-> ${dir2}"

while true; do
    clear
    # ignore files and dirs which should not be synced. You might need to adjust this a bit.
    unison -batch -auto  $dir1 $dir2  \
        -ignore 'Path vendor'         \
        -ignore 'Path .*.sw*'         \
        -ignore 'Path .git'           \
        -ignore 'Path x.*'            \
        -ignore 'Path sync-dirs.sh'   \
        -ignore 'Path .gitignore'
    sleep 1
done
read more

There is no Undo in Unix rm Command

And that’s the way I like it!

$ rm only-copy-of-my-thesis.doc

and flush, it’s gone. Gone forever. There is no way of getting it back. Not from the trash, not from the disk. Technically, and this is the bitter beauty of it, all this bits which make up your so important , now lost, master piece are still there.

read more

Beyond the Uncanny Valley!

In times of frustrations, of lost battles and failed hopes, this at last is a battle we won! Computer CGI ist beyond realistic, whatever we want to visualize we can.

read more

I'm so sick and tired of all this sexistische-kackscheisse!

Sure, I wanted a provocative headline, but I’m so sick and tired of all this (uncle bob, uber, google gender stereotypes, etc.) sexistische-kackscheisse as we say in german. I just hired another female engineer. We already have two female engineers on our team, and guess what? They are great, they are helping us further to where all this male looser engineers are not able to.

If our computer culture were dominated by women we would have had better computers!

read more

Jekyll include snipped to embed Youtube Videos

Serving your blog from github pages is perfect for me, but as you you might know, you can’t have plugins beyond the ones pre-defined by github. Using a youtube plugin is therefor not possible. Luckily you can easily build a HTML include snipped to simplify your video embedding markup.

read more

You can handle the Truth, in Tables!

 A | B | Output 
   |   |  A&B
---|---|-------
 0 | 0 |   0
 1 | 0 |   0
 0 | 1 |   0
 1 | 1 |   1

Nice, just a couple of years down the road and bang! My old colleague picks up a lesson and posts the write up I never did.

read more

ok, ok, not all things work, but we have DNS now at least!

and thats not bad! as you might have seen I revived my old blog from its 2008 SQL database dump. Today I tried moving it back to its old domain. In short, so far the steps where reloading old sql backup to mysql in docker, wordpress in docker upgrading database, exporting from wordpress as XML, importing XML to blog instance on http://sofasportler.wordpress.com/. Now I want to be reachable under it's old domain htttp://sofasportler.de/.

The "normal" way with Wordpress.com seems to be ordering the domain with them. But also when you already own the domain they have an option, its call "map" your domain. Sounds good, so i went that way (13euro per blog per year). Problem is, in the next step they ask you to change your nameserver to the ones from wordpress.com, which i didn't want because i use AWS route53 for DNS.

So heres what i did. First i asked (and payed) to map my sofasportler.de domain to sofasportler.wordpress.com, but did NOT continue to change the sofasportler.de nameserver over to wordpress.

Than i moved over to Amazon Route53 to add an A record to make sofasportler.de resolve to the sofasportler.wordpress.com IP. Now http://sofasportler.de/ is working, but what is with www.sofasportler.de? The missing link is to have someplace where to redirect www.sofasportler.de to sofasportler.de. This place is AWS S3, the have the redirect feature to host static websites directly from S3.  To do so, you need to have an AWS S3 bucket, what i created for www.sofasportler.de. Once you have it, you can find out its endpoint, in my case something like www.sofasportler.de.s3-website.eu-central-1.amazonaws.com. This endpoint is what you add as target in the AWS route53 entry for www.sofasportler.de. Still with me? Last step is, adding the redirect all traffic to sofasportler.de for the www.sofasportler.de bucket, this is an AWS S3 feature.

Once all this is in place, it works like this:

  1. go to http://www.sofasportler.de/
  2. resolved to S3 bucket,
  3. bucket gets hit, redirects to sofasporler.de
  4. sofasportler.de resolves sofasportler.wordpress.com
  5. wordpress.com sees in coming request for sofasportler.de and happily serves the blog,

and http://sofasportler.de just starts with step 4 of course.

still missing, comments and some image links, but i still have to look into this,

makes sense? I'm not sure, hacked this together in a rush, not sure whether there might be a more reasonable setup. But hey, back from the dead, and that's ok, for now.

keep pushing,

read more

resurrection, kind of, or how to rebirth an old wordpress blog database,

hi folks, i'm back ;)

taking an old mysql database backup from August 2008 of my blog and running it in a docker container'ed wordpress to upgrade it to wordpress 4.3 from where i exported it and than imported it to the wordpress.com site (this one here) for checking. Amazing technology, me luv wordpress, that was all sooo smooth. I might post some journal of the steps involved for the docker/wordpress interessted ones, but for,

THIS IS A TEST ONLY, PLEASE IGNORE,

not
cheers,
yours, truly

read more

disable DIGEST-MP5 to xmpp4r connect with your openfire jabber server

in my typical love and hate relationship with opensource  (aka open sore) i stumbled over SASL induced configuration pains again today. To cut a long story short, just disable DIGEST-MD5 sasl out on the openfire jabber server and immediatly xmpp4r works like a charm for me.

How to disable digest md5 on Openfire? Not so easy to find out and in a beautiful amateuristic way lots of the advice you find is actually plain wrong.

Put this into your openfire.xml:

<sasl><mechs>PLAIN</mechs></sasl> 
<!-- but put it inside the <jive>...</jive> tags somewhere -->

, because when you know the name of the right openfire property, and are able to read(in openfire.xml):

    This file stores bootstrap properties needed by Openfire.
    Property names must be in the format: "prop.name.is.blah=value"
    That will be stored as:
        <prop>
            <name>
                <is>
                    <blah>value</blah>
                </is>
            </name>
        </prop>

,then you easily know that <sasl><mechanisms>....</mechanisms></sasl> is bogus.

you usually find your openfire.xml at ${OPENFIRE_HOME}/conf/openfire.xml. and you must restart the the server afterwards, like /etc/init.d/openfire restart.

there is another option, like making the xmpp4r implementation don't even try to use the digest-md5 mechanism which the openfire server offers. Just disabling DIGEST-Md5 acceptance at /opt/local/lib/ruby/gems/1.8/gems/xmpp4r-0.3.2/lib/xmpp4r/client.rb:108 in Jabber::Client.auth does work, but i will try to get it implemented a littel more selective before posting a xmpp4r fix here. Who knows, there even might be two SASL DIGEST-MD5 implementations on this planet which actually do match? i doubt it, an even then, i don't care. vote for alt.source.sasl-must-die-die-die and

have fun

Technorati Tags: , , , , ,

read more

first posts first

test only, please ignore,

the quick brown fox jumps over the lazy dog.

and does it really help me thing my song?

and have a lot of fun.

read more

Web-Scale Computing is changing the economics of doing business online.

the title was actually quoted from the the Amazon Web Services Blog. That post reports on a new option of running a version of the Wowza Flash Streaming Video server as a virtualized AMI instance  from insides the Amazon EC2 cloud.

What this all means? You get a real cheap way to build you're own streaming network. For private videos YouTube will to the trick of serving your private holiday videos to the fans and you don't have to bother for neither price nor capacities. But with such a thing as a Wowza server on EC2 you can now build your very own YouTube on demand. And it's running on small pockets too. For only 5$ a month you get the right to do so and beyond that you pay per-hour and bandwith.

cpu boardBut even besides the economics, Wowza brings more to the party. It is a real good piece of software it seems. I worked with it just end of last years and all operations where smooth. Before Wowza choosing a streaming server sometimes to me felt more like "die Wahl zwischen Pest und Cholera"(or Hobson's choice as i learned). I worked with Wowza last year and it was breeze of fresh air. I think i read somewhere it was written by some old SGI dudes. Ah, good old times, but that is another story(Personal Iris anyone?)

Adobe, the original? Expensive, old-school. heavy. not sexy. Red5 Open Source? Good luck i wish. I never had. Quicktime? Don't know about QTSS but the DSS variant of it failed on me badly whenever i needed it and on top of that it uses PERL! to serve its admin HTML pages, uha, shudder.

Some fellows became even so desperate as to start recoding things from scratch and try writting an RTMP* server in Erlang. As i said elsewhere, Erlang, power- and beautiful concepts, but such an ugly language. Again, good luck i wish. If someone might want to spent a couple of month on trying to combine Erlang concepts and ruby language on writing a scalable stand-in replacement for the proprietary FLash streaming video server solutions than please give me call. Would be a nice project.

Technorati Tags: , , , ,

read more

googlecharts gem URI::InvalidURIError fixed

Yesterday I was wondering who is right about the URI and as it turns out the culprit is the googlecharts gem. The RFC defines ‘UNWISE’ characters, the ruby URI implementation seem to correctly fail on them and the Google API defines the just the URI, not how it has to be encoded/escaped.

read more

ruby google charts api wrapper, RFC2396 and ruby open-uri woes

UPDATE:found a simple fix/hack for the googlecharts gem

Uhh!, this for sure is one of the more scary regular expressions you normally encounter. Its URI::REGEXP::PATTERN::ABS_URI from uri/common.rb:137. Looks complete, doesn't it? And still it fails to grasp my seemingly valid Google Charts URL which is: http://chart.apis.google.com/chart?chdl=requests(cached)|requests&chd=s:Fb9JJfgZ,Fb9KJfgq&cht=lc&chs=300x200

It's the googlecharts gem which creates this URL here(not me!), but than bails out when trying to download an image from it.

/opt/local/lib/ruby/1.8/uri/common.rb:436:in `split': bad URI(is not URI?):...

Now, who is right? Google? The URI RFC2396? The googlecharts gem? Debugging such things are the less thrilling moments in life.

Besides that, even when bailing out on this one, the googlecharts gem feels good. It offers efortless chart creation and basic cases are already covered, the advanced stuff will follow i think. Go check it out when in search for an easy charting solution. Googlecharts gem felt better to me than the gchartrb which is another wrapper for the same service, but your milage may vary.

have fun

Technorati Tags: , ,

read more

dirty hack: remove xing.com iframe ads with greasmonkey

ok, after this very short twitteruption this afternoon of the premium xings i sat down tonight at home and thought, hmm? getting rid of advertising on xing.com isn't really worth a premium membership. A short look onto the pagesource with firebug revealed the pretty simple html schema.

so even me personally was able to sketch a simplistic greasemonkey script to erase ad iframes from the xing page like follows:

UPDATE: fixed the script and updated pastie link(thx henrik)

eeeeasy, download from pastie download (old) (no guarantees, you know, script might eat your backups and such)

For those who don't know, Greasemonkey is a firefox extension to add custom javascript to any website. And this means, you can do whatever you want with the content. There are greasemonkey scripts which are adding links to the amazon site linking to sites with better prices for example. not fair, but thats life. in the web20 world.

have fun

p.s.: they paypal/aws/whatever payment sponsor button to fork 1 euro from your saved premium account money i will  code next week - hope to welcome you back on payday.

Technorati Tags: , , ,

read more

about google 101 and computing power from electricity

"In a sense, there are only five computers on earth." He[Prabhakar Raghavan, Yahoo Research Chief] lists Google, Yahoo, Microsoft, IBM, and Amazon.  Few others, he says, can turn electricity into computing power with comparable efficiency. (businessweek.com)

Gain your insights from the businessweek article on Google's 101 course in which they start teaching web-scale computing in the universities. This is how they reach out to find new generations of engineers to fuel the never-ending appetite of the Googleplex for young brains.

and remember, just because your paranoid doesn't mean they not out there to get you.

Technorati Tags: , , ,

read more

amazing amazon next stop: databases

amazon goes full circle with their webservices. After filesystem storage(S3) and raw computing power(EC2) with SimpleDB Amazons AWS now delivers the last missing piece for any web app you may want to build.

Again like the other AWS before SimpleDB is build on a simple concept and implements the pay as you go payment model. With no upfront money you get access to their clustered, monitored HA database system.

Lots of people where already anticipating this because a database solution were so obiously missing. What is more surprising, is that SimpleDB seems to be build on Erlang. I don't know whether or not this will re-fuel the Erlang hype which kind of dwindled a bit since the pragmatics released joe armstrongs Erlang book earlier this year(note to self: should have posted my bookreview months ago).

Erlang, a kind of ugly/ancient language but full of beautiful concepts for scalable, reliable, distributed applications and this might get me moving again.

Technorati Tags: ,

read more

apple is evil?

go read the valleywag on "Apple tracks which stocks you follow on your iPhone" to find out how apple shows interesst in what you're doing. Oh what lucky bastards we all are. At least Google take care of us all and does not exploit our privacy.

"All mobile devices possess a unique International Mobile Equipment Identity number, and as the screenshot below indicates, the iPhone sends its user's unique IMEI to an Apple server each time the widgets perform a query. The data includes which stock ticker was queried."

just imagine.

and have fun

Technorati Tags: , , ,

read more

'||' unequal 'or'

some simple ruby code:

a = nil || 23
b = nil or 23
puts "#{a==b}"

prints: false. Please explain! I mean explain in the sense of why not how it happens. Is it meaningful to put '||' and 'or' on a different level in the precedence hierarchy?

UPDATE: i checked a couple of times before i posted but still can't reproduce it a day later. don't know what was different yesterday, Jruby? confused, ... i seem that puts "#{a == b}" prints true. today.

read more

weekend tumblr

It will not stay this way and i really like the tumble log format but won't keep up with a daily rythm. Maybe 1.37 times a week on average. Second, i will find another place for this but it must be fully automatic and i have stuff to on my day job, so, i will be cut-and-paste from my tumple notes onto this blog for another while:

Extending “Object.prototype kills kittens”, and other insights from John Resig(of jQuery fame) in his one hour Google TechTalk on “Best Practices in Javascript Library Design”. Very worthwhile viewing.

“This so-called kid is already almost 40 and has never had a real job.”, says Ronald Reagan about George W. Busch.

Marvel Superheros always win because they are better connected. Huh? At least that’s what they found in a social-web study ot the fictional Marvel Universe.

watch the video to see 5,000 Web apps in 3 1/2 minutes, but don’t blink. You will miss 4 start-ups with a single eye blink, hmm, not a bad rate though.

find a getaway on the map of internet black holes, maledives included. (via vallewag)

internet black holes

deconstructive SL architecture against the usual boredom on China Tracy’s blog. Watch out for falling debris!

flight404 does not get lost in bad taste and continues to put up cool videos.

read more

tumbling along the lines of anarchaia.org

this is not a blog post! it's been ages since i've blogged. at least it feels like. and more things happend, then i can possible blog about. i crashed my disk, i switched my laptop(two events, not one), and i went on holidays, twice.

of course there's always lots of planning of things to come on my side, but just to not loose those things in rain, i try chris' tumblelog format and just dump my unsorted eclectic mix of random samplings onto you, hopefully for your viewing pleasure. be my guest, have fun.

got asked by my CEO about our .NET experience but didn’t dare to send her this.

Flickr opens up to even more flashy crossdomain scripting with new crossdomain.xml file (http://static.flickr.com/crossdomain.xml)

Erlang-Facebook bridge code is now open for use, sounds like a bizarre marriage though.

Go off limits in Second Life, camera-wise at least. Use Opt-Ctrl-D(or Ctrl-Alt-D on PC) to show/enable the client menu entry and than Disable Camera Constraints(Cmd-Opt-C)

da is was dran: You don’t need a plan, you need skills and a problem. 1. Don’t start out with big plans. 2. Work on skills. 3. Apply your skills to a problem. Most plans are rubbish. Business plans are fake.

What a weird programming can that be that allows you to say things like: COSA is inherently non-algorithmic?

The video dress he developed for Hussein Chalayan was made of a few thousands chips all powered with a battery whose life lasted 2 minutes, like, where to go when you have no limits.

”I’m more interested in simply having a better eavesdropping experience on Twitter”. YEAH! proposing a twitter ad-hoc grouping schema.

After years of waiting the Havoc Physics Engine upgrade for Seconde Life is in reach. Good news, but having Mono replacing the LSL script execution? dubious.

Generate Quantum random a bits to produce random numbers at a rate of 36 million per second. For those who needs it.

Implement binary search in erlang and learn that doing the right thing in the wrong language turns out to be totally inefficient.

2008 SXSW Interactive Panel Picker, so at least i can browse the panel proposal of the SXSW festival. I would love to go there.

Susan Wu got it all right on social media and twitter where: We’re now ..moving into a client agnostic(Flash, Ajax, Facebook-centric, or MySpace-centric) era, where clients … are marketing channels… ..creating standards around specific user behaviors .. is the key asset ..A client should be an interpretation of a user group’s needs within a specific context(by ‘context’, I mean the 14-18 year old females on Facebook have a different community ethos than the 14-18 year old females on MySpace…).

In July, Scientific American crowned Mattel’s BarbieGirls.com the “fastest-growing virtual world ever”. Are we living in a barbie world?

----------------
Now playing: Zolotu - ess01__Zolotu__Two_Years_of_ElectroSound_mix.mp3
via FoxyTunes

read more

my first foto-foo to flickr upload




my first foto-foo to flickr upload

Originally uploaded by joe.sixpack.

yep, here we go. It took a while but our chief operating foto-foo wizard steffen did finally approve the flickr upload service in http://foto-foo.com. No such big surprise here, beacause Flickr was in the text of the site ever since, it simply was not online yet. And now it is

I hope to find lots and lots of free wifi at garda see in italia so i upload directly from the waterfront. Yes, I go on vacation for two weeks.

happy foto-foo'ing

read more

Get yourself organized with GTD, from the shell

Get yourself organized with GTD, from the shell

promoting GTD might be surprising from me because it’s kind of contradicting myself. I have great doubts in any tool claiming to solve the problem for you, but this time it might be different. Peter Copper drove my attention to EarGTD of Gregory Brown.

EarGTD is a console application for David Allen’s GTD method. It is a good example for a Ruby outside of Rails application which still uses the ORM powers of ActiveRecord.

The commandline is where i spend lots my productive time and having a framework for database driven applications could be boost. Actually i already made myself a google console app(g-module alpha gem), example:

$ google :count earGTD
158 results for ["eargtd"]
$ google :lucky earGTD 

gives you google result on the commandline.

Adding ActiveResource/database access to my console apps is a big help for me. “In the Beginning was the Command Line” and i start seeing a pattern here that i like.

Extending GTD

I will now go using EarGTD to find out how it works for me but there are 3 things would like to add i find time to do so:

1. keeping removed tasks in the database and add a done flag to them. This could make gtd a good tools for automated reports.

2. make a distributed group version where a bunch of people works on the same dataset. This coule make it a good sync tool for a group of coders.

3. to project and context add a person attribute, but that is actually only a sub-feature of the previous point.

4. must have: twitter connection!

install notes

Me beeing to lazy to gem’ify it just added:

require "fileutils"
FileUtils.cd(File.dirname(__FILE__))
$:.unshift "."

to the earGTP script itself and made an

alias gtd=~/EarGTD/earGTD

so i now can call it form anywhere. e nu?

gtd + "write better posts [blog] <writing>"

cheers

read more

daily desasters: blackberry

I bought a D-Link DWL-2100AP access point yesterday. Only to find out, after setup!, that it is was broken. It could be configured but returned to factory defaults all by himself after every two minutes. Not useful.

Blackberry ExceptionToday my beloved modile mail device came up with a new suprise. "...message queue overflow", pardon? What is it this thing was designed for? god gracious, it's Java, how hard can it be to simply check for such things?

Basically approx. 15 times per week i got kicked off the connected world by the blackberry messing up and reporting a SIM card error. Of course silently. It goes like, you are slowly calming down for just not beeing phoned or mail-molested for the last 2 hours only to find out later that actually hell broke loose and it was only that just nobody could reach you because of your blackberry got gobbled up by SIM card errors.

Notice: All this troubles are strictly mine. These gadgets are functioning perferctly once they are out of my reach, nothing can be blamed on them or their makers.

p.s.: switch-off / switch-on brings blackberry back to normal. 37 seconds only, and free of charge, it even helps you train your pin code memory

Technorati Tags: , , , ,

read more

"It's all changing so fast today!?" Bullshit!

a1.jpgoh boy, i can hardly tell how much am i annoyed by this unknowing, uninspired, boring minds which walk around me sometimes and are thrillingly giving me their first hand reports of the insights they think they gather at the fast and vivid edge of the dazzling world of the internet and its hyperspeeded and -connected  communities. no links here! you know, twitter and friends.

and now, to the left(or above), you see, "The Answer Machine", published in 1964(my birthyear by the while), on paper i guess. What is it? It is describing Google(link! try it!)

pause...

it took a fu....g 40+ years to build it. that was fast man, yep, see me gasping. and now? what's next? The original star trek aired in 1966, which means there are a couple of things to come yet.

please read "Google as predicted in 1964" for the full story where Web Owls combined the sources to match google with its vision.

and then, please, go back keep going to build the stuff which is already there according to some.

oh, and one more thing. What a relief to work with whom im working with and that i could put an end to consulting with the clients which where so..., hmm, to harsh a word to say here, but you know.

Technorati Tags: , ,

read more

interpolate hex color vectors in one line of ruby

which color lies halfway inbetween #ff00ff and #00ff00 you ask?

One line of ruby code can interolate two color vectors like they are usually found inside css files, like: body{background: #ff00ff; color: #00ff00}.

%w{ff00ff 00ff00}.map{|a|a.scan(/../).map{|b|b.hex}}.inject{|c,d|(0...c.size).each{|i|c[i]+=d[i]};c}.map{|e|"%02x"%(e>>1)}.join

@UPDATE:

#121 character solution by schmidt(http://www.nach-vorne.de)
%w{ff00ff 00ff00}.map{|a|a.scan(/../).map{|b|b.hex}}.inject{|c,d|c.size.times{|i|c[i]+=d[i]};c}.map{|e|"%0x"%(e>>1)}.join

Answer -> 0x7f7f7f. sure, there must be a shorter version. Can you show it to me?

next step: color animations and gradients and HSR colorspace conversions mayby.

have fun

Technorati Tags: , , , , , ,

read more

assert_raises_kind_of with Module error tagging

this sunny sunday afternoon i was putting together some utility code(stupid me!) to do some remote blogging from the shell or the cosy inside of my vim editing session. This for some later time, but while i was going on with my test-driven/test first development i hit the problem of missing a test to check for the base class of my errors. I wanted to:

assert_raise(StandardError) { @blog.find_post(:postid => 123456789) }

to generally check for any kind of trouble bubbling up but it was not working as expected. Instead i got nasty Failure reports:

1) Failure:
test_find_post(XMLRPCTest) [mylib.rb:83]:
<StandardError> exception expected but was
Class: <XMLRPC::FaultException>
Message: <"Sorry, no such post.">

I suspected XMLRPCTest::FaultException to maybe not beeing derived from StandardError, but that was not the case. A look in the ruby documentation and the ruby-talk thread confirmed:

assert_raise(*args) {|| ...} is checking for the EXCACT exception type only!

How was it for you?

On the ruby-talk mailing list there was a little discussion about this topic and i pretty much agree with all the +1 sayers on the list. Edwin Fine propsed adding his own assert_raise_s method the Assertions class. You easily get into muddy waters with opening standard ruby classes for some duck-typing but reverting to:

assert_raise(XMLRPC::FaultException) { @blog.find_post(:postid => 123456789) }

was not an option. This would expose way to much implementation detail to this very high level coding of the very first tests so early in the project. So I was using the source, as yoda said and found another solution for me.

Modules as base class arguments to assert_raises

After i read Edwin’s post i checked the source for def
assert_raise
and learned that this method is actually checking for some kind of exception base class. The argument to assert_raise is an array of exception types. assert_raise does partition this types into Class and Module.

The assertion_raise checks for Class types is exact, but the Module is not(can’t be). They are checked with an is_a? condition - there can’t be no object instance of module type or course.

My original test therefor simply fails because StandardError is not a Module but a class. The XMLRPC::FaultException implementation is not mine but it is bubbling through my lib which i’m testing and this is precisly the condition i want to write tests for.

“Module tagged” exceptions and assert_raises_kind_of

First i wrote an empty tagging module for lib to tag all Errors and exceptions coming from my lib:

module MyLib
    module Error; end
end

Now i can tag all exception from some deeper laying code with my Error module:

begin
    ...
rescue => e # errors bubbling from the underworld
        # tag it
    class << e; include MyLib::Error; end 
        # throw it
    raise e
end

Voila, and now i can write:

assert_raise(BlogMist::Error) { @blog.find_post(:postid => 123456789) }

and finally got what i wanted but you’re milage may vary. Basically this gives me a way to create some kind of folksonomy of errors coming from my library. Don’t know yet where this might lead me, but hey, ruby is the best for protoyping and playing around!

Don’t be lazy!

Testing for error base classes instead of pricise error handling is not to make you lazy! As discussed on the forum thread it is to start with tests early on and being able to refine error condition testing over time.

Technorati tag: , , , ,

read more

bookmarking deluxe with AddThis!

What techcrunch is doing can't be wrong, not totally wrong at least i hope. So lets see, AddThis! seems to finally solve the bookmarking issue once and for all by just taking it out of your hands completly and leaving the freedom of choice in the hand of the readers. It took me less than 2 minutes to click through their "Get your free widget" site and i had my personal bookmark button(test page).

And than, you get statistics pages for free, (techcrunchs, not mine though, sigh):
...and as you can see from the charts, AddThis does RSS Feeds too.

Is this all? Nope, there is more, of course a AddThis! Wordpress Plugin is available as well. But you go figure that out for yourself, i guess.

have(a lot of) fun
cheers

ps.: and(thx to wp plugin) try the bookmark button under this article ;-)

Technorati Tags: , , ,

read more

sharper images for foto-foo

form the "competition drives innovation" department i would like to tell you about the foto-foo (of my company) update for sharper images, but see for yourself!

nobody blogged about us(sigh), but with cameroid and phozi two other sites similar to us got mentioned on techcrunch and elsewhere. And as competition drives..., you know, we are glad to have them around. To keep us motivated. So we got sharper images for today, lets see whats next? Ideas?

Technorati Tags: , , , , , , ,

read more

Beef up your RSS2 template for consumption with the Google Feed API Slide Show Control

There can be no doubt about it, RSS Feeds became the connecting backplane for the internet. Like Yahoo Pipes a while ago, the new Google Feed API is building its functionallity on top off standartized RSS feeds. For the feeds API, just providing a standardized RSS feed is enough to offer you a free ride. And a jolly good ride it is. The Slide Show Control is rich in features. Most major photo banks are supported and the actual controls allows for fine grained control of timings and sizes. The funny thing is, the API pretty much covers most of what we discussed at work on the friday before the weekend the API was released.

For the public timeline of our all-online-in-browser-photobooth-application foto-foo at /i-d media we wanted to add RSS feeds from which to build slide show like applications displaying a constant stream of fresh images. I decided to give it try and found this RSS2 rxml template on dzone.com which i filled with my data.

Various things happend, but no image was to be seen and the browser stalled a couple of times. First thing i found out was, “standard” Feed actually means it uses the Media RSS extension. This means the feed header has include the Media RSS namespace:

        xmlns:media="http://search.yahoo.com/mrss/" 
xmlns:dc="http://purl.org/dc/elements/1.1/">

which in rxml looks like:

xml.rss "version" => "2.0", 
"xmlns:dc" => "http://purl.org/dc/elements/1.1/",
"xmlns:media" => "http://search.yahoo.com/mrss/" do

Next thing to do is adding a <media:group> to all the feed items:

      <media:group>
<media:title>"#{img.title}"</media:title>
<media:content type="#{img.type}" medium="image" url="#{img.url}"/>
<media:credit role="#{img.credit.role">#{img.credit.txt}</media:credit>
<media:description type="plain">"#{img.desc}"</media:description>
<media:keywords>"#{img.keywords}"</media:keywords>
<media:thumbnail
width="#{img.thumbnail.width" height="#{img.thumbnail.height"
url="#{img.thumbnail.url}"/>
</media:group>

your media group attributes/elements may vary but there is one nasty surprise lurking which you should be aware of. The Feeds API seems to ignore the actual image URL and chooses the the thumbnail URL instead: no thumbnail, no slideshow! This was kind of driving me mad not beeing able to spot the difference between my none working feed and the working one.

Bonus: feed reader compliance

handling images in RSS feeds is part of the vaguely borderline of rich media feeds where things like the Media RSS extension are actually made for. For Atom it seems media handling is defined a little better but the Feed API depends on RSS2. All this variations are hard to grok for some feedreaders but I wanted to have my foto-foo RSS stream also in my Reader, but the did just not show up. I checked out Riding with robots feed which brings fresh views from outer space directly to my desk. It turns out that they just include a little encode HTML in the decscription tag:

<description>&lt;a href='#{img.link}'&gt;&lt;img src='#{img.url}'/&gt;&lt;/a&gt;</description>

and voila, your Slide Show complient rss image feed works equally well in your normal feed reader.

i know this is all rough and dirty, but it works for me, might help you a bit, and i dont like to drown in spec reading for to long today. Find my RSS2 rxml code snippet on dzone and mess it up in any way you like.

have fun.

Technorati Tags: , , , , , ,

read more

"A new version of Second Life is available"

doesn't that sound strange? The recent hype around all things virtual drove down normality of these ephemeral worlds to a new level. A lot is in the name, and readings like these constant flow of update messages from Linden Labs reminds me to the the supermarket announcer coming from the speakers above my head with: "please switch to another channel. this reality is not longer supported", while i was just pondering about my weekend shoppings. Or was it? Just kidding, I'm still part of the real world, am I? Distant associations to forgotten utopian views from the past. "Welt am Draht", welcome on the next level.

Technorati Tags: , , ,

read more

rug-b -> ruby user group berlin has new home

as you all might warm up already for railsconf europe in berlin later this year i would like to let you know that the berlin user group got its own wiki now. After Florian Gersdorf did restart the meetings earlier this year we are happy to host the rug-b meeting every first thursday of the month at our place in /i-d media. And now, thanks to Benjamin Krause, we got our own place at http://www.rug-b.com/ where we set up the instiki wiki for a better overview on the berlin activities. Have a look over there for agenda, locations, timeings, whatsoever.

For all of our conference guest in berlin in september the rug-b started brainstorming about some special events and/or try to arrange for some benefits with berlin infrastructure. So come to Berlin, hope to see you soon!

I'm in no way linked to O'Reilly or the conference but in any case i'm quite willing to help making the berlin rails conference an even better one than the last. So when you have question or ideas for some socializing events around the rug-b or berlin just drop me a note.

UPDATE: wer des englischen nicht maechtig ist, dem soll versichert sein das "we are happy to host the rug-b meeting" nicht bedeutet, dass ich oder mein arbeitgeber der Veranstalter sind, sondern nur der Gastgeber. Scheinbar hat das der Kommentator nicht ganz mitbekommen. Ansprechpartner sind oben also genannt, aber wer will kann selbstverstaendlich auch mich ansprechen. Oder lieber anonym kommentieren, ganz wie es beliebt.

cheers.

Technorati Tags: , , , , ,

read more

Fortran for Playstations...?

actually not quite, but i could not skip these. IBM released a Fortran compiler for the Cell processor, thank you. Cell is the CPU which superpowers the PS3 for those amongst you how didn't knew already. Now i jump and dig up my old medical volumen renderer code and might port it the the Playstation3! But as an old fellow of mine always said: "you can write bad fortran in any language", and i prefer ruby nowerdays.

Technorati Tags: , , , ,

read more

DHH snapshot with foto-foo

what's there more left to say? As steffen already posted on our company/product blog he managed to shoot the man himself! David(of ruby on rails fame) in front of our foto-foo webcam snapshot solution. This is best practice par excellence, right there, on location, from there to internet with no inbetween. That is foto-foo: no files, no upload, no hazzle, and, Thanks! David! You are the man, have a good time over there at the rails conf in portland and hope to see you all back in berlin in september!

cheers

Technorati Tags: ,
,
,

read more

SecondLife jetzt auch in 3D

thank good it's friday, grossartige nachrichten fuer alle die schon immer wussten was polygone und triangle meshes sind aber sich in SecondLife wie mit auf dem Ruecken verbundenen Armen gefuehlt haben muessen. Seien wir mal ehrlich, bei aller Begeisterung darueben das 3D virtuelle Welten nun scheinbar tatsaechlich Einzug in den Mainstream halten werden(siehe Gardner Report: 80 Percent of Active Internet Users Will Have A ``Second Life''), so sind wir doch alle einig das das in-world modelling von SecondLife schon immer ganz grosser Mist war. Nur jemand der vollkommen unbedarft in Sachen 3D Content Produktion war konnte wahrscheinlich ertragen sich auf das steinzeitliche Niveau des Linden Lab clients zu begeben. Alle dich kenne sind dazu auf jeden Fall viel zu verwoehnt gewesen.

Aber das koennte nun alles ganz anders werden. Angeblogged durch den wie immer gut informierten Mark Wallace werde ich mir nun sofort Sculpted Prims ansehen. Durch einen wuesten Hack, so wie das auf den ersten Blick aussieht, haben Linden Labs wohl ohne grosse vorankuendigung, quasi durch die kalte Kueche die tuer aufgemacht zu 3D Conten Produktion in vollkommen neuen dimensionen. Vieleicht war ihnen das ein bisschen peinlich? Sie verwenden die Farbkanaele aus den Texturen um darin die X,Y,Z Raumkoordinaten der Sculpted Objekte zu koodieren. Grossartig! Genau richtig so. Paul Haeberli, Miterfinder von (Open)GL hat gesagt: "hack means usefull, dirty hack means extremly useful", genau so seh ich das auch. Und besonders amusiert war ich natuerlich auch weil mein Freund Henrik und ich, genau daselbe gamacht haben als wir in unseren Radiosity Renderer das Problem hatten dringend notwendige Informationen irgentwie in ein falsch designtes System zu quetschen das dafuer einfach nicht vorgesehen war. Aber das war bevor es das internet gab :-( daher auch mal keine links dazu. Vielicht finde ich noch ein paar Dias,

anyhow, LindenLabs rulez, yep, Ja ich denke die sind auf einem guten Weg. Klar, der client, das backend, das system, alles mist, alles schlecht designed. Egal! creativity thrieves best under contraints! BETAMAX!

und nun zurueck ans geraet.

Technorati Tags: , , ,

read more

Update: Your Joost invites are about to expire

Update: Do NOT trigger the password reset!

username: first-come-first-serve-to-sofasportlers@sebrink.de
password: super-secret

Update: someone reset the password(don't do it!):

URL: https://www.joost.com/
username: first-come-first-serve-to-sofasportlers@sebrink.de
password: supersecret

have fun

Joost update:

In response to your request we have reset your password.Click the link below to create a new password:


            
read more

Your Joost invites are about to expire, Huh?

the joost folks start spamming to rush us its beta testers into sending invitations.

So hurry - time's running out :)

To use your tokens, go to https://www.joost.com/betatest/invitations.html before March 22 and fill in the form. We'll send out your invitation straight away.

ok, they asked for it and who am i to obey? To speed up and simplify things a bit i send an invitation to myself and give it to you. Here you get the beefy part of their invitation reply, go use it in what ever way you're please to do:

To get started, please visit https://www.joost.com/betatest/ and login with your invitation beta access details:

Username: first-come-first-serve-to-sofasportlers@sebrink.de (Case sensitive!)
Password: 96ffdayj (Case sensitive!)

After you've logged in, visit https://www.joost.com/betatest/settings/ to choose your own password.

first come first serve, but i suggest the first one to choose a password just uses jyadff69 than all the followers can use the same account. you decide.

the mac client is actually quite nice and according to their own rumours a massive openening up and lots of invitation ar just around the corner.

have fun

Technorati Tags: , , , , ,

read more

ruby user group berlin: JRuby, YARV/1.9, omdb.de and more

We had our 2nd ruby users group berlin meeting yesterday with two speakers and the demo of the yet to be released omdb.org project.

First was Tim Lossen giving a good round-up of the JRuby developments. Not of much interest to me because i have’t touched Java in a while. There was a common understanding that JRuby is a good thing and will pave Rubys way into the enterprise world, and with Sun now as official backing partner, JRuby is heading for a 1.0 release this summer for Javaworld confererence. You can already run JRuby based Rails applications inside you IBM Websphere Application server, Yeah! But can you run a Rails application with JRuby from inside a Java applet on your client browser? Hm, interesting idea, we couldn’t answer that yesterday.

Next was the talk by Murphy about the state of the ruby 1.9 release. Murphy mainly used Mauricio Fernandez eigenclass for reference and gave a really great overview around the three main themes of this topic: Roadmap, New and changed features and performance. Everybody loves the hand drawn roadmap image(which i can’t find now) and while a Ruby2.0 release being something from a far utopian future, we might see a 1.9 release later this year. I’m actually not following the 1.9 developments but became inspired to check again. Enumerators for examples reminded me to my STL/C++ years, just now without the template pains :-)
Interessting were his comments on performance. Tim already showed some charts which related the JRuby to some other implementations and Murphy made some own benchmarks which were pretty much in line with Tims data. The general information is that 1.9(==YARV) is a couple of times faster, ranging from 3 to 10 times faster. BUT! and that is a big but, Murphy did report that on the real life applications he tested, the speed-up was close to insignificant for various applications. This is because the the performance tuning in 1.9 seems to be focussing on benchmark relevant stuff. And real life application are hardly build from benchmark functionallity. This sounds like, been there, seen that before. History(benchmark tweaking) is repeating itself. For me it doesn’t matter. When others can do 4000 requests/second, ruby/rails is definitly fast enough for me.

Finally Benjamin Krause showcased his upcoming OMDB project(tech blog, development version, live). OMDB is a IMDb in wikipedia style with a creative commons licence. 16501 People(see comment) 16000 movies are already in the database and once it will open up, everybody can extend it. Thats a cool idea conceptually and what he showed technically was nothing less than the equivalent to an “Full House” in poker. For example the subsecond async response times for fetching actors from a huge database which were made possible by his ferret magic. impressive.

And this also led to the agenda for the next meeting where Benjamin will give a talk about ferret on Rails. Everybody wanted to see more of it. Also we will have a talk by Adam about AmzonWebServices: S3 and Rails on EC2 . I’m looking forward to it. And about the open mic section, i’m pretty sure we are releasing our foto-foo into the wild.

And for you to have some fun, we plan to record the talks next time and put them up as podcasts to fit with your online consumption habits. Murphy and Tim also promised to upload their talks for online viewing (to the wiki i guess).

looks like the ruby users group berlin is consolidating.

Technorati Tags: , , , , , , , ,

read more

albino peacock




albino peacock

Originally uploaded by joe.sixpack.

I've never seen an albino peacock. Impressing even more without color.

(3nd try) testing the flickr email foto upload and post to blog feature. connected times indeed.

read more

shameless self promotion: Diz/Kiz video mashup released

after having Diz/Kiz online for some weeks now, for the very first time we let it outside. There never was a Beta, and now it is officially out of the gates. My connection? I work for the company which build it: productdevelpment @ /i-d media(full flash!).

Diz/Kiz ist a ruby-on-rails webapp where you can diz or kiz videos pulled in from other sites. With just 2 mouseclicks(the second click is only for confirmation :-) and our bookmarklet you can publish videos yourself.  Diz/Kiz was supposed to give you some fun minutes with a simple "am I hot or not" mechanik.

The spanish speaking genbeta blog has something to say about us:

DizKiz, subiendo y votando vídeos

Cyberfrancis

Diz/KizDiz/kiz es una herramienta online que permite a los usuarios subir los vídeos, por ahora soportando los sistemas de Google Vídeos, Youtube y t-community, añadiéndo simplemente los enlaces de las páginas de los vídeos que desean subir.

and web2null from Germany:

dizkizDizKiz: Video-Voting
DizKiz ist ein kleines Mashup von I-D Media, auf dem Videos von YouTube, GoogleVideo etc. vorgestellt und mit “Kiz” (gut) oder “Diz” (schlecht) bewertet werden können. Das ganze ist auch als Widget auf der eigenen Homepage nutzbar.

It is nice seeing your work beeing picked up by people around the globe. There was no Beta and Diz/Kiz was a proof-of-concept for us. Now we keep on going :-) Usabilitywise we need to fix some things and we will add  functionallity. Don't worry, Diz/Kiz will never become a full featured video portal but remains a simple one-step-stop for your video fun. But more widgets would be ok, wouldn't it?

And for you beeing a ruby coder maybe, I promise some API to embed Diz/Kiz widgets on your own site. Diz/Kiz was designed from the groud up to embed video data from external storage providers and this is how it was build. Right now we are working on opening up this interface to the web.

next stop: foto-foo! This time we do a Beta, don't forget to sign up!

Technorati Tags: , , , ,

read more

Falsches Spiel mit echtem Geld im SecondLife

Ich mag Zahlen und es freut mich immer auf Leute zu stossen die vernünftig damit um gehen können. In "The Linden dollar Game" weist Randolph Harrison die unseriöse Grundlage der SecondLife Ökonomie nach. Mit der ganzen Kühle des anlytischen Arguments erklärt er warum SecondLife keine Ökonomie sondern ein HYIP Schema ist, in Deutschland besser bekannt unter dem Namen Piloten- oder Pyramidenspiel. Solch provokanten Thesen verhallen natürlich nicht ungehört in der Blogsphere.

Und dann hat er auch noch so schöne Charts. Die mag ich ja fast noch lieber als nackte Zahlen. Entscheidet selbst, schon ohne jedwede weitere Information zu dem Chart auf der linken Seite wird doch sofort ersichtlich, dass dort wohl irgentwas auseinander läuft. Anspruch und Realität, Traum und Wirklichkeit. Die technische Analyse der Börsenkurse erscheint mir im allgemeinen nur wenig vertrauensbildender als das betrachten der Permanenzen beim Roulette. In diesem Fall allerdings machen ein paar technische Betrachtungen durchaus Sinn.

Es gibt viele Dinge die man aktuell zu SL sagen könnte, aber das erscheint mir müssig. Das wird sich schon von alleine klären und mir gefiehlen eben die schönen Infographiken.

Bermerkenswert ist vieleicht noch die Tatsache, dass laut Valleywag erst die "Herrison was apperently forced to abandon his research" Aktvitäten die Grund dafür waren das er motiviert wurde die SL Ökonomie nach allen Regeln der Zunft ausseinanderzunehmen. Ist ja auch eine Menge Arbeit. Deswegen auch hier noch ein paar charts:

Take note of the consistent decline in hours per total unique player, barely breaking even from mid 2005 until only last month (January 2007) in an amazing reversal. Historical trends predict future months will return to hours per unique player declines.

Growth, Growth, Growth
Linden has boasted unbelievable growth numbers, even proudly displaying them on their Second Life home page. In fact, Clay Shirky didn't believe the numbers, and challenged them in myriad forums (earning him fierce sometimes slanderous attacks from the Second Life faithful).

Don't mess with the Blogosphere! möchte man da doch raten (learn more).

SecondLife ist also ein Pilotenspiel, 'so what?' Mich jedenfalls stört das nicht. Genausewenig wie ich Geld in Pyramidenspiele stecke werde ich meine Geld im SL verlieren. Virtuall Reality gibt es ja nun schon recht lange, aber nie hat es so richtig gezündet. Diesmal bin ich der Meinung, 3D ist gekommen ist um zu bleiben. Der Hype wird verschwinden, vieleicht auch LindenLabs und SL, aber das 3D Bewusstsein scheint mir endgültig angekommen zu sein.

more to come

Technorati Tags: , , ,

read more

my (old) laptop got stolen

the one i used before this macbook. R51 IBM Thinkpad with 2GB Ram, gentoo installed and a "ususal suspect" 21C3 sticker on back of the screen. not nice. i would not mind a miracle to bring it back. It was up and running and connected to the network when it got stolen on friday, 16. feb 07.

read more

bubble bursting version numbers

With all due respect,

New versioning, 0.12.2 —> 2.2.0:

is the most ridiculous version number jump i have seen i a while. Yahoo just released a new version of their Yahoo! UI Library and pull this little marketing trick.

This is even more extreme than in the good old new economy times when marketing geniuses where pushing their fail-ups towards their IPOs.

Don't get me wrong, YUI is a fine piece of work and the yuiblog a delighting source of inspiration. But no marketing blah-blah whatsoever will make me understand the reasoning behind going from below 1.0 to 2.2 in a single step. Get real, start at 1 please.

cheers

Technorati Tags: , , , ,

read more

May the revolution begin: Joost Mac OSX beta released

When i blogged last year about Joost the iptv project formerly know as "The Venice Project", Falko rightfully commented the contradiction of a revolution not beeing started from a Mac.

So, here they are: Joost Mac OSX Beta released. After a 30MBytes download you drop it on your disk and start right away. It just plain f...ing works, "...behaving very much like a Mac application" like they promise with the release notes.

You get full screen video with ok quality, transparent control overlays and widgets. It is beta  a and you can see. The font rendering is not perfect and the app crashed on exit, but that is not something holding you back from using it and is honestly mentioned in the release notes. The content seems to be limited though and the widgets just cover the bare basics: video rating, chat, IM(jabber/gmail) and a clock(sounds like hours of fun). They must open up on the widgets(are they already? Don't know) and improve contentwise, but that seems feasible to me.

A cute little detail in the end. When switching off you got to see the video collapsing and see a dimishing white little spot like from the cathode ray tubes. Only a little gfx coder gimmick or might it be a little wink toward collapsing Tubes?

Before you ask, while Joost seems to be open now, the Mac OSX still needs your beta registration, and i don't have invitation codes left.

have fun 

Technorati Tags: , , , , ,

read more

The future is complex

You know,

Prediction is very difficult, especially if it's about the future.
--Nils Bohr, Nobel laureate in Physics

agreed, but one thing is certain: it becomes way more complex than it used to be.

I recently just skimmed this 2007 Web Predictions and by quickly counting every major trend they identified in their post i figured out that I can't keep up with the progress any more. I can dive into any given topic deep enough to cope with it, but not more all of them at once. Personally I'm unable to  accumulate information that fast anymore, and maybe it  is also impossible for a company. You can always hire people, but besides the difficulty of getting the right ones, you start loosing focus. Beeing "a jack in all trades, master in none" is no viable solution.

I recognize the pattern though. In the beginning, when i got started with the messy world of computers, i could keep up to date with all and every topic. Heck, there was only one (offline) magazine! "Byte", and much later than came, heise C't for the german market.

After just  a decade down the road, the web came and and funny enough, the earliest online reference of Bye magazine covers 3D graphics for everyone. That was in '96 and now 10 years later i come back doing stuff with SecondLife. History is repeating itself? Or is it just me running around in circles?

have fun

Technorati Tags: , , , ,

read more

Next big language predicted(kind of)

In his blog Steve Yegg rants abouts the next big language and has some nice things to say about ruby as well. He equals refusing to use Ruby with "refusing to use an electric car because there's no place to put the gasoline".

... it lacks automated refactoring tools. Ruby doesn't actually need them in the way Java does...

...But programmers are a stubborn bunch, and to win them over you have to give them what they think they want.

and right he is i think. Steve does not spoill his inside knowledge about what the next big language will be, but his commenters are concluding pretty much on it to be ECMA script. Well, may be it so, that will not be for some time.

Meanwhile from the sneaking ruby through the system department we got more and more reports from the field like the one from my colleague. In a nice guerilla tactics approach they contaminated the working place with making ruby an integral part of the ant based build system. And this in an all java only development group. congrats comrades.

Technorati Tags: , ,

read more

On top of (second) life

In a kind of talking-to-myself action i dated my companies avatar in the romantic scenery setting of a sundown on Ideas Island(not yet open to the public). Its him(AyDee Kubrick) sitting on top me. My face is streamed live from my macbook, it is not a still image. It still surprises me actually when these things do work like advertised. This is all about testing the live streaming setup which we want to apply on the island. And i can tell you, there are lurking surprises all the way. With the real stream setup(streaming me is not the plan:-) i have a mysterious lag  between voice and image for example. It is not about lip sync, it is something like 1-2 minutes! I have no idea yet where the image stream gets delayed for such long. A couple of seconds i could understand, but a whole minute? The other still unsolved mystery to me is how to setup the darwin streaming server for serving incoming RTSP request on port 80. The manuals say where and how to enable it, but the server fails to comply to my commands. A nice little catch22 you get: The  server fails serving port 80 without root permissions but when you give it root permission it fails to run at all due to missing configurations. Googl'ing this you get tons of stupid forum post about rebooting your mac to make it work and similar smart proposals. We got it working now with IP tables.

Now that our island emerged from the deep waters of californian virtuallity we are just a couple of days away from opening our space there. I hope for  a  lekker housewarming party next week. creating tomorrow and stay tuned! 

Technorati Tags:

read more

crontab'ed linden mania with hpricot

a kind of buzzwordy post title, i know, but hey, at least i kept the unavoidable second life out of it. For reasons far from being thrilling enough to tell here i pulled the latest hpricot release and made my server pull the latest stats from linden labs frontpage every 6 hours. I'm kind of sad I could not get it up before the (ridiculous)3293499 residents mark, but once SL will hit the billion, it will still look like a pioneer. So here is the beef: I made a cronjob screenscraping secondlife's stats from their frontpage. A nice graph from the data i will put up soon hopefuly. And stay tuned for the raw data feed if you like. Lets see, a week i guess, before it becomes a nice exponential curve.

1. get value elements from the stats div

v = Hpricot(open("http://www.secondlife.com")).search("#SL_stats strong")

2. make it digestible

v.map { |e| e.innerText.gsub(/[$,]/, "").to_i }

3. dump the stuff

# is left as an exercise to the reade

and mine you'll get right here.

read more

Sofameilen!!!???

Belohn´ Dich beim Fernsehen

... mit Sofameilen, dem ersten TV-Bonussystem das laufend während des Fernsehens gesammelt werden kann. Beantworten sie Fragen während sie fernsehen auf dem Display der Betty-Fernbedienung und erhöhen sie ständig ihren Kontostand.

arerrgh, das kann ich aus verstaendlichen gruenden natuerlich nicht unerwaehnt lassen. Ich habe schon lange aufgehoert mich ueber diese leute vom fernsehn zu wundern. 

read more

I dropped YAML in favour of plain ruby for config files

write: h = { :a => 123, :b => "321", 'c' => 0.123 }

instead of

---
 :a: 123
 c: 0.123
 :b: "321"

like a lot of people i put config values in hashes and used YAML to read them from file. Take database.yml in Rails for example. YAML feels like coder nirvana when you have suffered from XML pain in Java land for many years. YAML syntax is so much nicer. But to express ruby values, plain ruby syntax for me is even more straight forward. To check syntax I always had to try and err before use with YAML.dump {:foo=>"bar"}.

I thought about just writing plain ruby and eval it. Problem is, eval avoids polluting the global namespace and the variables you set in an evaled file will not show up anywhere. Using global variables(yuck), constants, @@ variables or similar constructs would defy the purpose of getting a nice syntax for the user.

Then I got the idea of using the introspecitve powers of ruby to the retrieve the local variables which got defined on evaling a file from the binding. I wrote a function which does exactly this. From a known binding it extracts the loaded variables afterwards. The values are then injected into a hash an returned.

def load_values_from_file(filepath)
    b = binding
    v1 = eval "local_variables", b
    eval IO.read(filepath), b
    v2 = eval "local_variables", b
    (v2 - v1).inject({}) do |c, key|
        c[key.to_sym] = eval "#{key}", b
        c
    end
end

and my future config files will be plain ruby, which I know better than YAML syntax.

Technorati Tags: , ,

read more

update: iPhone look alikes

I joked a little about the absurd prospect of expecting the asian companies to patiently wait for Apple to launch their iPhone. But in a kind of actio-reactio reversed surprising quantum world move the response was there before the action.

LG in conjunction with PRADA did launch a slick touchscreen device and PRADA might turn out out to be the perfect partner to get it right with successfully locking on to the luxury target group.

Don't get me wrong, I still believe in the iPhone becoming a huge success. There is a reason why there is hardly any mention of the software. Software makes all the difference nowerdays. I personally definitly won't fuddling around with yet another stupid gadget. And it doesn't have multitouch either.

read more

rails 1.2.1 got "Mehrwertsteuererhoehung"

Sorry for the german in the title, but i just stumbled over the coincidence of the Rails 1.2.1 release lines of code increased conforming to the german VAT update we got this januar. VAT is now 19% in Germany and ruby came from 6246 to 7428 lines of ruby code. That is an 18.924111431316 percent increase, which rounds up quite nicely to 19%. I checked against the last pre-1.2 release .

With 7428 lines of code rails still stays a lithe and lissom young framework. All the best for the REST.

cheers

Technorati Tags: , , ,

read more

Stupid devices: The Blackberry

Oh yeah, i also became one of those blackberry users. It is a really good on-the-go traveling email device. When last year i was wasting days and days on airports while traveling back and forth to lots of meetings the blackberry gave me back some productivity. Because of the blackberry i could spend the precious time at my desk with getting real things done instead of wading through dozens of mails.

But, the blackberry is a phone, and an organizer, and therefore contains all kinds of smartphone application. And there is an alarm-clock wake-up application you might think. No, it is not. It is an annoyance. First, the meeting calendar can't be used for wake up because it only pops up a little reminder windows and makes a mellow 'ping'. Not for me to wake up from. And then there is the Alarm clock. Easily to define your wake up time with the thumbweel and you set you daily alarm. Yep, thats right, a daily alarm, every day. There is no option of only setting up a single alarm for the next morning but only a daily alarm for all days to come. This works perfect for getting you out of the bed the next day. I am kind of sleepy then and normally don't like to bother to unconfigure the alarm clock.  And  usually i forget that also for the rest of the day. And this it what kicks me out of bed the day after. The forgotten alarm clock remembers its daily duties and kicks in on 6:45 saturday morning. I don't like having electronics next to my bed and so i can't even switch it off from there. stupid device, great email road warrior though.

good morning

Technorati Tags: , ,

read more

The lunatics have taken over the asylum

in Monschau, Germany(the middle of nowhere), "The Web´s most ambitious RUBY ON RAILS Startup" started looking for some fellow ruby coder to kick-off their project. But there is a twist, a big one:

MUST BE BORN BETWEEN JULY 24 AND AUGUST 22 OR NOVEMBER 23 AND DECEMBER 19 AND BE BETWEEN 18 AND 99 YEARS YOUNG

And seemingly the search with increasing despair:

15th Jan: Startup looking for web designer/programmer/co-founder

16th Jan: The Web´s most ambitious RUBY ON RAILS Startup based in Monschau Germany is looking for a Ruby on Rails guru to lead our development team as Co-founder and Co-CEO

and latest to date:

18th Jan: The most ambitious Ruby on Rails project calls for a Rail’s guru to lead team as Co-founder

RoR, TDD, AJAX!, scalable websites, whatever you like, you name it you get it, its all there and you can become "importend" part and development team lead, Co-founder even!

"NOVEMBER 23 AND DECEMBER 19 ", sigh, and so another bright future fades away for me, 16th Nov, misssed by a few days, phew.

oh, and some more requirements are piling up, you won't make it without

a deep love for humanity and the relentless will to facilitate happiness and emotional fulfilment for all.

yep, ok for me!, but as i said, wrong dates. The position is "Full-Time", but please keep in mind:

There is no immediate compensation for the first few months. Once the first round of financing is finalized then we will begin paying a salary.

so better bring you own, for the "entrepreneurial" spirit i guess. Me beeing you would contact Gabriella von Schadewitz right away in case i would be more lucky with the stars.

have fun

and oh, don't forget to check their website:  http://simplyooh.com

read more

Happy birthday Camping

%w[active_support markaby tempfile uri].map{|l|require l}
module Camping;Apps=[];C=self;S=IO.read(__FILE__).sub(/S=I.+$/,'')
P="Camping Problem!";module Helpers;def R(c,*g);p,h=/(.+?)/,g.grep(Hash)
(g-=h).inject(c.urls.find{|x|x.scan(p).size==g.size}.dup){|s,a|s.sub p,C.
escape((a[a.class.primary_key]rescue a))}+(h.any?? "?"+h[0].map{|x|x.map{|z|C.
escape z}*"="}*"&": "")end;def URL c='/',*a;c=R(c,*a)if c.respond_to?:urls
c=self/c;c="//"+@env.HTTP_HOST+c if c[/^//];URI(c)end;def/p;p[/^//]?@root+p :
p end;def errors_for o;ul.errors{o.errors.each_full{|x|li x}}if o.errors.any?end
end;module Base;include Helpers;attr_accessor:input,:cookies,:env,:headers,:body,
:status,:root;def method_missing*a,&b;a.shift if a[0]==:render;m=Mab.new {},self
s=m.capture{send(*a,&b)};s=m.capture{send(:layout){s}} if /^_/!~a[0].to_s and m.
respond_to?:layout;s end;def r s,b,h={};@status=s;@headers.merge!h;@body=b end
def redirect*a;r 302,'','Location'=>URL(*a)end;Z="rn";def to_a;[@status,@body,
@headers]end;def initialize r,e,m;e=H[e.to_hash];@status,@method,@env,@headers,
@root=200,m.downcase,e,{'Content-Type'=>"text/html"},e.SCRIPT_NAME.sub(//$/,'')
@k=C.kp e.HTTP_COOKIE;q=C.qsp e.QUERY_STRING;@in=r;if%r|Amultipart/form-.*boun
dary="?([^";,]+)|n.match e.CONTENT_TYPE;b=/(?:r?n|A)#{Regexp::quote("--#$1"
)}(?:--)?r$/;until@in.eof?;fh=H[];for l in@in;case l;when Z;break
when/^Content-D.+?: form-data;/;fh.u H[*$'.scan(/(?:s(w+)="([^"]+)")/).flatten]
when/^Content-Type: (.+?)(r$|Z)/m;fh[:type]=$1;end;end;fn=fh[:name];o=if
fh[:filename];o=fh[:tempfile]=Tempfile.new(:C);o.binmode;else;fh=""end;while l=@in.
read(16384);if l=~b;o<<$`.chomp;@in.seek(-$'.size,IO::SEEK_CUR);break;end;o<
end;C.qsp(fn,'&;',fh,q) if fn;fh[:tempfile].rewind if fh.is_a?H;end;elsif@method==
"post";q.u C.qsp(@in.read)end;@cookies,@input=@k.dup,q.dup end;def service*a
@body=send(@method,*a)if respond_to?@method;@headers["Set-Cookie"]=@cookies.map{
|k,v|"#{k}=#{C.escape(v)}; path=#{self/'/'}"if v!=@k[k]}-[nil];self end;def to_s
a=[];@headers.map{|k,v|[*v].map{|x|a<<"#{k}: #{x}"}};"Status: #{@status}#{Z+a*Z+
Z*2+@body}"end;end;X=module Controllers;@r=[];class<
r=@r;Class.new{meta_def(:urls){u};meta_def(:inherited){|x|r<
end;constants.map{|c|k=const_get(c);k.send:include,C,Base,Models;r[0,0]=k if
!r.include?k;k.meta_def(:urls){["/#{c.downcase}"]}if !k.respond_to?:urls}end;def
D p;r.map{|k|k.urls.map{|x|return k,$~[1..-1]if p=~/^#{x}/?$/}};[NotFound,[p]]end
end;class NotFound
class ServerError
} #{e.message}:";ul{e.backtrace.each{|bt|li(bt)}}}.to_s)end end;self;end;class<<
self;def goes m;eval S.gsub(/Camping/,m.to_s).gsub("Apps=[]","Camping::Apps<<
self"),TOPLEVEL_BINDING;end;def escape s;s.to_s.gsub(/[^ w.-]+/n){'%'+($&.
unpack('H2'*$&.size)*'%').upcase}.tr(' ','+')end;def un s;s.tr('+',' ').gsub(
/%([da-f]{2})/in){[$1].pack('H*')}end;def qsp q,d='&;',y=nil,z=H[];m=proc{|_,o,n|o.u(
n,&m)rescue([*o]<split('=',2);h.u k.split(/[][]+/).reverse.inject(y||v){|x,i|H[i,x]},&m}end;def
kp s;c=qsp(s,';,')end;def run r=$stdin,e=ENV;X.M;k,a=X.D un("/#{e[
'PATH_INFO']}".gsub(//+/,'/'));k.new(r,e,(m=e['REQUEST_METHOD']||"GET")).Y.
service *a;rescue Object=>x;X::ServerError.new(r,e,'get').service(k,m,x)end
def method_missing m,c,*a;X.M;k=X.const_get(c).new(StringIO.new,H['HTTP_HOST',
'','SCRIPT_NAME','','HTTP_COOKIE',''],m.to_s);H.new(a.pop).each{|e,f|k.send(
"#{e}=",f)}if Hash===a[-1];k.service *a;end;end;module Views;include X,Helpers
end;module Models;autoload:Base,'camping/db';def Y;self;end;end;class Mab<
Markaby::Builder;include Views;def tag!*g,&b;h=g[-1];[:href,:action,:src].map{
|a|(h[a]=self/h[a])rescue 0};super end end;H=HashWithIndifferentAccess;class H
def method_missing m,*a;m.to_s=~/=$/?self[$`]=a[0]:a==[]?self[m]:raise(
NoMethodError,"#{m}")end;alias_method:u,:regular_update;end end

Whys amazing camping web framework in just 4k lines of code celebrates its first birthday! All the best wishes and a little reminder to me to do more with less.

read more

one browser to rule tham all?

huch, da hat mich dion aber erschreckt.

in a surprise move, they have created Microsoft Firefox 2007 that mimics a lot of features from Mozilla Firefox.MS Firefox

soweit sind wir also schon. Nach dem ersten Schreck allerdings und einem kurzen Blick über die Seite sortiert sich die Welt jedoch schnell wieder ins gewohnte.

have fun

Technorati Tags: , , ,

read more

Aus für Amateure

Die Niederländer legen die Latte mächtig hoch in Sachen Webenwicklung. Peter Paul Koch berichtet über das neue Accessebilty Gesetz in Holland. Auf Quirksmode schreibt er schon seit Jahren für geordnetet Verhältnisse im Sachen CSS, HTML und Javascript. Er war einer der ersten, bei dem ich systematische Lösungen gefunden habe, die sich wohltuend von den cut-copy-paste Orgien der unzähligen Cargo-Cult Adepten abhob.

Das Gesetz ist zwar schon seit letztem Jahr in Kraft, aber wer liest sowas denn schon? Wie kann man auch ahnen das die Leute was von ihrem Handwerk verstehen und Regeln wie die folgenden festlegen:

  • valid HTML 4.01 or XHTML 1.0
  • CSS and semantic HTML and separation of structure and presentation
  • progressive enhancement
  • the W3C DOM (instead of the old Microsoft document.all)
  • meaningful values of class and id
  • meaningful alt attributes on all images

Und das gilt wohlgemerkt:

As of 1 September last year, every website built for a government agency is required by law to use [die so festgelegten Regeln]

, und von denen gibt es 125! In der Konsequenz bedeutet das die Vertreibung der Armateure aus dem Geschaeft mit öffentlichen Webseiten. Zum anderen aber macht es die Produktion teurer und Regierungen sind auch nur Kunden die am Ende immer Geld sparen wollen/müssen. Da per Gesetz aber alle bestehenden Regierungsseiten bis 2011 entsprechend angepasst werden müssen entsteht auf jeden Fall ein lukrativer Markt. Auf diese Weise werden qualifizierte Leute gefördert und der gesamten Branche ein Qualifizierungsanreiz aller erster Güte gegeben. Und Qualität ist ja noch immer das beste Geschäft, PPK auf jeden Fall scheint sich zu freuen. Volkswirtschaftlich ist Qualifikation in Zeiten der Globalisierung sicher eine probates Mittel für ein an natürlichen Rohstoffen ja so reiches Land wie Holland. Davon sollte man lernen.

Und nun, wer Traute hat, der kann sich ja mal selbst versuchen. Ich weiss nicht welcher Affe mich geritten hat die full flash version der neuen Homepage meines Arbeitgebers zu checken, aber hey! Die 80% können sich sehen lassen, dass ist deutlich besser als die 58% für das Posting auf Ajaxian zu dem Artikel in Quirksmode, und das ist ja schliesslich das Zentralorgan des Web2.0.

My personal favorite: "meaningful values of class and id", ganz, ganz großartig, nachdem ich heute mal wieder rätsend darüber saß wofür wohl "pb-id" stehen mag.

cheers

Technorati Tags: ,

read more

plazes

http://beta.plazes.com:80/publish/badge.swf?nocache=1168959820

umzüge im vernetzten zeitalter machen doch immer wieder netzwerkstress. von 1.2 nach 3.2 auf die galerie gezogen und schon fehlt telefon, WLAN, Strom. Und auch mit richtigem LAN Kabel schafft ich es nicht mich ins netz zu finden über eine nicht gepatchte dose. Und so aktualisiere ich dann einfach mal meinen lange verweisten Plazes account zu testzwecken.

have fun

read more

Auf dem Weg nach oben

Leider habe ich die letzte PechaKucha verpassen müssen. Diese wunderbare Veranstaltungsform entspricht perfekt dem Aufmerksamkeitsdefizietsproblem moderner Internet- und Medienschaffender:

Kein Vortrag dauert länger als 20 mal 20 Sekunden (also 6:40 Minuten), Langweile kommt nicht auf.

In unvorhersehbar erratischer Weise allerdings gelangen zum Glück immer wieder doch noch Aufzeichnungen einzelner Vorträge im RSS Feed der Veranstallter. Ich weiss nicht ob es ein Highlight des Abends war, aber ich freu mich schon demnächst irgentwo dem intelligenten Aufzug, den Thorsten Rauser vorstellt, zu begegnen, aber  sehen und hören sie selbst.

Technorati Tags: , ,

read more

Bloomstreet, StudiVZ vom Medienkonzern

"Geschafft..."

soeben erreicht mich die Bestätigung meiner Betaanmeldung bei Bloomstreet. Bloomstreet? Häh? Was ist das denn? Tja, weiss ich auch noch nicht, die Mail war leider bloß die Ankündigung des baldigen Versandes der Betaeinladungen. Seltsames Verfahren, aber nun gut. Ausserdem fällt auf, dass die aktuelle Landingpage aus einem einzigen grossen Bild besteht und danach das ganze auch sehr nach Flash-only aussieht. Nicht mehr so ganz zeitgmemäß würde ich sagen.

 

Wer sich jetzt fragt, warum das überhaupt erwähnenswert ist, dem sei verraten, daß Bloomberg eine heimlich still und leise Aktion der Bertelsmann Group ist. Zwei Deutsche Konzerne also, mit unterschiedlichem Ansatz. Holtzbrink entscheidet sich nach amerikanischem Vorbild die größte(?) deutsche Studentcommunity einfach zu kaufen, wogegen Bertelsmann es sich lieber selber macht. Mal sehen welcher Ansatz erfolgreich ist. Die konspirative Opening Party in einer Berliner Abbruchvilla kurz vor Weihnachten jedenfalls fiel auf jeden Fall schonmal als plumpe Simulation trashclublastiger Westberliner Wendezeiten auf, die anwesende Jugend wird es nicht erkannt  und/oder gestöhrt haben. Wenn aber die Website eine ebensolche blutleere  Kopie amerikanischer und sonstiger Vorbilder wird, dann sind Zweifel angebracht. Mein Tipp daher: StudiVZ schlägt Bloomberg 4:1 (steigt aber trotzdem in die zweite Liga ab).

cheers

Technorati Tags: , , ,

read more

no more thing

Tja, vorbei, aus, Ende. Ganz großer Mist. Die legendäre "one more thing" Keynote Show von Steven Jobs ist zu einer Vorankündigungsveranstaltung zusammengeschrumpft. Das seit Jahren anorakelte Telefon wird tatsächlich gebaut, und wird wahrscheinlich ganz, ganz toll. Schön, ich ich freu mich, aber das ist alles Zukunft, Juni 2007! Und das auch nur in den USA! In Europa muss ich bis Weihnachten warten. Und Asien? 2008! In Worten zweitausendundacht! Die werden sicher geduldig warten bis dahin, dass kennen wir ja so nicht anders aus Asien.

Was soll das? Was kommt als nächstes? Die Ankündigung von Holoprojektoren für die CES 2011? Das iPhone ist klasse, keine Frage, aber ich brauche jetzt ein neues Telefon und nicht Weihnachten, das war nämlich gerade erst, hey Leute, wir haben gerade mal den 9. Januar! Schade. Wenn Steve so weiter macht, wird er den Vertrauensvorsprung, den sich Apple nach langen Jahren mühsam wieder aufgebaut hat, auch wieder verlieren. Genau wie sie damals erst alles erfunden haben und dann aber die Welt/den Markt für 10 Jahre dem Evil Empire überlassen musten. Das möchte ich wirklich nicht nochmals erleben, war ´ne finstere Zeit.

http://www.freeimagehosting.net/uploads/bc78cac59d.jpg
Und was mache ich jetzt 10 Monate ohne Telefon? Keine Ahnung, Fernsehn gucken vieleicht? Hm, auch erst ab Februar(und das dann auch noch bei einem Umrechnungskurs von 1:1 von Doller zu Euro). Müssen wir uns in der Zwischenzeit eben mit Zune Späßchen die Zeit vertreiben, zum Glück ist diesbzüglich verlass auf Onkel Bill.

have fun

read more

Widgets, widgets, widgets everywhere!

http://www.majikwidget.com/mw/api/poll1/poll1.php?id=061412e4a03c02f9902576ec55ebbe77
Widgets sind der Hit der Stunde. Das hat der ein oder andere ja sicher schon mitbekommen(wenn er die letzten monate nicht unter einem Stein verbracht hat). Nachdem die versprochene Wiederverwendbarkeit der Java Enterprise Architekturen ja nicht wirklich eingetreten ist und nun die Rebellen schon den Sieg über den zur Rettung gerufenen WS Todestern erklären, findet alldieweil die Vision der verteilten Systeme unterdessen ihre Erfüllung im unternehmerischen Pragmatismus der Web2.0 Mash-ups. Diese wiederum konstituieren sich zusehends über generische, hier-klicken-kein-coding Angeboten von immer mehr Widget Anbietern. Sogar eine eigene Konferenz zum Thema wurde schon abgehalten.

Obige Umfrage hab ich mir auf http://www.majikwidget.com in zwei minuten zusammengeklickt, inklusive Registrierung. Dort bekommt man eine handvoll Widgets, und pro Verwendung verlangen sie einen Credit, wobei die 25 Gratiscredits aus der Registrierung erstmal reichen werden. 24 Polls to go!

Blogpimping leichtgemacht! Die Web1.x Lieferanten und ihre Consultants werden nicht mehr gebraucht.

Und wer nun noch weiss von wem die Frage stammt bekommt einen extra-bonus.

Technorati Tags: , , ,

read more

ruby for system adminstrators

From the "Weichet von mir Dämonen!" department here is a little helper i found for the would-be ruby savvy system adminstraters. The Daemons ruby gem by Thomas Uehlinger is a very welcomed replacment for the shell and perl scripting mess you do for half of the day.

Daemons provides: .... scripts  to be run as a daemon and to be controlled by simple start/stop/restart commands.

... run blocks of ruby code and control these processes from the main application.

...offers many advanced features like exception backtracing and logging and monitoring

...and automatic restarting of your processes if they crash.

I spread the word here as part of my ruby evangelizing efforts to bring light into your scripting hell and as maybe your first step onto the path of ruby enlightenment.

have fun

read more

Hohe Kopfprämie für Studies

Wie auf Spiegel Online nachzulesen war: Holtzbrinck schnappt sich StudiVZ. Die Mergers & Aquisition Manie hat Deutschland erreicht. Für angebliche 100Millionen Euro hat die Samwer Brüder gewuppte Firma den Besitzter gewechselt. Herzlichen Glückwunsch kann man da nur sagen, man sollte meinen die Samwers bräuchten eigentlich kein Geld mehr nach Alando, Ebay, Samba und nun StudieVZ. Und auch unsere amerikanischen Freunde berichten schon, über unser kleines german facebook Derivat, natürlich nicht unbegleitet von hämischen Kommentaren. Wie immer sind meine Informtionen natürlich bloße Spekulation und ich weiss nichts und kenne niemanden der was weiss. Lassen wir uns doch mal kurz ein bisschen mit den Grundrechenarten spielen. Wenn ich es recht entsinne hat Rupert Murdoch 900Millionen Dollar für MySpace bezahlt. Das sind ca. 688.284 Million Euro. Bei 60.000.000 Millionen gesignten Usern zu dem Zeitpunkt sind das 12 Euro pro Nase. Wenn ich nun die 1 Millioen User von StudieVZ mit den 100 Millionen von Holzbrink verrechne komme ich auf 100 Euro pro Student. Daraus ergibt sich das ein deutscher Student 8.3 mal mehr wert ist als eine MySpace Nase. Unter diesem Gesichtspunkt war die 900Millionen USD MySpace Aquisition ein echtes Schnäppchen, wer hätte das gedacht, besser gut geklaut als schlecht erfunden möchte man da sagen. Diese deutschen Medienmanager sind doch echte Blicker. Man erinnert sich, schon die Napster Transaktion war ja ein totaler Knaller, für insgesammt kaum 100 Millionen USD konnte sich damals Bertelsman die totale Kontrolle über den ehemals disruptiven Tauschbörsen Markteinsteiger sichern. Und dank "Bertelsmann plans to introduce ... the Bing Crosby Jewish Holiday Collection, Barry Manilow Sings the Blues, Kenny G. meets P. Diddy, Glenn Miller Verve Pipe, and Deepak Chopra Non-Stop Dancing among others. " war der der deal sicher auch schon kurze Zeit später amortisiert. Und demächst an dieser Stelle rechnen wir dann mal das unvermeidliche YouTube durch und wenn ich Langeweile habe versuch ich mal die VoiceStreams Übernahme der Deutschen Telekom nachzuvollziehen. Ich habe wage in Erinnerung das Ron Sommer damals 12.000 DM aka 6000 Euro pro Kopf gezahlt hat. Das kann doch gar nicht sein? oder?

UPDATE: ich konnt's nicht lassen und hab mal nachgesehen, VoiceStream/Telekom Übernahme: 23,9 Milliarden USD bei 2.3 Millioen Kunden macht eine Kopfprämie von 10400 USD, aka 8000 Euro. Was sagt uns das? Eindeutig, in Sachen Übernahme ist noch reichlich Luft nach oben. Also fleissig rein in die Web2.0 Aktien!

Technorati Tags: , , , , , ,

read more

guerilla marketing & rails apps

tres chick! Genau das richtige für die dunkle jahreszeit, guerilla marketing par excellence, ansonsten carpe noctem! Wobei es aber im winter wahrscheinlich wenig spass macht mit offenem fenster und beamer im anschlag durch die nacht zu cruisen.

und der rails bezug an diesem post? gefunden hab ich das in dem stylischen a-better-tomorrow design shop aus d´dorf und dieser wiederum wurde von unser aller geliebten HappyCodr site gefeatured, wo wir ja auch schon unseren hostnamr lanciert hatten. Tja, so schliesst sich der Kreis.

Technorati Tags: , , , , , , , , ,

read more

webdav-exporter ruby gem: serve files from the commandline

I finally got around packing my WebDAV experiments into a gem to put it on rubyforge for easy deployments. sudo gem install webdav-exporter should do.

What it does is to install an executable ruby script by which you can start-up a webdav fileserver right from your comandline with no need for further setup.

WARNING: this is super alpha! tested on my macbook only!

webdav-exporter.rb ~/taxi

for example will export the taxi folder in your home directory. The webdav-exporter gem is build on top or Tatsuki Sugiura WEBrick WebDAV handler gem(gem install webrick-webdav), which in turn builds on top of the ruby build-in webrick server.

I tricked the webdav servlet into claiming DAV2 protocol compliance. This was to make writable mounts on my mac possible. With DAV1 and no LOCK method implementation my mac osx refused to mount the exported files as writable, and without writable mounts the whole webdav is not worth the efforts of course.


def do_OPTIONS(req, res)
super
res["DAV"] = "1,2"
end

def do_LOCK(req, res)
res.body << "<XXX-#{Time.now.to_s}/>"
end

you see what i mean with tricked, but this is actually quite ok for 1. it works on my macbook, 2. it gets me rid of the annoying errors when not having a do_LOCK method at all and 3. the webdav rails plugin does actually not do any better concerning the LOCK implementation.

So, no need starting a rails app or talk to your sysad for easy filesharing any more. The server does HTTPS only and for the default 443 port you need root permissions. For the SSL stuff all credits go to Gabriele Marrone with whom i did discuss the issue on the ruby forum.

WebDAV was such a nice idea but i guess it was the greed in the cooperate computer industry which rendered this technology practically useless. Hardly any two implementations are compatible. If you wonder why i tricked the implementation instead of implementing it, go check out the WebDAV RFC, it is a disaster and i could not make sense of it(was not willing to waste my time on it). We are dwarfs standing on the shoulder of giants and with this gem i could make it working for me. If it works for you tell me, it not tell me also.

happy new year and have a lot of fun

read more

FEUER!

Balkon in Flammen, ist aber gerade nochmal gutgegangen. Ich war vor auf die Ecke gegangen und als ich gegen 00:30 heimschlenderte seh ich schon die begeisterte Menschenmenge zu den lodernden Flammen aufblicken. Vorderhaus, 4.Stock, meine Wohnung, keine Frage. Ich sprinte also in 2.1 sekunden von der strasse in den 4 Stock wo auch schon die freundlichen Nachbarn, auf dem Stuhl stehend, sich in unqualifizierten Einbruchsversuchen durch das Oberlicht der Wohungstür diletieren. Amateure! Die Tür war offen! Aber nun denn, hineingeeilt und siehe da, auf dem Balkon hat die seit Jahren vor sich hin gammelnde Bastmatte der Funkenflug ereillt. Alles halb so wild. In hohen Bogen die lodernde Matte raus auf die Strasse(toller Effekt, und kein Auto getroffen!), noch einen Eimer Wasser über die kokelnden Reste und schon war der Spuck vorüber. Der Harz IV Empfänger mit dem Pitbull aus dem 2. Stock hat in der Zwischenzeit klammheimlich seine beiden grossen Körbe vor dem Haus mit den Überresten des  aus osteuropäischer Produktion stammenden imperialen Feuerwerks gefüllt und die Strasse vor dem Haus samt seiner schier unerschöpflichen Raketenreserven geräumt. So hat eben alles seine zwei Seiten. War ich doch mit meinen deutschen Böllern und Raketen auch effektmässig voll im Abseits, so hat es doch gewisse sicherheitstechnische Vorteile wenn die Raketen erst über Haushöhe detonieren und wenn die bengalischen Feuer und Vulkane sich auf bescheidene 3-4 Meter beschränken anstatt in unkontrolliert chaotischer Farbenpracht die Hausfassade vom ersten bis zum 6 Stock in eine Symphonie des Feuers zu tauchen. In diesem Sinne, frohes neues!

have fun

read more

AllOfMp3: die spinnen die Amis

Au fein, endlich eine gelegenheit mal was über mein geliebtes AllOfMp3.com zu bloggen. Der lawsuit über 1.65 fantastillionen wird wohl auch dem letzten ahnunglosen AllOfMp3 bekannt machen. Klever. Ansonsten ist meine Liebe für AllOfMp3 ntürlich nur platonisch, ich habe niemals für 10cent einzele Songs oder für ca 1 Euro ganze Albem bei AllOfMp3 gekauft. Und ich bin natürlich auch nicht gegen den Schutz berechtigter Interessen der Musiker, aber wenn die gierigen Sesselfurzer von den Majorlabels anfangen 11jährige, die ihre U2 CD kopieren weil sie einfach keine 29,95Euro dafür ausgeben können, wie kriminelle zu behandeln, dann sind meine Sympathien sicher nicht auf ihrere Seite. Die Antwort der Russen? Kurz zusammengefasst: Alles Legal hier! Hehe, diese Chuzpe hat schon was, das gefällt mir. Klar, das ist ein Rückzugsgefecht, schon hat President Putin versprochen den Laden dicht zu machen. Aber die Jungs sind ja nicht blöd, mit allTunes fangen sie schon mal an den nächsten download shop aufzumachen, denn wer weiss schon wie lange sich allofmp3 noch halten kann, und man braucht ja schliesslich alternativen, hehe. Haben sie ja schliesslich gelernt vom westen, ist ja nun keine Planwirtschaft mehr.

Ein wirklich sehr lesenswerter Einblick in die Machenschaften der Musikindustrie in diesem Zusammenhang ist der Artikel von Courtney Love: Courtney does the math. Das hilft bei sortieren der persönlichen Sympathien ungemein.

have fun

follow-up: Piracy, the better choice(tm), ein kleiner abriss über die gier der industrie und wie sie damit doch immer mehr auf die schnautze fliegen.

If you try and purchase any of this (HD DRM) content, you descend into a DRM nightmare of incompatibility and legal mires. Your monitor will not work with your Blu-Ray drive because your PC decided that a wobble bit was set wrong. You just pissed away $6K on a player, media center PC and HD TV for nothing, you lose.

oh man, ist der sauer.

hands up everyone who personally knows someone who got sued by the RIAA. Now, hands up everyone who knows someone who downloaded music or movies. Any guesses which one is bigger? Piracy, the better choice (tm).

2007, der Anfang vom Ende von DRM?

read more

Steini lässt die Kuh fliegen

und für alle denen noch nicht klar ist, das es gar keine schlechte idee ist mal auf dem 23. Chaos Computer Club Kongress im Berlin Convention Center vorbeizuschauen hab ich hier mal als kleines Appetithäppchen ein video gepostet, in dem steini die kuh fliegen lässt. Die kuh in diesem fall ist eine kommerzielle Drone die er im saal schön über den köpfen kreisen lässt und von dort live den videofeed des  so überwachten publikums auf dem screen projeziert. Das Ding ist schlecht zu sehen, ich weiss, aber das ist ja auch sinn der sache. Das ist nur einer von vielen Vortraegen und workshops an diesen drei tagen. Ein bisschen kann man ihm ja auch auf den tonspur lauschen. Fazit ist, dass in ca. 1 Jahr die community eine  selbstbausatz für ca. < 1000 Euro auf die Strasse bringen kann. Schöne vorstellung auch wie 5 Dieter Bohlen dronen gegen 15 paparazzi dronen kämpfen, oder was mann z.B. machen kann wenn man ein quasi unsichtbares flugrät hat, das vollkommen selbständig(GPS geleitet, keine fernsteuerung notwendig, Google EArth koordinaten reichen :-) mit 20-30KM/h ca. 500Gramm fuer eine halbe Stunde durch die gegen fliegt.

read more

Hilarious bad landing page for what?

I have no idea what Zombo.com stands for but "everything is possible". Words just don't do justice to its briliance. "The unattainable is unknown to zombo.com", trust me, go listen to it and experience a true 2.0 marketing masterpiece. Hint: don't look for interaction, just listen to it.

cheers

read more

Geschichte wiederholt sich?

Als der nerd der ich ja nunmal schon seit meiner Schulzeit bin, hätte ich nie gedacht, dass mein alter Quälgeist von Geschichtslehrer einmal rechbehalten würde mit seiner Meinung, dass Geschichte durchaus interessant seinen könne. Auf techcrunch war ein post  über die aktuellen Auswuechse der bubble2.0 im valley:

New startup LicketyShip, the Kozmo-like ecommerce service that delivers goods within a couple of hours of ordering

Wir erinnern uns, Kozmo ging ja damals in der ersten bubble schneller belly-up als der crash selber. Diesen Teil der Geschichte meine ich aber gar nicht, sondern Berlin(old europe), ca. 1900. Dank meines quälenden Geschichts-, Literaturlehrers und dem Studium Theodor Fontanes weiss ich um die Errungenschaften der kaiserlichen Berliner Postbetriebe. Bis zu 6mal täglich wurde im Berlin der Kaiserzeit die Post ausgetragen. Wengleich wohl auch keine nerdigen Wii Weihnachtsgeschenkskonsolen darunter gewesen seien mögen.

Dieser Komfort ist natuerlich im Zeitalter der Privatisierung und Globalisierung vorbeit. Ich bin ja schon froh wenn mich meine Paketsendungen überhaupt zu Hause erreichen. Im 4. Stock wohnend scheinen die Packetboten eigentümlicherweise in 4 von 5 Fällen meine Klingel nicht zu finden und begnügen sich stattdessen mit dem zurücklassen einer Abholbenachrichtigung.

Und was sagt uns das jetzt? Vieleicht erkenne ich ja ein Muster beim nächsten Mal, mit bubble3.0. Und das jetzt bloss keiner auf die Idee kommt, ich fände früher alles besser, nichts dergleichen.

frohes fest and
cherrio

read more

VMware auf intel macs

yep, nu auch VMware auf mein intel mac mit dem:

Fusion - Desktop Virtualization for Mac Beta Program

und los geht's, nen bisschen download und schon installiert sich das, mit ohne alles generve, wie man das mag auf dem mac. und  dann gleich weiter zu den appliances:

With Fusion you can now run any of the over 360 virtual appliances available at the Virtual Appliance Marketplace on your Mac.

Die Gentoo Xen Appliance die eine Gentoo VM in einer VMWare auf einen Gentoo system auf meinem Mac installiert(oder so aehnlich) war mir dann doch etwas zu viel. Ich hab mich dann probehalber lieber fuer die Ubuntu 6.10 server appliance etnschieden welche auf magische weise(7-zip?) auf 63MB zusammengefaltet ist. Tja, da wird der sysad blass, wenn ich nu nen server brauche, dann knipps ich einfach meine VM an. Glueckliche zeiten stehen bevor, es weihnachtet sehr

und schon laeuft der hase, mal sehen wie gut. Zumindest mault die Beta beim starten schonmal rum, dass sie im Debug mode liefe, und man das nicht das nicht aendern koenne(in der Beta) und wie gaaanz furchtbar langsam das doch waere. So richtig trauen tuen sie ihrem Teil also wohl noch nicht, aber das nimmt man doch gerne in Kauf in der Hoffnung den sysad abschalten zu koennen.

cheers

read more

Welcome to The Venice Project

i got my the-venice-project beta test player download credentials on saturday. That is two days ago and i didn't even found time to check it out. When i can believe what the papers say, i'm part of a 6000 people strong elite! Yeah! I feel so special now. Just in case you don't now, The Venice Project

combines the best things about television with the social power of the internet

and is the next project of the guys which brought to us KaZaa and Skype before. So it might be worth checking out. And i really would like to do so, but it is windows only, argh. so i have to wait for being in the office on tuesday. today on monday, what an irony, i had no chance, because i spend the day in zagreb to visit the strategic IPTV project of two major german companies in the croation market. What can i say about the trip? Nothing i've seen will be part of the future of television/iptiv, that is for sure. Nothing worth talking about, only a nice picture i made, which i post tomorrow when i found the cam cable.

And The Venice Project? "So please don't give the application to anybody else..", ok, not quite unusual, but "..., or even show it to them"???

What the hell they are thinking? Do they expect me to become part of their secret armee just by signing up for a beta? And "We hope you enjoy helping us create the future of TV", yeah, sure you do.

"It's very early days for us, and we want to make sure that the right people see the right software, at the right time"

I can't decide. Do they want to make fun of me? Is this honest marketing? Do they now want me to keep the player secret or just want to force the opposite? I will check the player on tuesday and let you know, and who knows? Maybe i even post my very personalized beta venice player beta test account here. And that would be my very first cliffhanger now.

cheers
 

read more

Please give a warm welcome to hostnamr!

Hi, we, new product development @ idmedia, just released i-dmedia's first public facing ruby on rails webapplication: hostnamr

Please give it a warm welcome to hostnamr :: making names to remember!

It is a tongue-in-cheek kind of page which implements a somewhat old and simple concept. The basic idea came up more than 10 years ago between me and a friend of mine, steffen meschat at art+com (now with google, blog?). When you have a set of syllables with vocals you can just combine them in any order and will always get speakable words. This works for italian operas and hiragana for example, so why not for generating hostnames? And when the cool dude downstairs from the office was joking about web2.0 hostnaming a while ago i remembered that old idea and decided to put it up for a test. Following a new the trend i spotted, we made it a "one page web application" and put it live. Now it is our start into the new venture of webapplications build on rubyonrails! when you like it, stay tuned for future updates.

have fun

ps.: We are hiring! looking for rubyonrails developers which want to make a difference. In case of interest, drop me a note: dluesebrink at idmedia com.
creating tomorrow

read more

It's always the people, not the institution

Whenever you have worked with large institution or company, employed or in a project, you will know the pattern. Sooner or later you hit the wall, a barrier beyond getting your project moving becomes close to impossible, a kind of e=mc2 acceleration limit for managment. You might started in good hope for having your special project being started differently than all the failing others before. You maybe had a great kick-off and the backing from top-ranking executives, a clear goal and an common understanding on the strategic importance. And then, sooner or later, progress gets slower and slower. There are a lots of reasons for it and even in the smallest group, project management is far from being a self-burner. Project managment seems to be closer to an black art and I don't want to talk about it here, way to boring(read the book, it works). I only want to comment this single argument you will always hear:

This company can't do any better, it is in the companies genes, it is slow because it is so big and the processes are the reason for the project is only dragging along.

Wrong! Utterly wrong! This are just excuses from the people who are in charge and actually step back from  taking the personal risk to make accountable, risky decisions on their own. Oh, yeah, they always claim they would if they could. No! They are in their positions at that company for a reason, choosing the comfortable cooperate payments structure with fixed bonus payments and a lifetime security plan over the entrepreneurial approach. Don't get me wrong here, this is perfectly ok. For them. But please, don't bother me with claiming it is not their fault. Please say something, like:

ok, i think you got the right idea here, but overall it is risky and it could fail and when i approve it and it fails it will be bad for my career. And when it succeeds it will just give me a just a minor boost beyond the raise i will get anyhow just for beeing here and keeping things calm and not getting my boss in trouble.

yes, it is in the company genes, YOU ARE the company genes. Blame yourself for not getting off the ground. Start mutating and evolve or keep going and go bust. farewell to extinction, and

have fun

ps.: if you are a telco interested in communities and social software go check out: webjam,
"Myspace
plus netvibes on steroids"
Pete
Cashmore, Mashable

read more

Gaensehautmaessig gut

Eels - Hey Man Now You're Really Living

Zufallsfund am morgen beim ersten kaffee. Wenn ich sowas sehe denke ich manchmal ich sollte sofort alle krativen aktivitaeten einstellen, die scheinbare leichtigkeit mit der manche menschen solche kleinode aus dem nichts erschaffen macht mich demuetig. mit dem song zum aufstehn kann das kein schlechter tag mehr werden.

read more

Heros of the past: Bjarne Stroustrup

C++ prgrogrammers are supposed to be adults and need a minimum of nannyism
Bjarne Stroustrup, Design and Evolution of the C++ Programming language

i stumbled upon an interview with bjarne stroutstrup today, heros of my past. oh well, what can i say, such a long time ago. i started C++ in 1988 by reading the C++ annotated reference manual. We just called it the ARM. For years it was a bible for me. Page 168 a bizarre feature was described: "call by representation", not by value, not by reference, by representation.  Anyone still knows what that is? Today i'm ruby promoter by all my heart but back then i could hardly imagine ever having a need for somethings else than C++. well, things are changing. Bjarne talks a lot about freedom of choice, maybe that is what got me so hooked on C++ back than. And now for all their difference, i see the similarities of C++ and Ruby. We allways said, you can shoot yourself into the foot with C++ easily, and this actually means freedom for me. Beeing able to do really bad to yourself, beeing in charge and having responsibilty for what you are doing. No nannyism. period. Ruby is the same. You can really mess up things, easily. So, young programmers of the world, go out and have a lock on what the old guys wrote, Design and Evolution of the C++ Programming Language is a great book. Understanding why things are there for a reason makes you a better programmer in any language.

read more

ruby in multimedia: a state of affairs

ruby is the shiny new jewel for attacking all and any programming task. But it a has a dirty secret. No, i'm not talking performance here. I don't usally care for performance, it hardly doesn't matter with fast machines and low volume traffic. I'm talking about multimedia and thereby i basically mean gfx. A while ago i already checked for OpenGL bindings and in the past i played with rmovie, scruffy, gruffy and RMagick. RMagick is kind of mature and it got the job done. Still, I don't get to like RMagick though, that might be to the fact i did(and learned) coding on SGI machines for way to long(sigh), more than 10 years. There i got used to/hooked on the basic idea of integrated multimedia environments. SGI was way ahead at their times and it was a pleasure to join them on their ride, while it lasted(most of the time, but that is another story, for the history books maybe -> serious fun with sirus(tm) boards).

Nowerdays i make a living out of everything centered around internet related lifestyle oriented marketing driven projects, huh. Despite this prosaic description that is ok, actually it is great. I have a lot of really great cool people around me, working with them is a pleasure. But still, sometimes i got reminded to some old projects of mine and actually have the task of undusting some stuff for beeing revitalized in a museal context and than i go and check for updates of the above mentions mumedia bindings. And that is no fun. Way to slow progress there. I would love dropping all old-school technology(c++, Java) and just use ruby for taming the the beast (beast in this case are all modern gfx cards). Processing is java and can't win my heart. My current hope now is G3DRuby.  And here is the deal: I will try my very best to help establishing solid multimedia bindings for ruby. For Q3 2007 i have an exhibition scheduled, until then i will look for places in opensource multimedia ruby land which might need a helping hand. Requests welcomed.

read more

42

I turned 42. You know, the ultimate answer to the question about everything and so. Later that day i did lay some tarrot cards, the 3 card oracle and i got sun, jing-jang and the universe for past, present and future. not bad. i have a car somewhere standing in a shelter for years now already. Quite rotten and in desperate need of a major overhaul. But now, with such cards, i will aim for getting it back onto the road before ending my 42nd year. The car is a Jag XJC 4.2 of course. You can read the signs?

read more

dropjes

an old css/javascript experiment i did. haven't touched it in a while but i think it is still cute enough to post here for your viewing pleasure.

have fun

note: might break in any browser, was done with firefox

read more

test only: posting from YouTube(WoW Whatever) => sofasportler

getting into testing frenzy, posting videos from YouTUBE to the blog.

What i don't get is, i need uname and pass, ok, but what for they want an wordpress API KEY and the API URL for it on the YouTUBE side? The API URL turns out just to be the blog posting url(../xmlrpc.php in my case) which still leaves me with the question of what do they need the my API key for? account credentials should be sufficient. tbc|investigated...

update: i couldn't get the YouTube posting to work, the embedded video you see above got inserted manually, sigh.

Internet i must say, we're not yet there, not even close...

read more

coding art

this code is a piece of art. It was the most inspiring use of ruby i've seen in a while. First there is:

class << TODOS = IO.read('TODO')
  # hand made TODO api here
end

which wraps the String just loaded from disk in its very own, perfectly suited API. This is like hand made english cut vs. H&M. And than there is:

items.grep(regexp).instance_eval do
   def display
     # custom display function here
   end
end

which again, does nicely fit a custom API around the found data. Doing it on the fly, no base classes, interfaces or and other sign of bothering the user with extraneous code. I just love it.

read more

Fleck: graffiti for the web

for testing purpose i made some notes onto a web site of mine with the fleck annotation/graffiti tool for web pages. What can i say, it just works. One more proof for the feasebility of the concepts i tried to sell my client for nearly most of the year now, to no avail. They just don't see it, they are focused on business models :-) About which i just agree with Mr. Fletcher: 

Fletcher: “If you don’t have an audience, it doesn’t really matter what your biz model is.”

read more

Second life

Ich habe heute meinen CoreconCC Einfuehrungskurs im Second Life hinter mich gebracht. Das war recht nett. Nachdem es, allerdings erst mit 25 minuten verspaetung, losgehen konnte, klappte dann doch alles und allein die tatsache das spontan waehrend der veranstalltung auf die im SecondLife vorhandenen Moeglichkeit des life audio streaming gewechselt werden konnte, macht doch schoen deutlich, dass mittlerweile die VR techniken eine genueg ausgepraegten stand erreicht haben koennten. Ich bin da mal vorsichtig, bleib im konjunktiv, weil so richtig traue ich mir eine meinung zu diesem thema nicht mehr zu(history repeating itself maybe?). Die 25 Minuten verspaetung waren im uebrigen den diversen kleinen glitches mit dem eigentlich vorgesehenen Skypecast geschuldet. Kein mesch braucht 3D, hat Jim Blinn mal auf einen Siggraph keynote gesagt, und da hat er wohl recht, aber nett war es schon. Und so 2006, mit DSL und dual core powered laptops scheint es auch die notwendige technologische durchdringung zu geben die ja notwendig ist. Ich bin zu faul jetzt noch die links zusammenzuklauben, aber stay tuned, ich werde SecondLife in naechster zeit mal ernsthaft checken. Und spaetestens wenn ich land gekauft habe schick ich auch einen link. Mein alter ego hoert im uebrigen auf den namen Xabbaxaco Yetto.

have fun

read more

Mac trouble

Ein bisschen dunkel, aber vieleicht doch gerade noch so zu erkennen. Ich fand den Zettel in mehrfacher hinsicht bemerkenswert. Zum einen ist da zum einen das offenkundige interesse am Angebot. Normalerweise finden sich weniger Interessenten fuer die oft penibel ausgefuehrten Abreissnotizschnipselchen. Diesmal jedoch scheint der Bedarf gross genug, der zerissene Zettel laesst gar echte Not erahnen. Und was ist nun das angespreiste Gut? Hilfe bei PC Problemen! Aber diesmal fuer Apple Besitzer. Da staun ich doch. Gibt es ploetzlich einen Markt dafuer? Fuer vergleichbare Windows Angebote scheint sich kaum jemand zu interessieren. Und warum haben die ganzen Apple User augenscheinlich so grosse Probleme mit ihren Rechnern dass sie gleich den ganzel Zettel runterreissen? Ist mit dem Eintritt in den Massenmark das Ende der oft so gepriesenen Apple Usebility erreicht? Sind Macs vieleicht gar nicht so pflegeleicht wie alle denken?

read more

Barking up the wrong tree: GTD is the right thing in the wrong direction

This is just a believe i must confess, I never really used it for real, but in my view, GTD is just barking up the wrong tree, maybe the perfect solution in handling a problem, but you simple should not even have such a problem in the first place, because:

"In a game you can't win, you must change the rules"
James T. Kirk

What got me really suspicous are the examples. Come on, what a moron are you when GTD makes you jotting down "shopping for birthday present" somewhere? And no, this it is not a made up example, 6.4 million google hits I got for this little shopping example. Before drowning in a long rant on GTD just let me give you my wisdom about what might be the right tree to bark up: be focused on what you do.

That is all it really takes to be as good as you can get in what you are doing.  GTD just simulates beeing focused! GTD nerds are getting this warm fuzzy feeling when they see their 30+ little projects and actions nicely organized in whatever supporting tool they use,  the more the better. But however you do it, having such an overload of actions and projects is exactly the opposite of being focused. Being focused does not mean splattering your mind over the days in minute long fragments. When you are a programmer, then you now what I mean with "flow". The very best moments of my productive life where when getting into the flow of doing things, code just flows into your editor seemingly effortless. Loose things suddenly engage with eachother and the whole becomes more then its parts. For more body/sports oriented people that might be what happen when riding ocean waves on surfboards. There is no "just the next thing" to do, all is happening right now, at the same moment. We could now talk about buddhism and Heidegger and holistic approaches, but I don't want to bother you with that and I am no expert in neither of them anyhow.

"Change the rules", don't optimize in doing more, do less instead. Try finding out what? you want to be focused on, instead of optimizing how you can do so.

so long
have fun

read more

SMC 1.1 update adds noise to silence

I had a perfectly quiet MacBook. Contrary to the MacBook Pro of my friend i never expierenced any hissing sounds when idle or suffered from always running fans. This is history now after the recent SMC update of Apple. For keeping the macbooks cooler they tuned the fan settings to effectivly keep the fan running all the time, at least with a mininum RPM. Whether the hissing sound is in direct relation to the fan speed i cannot tell yet. We are still speaking of a very low volume noise level here. You can't hear it at work in the office space so it took me a couple of days to realize this new reality, i just did not want to accept the truth. Now when stitting at home, sunday morning, quiet, coffee, i keep hearing it sizzling along. I would prefer my macbook getting hot instead of noisy, especially in the now upcoming berlin winter.

have fun

read more

Sexy Java?!


Ich moechte ja keinem zu nahe treten, aber war das schlau? Sich im Halloween Kostuem mit einer Frage zum sex appeal von Java fotographieren zu lassen?

Auf der anderen Seite ist es aber natuerlich auch etwas befremdlich wenn man auf der suche nach "MAC/OS/X" als ersten Treffer "Ruby on Rails" geliefert bekommt.

komisch, aber verstaendlich wenn man sich die Java PR so anschaut.

have fun

read more

Ich würde Songbird nutzen(wenn ich kein Macbook hätte)

Es gibt eine funktionsfähig Version von Songbird. Inzwischen ist mein Leidensdruck aber nicht mehr so hoch das ich umsteigen müsste. Die finsteren linux-auf-dem-desktop-ist-immer-noch-besser-als-windows zeiten liegen als Macbook User glücklicherweise hinter mir. Zur Zeit reicht mir iTunes, aber ich hab mir Songbird zumindest schon mal installiert, einen flüchtigen Blick riskiert und denke das könnte was werden. Vor allem haben sie nicht den zwanghaften marketing old-scholl reflex mir immer und immer wieder irgendwelchen music-shop mist andrehen zu wollen. Bei iTunes neulich hat es keine 30 sekunden gedauert bis meine siebenjährige Tochter versehentlich bei den Disneykauffilmen gelandet war. Ich hatte ihr gezeigt wo sie auf dem alten laptop, den ich für sie hingestellt habe, ihre Kinder CDs hören kann. Aber nein, schwupps landet man bei Ariel und der Meerjungfrau.

Was Songbird auch noch sehr schön zeigt, ist wie lange es doch dauert vernünftige Software zu bauen. Aber Ende ist das aber der einzig gangbare Weg. Man kann einfach nicht viele User für immer bescheissen. Das geht für wenige für immer oder einmal für viele, aber eben nicht für alle und immer. Und eine erfolgreiches Produkt braucht eben viele User die wirklich von dem Ding überzeugt sind. Firefox hatte einen langen Weg, mal sehen wohin Songbird läuft. Und ja, von Microsoft Produkten sind sehr viele Benutzer wirklich überzeugt. Der Internetexplorer gehört wohl nicht dazu, aber Exchange und Excel zum Beispiel. Mircosoft bashing ist auf jedem Fall einfacher als funktionierende Software zu schreiben, aber das zählt dann nur noch zu der "sich selber belügen" abteilung und die ist nun vollkommen uninteressant.

read more

simpler comandline application context/configs

A couple of days ago i stumbled upon the SimpleConsole. Really a nice piece of software, pretty close to what i was pondering about already for some time. And just two weeks before i did put up (try: gem install app-ctx) my own take on that. App-ctx shares some of the design decisions of SimpleConsole like

  • ruby classes as controllers
  • automatic method invokation from arguments
  • parameter parsing and conversion

still though, app-ctx has some differences, and tries to be just a little simpler(and add some more). You might use classes, similar to SimpleConsole:


class Simple
def add context
a, b = context.argv
puts "#{a} + #{b} = #{a + b}"
end
end

App::run :class => Simple

Argument type conversions are build in, no declarations: "foo
bar"
becomes a string, 23 a int and 3.14 a Float. Same with options: --int=23 --text="some text here" --float=3.14.

But I did not want to force this inheritance thing upon the humble user so she can use her own baseclasses(SimpleConsole::Controller maybe?). Next, i wanted to support blocks, just being more ruby like:


class Simple
# $ ./examples/run_with_block.rb add 1 5
# 1 + 5 = 6
# $
def add a, b
puts "#{a} + #{b} = #{a + b}"
end

# $ ./examples/run_with_block.rb sub 1 5
# 1 - 5 = 6
# $
def sub a, b
puts "#{a} - #{b} = #{a - b}"
end
end

App::run do |context|
puts context
Simple.new.send(context.argv.shift, *context.argv)
end

The general setup of the comand line i wanted to stay good old unix style: <comand> [options] [arguments...] only. I don't like these: <comand> --foo --bar=1 action --help where there are more options after the last argument.

And than there is the problem with resonable default values. You need configuration and app-ctx defines some clear rules on where to put them. On default, app-ctx pulls a YAML default values file from next to where your application script lives, e.g:

$ ~/bin/my-script.rb

preloads its default values from

~/bin/my-script.yml

Values from the command line then will simply overload setting from your config file and your app can't distinguish from where the values are actually coming. Thisway you can extract default values from your code an put them in a separate file.

But if you prefer to keep things together instead, you may also set defaults directly from the code:


class Simple
def initialize(context)
context.set_default_values({
:desc => "programatically setting default values",
:port => 1234,
})
end

def show context
puts context
end
end

App::run :class => Simple

app-ctx tries calling a c'tor of your class with a context argument and you can set your default values there. Last but not least, you can define from where to load the config file with a command line option:

~/bin/my-script --config=/tmp/bogus-setup-here show

will not load the ~/bin/my-script.rb but the one you supplied.

Thats most of the stuff i could recall right now and if you like it, go ahead use it. In case you do, i might feel challenged to put up some concise online documentation and a little tutorial. 'till then

have fun

read more

whatsyourcommand

function whatsyourcommand ()
{
    history | awk '{print $2}' | sort | uniq -c | sort -n | tail -23
}

this little bash function pulls some stats from your history:

   3 tar
   4 %1
   4 %2
   4 nmap
   5 rake
   5 vi
   6 irb
   7 ./t_graph.rb
   7 open
   8 dwhatsnew
   8 geheim
   9 ifconfig
  11 mysql
  14 pgoogle
  17 svn
  17 telnet
  18 syncdir
  20 ping
  29 cd
  36 j
  43 ./t_instant-instance-config.rb
  70 ls
  98 fg

read more

Good morning, How are you doing?

Heute morgen auf dem Weg zur Arbeit mal wieder einem Amerikaner ueber den Weg gelaufen. Als Tourist leicht zu erkennen bei der Frage nach dem richtigen Ausstieg fuer den Alex. Das touristische Universum ist doch recht eindimensional. Er bekam eine halbwegs korrekte Anwort, ich hab mich aber dann noch ohnen rechten Grund eingemischt, um ihm zu sagen das er besser noch zwei Stationen weiterfaehrt weil er von dort den wesentlich netteren fusweg hat. Soweit so gut. Meine Idee war schlicht, es der typische Art der Amerikaner gleichzutun und mit jedem auf der Strasse  einfach mal einen plausch zu halten. Ich hatte wirklich einen sch... Tag, schon frueh am morgen, und die Woche bis dahin war genauso, und die things to come liesen schon jetzt jedes Mass an guter Laune schwinden. Ich dacht mir daher, nutzte die gelegenheit und fuehre das letzte gespraech des heutigen Tages, dass nicht in Streit und Wut endet. Und es war wirklich nett, zwei Stationen und noch ein paar Schritte beim Umsteigen waren freundlich und wir haben ein bisschen die klischehaft oberflaechlichen Floskeln zweier Fremder getauscht, ein bisschen "Where you're from", und dann "Good bye and have a nice day". So einfach kann das sein, ein bisschen freundlichkeit und schon geht's allen besser. Wer mich kennt, weiss das mir wahrlich keine amerikafreundlichkeit nachgesagt werden kann, aber an dieser Stelle war es mir ganz recht, die mir gut bekannten gepflogenheiten zur eigenen Gefuehlsaaufhellung auszunutzen. So fellow readers, go along, have a smile in your face, und lasst mich endlich in ruhe meinen sch... krempel erledigen.

read more

"...,then they fight you,

...then you win" (Mohandas Gandhi).

Steve Ballmer got smart on OpenSource. What does it tell us? Did we won? Or do we better get scared now?

Open source is not a new technology area. It was a new business model. Open source never goes away as a business model or competitor. We have learned how to compete with open source, and we will compete with it for the rest of time

and even more. Not only did he got the idea of OpenSource, he also understood this software thing:

iPod is a software thing. You just happen to collect the money on the hardware.

challenging times indeed,
have a lut of fun
cheers

read more

Eins gehoert nicht zu den anderen?

Tja, leider, leider, kann ich wohl nicht auf die rails conf in london fahren. und ganz besonders haette ich mich gefreut mir die vortraege am freitag anzuhoeren, allein schon um die aeusserst schwierige frage zu beantworten, welcher referent ist anders als die anderen:

eins gehoert nicht zu den anderen

read more

German Folk

maria helwig

Gnade! So hatte ich mir das mit iTunes auf meinem neuen MacBook nicht vorgestellt!

read more

I am annoyed

My fault i did not read the documentation(where to find it?), and i'm still grateful for the dojo toolkit, but please, from a testScripting ant target i definitly do not expect 1) to install its configuration/extension/script files in my home directory(unasked!) and then 2) quitting with BUILD FAILED and complain about the author of the Ant build tool. This is rude.

I can agree with Alex Russels dislike for Java and Ant, but still, i would be perfectly pissed when i would be the the author of ant and Alex just complains about "horrendous design decisions by the authors". Maybe true, but please, at least a hint about what caused the problem should be given.

dluesebrink dl-mbook trunk/buildscripts: ant testScripting
Buildfile: build.xml

-check-config:

-fix-config:
[copy] Copying 5 files to /Users/dluesebrink/.ant/lib

[echo] +--------------------------------------------------------+
[echo] | Due to some horrendous design decisions by the authors |
[echo] | of Ant, it has been necessary to install some jar |
[echo] | files to your ~/.ant/ directory. Given the nature of |
[echo] | the problem, it will be necessary for you to re-run |
[echo] | your build command. |
[echo] | |
[echo] | The Dojo team apologies for this inconvenience. |
[echo] | |
[echo] | The system will now exit. |
[echo] +--------------------------------------------------------+

BUILD FAILED
/Users/dluesebrink/idmedia/Project-3/resources/dojo/trunk/buildscripts/build.xml:226: Sorry, please re-run your build command, it should work now

Total time: 1 second
back my pardon, but i doubt it. I wrote a lot of Ant files in my life, and never there was an unavoidable need to install .jar files in the home directory of the calling user. this is just ONE option. for me it looks more like beeing to lazy to bother, but i'm to lazy to track it down.

read more

This is just a test, please ignore

the quick brown fox junps over the lazy dog!

cheers
and thanks for all the fish

read more

recover mysql password on localhost

hach, the powers of beeing superuser. Lost your database password? No big deal:


> /etc/init.d/mysql stop
> mysqld_safe --skip-grant-tables &
> mysql
mysql: use mysql;
mysql: update user set password=password('secret') where user='root';
mysql: quit;
> killall mysqld_safe
> /etc/init.d/mysql start
> mysql -u root -p
Enter password: secret
Welcome to the MySQL monitor. ....
mysql:

and off you go.
have fun

read more

The rise and fall of the beige box

Jack PC pic

There was a time(for the ones old enough to remember) when not a single desk in the world was equipped with a Computer. Then came the Mainframe Terminal, just to be extinct shortly after by the Personal Computer shortly after. And soon, every office desk in the world was topped with a beige computer box, ugly as hell, but seemingly unstoppable from conquering every inch of our living spaces. Moms and Dads suddenly sitting behind huge an Cathod Ray Screens, with a beige PC Tower next to them. Then came the laptop, first a sign for higher ranking executive, but slowly but surely trickling down the career ladder down to even the most basic employees. Today schoolchildren are receiving their homeworks as Powerpoints by email and MIT's Negroponte started the one laptop per child project.

Now see the image! In some years from now, the PC will be gone. Invisible, we will be free again. Computer will be where we want theme, when we want them. And most of the time we don't want them where they are. And the cables will disappear as well. Strange, the once omnipresent computer is threatened with visual extinction.

The beige box has fallen.
cheers

read more

Why high prices are good for apple

One of the main reasons for the absence of viruses on the mac is the smaller market share of apple computers in the market. That is kind of common sense and used often in pro-Microsoft argumentations. Everbody seems to assume the amount of viruses for the mac will increase in the same way as they as they are gathering more and more market share. The same seems to be true for Firefox.

On the the assumption the main source of "evil-doers" is the the "axis of evil" you will find that the homelands of many of the virus coders are actually in economically weak areas. Creativity thrieves best under constraints, all kind of ever more secure bariers are circumvented with sometimes hard to grasp virtuosity. While they in general just don't deserve my respect for their doings, these virus coders definitly have my respect for their passion and technical excellence in fighting their way through the minefields of modern day security.

Anyhow, in economicly weak areas, the probalilty for joe coder to buy a taiwan PC clone are way higher than to fork over big amounts for a shiny new MacBook. And this will save Apple, for simply not having legions of underage virus coding experts to-be waiting to raid MacOSX land. This is to fact that they can't even afford to build the knowledge base in the first place.

Besides, good luck to Microsoft when trying to revoke Adminstrator rights from their employees with their in-house Vista release. Separating User and Adminstrator rights CLEANLY was a problem Unix solved approx. 30 years ago, at least long before i started with it, and that was in 1986.

read more

about security

i just called vodafon because my internet password was not working anymore. before sending a new password by SMS the operator did ask me for my secret phone password, so i told her. But she did actually not check it at all! How can i know? Because anytime i give my phone password, i have to spell it, the usual spelling differs from my password. Nice trick, just ask for a password to check peoples reaction to the question. secure, hu?

read more

lazy unit testing

inspired by lazy-migrations-table-drop i thought this works for collecting unit tests as well. Decide on a pattern for unit test files(t_*.rb for me) and put this code in something like AllTest.rb and it will execute all units test in the current directory.
  
require 'test/unit'

glob = ARGV[0] && "t_*#{ARGV[0]}*.rb" || "t_*.rb"
dir = File.dirname __FILE__
puts "==> running all unit test in: #{dir}"
Dir.glob("#{dir}/#{glob}").each do |file|
    testname = File.basename(file, ".rb")
    puts "== next: #{testname}"
    require testname
end

Technorati Tags: ,

read more

Gentoo on probation

angefixed

hatte ich schon erwaehnt das

    fix_libtool_files.sh 3.3.5-20050130 --oldarch i386-pc-linux-gnu

mein haessliches

usr/lib/gcc-lib/i386-pc-linux-gnu/3.3.5-20050130/libstdc++.la' is  not a valid libtool archive

problem geloesst hat? Nein? Ich bin wohl endgueltig angefixed von gentoo. Es nervt gewaltig sich ueberhaupt damit zu beschaeftigen aber es geht langsam voran. sogar powerpoint konnte ich heute schon laufen lassen in der matrix(Windows XP in VMWare).

Gentoo on probation bis zur release der dualcore powerbooks next year.

Technorati Tags: , , ,

read more

nokia meint es ernst

maemo is an open development platform for creating applications for handheld devices, ... with an optimized end-user interface customized for handheld usage.

OpenSource.Nokia.com - maemo

nachdem nokia ja schon vor einigen monaten wundersamerweise ein smart-fon präsentiert hat, dass gar kein telefon mehr ist, folgen nun nach und nach die komponenten um aus und mit ihrem 770 zu machen was developer will und user braucht. ich waere gerne dabeigewesen, als bei nokia jemand den entscheidern erklaert hat, warum nokia ein "internet connected handheld device" bauen soll, dass kein telefon ist, um dann die eigene software dafuer unter OpenSource lizenz zu stellen. und was sagen eigentlich die netzwerkbetreibe dazu, dass nokia auch nun aller welt ein SIP bastellset mitliefert, mit dem ich das ding dann auch prima zum telefonieren benutzen kann. hm, interesting times ahead, indeed.

 

maemo Developer's Screen

read more

Flock the blog

here we go, weiss zwar nicht genau welche version diese flock beta nun eigentlich hat, aber zumindest im setup kommt sie schon mal mit meinem wordpress  blog klar. und dieses post ist ja auch nur dazu da, den eingebauten blog client zu testen. test test test, ... das letzte mal wo ich nen blog client getestet habe ist mir das posting erstmal im gully verschwunden. wir werden sehen....

read more

auf und fort

argh, anfang wie immer. lange rumgeschrieben, formuliert wie koenig, weil der erste eintrag muss ja passen, und dann, klar, schmiert der client ab. macht nix, man hat ja ein unerschoepfliches archiv an formuliereungen..

read more

Hello world!

Welcome to WordPress. This is your first post. Edit or delete it, then start blogging!

read more