Search Results: "tar"

21 January 2007

Enrico Zini: avoid-flamewars

Fourteen ways in which you can avoid starting a flame war on a Debian mailing list On an IRC brainstorming on what talk I should give at FOSDEM, liw suggested:
"Fourteen ways in which you can avoid starting a flame war on a Debian mailing list".
In the end I went for something more technical, but I've never stopped thinking about liw's challenge. I ended up writing talk notes about such a potential talk. Here they are. The classics The radicals The radicals, applied selectively The From tricks The naggers The conscience ticklers The subtle The subtle, 1 week later

Andrew Pollock: [debian] Whoops, it seems I dropped the ball

Hi Christian, It seems I haven't uploaded a new version of the argus-server package that I prepared back in December some time, which addresses the l10n bugs you speak of. I'll rebuild it today and upload it. Sorry about that. Love, Andrew

Isaac Clerencia: Bluetooth remote

A few days ago Applemania took over Warp HQ and several workmates purchased MacBooks. The MacBooks came with this nice remote thing and I grew jealous. In my way back home I thought that it shouldn’t be very hard to get a kind of remote control working using bluetooth and my Nokia mobile. I had never coded for my mobile so I wasn’t sure about how difficult would it be. In the end it was quite easy to write a simple program that just sent every key press to my laptop via bluetooth, and it only took 113 lines of Java code. Then I spent several hours coding the “receiver” part, in the end I created a little Python app which could load different plugins and created several of these modules: There are loooots of things to improve but it works for me :) , I’ve uploaded the source code (tarball) in case you find it useful.

Jan Wagner: Music and Debian

Today I found a way to combine consuming my favorite Radio Station and using my favorite System Distribution.

On working hours and most of the time at home I’m listening to Frisky Radio, founded by Faisal Sultan. But I’m missing it the 3 hours per day, when I’m traveling between work and home town. I did realize, Frisky Radios provides podcasts, but only one per week and the download history isn’t such long. Some days later, I thought stream ripping could be nice. So I did run:
$ apt-cache search stream ripper
goobox - CD player and ripper for GNOME
kstreamripper - kde frontend for streamripper
streamripper - download online streams into audio files
tunapie - Lists audio and video streams from Shoutcast and Icecast
My decision was to use streamripper in combination with screen.
Streamripper can provide a relay server, where you can listen to and save bandwidth and decide, what should happen with already existing tracks. This all seems very nice and I’ll see how lovely it will work together with my player, which name I will not mention in this context. ,

Steve Kemp: Turn another page at the animal bar

When I moved to Edinburgh and lived in a student flat we decided we needed pets. Gerbils were chosen as they were small, cute, and easy to hide. (Because we weren’t actually allowed to keep pets ..) After a few years of gerbils we graduated to rats. The king of the rodent world. Rats rock: They are small, cute, agile, incredibly soft, very non-bity and highly intelligent. Time passed and I moved out to live alone and then started to move up the food-chain with my own pet cat. (Tigger). Badnesstm happened, and Tigger was “replaced” by Six. I got hit with a year of illness, mostly, and so I decided to do the decent thing and return Six to somewhere where he could be loved and get the attention he deserved. Since then I’ve been petless, and basically afraid to commit to looking after a cat/dog for the 10+ years that they would (hopefully) live. I want to have a cat. I would love to own a Dog, and after talking about things in a circular fashion for many weeks with my girlfriend we decided to compromise. So … tada .. I have rats again. Two beautiful females. Here is a picture of one of them upon my girl’s shoulder.


Click to see full-size. So two rats, Basil for me, and Moptop for Meg. All being well they will live for the next couple of years, and then we might return to the bigger pets.

20 January 2007

Erich Schubert: The end of the world 2.0 is near.

I'm convinced the Web 2.0 bubble will impact soon. Granted, some will survive, some will struggle - but some will just blow up. Time to sell for these. There are several reasons why I believe this will happen "soon": Many people have been keeping an hungry eye on YouTube, Rapidshare and others. It's just a matter of time until some of these predators goes for the kill. My predictions for the post-web2.0-bubble time:

Eddy Petrișor: ... and it works from D-I like a charm!

Yes, I started D-I with "install modules=ppp-udeb" and it detected the concentrator, I gave the user name and the password and it connected! Yippee!

For non-belivers or voyeurists:
http://users.alioth.debian.org/~eddyp-guest/pppoe_tests_with_qemu.png

