trac Report for Feature Voting

I use trac for quite a few projects of mine. Recently I tried to find a plugin for deciding which features to implement next. Usually trac hacks has something in store for that, but not this time.

I wanted to be able to create a ticket and then collect user feedback as comments for the feature, with each piece of feedback being a vote for that feature, like this:

After searching for a bit I came up with a solution by using just a report with a nicely constructed SQL query.

SELECT p.value AS __color__,
   t.type AS `type`, id AS ticket, count(tc.ticket) as votes, summary, component, version, milestone,
   t.time AS created,
   changetime AS _changetime, description AS _description,
   reporter AS _reporter
  FROM ticket t, ticket_change tc, enum p
  WHERE t.status <> 'closed'
AND tc.ticket = t.id and tc.field = 'comment' and tc.newvalue like '%#vote%'
AND p.name = t.priority AND p.type = 'priority'
GROUP BY id, summary, component, version, milestone, t.type, owner, t.time,
  changetime, description, reporter, p.value, status
HAVING count(tc.ticket) >= 1
 ORDER BY votes DESC, milestone, t.type, t.time

So just by including “#vote” in a comment, it would count towards the number of votes. You can change this text to anything you want, of course. For example like this:

I hope this can be useful for someone else, too.

Colorillo: Draw on an LED Wall

Colorillo currently powers a collaborative drawing event in Vienna: At Adria Wien there is a temporary LED wall on which you can draw with the help of Colorillo.

Take your mobile phone (iPhone or Android, also iPod Touch, iPad or Laptop works) out of your pocket, enter the URL that you find there, and on your screen you will see what’s on the LED wall. Then you can paint on that. Of course with the technology of Colorillo, multiple people can draw at the same time.

The resolution is a little limited, as the LED wall had been built by hand by students of architecture, so in my experience it’s a little more like splash painting with colors, but we’ll see how it turns out tonight.

Tonight (July 22, 2010) at 8:30pm there is a special drawing event with John Megill of FM4 as a DJ. If you’re around, come by! It will be fun!

The whole event is hosted by the Ärzte ohne Grenzen (Doctors without borders) beach that has been set up for the duration of the AIDS conference that is being held in Vienna this year.

You can also join the event on Facebook and check out more info at the Colorillo blog post.

Colorillo

Currently I am doing my civillian service in Austria (though only 1.5 months to go), but in summer when I had a little free time I built something small and neat: Colorillo.

Colorillo

Colorillo is a very simple drawing program on a web site. What makes it particularly fun is that you can draw together with other people. Whatever someone draws on the page you are currently on, you will see right away.

Colorillo

Colorillo makes use of a plethora of interesting technologies to accomplish simultaneous drawing. Among them are:

Then in October I got the chance to bring Colorillo onto the LED wall of the archdiploma 2009 exhibition at Kunsthalle Vienna, so at the moment you can stand in front of the building and use Colorillo to draw on it. It’s fun!

Colorillo on Kunsthalle Wien

Unknown Blummy Treasures

Steve Rubel re-mentions blummy on his blog. Thanks a lot!

I’d like to take this chance to show you some of the lesser known blummlets (or bookmarklets if you prefer). Take a look at how I have configured my blummy.

blummy: alexa

Alexa

The favorite of my blummlets (and in this case it deserves to be called like that, as it is an image), is the Alexa blummlet on the bottom. I just have to open blummy on any page on the web and I can instantly see how much traffic it has (well as far as you can count on Alexa on that).

When you add the blummlet you might want to resize it to fit yours. So first add it to your blummy, then resize the blummlet by holding shift and drag from within that blummlet. Voilá.

Click2Zap

blummy: click2zap

Click2Zap by Steve Clay (site is currently down) is something for you if you print web pages a lot. I dislike reading long texts on-screen (waiting for the Sony PRS-500), I print blog texts a lot.

Using click2zap you can remove unnecessary text or links from a web page before you print it. You can click on a paragraph, a red dotted border will appear. You click again, it’s deleted. Very neat.

BlummyWiki

What Google Notebook has added to Firefox, has been possible through Blummy for a long time. Cross-browser.

blummywiki: google notebook

When you surf around you can use the BlummyWiki to store information you find on a page for later use. Or maintain a list of your most often visited pages. Most useful thing about it is that can use the same blummy account on multiple browsers and multiple computers.