Eddy Petrișor: HOWTO test PPPoE without having PPPoE (long)

I don't have an ISP which uses PPPoE or more than a laptop on my desk, but still, thanks to free software, I can test PPPoE installations (to some degree).

I have set up with qemu machines a virtual LAN that is made totally in user space via a TCP socket on port 1234. I needed this in order to test the changes I am working on for the ppp-udeb Debian installer module that supports (or should I say, should support) configuration of PPPoE connections.

These are the tools whose authors and maintainers deserve kudos:


This is the tutorial I followed to configure the PPPoE server http://www.freeantennas.com/PPPoE-Server-HOWTO.html, but until then I had to make the network.

In case someone is interested, here's how I did it (these are Debian centric instructions, but I don't see anything that would stop someone to do the same even on a windows machine).
I won't repeat that tutorial, but now I can create a virtual machine (well, I'll use an existing virtual machine) and test my custom D-I images and test the changes done in ppp-udeb.

Rock on!

Evan Prodromou: 30 Niv se CCXV

I just got the Free Your Phone announcement from the OpenMoKo announce list. Looks like they'll have preview versions of the new Linux-based, Open Source phone platform available Feb 11, generally available March 11, and ready for public distribution September 11 (!). FIC is under a lot of pressure to make this product the Open Source answer to the iPhone, and I think they have a very good story. At this point I think the success of the platform is going to depend on three things. First, FIC's execution in getting developer versions out the door and ready to use. If the OpenMoKo platform stays vapourware for much past the first part of 2007, it won't be able to capitalize on the iPhone hype and current excitement. Second, FIC is going to have to resist the temptation to hold back parts of the OS or the application stack as proprietary software. Credibility in the Free Software fanatic community is going to be key for its first wave of usage, and "free enough" isn't going to be good enough for this product. A good cautionary case would be Trolltech's Qtopia. Trolltech's reputation for holding back parts of its stack has probably been the main reason this platform hasn't been taken up by Linux aficionados. Third, and perhaps most importantly, support from more hardware vendors. "Open Source" is sometimes a synonym for "second source" -- it gives customers and developers the security of knowing that the success of a platform is not tied to the success of a particular company. OpenMoKo can take the Free Software niche in the smartphone OS market -- making a place among Symbian, Pocket PC, and Palm OS that appeals to hackers. I think if they can get the hackers, they can get the kind of UI quality and application availability that will get the rest of the population interested. Firefox is an example of an Open Source project that has done this recently. All in all, I think FIC has a lot of challenges ahead -- mostly internal. But I also think that if this is played right, OpenMoKo or something like it could change smartphones the way Linux and the *BSD family have changed servers. tags:

Hillary's In News bulletin: Hillary's In. She's in to win. She's in to win the Big Spin. She's in up to her chin. She's in and so is her twin. She's in with a grin and a tin of aspirin. Hillary's in by the skin of her shin. She's in with the thin fin of an elfin dolphin. So it begins. tags:

Eddy Petrișor: RC bugs, what about important ones?

I was wondering if is right to our users that we are following only the RC bugs before a release. I think not. Don't get me wrong, I don't want important bugs count to be 0, or something similar; that would be insane to have as a goal.

I am thinking that we should (during the freeze) poke more of those important bugs that our and/or others' packages have. If you are like me, you will feel that you can't do anything/too much to improve the quality of the release during the freeze since some of the RC bugs are corner cases, not reproducible on your arch, already taken or you don't have the knowledge to fix them.

Many of the important bugs are broken functionalities that affect the users on a daily basis, and living 2 years with the same set of bugs is a pain. I don't know how that would feel, but I can imagine. I used Woody for only a half an year and after 2 months I started using backports. After 3, I started pulling things from Sarge (at the time it was testing). At the end of that half of year I was using mostly Sarge stuff and decided to go entirely into testing.


So, what do I propose? Maybe we should make some pages in the style of the RC bugs count pages which follow the important bugs.

As a bonus we might see some interesting things like bugs which were downgraded from RC - the RC graph would go down, while the important graph would rise. Of course, that wouldn't mean too much since that would be the product of badly assigned severities or downgraded and judged as non-RC bugs, but it would interesting to follow such tendencies.

19 January 2007

Enrico Zini: tagminer

Cute things one could do with debtags While answering to a long message in the debtags-devel mailing list I accidentally put together the pieces of a fun idea. This is the bit of message I was answering:
  • It would be very useful if the means for indicating the supported
    data formats was more comprehensive. This could mean a lot of
    expanding in the "works-with-format" section of the vocabulary, which
    doesn't even include formats such as gif or mpg at the moment. I don't
    know how feasible it is to alter underlying debtags functionality, but
    perhaps it would be the easiest to make "works-with-format" a special
    case tag which allows for formats not listed in the vocabulary.
This is my answer:
Good point. The idea has popped up in the past to list supported mime types among the package metadata, so that one could point to a file and get a list of all the packages that can work with it. I'm not sure it's a good idea to encode mime types in debtags and I'd like to see something ad-hoc for it. In the meantime works-with-format is the best we can do, but we should limit it to the most common formats.
This is the fun idea: if works-with-format is the best we can do, what can we do with it? Earlier today I worked on resurrecting some old code of mine to expand Zack's ls2rss with Dublin Core metadata extracted from the files. The mime type scanner was ready for action. Some imports:
import sys
# Requires python-extractor, python-magic, python-apt
# and an unreleased python-debtags from http://bzr.debian.org/bzr/pkg-python-debian/trunk/
import extractor
import magic
from debian_bundle import debtags
import re
from optparse import OptionParser
import apt
A tenative mapping between mime types and debtags tags:
mime_map = (
        ( r'text/html\b', ("works-with::text","works-with-format::html") ),
        ( r'text/plain\b', ("works-with::text","works-with-format::plaintext") ),
        ( r'text/troff\b', ("works-with::text", "works-with-format::man") ),
        ( r'image/', ("works-with::image",) ),
        ( r'image/jpeg\b', ("works-with::image:raster","works-with-format::jpg") ),
        ( r'image/png\b', ("works-with::image:raster","works-with-format::png") ),
        ( r'application/pdf\b', ("works-with::text","works-with-format::pdf")),
        ( r'application/postscript\b', ("works-with::text","works-with-format::postscript")),
        ( r'application/x-iso9660\b', ('works-with-format::iso9660',)),
        ( r'application/zip\b', ('works-with::archive', 'works-with-format::zip')),
        ( r'application/x-tar\b', ('works-with::archive', 'works-with-format::tar')),
        ( r'audio/', ("works-with::audio",) ),
        ( r'audio/mpeg\b', ("works-with-format::mp3",) ),
        ( r'audio/x-wav\b', ("works-with-format::wav",) ),
        ( r'message/rfc822\b', ("works-with::mail",) ),
        ( r'video/', ("works-with::video",)),
        ( r'application/x-debian-package\b', ("works-with::software:package",)),
        ( r'application/vnd.oasis.opendocument.text\b', ("works-with::text",)),
        ( r'application/vnd.oasis.opendocument.graphics\b', ("works-with::image:vector",)),
        ( r'application/vnd.oasis.opendocument.spreadsheet\b', ("works-with::spreadsheet",)),
        ( r'application/vnd.sun.xml.base\b', ("works-with::db",)),
        ( r'application/rtf\b', ("works-with::text",)),
        ( r'application/x-dbm\b', ("works-with::db",)),
)
Code that does its best to extract a mime type:
extractor = extractor.Extractor()
magic = magic.open(magic.MAGIC_MIME)
magic.load()
def mimetype(fname):
    keys = extractor.extract(fname)
    xkeys =  
    for k, v in keys:
        if xkeys.has_key(k):
            xkeys[k].append(v)
        else:
            xkeys[k] = [v]
    namemagic =  magic.file(fname)
    contentmagic = magic.buffer(file(fname, "r").read(4096))
    return xkeys.has_key("mimetype") and xkeys['mimetype'][0] or contentmagic or namemagic
Command line parser:
parser = OptionParser(usage="usage: %prog [options] filename",
        version="%prog "+ VERSION,
        description="search Debian packages that can handle a given file")
parser.add_option("--tagdb", default="/var/lib/debtags/package-tags", help="Tag database to use (default: %default)")
parser.add_option("--action", default=None, help="Show the packages that allow the given action on the file (default: %default)")
(options, args) = parser.parse_args()
if len(args) == 0:
    parser.error("Please provide the name of a file to scan")