Andy Roberts already had some ideas what to do with the BlummyWiki. Check it out.

, , , , ,

Blummy wins Web 2.0 Bookmarking Award!

SEOmoz Web 2.0 Awards - WinnerI’m proud to announce that Blummy has been voted to first place of the bookmarking category by the Web 2.0 Awards by seomoz.org.

Blummy placed in front of Looksmart’s Furl.net and it’s similar sounding competitor spurl.net.

As all the other winners of each category, I have also been interviewed. I can highly recommend reading the other interviews, with

SEOmoz Web 2.0 Awards - Blummy Bookmarking Winner

Thanks for the award and congratulations for the excellent choice of nominees and winners.

, ,

Feature Updates (close and turn off password query)

Some new features now, mainly fulfilling public requests which I had to admit opened a few annoyances.

  • [Feature] Close Blummy after clicking on a blummlet. Blummy will disappear after you have clicked a blummlet. This option is under advanced view on the config screen and under Preferences.
  • [Feature] You can now turn off the password request when using blummy. Although most browsers should give you the option to remember the username/password combination, still here and there the query poped up. So now you can make your blummy available to everyone again (so it will omit the query).

I also created a small donation page. If you think that blummy is good value, I’d appreciate a small donation. Thanks!

Blummy: Major Update

I’m proud to announce a major update of Blummy.

Blummy now includes blummyWiki, a small notebook-wiki that can be displayed within the current page. So you could store favorite URLs or commonly used information there which will be available on any page just like Blummy. And of course it’s crossbrowser and crosscomputer.

In my opinion this is a very unique and useful feature.

There is now also custom color and css support. You can browse other users’ Blummys via the “Explore” link in the menu.
Furthermore Blummy is now secured by password at last (so private blummlets are quite secure now).

A few words on the blummyWiki: It is invoked by switching an option on the Prefs page or by using one of these blummlets: open on the left, open below and open on the right. (display all three blummlets in configuration view).

, ,

Announcing Wizlite: Collaborative Page Highlighting

So I’m not the first to write about my project? Well. Nice ;)

Wizlite takes the good old highlighting marker from paper to web. People get different colors and mark important sections on any homepage.

Users can create groups and wizlite away on a certain topic (either private or public).

You’d have to use it to experience how fun it is ;) So: http://wizlite.com/

, , ,

Further Speed Improvements

I have decided to turn on caching to full throttle.

This means that I don’t request the browser any more to check back with blummy.com (to see if something has changed in the configuration) when you click on your blummy bookmarklet. So if you have high latency times between you (e.g. when you are living on the opposite site of the planet) and blummy.com this will most probably be good for you.

The bad side — and that’s why I haven’t done this before — is that you might run into a stale copy of blummy more easily when you do some re-configuration. So here are two hints if you don’t see what you have configured:

  • Delete the blummy bookmarklet and re-drag it from the configuration page. There is a little random value that should prevent a stale copy.
  • Clear your browser cache.

I hope that you encounter a further speed increase with blummy and keep on spreading the word ;)

Introducing: Wish-O-Matic

So Christmas is approaching and you need to buy some presents for your friends. So good for the idea, but what to buy?

I’ve created a little web app for that, called Wish-O-Matic. You choose a few things of which you know that your friend likes them. That’s it. That app will tell you what would match these items.
The Amazon Web Service API is used, so the products are somewhat restricted to the products they offer.

Give it a shot: Wish-O-Matic

, , ,

Create your blummlet: Wizard

Do you miss a service on blummy? Well, create it for yourself. Don’t have a clue how Javascript works? Does not matter anymore.

  • [Feature] Wizard for create your own blummlet

This should make it quite easy to create a blummlet for any service yourself.

Because space is a little limited there, I give a more detailed introduction here:

Suppose there was no blummlet for searching at Google and you wanted to create one:

  1. First, log in and go to the create a blummlet page. Open the wizard there.
  2. Open a new window or tab and navigate to the service (i.e. http://www.google.com/).
  3. Enter the query BLUMMY and submit the form. Wait for the results to appear.
  4. Click the location bar of your browser and copy the whole URL (mark the text and press Ctrl-C or Cmd-C). This would be http://www.google.com/search?hl=en&q=BLUMMY&btnG=Google+Search for me.
  5. Go back to the create blummlet page and type in the service name (i.e. Google) and paste the URL to the corresponding field (Ctrl-V or Cmd-V).
  6. Click “Create”.
  7. The wizard should have disappeared and most of the fields have been filled out. Now enter a description and click “Save”. Done.

,

Loading Blummy…

People have been complaining that it took more than one click to open blummy. The problem is that it may take some time to transfer the blummy script source to your computer (due to slow server, network, whatever). So after the first click, blummy is loaded from blummy.com, when you click again (before blummy appears), you instantly close blummy again, so nothing happens. Only after the third click blummy opens.

Now our user fuska had the great idea to display a small “loading blummy” text, so the user knows what’s going on.

  • [Feature] “Loading blummy…” informs the user about the current ongoings.

The downside of this update is that you need to replace your blummy bookmarklet (as the loading text is displayed by the bookmarklet to do that instantaneously). So go to blummy.com, log in, and drag blummy to your toolbar again. That should do the trick.

Thanks, fuska!

, ,

Favicon caching

Hello there,

You may have noticed that your blummy now opens a bit faster. This is due to a new feature:

  • [Feature] Favicons are cached on the blummy server.

So now your blummy will not hesitate to open because some server is not ready to serve his icon.

I hope this causes some speed-ups ;)

PS: In the first few hours there could be some hick-ups with caching, as some servers might be down while filling up the cache.

Moderation in place

The latest update to blummy covers moderation.
I have cleaned up the blummlets so that there should not be too many blummlets doing the same thing left. While cleaning up I had to merge a few blummlets; if everything went okay you wouldn’t have noticed anything, if not, a blummlet might have disappeared from your blummy. Sorry for that.

  • [GUI] A check next to a blummlet means that it has been verified by a moderator.
  • [Feature] In preferences you can check whether you want to see unverified blummlets, too (default is no)
  • [Feature] You can now choose to open a blummlet in a new Window or Tab (Preferences under advanced). This is actually a not seen feature for bookmarklets. It is established by using the Blummy library function Blummy.href() which resembles location.href = url as Blummy.href(url).
  • [GUI] Cleaned up the preferences window a bit.

With cleaning up I moved almost each blummlet using location.href to use Blummy.href so that for most of them the “open in tab” feature should work. Additionally I have converted all the document.selection/window.getSelection etc. to Blummy.getSelection so that using the selection should work in almost any browser now.

,

Now with Preferences

So the latest release is online. The additions this time:

  • [GUI] There is now a simple and advanced mode.
  • [Feature] A Preferences page is now available.
  • [App] You can now change blummy’s opacity in the Preferences.
  • [App] You can now change the close button position in blummy in the Preferences.
  • [Feature] There is now a Save button if XHR does not work for you in configuration.
  • [GUI] A small Flash movie on the Start Page shows how blummy works.

Rating System

I have now integrated a rating system to blummy. You can rate blummlets at the “view code” page and the “Rate” link on the top left.
Furthermore there is the first library function for blummy: Blummy.getSelection(). It will retrieve the selection not only in IE and Firefox but also in Safari. If no selection is given you can add a string as parameter that will serve as question in the prompt box.

, , ,

Bugfixes and Interface improvements

I’ve released a new revision of blummy with the following changes:

  • [Bugfix] Improved HTTP Headers for Caching (now ETag and Last-Modified).
  • [GUI] Now there is a loading sign for ongoing searches.
  • [GUI] Predefined searches such as Random or Most Popular have been moved to tabs.
  • [GUI, Feature] You can resize a blummlet now by using the shift-key.
  • [GUI] A grid is shown on blummy to make it more obvious that the drag and drop function provides snapping to that grid.
  • [Feature] You can now specify to be logged in automatically on each visit.

The first point may be the most important one. It should improve speed of loading enourmously. Please give me some feedback if it works for you. Also any other feedback such as feature requests or bug reports are welcome.

Improvements

There are some new features I have implemented lately.

  • There is a random blummlet display
  • Search shows how many pages there are all in all.
  • You can also chose presets (empty, anon) so that you can easily start over or start from the anonymous blummy such as on the first page.
  • You can copy an uneditable blummlet to correct an error in another blummlet.

Blummy Feedback Roundup

People seem to like blummy very much :) There have been several blog posts about blummy in English, German, Spanish, Italian, Chinese, Japanese, and Korean (I was astonished that Google Translate — accessible via blummy ;) — was able to translate all these languages to understandable English):