And here starts the fun: first we load the debtags data:
# Read full database 
fullcoll = debtags.DB()
tagFilter = re.compile(r"^special::.+$ ^.+::TODO$")
fullcoll.read(open(options.tagdb, "r"), lambda x: not tagFilter.match(x))
Then we scan the mime type and look up tags in the mime_map above:
type = mimetype(args[0])
#print >>sys.stderr, "Mime type:", type
found = set()
for match, tags in mime_map:
    match = re.compile(match)
    if match.match(type):
        for t in tags:
            found.add(t)
if len(found) == 0:
    print >>sys.stderr, "Unhandled mime type:", type
else:
If the user only gave the file name, let's show what Debian can do with that file:
    if options.action == None:
        print "Debtags query:", " && ".join(found)
        query = found.copy()
        query.add("role::program")
        subcoll = fullcoll.filterPackagesTags(lambda pt: query.issubset(pt[1]))
        uses = map(lambda x:x[5:], filter(lambda x:x.startswith("use::"), subcoll.iterTags()))
        print "Available actions:", ", ".join(uses)
If the user picked one of the available actions, let's show the packages that do it:
    else:
        aptCache = apt.Cache()
        query = found.copy()
        query.add("role::program")
        query.add("use::"+options.action)
        print "Debtags query:", " && ".join(query)
        subcoll = fullcoll.filterPackagesTags(lambda pt: query.issubset(pt[1]))
        for i in subcoll.iterPackages():
            aptpkg = aptCache[i]
            desc = aptpkg.rawDescription.split("\n")[0]
            print i, "-", desc
\o/ The morale of the story:

Adam Rosi-Kessel: Streaming Netflix

Via DRM Watch, Netflix to Offer Streaming Movies Online. My initial reaction: eh.
Netflix’s streaming service will differ from existing online movie services like those from Amazon, Movielink, and Apple iTunes. Those services offer rentals of movies for a fixed time period (e.g., 24 hours) or downloads-to-own, known in Hollywood jargon as ESL for Electronic Sell-Through. In contrast, Netflix will let users pick from a catalog of available films and let users watch any of them for up to a fixed number of hours per month, according to their subscriber level, such as six hours per month for entry-level subscribers. The service will launch with a catalog of about 1,000 titles, the same number as are available on Movielink’s rental service. The video delivery scheme that Netflix is using is a streaming-only technology that senses the user’s Internet bandwidth and adjusts the video quality accordingly; thus it is analogous to RealNetworks’s Rhapsody music service.
Limiting the catalog to 1,000 titles undermines Netflix’s key selling point: enormous selection and a long-tail business model. I could probably find those same 1,000 titles at any Blockbuster Video. So all I’m saving is a trip down the street? In return, I get something I can only watch on my computer (with Windows) for a limited number of hours? Apparently, if I want to watch the same scene a few times, or with the director’s commentary (is that even available?), I’m using up my six hours per month.Even cable movies-on-demand is a better service. Don’t get me wrong — I love Netflix as a DVDs-by-mail service. I also think the Netflix web interface and collaborative filter is pretty great, although the third-party Netflix Queue Manager Bookmarklet is a definite improvement. Based on this initial announcement, I can’t think of a single reason why I would prefer the online streaming version of Netflix. Usually I have the foresight to figure out what I want to say 24 hours in advance (the delivery time for Netflix-by-mail) and having three DVDs at once gives me sufficient options in case I’m unsure. Ultimately, I suspect Netflix just wants to send the message that it’s in the Internet-delivery market, which ultimately of course will decimate its existing business model. I just wish it had a more impressive first offering.

John Goerzen: Everything Update

It's been very busy lately. So here's an update on lots of things.

We move in to the farmhouse this weekend, starting this evening. It's not completely done, but close enough! That's exciting. But I spent 12 hours out there on Tuesday cleaning out the attic (took the day off work to do that). So I'm exhausted, and the moving hasn't even started yet.

The wood floors are all done and looking nice.

Jacob is starting teething. We have discovered that he likes both the taste and effect of infant tylenol. Though he's been better in the past few days.

More pictures of Jacob and the house will be posted once we have a chance to get them assembled.

My MacBook Pro at work finally can suspend to RAM! 2.6.19.2 with the latest mactel patches makes it work with uswsusp.

We'll probably be without Internet at home for a few days -- at least until I get the place wired up and the firewall set up.

One of our neighbors out by the farm died this week. He was out working with his tractor when it slipped off an icy road and landed on him. His wife had just moved from Tennessee last spring when they got married, and has enjoyed working with all their animals. I didn't know either of them very well, and had only met his wife. But she was interested in our house renovation project and stopped by every so often to check on it and chat (their animals are across the road from us). We were looking forward to getting to know them both.

MJ Ray: Debian: Fun with no builder 4: pbuilder fans to the rescue

Sven M ller commented:
"Well, if pbuilder slows you down too much, perhaps cowbuilder is the right one for you. I haven't tried it myself yet, but it is supposed to eliminate the worst delay pbuilder introduces: The unpacking of the base.tgz minimal chroot archive."
Nelson A. de Oliveira asked:
"Have you tried cowdancer + pbuilder? It makes creating packages really fast (there is no more need to uncompress the tarball, for example)."
I looked for cowbuilder, but there's no package called that, so I was quite glad for the second comment. I'll backport cowdancer and give it a go. Thanks!

MJ Ray: Bad Tech: Billing: standing charges, meter readings and privatisation

Chris Cunningham commented:
"Errr, standing charges on gas are pretty rare now. British Gas abolished them years ago, for instance. Standing charges for electricity are generally a good idea if you use any reasonable amount of electricity though. The single best piece of advice I can hand out for saving money on utilities is to take meter readings every month. Not only does this make it much easier to negotiate re-estimation of poorly-calculated start/end reads, it also gives you an immediate idea of how much you're using. I'm rather surprised that you didn't take the opportunity to rail against the evils of privatisation which led to this situation. Deregulated utilities are a bit of a nightmare in the UK, speaking from experience working for one."
Standing charges may be pretty rare, but they are still allowed and npower put them on so-called deemed contracts. I can see why that makes sense to a company like npower. It seems a good way to make sure you can bill a customer who hates you. Reading your own meter is a good idea. Doesn't really help if you've only just moved in, though. npower still argue that the absurdly low meter reading they're using for your start value (which would mean a bigger bill) was the final reading given by the previous occupier. I can't really comment on the evils of privatisation: I never interacted with the public utilities. Interestingly, the "deemed contract" problem seems to come from the regulations. Gas Act 1995 Schedule 2B section 8 creates the deemed contracts and doesn't explicitly handle the situation where someone moving in has an existing gas contract and doesn't want the deemed contract at all. This seems a misregulation bug as much as a deregulation one.

Miriam Ruiz: More about my analysis of usplash

After my post from yesterday, I’ve been able to find out what my problem with usplash is about, although I’m stiill working in a proper solution to it. It seems that when the root filesystem is changed, programs must react accordingly. The proposed sequence for the usage of pivot_root is something like the following: To be able to analyze the exact starting sequence of the system stored in the initrd.img, we must expand its contents to a directory using cpio. Some time ago, initrd.img used to be a filesystem that used cramfs, minix or ext2 filesystems, but not anymore for the newer Debian systems. The script that is responsible for setting up the system at start is called init and is currently a shell program. Having a look at it, I found out that a temporarily environment variable is set, designing the place in which the real root filesystem will be temporarily mounted before switching it to the root filesystem: rootmnt=/root At some point later, /sys and /proc filesystems, that were mounted in their respective directories at the beginning, are moved to $ rootmnt /sys and $ rootmnt /proc to be set in their final destination directories: mount -n -o move /sys $ rootmnt /sys, and later mount -n -o move /proc $ rootmnt /proc At the end of the script, the system switches to the real root filesystem: exec run-init $ rootmnt $ init “$@” $ rootmnt /dev/console >$ rootmnt /dev/console I’ve changed my code so that /proc/… files I used are open from the very beginning, and kept open until the end of the execution of usplash, and it seems to work. I’ve also been able to write a debug log for it, storing it in /dev/.initramfs/, which is a directory that is kept in that place all the time, so that whatever is stored there is available after the soot switch. That is the directory that usplash uses to store its FIFO nodes: usplash_fifo and usplash_outfifo. Maybe I can find a way to store core files there after a SEGFAULT error, setting the proper parameters with ulimit and /proc/sys/kernel/core_pattern. All I need to find out now is how to be able to reach the contents of /etc/… after the final rootsystem is mounted. I’ll tell you when I’ve solved that.

18 January 2007

Robert McQueen: LCA and hiring