Software As She’s Developed: Blummy: The Mother of All Bookmarklets

Ajaxian: If you are one of those people who love bookmarklets, and your bookmark toolbar is getting larger and larger for it, then this could be for you.

Max Kiesler: Blummy is […] in my opinion this is the best free apps of its kind. […] I review countless numbers of ajax and rails widgets, functions and apps every week but Blummy is truly a new and useful app that everyone who adds content to multiple websites should try.

UNEASYsilence: Blummy is the single browser bookmarklet to top them all. This nifty piece of javascript will single-handidly allow you to replace all your other favorite individual bookmarklets […] The screenshot does not do Blummy justice.

slapjack: Blummy Rocks. […] Maybe breaking free of the browser isn?t as important as I once thought.

Downloadsquad: Blummy: Configurable uber-bookmarklet – Today’s Browser Tip

Brandinfection: blummy – The Tool to end all Bookmarklets

The Social Software Weblog: Blummy addresses that problem quite admirably by collapsing a number of bookmarklets into one bookmarklet (or blummlets, as it were) to rule them all. […] It?s a bookmarklet aggregator. It?s the Flickr of bookmarklets, yo.

Libraryclips: This is a great idea, a place to keep all my bookmarklets to use on any computer, also relieves some space on my very heavy Links bar.

German: netbib weblog, Sprblck

Italian: dowload blog, SKY TG24, Tutto Gratis

Spanish: Microsiervos, Genbeta, ñblog

More: WebLeOn (Chinese), PleasureDelayerDiary (Japanese), Korean Jurist, Linmagazine (Hebrew)

Thanks for the feedback!

, ,

Introducing: Blummy

So the project I’ve been working on lately is called blummy.

blummy is a tool for quick access to your favorite web services via your bookmark toolbar.
It consists of small widgets, called blummlets, which make use of Javascript to provide
rich functionality (such as bookmarklets).

blummy in action

You can create your own blummy by drag-n-dropping blummlets onto it.

It’s hard to explain unless you’ve tried it yourself. So Come along. (it’s free, of course)

, , , ,

PHP and Multibyte

ever messed around with umlauts or other non [a-z] letters? it’s quite horrible.

for the german speaking region there are mainly two encoding types: iso8859-1 and utf-8. the former encodes each letter with one byte by extending old 7-bit ascii with 127 more letters, amongst others also umlauts. utf-8 includes up to 32,640 more letters (ascii 0x80-0xff are used to select the range of the following byte). this is established by allowing multi-byte characters. in the case of utf-8 the maximum is two letters, but there exist utf-16 and utf-32 with up to 4 bytes per char.

so, what’s the problem? with bandnews we have different sources for our data, meaning that we receive many pages with many different encodings and have to deliver a page that follows only one encoding. we chose to use utf-8 now, because a wide range of letters from many other encodings can be displayed which are not included in iso8859-1.

now it is important that you stop using strlen and substr because it can easily happen that you split an utf-8 character into parts, and forget comparing it to anything, then. alterenatives are mb_strlen and mb_substr and all other sorts of mb_* functions. well… this does not work out of the box, you need to specify what encoding is to be expected. this can be done like this:

mb_internal_encoding("UTF-8");

all mb_* commands use this encoding if no other is specified.

still, non-utf-8 code can come through to the browser, e.g. if you receive it from the database. but there is a chance to get around this quite comfortably:

mb_http_output("UTF-8");
ob_start("mb_output_handler");

the output buffer is cleared from wrong charactes by the mb_output_handler. it is also easily possible to have the output converted to iso8859-1, just by specifying it with the mb_http_output command.
a drawback is, though, that no other output filter can be applied, such as for output compression

ob_start("ob_gzhandler");

the manual states that instead zlib compression should be used, as specified in the php.ini file or via ini_set:

ini_set ('zlib.output_compression', 'on');
ini_set ('zlib.output_handler', 'mb_output_handler');
ob_start();

note that the output-handler for ob_start has to be empty and it is moved to the config option. this sounds great, but i was not able to get it to work. well, i must admit that i did not put so much time into it because i simply decided to move the responsibility to apache: mod_deflate. you might want to modify the configuration line, as i did:

AddOutputFilterByType DEFLATE text/html text/plain text/xml text/javascript text/css

have fun with character encoding. it works after some while. but its a lot of trial and error.