I’m in Sydney for LCA 2007 this week, and this should also be my debut post on the conference planet. This is the first time I’ve made it to the other side of the world for this conference, and I’m really glad I came. It’s definitely one of the cooler conferences I’ve been to, slickly run and with an excellent programme of talks, so massive congratulations and thanks are due to the organisers and volunteers. The weather’s a stark contrast to the French Alps (I was skiing last week!), although thankfully it’s quite mild at the moment and not gotten too hot for a Pom like me. :D It’s always cool to catch up with people who I’ve not seen for a while, and put names to faces for a whole load of others I’ve not met yet. If you’re around, reading this in time, and interested in the Telepathy VOIP/IM framework, my talk is today (Friday) at 11am. If shameless bribes help, I’ve also got some funky Collabora and Telepathy shirts I need to give away before I head back to the UK. The second bit is that Collabora’s looking for a couple of people to either join us in Cambridge (UK) or work with us as a subcontractor. We’re currently doing loads of cool and totally open source stuff with IM, voice & video streaming and collaboration technologies. We’re looking for people with experience with some/many/all of C, Python, Glib/Gtk, D-Bus, GStreamer and RTP. If you’re interested, send mail to jobs( )collabora.co.uk, or if you’re around at LCA then come and find me if you want a chat.

Erich Schubert: A major storm is heading our way, according to weather forecasts

This is the first time I can remember, that the university is recommending to not hold lectures and go home early. They are expecting the ministerials to formally close the university, like they did with schools at noon. This will be the strongest storm we've had in years, apparently (well, others have been similarly strong I think, but not as big). It's now 15:18, and when I look out of the window it's still surprisingly quiet. The trees are moving, but only slightly. But it's the wind protected side of the building. The university warning email said that they expect public transport - and Munich has a huge public transport system - to stop service at 18:00 "the latest". Guess I won't be able to go dancing tonight then. It would start at 19:00, and I need about 30-40 Minutes by subway to go there. I guess they will shut down subway to make sure noone gets stuck in the tunnels if there is a power loss. Such huge storms are a threat to power supply. [Update: 21:08 you can tell now it's a storm, but it's not bad here. But all train traffic is stopped in bavaria, grounding a few hundred people who didn't make it home in time. They've been taken care of. In Munich, busses and the subway are supposedly still in service. I went to go dancing, but there was a note on the door it's closed tonight; same for the karate training of a friend. From what I heard in the radio there were only few fatalities so far and limited damage, but we havn't reached the peak of the hurricane yet. Few reports of blackouts in some small towns. Schools remain closed tomorrow.] [Update: 19. Jan, noon - trains apparently still aren't back to schedule everywhere, but the system is recovering. Not many major damages reported in the media and not many fatalities. It's still windy. IMHO it was "typically german" how we handled the hurricane, urging people to stay at home and not risk much...]

Miriam Ruiz: Experiments with usplash themes

I’ve been doing some usplash-related stuff these days, but I’ve come across some problems. First of all, I want to be able to track some hardware information from within the experimental theme I’m working on, and that means reading some stuff from /proc and /etc (and maybe from /sys in the future, I don’t know yet) if it is available. It seems to work OK if I open the file handler from the beginning and keep it open, rewinding to the start of the file when I need to read its contents but never closing it until the end of execution. If I instead open the file, read from it and close it again, it seems to work properly for the beginning, but after a while it stops retrieving data. I guess that when the real root is mounted i lose the capacity to interact with the filesystem from my code, like opening new files. The second problem is somehow related. I want to be able to save a log file of the execution of the program, but I don’t seem to be able to open a file for writing, at any moment in the execution of the program. I guess it’s the same problem, accessing the filesystem from a program that is started from initrd.img instead of from the real disk. Is there any way to connect the program with gdb during real execution? I seem to be getting SEGFAULT errors with some things I try, but it’s hard to debug without any data (not even logs, as I cannot open a file for writing at any moment). Maybe being able to dump a core when a SIGSEGV signal is received would do. More on this, in future posts.

Jesus Climent: For those who care about electronic music in Helsinki.

The date: Friday, 19th of Jan.
The time: starting at around 21.00
The place: Olivers 21 (in Annankatu 21)
The who: DJ Mooch Vs. resident DJ
The what: Electronic music, starting with chillhouse and grooving towards progressive and electro house.
The why: because i/you can. And because i/you want it. ;)

Next.

Previous.