The weather’s picking up so it’s time for spring cleaning around the house. When I moved back to Barcelona three years ago I took with me my old analogue photos and negatives, with the idea of sorting through them at some point and getting them digitized. And while I’m at it, maybe it’s time to pull all my various folders of photos together too and organize them.
Well, I finally started. I grouped the negatives, labeled them by year, put them in individual envelopes, and handed them off to a professional lab to scan them after doing a quick test run on one set (which turned out great, but it’s *really* annoying me that they scan to JPEG by default, charge 40% extra for TIFF, and use a non-multiple-of-8 resolution to scan at which means I can’t losslessly rotate the negatives. Yes, I’m anal.)
So now I pulled together all my various folders of photos, and before I start doing tagging and stuff like that, I want to organize them in a decent folder layout. Googling for ideas pretty much suggests that the way to go is
with possibly some description together with the DD
I’m not really happy about that, however, because there are certain things I’d like to be able to do:
- easily see where photos come from – did I make them ? did I get them from someone ? Did I download them from Facebook ?
- Are these original files from a camera without editing ?
- Are these the original scans ? From negatives ? From actual photos ? Or are they retouched, rotated, denoised, …
- Are these photos SFW ? Can I point my media center slideshow to this directory and have it safely show any photos under it ? (What do you mean, you’ve never snowboarded at night in only your underwear, and mooning the photographer ?) Or maybe not even SFW, but simply watchable and reasonable quality or subject material?
I realize some of these issues can not be resolved simply with a directory layout. But I’m sure some of you must have had similar issues or come up with a slightly better layout ?
Point me in the right direction please.
I haven’t done much work/conference travelling in the last months (I even skipped GUADEC, boo!), but it seems now is one of those months where random rears its pretty head again.
Right now I am at the other side of the world, in Sydney, a Holiday Inn in King’s Court (interesting neighbourhood…) This is late notice and I might not read my mail anymore, but hey, if you’re around and I know you, drop me a line. I was hoping to see Jan, GStreamer’s release ninja, here, but apparently he lives on the border of New South Wales these days…
I’m here for two and a half days, and then I fly back to Barcelona, and then to Belgium for my sister’s wedding where I am the best man.
My next trip is to the Open Video Conference where I’ll be doing a quick overview of Flumotion and HTML5. The conference is 1/2 of October, so I’ll be going to New York a few days before. I hope to go to FOMS as well for at least a day, but I’m also going to the Business of Software conference in Boston because, hey, we’re a software business! And it’s just around the corner from New York…
Further down the line there’s Streaming Media Europe in London on Oct 13-15, where I will do another presentation and assist in a panel.
And finally I hope to make it to the very first ever GStreamer conference on the 26th of October in Cambridge, but I really should get my act together and book a ticket for that soon…
Now I wouldn’t be me if I wouldn’t try and squeeze a concert into these trips.
So far, I’ve gotten a ticket to see the Walkmen play in Boston on the 7th of October. I want to get tickets to see the XX and Zola Jesus on the 2nd of October in New York, but I can’t make stubhub or related sites deliver tickets to Europe… Anyone in the US feel like joining me for that concert and receiving the tickets ?
It’s going to be a busy fall…
A bunch of good things happened to me recently, in quick succession. Today was particularly satisfying, so a quick list lest I forget that I am born lucky.
- I spent the past weekend in Amsterdam, Groningen, Midwolda, and Amsterdam, for Sofie and Mariette’s wedding. A great time was had by all, and groups of friends mixed into one for a weekend of celebration. Life can be beautiful sometimes.
- The first night in Amsterdam I went to a milonga all by myself for the first time and finally got round to asking complete strangers to dance. Win.
- The last day in Amsterdam I spent with Africa and Alex, and among other things we had a great Kobe steak that really is worth the extra price – it melts like butter in your mouth.
- Last night out of the blue one of my uncles called because he had heard ‘the news’ and wanted to check in on me and see how I was doing. I’m guessing he was surprised I was doing pretty much fine considering, but it was a good feeling to know someone out there in my family cares enough to call. It made the distance that much shorter for a little while.
- Also last night, I familiarized myself with one of work’s projects that needed a patch which I’d been asking to be made since Thursday because of a customer problem (which ran like a red thread, sadly, throughout the wedding weekend). I spent five hours trying to get a first unit test written and running into that project (there were none before), then ten minutes patching the code and writing the code to show that my patch works. Today, that patch got deployed and attacked with six different use cases, and it all held up. This is on code I’ve never seen before, so win.
- Today, I exchanged a work favour for a home favour with Fernando, and he immediately agreed to come home with me and help me set up the big IKEA closet. On the way we stopped at Angel’s to pick up these double bench chairs I’ve been dreaming about getting ever since he showed them to me:
We took them home on our heads, and I cleaned them. They need some more cleaning, but I love them already. I got these specifically because someone old and wise recently pointed out to me that Barcelona has individual benches, and she was sad and angry at that little fact. So these twin seat benches are a raised fist against Barcelona’s soltero benches.
- And, as usual, Angel didn’t let us go without at least a full glass of wine, and a bag with a huge chunk of tortillas and some freshly cooked gambas. Thank God for people with a passion for what they do.
- After helping me put the closet together (we made it half way through, this particular IKEA set needs a power drill and a saw to put together!), Fernando took me to the Diseny Hub Barcelona because a good friend of him works there. Turns out they have a MakerBot there, he’s printing parts for a RepRap, and he’s willing to print my parts. So after being sidelined in my attempts to get one in Belgium, it turns out I will now be able to make one just ten minutes from my current living place!
Also, the place seems awesome, has real industrial 3D printers and etchers and 3D scanners, offers workshops, and it looks like people can actually come in and use things. I have a feeling I’m going to be dropping by there…
It’s a big enough list of things to be cheerful about in a really short time, and I’ve left out some less practical more private things, so summer is looking good so far…
So obviously, blog-wise I fell off the face of the earth for close to two months.
The immediate reason is some personal stuff happening to me that I needed to bounce back from (well, ok, I lied – it’s not stuff, it’s just one tiny little thing.)
As a result I haven’t done much hacking at all, beside a few fruitful morituri hack sessions.
As a consequence, I don’t have much useful to report, but I am going to slowly get back to some hacking. My Lego Mindstorms are already with me here in Barcelona so I am going to get started on that CD ripping robot Any Day Now.
I’ll get more specific about what non-hacking stuff I’ve been up to recently after the fallout of the personal stuff, but for now I’ll just mention I’ve been hugely enjoying getting back to playing basketball over the last year. A while ago Farid taught me a nice layup trick, and yesterday I had Pepe film it:
I haven’t pulled that one off correctly during a game though!
Oh wait, I lied. Yesterday I got a proof of achievement of something hacker-related: my Spanish diploma in Twisted!
I need to buy me a wall to hang that on, it’s just too cool! And the back lists all skills achieved, in Spanish. Check this out:
“El manejo de errores robusto con diferidos”. I’m sure that official had a field day translating deferred into Spanish.
Life! I’m back to eating you, one bite at a time. Make sure you’re ready for me.
Next Page »
The last few months news about streaming to iPhone 3.0 has been making the rounds. I’ve been holding off commenting on it for a while since I didn’t actually look into it much and didn’t want to base anything on hearsay. And I don’t even have – or want – an iPhone!
Last week I took some time to read the IETF draft and the Apple developer introduction.
On my next plane ride I quickly hacked together a simple segmenter in Python, and tried it the next day at work to see that it sort-of-worked for about a minute.
And yesterday evening, during Nerd Night, I changed my original plans (since Wiebe cancelled, I wasn’t going to work on the Spykee robot yet) and decided to go back to the iPhone streaming hacking.
After tweaking mpegtsmux to do something useful with GStreamer’s GST_BUFFER_FLAG_DELTA_UNIT and teaching the segmenter to always start a new segment on a non-delta-unit, and after switching to a black videotestrc with a timeoverlay (the normal one seems to trigger a weird encoder bug in our H264 encoder, need some help from our Fluendo codec gurus for that), I started a simple stream last night:
I left it running for the night.
And this morning when I got up, it was still going strong, and I left it pass the 10 hour mark:
So, a good first step.
Hope to finish up some loose ends across the week to make this work inside Flumotion.
I’ll leave you with my first impressions on this Apple creation:
- Naming a draft ‘HTTP Live Streaming’ pretending this is something new after years of Shoutcast – Icecast – Flumotion is either plain ignorance or typical Apple hubris. At least qualify the name with something like ‘segmented’, ‘TS’, or ‘high-latency’, Apple. Come on, play nice for once.
- The streaming system is very different from your typical streaming system. Effectively, this approach creates a live stream by segmenting a live feed into a sequence of MPEG Transport Stream segments at a regular interval. This has some benefits and drawbacks.
- The key concept is now the playlist file, an extension of .m3u called .m3u8. This playlist file is the entry point into the stream, as it lists the segments that make up the stream.
- This playlist file can reference other playlist files. This is what enables adaptive bandwidth streaming.
- One clear benefit that Apple was aiming for is that they effectively managed to separate the preparation part from the streaming part – the actual streaming can be handled by any old web server that can serve up files. I’m sure this is the main benefit they had in mind. The benefit is two-fold: first of all, it’s easy and cheap to install web servers, and second, you get all the benefits of using a bog-standard protocol like HTTP: firewall acceptance, proxy and caching support, edge caching, … Take for example the fact that a company like Akamai charges more for some streaming protocols because they have to deploy specific servers and can’t use all their edge infrastructure for it.
- Another benefit is that you are generating the data for your live and ondemand streaming at the same time. The transport segments can be reused as is for ondemand .m3u8 streams. This blending of live and ondemand is something we started thinking about with the developers at Flumotion too.
- A third benefit is how easy this system would make it to do load balancing on a platform. In most streaming services, a connection is long-lived, and hard to migrate between servers. Since in Apple’s live HTTP streaming the stream consists of several short files, you can switch servers by updating the playlists, effectively migrating the streaming sessions to another machine within a minute.
- As for drawbacks, the biggest drawback I see is the latency. In this system, the latency is at least the segmentation interval times three. This is because the playlist should only contain finished segments, and the spec mandates that the player have at least three segments loaded (one playing, two preloaded) to work. So, the recommended interval of 10 seconds gives you at best a 30 second latency. I don’t really understand why they didn’t work around this limitation somehow (for example, by allowing a growing transport stream in the playlist, marked as such, or referencing future files, marked as such), because this is where live iPhone streaming is going to catch the biggest amount of flak, if our customers’ opinion about latency in general is anything to go by.
- Another possible drawback is the typical problem with most HTTP streaming systems – no synchronization of server and client clocks. Computer clocks typically don’t match in speed, so in practice this usually means that the client’s buffer will eventually underrun (causing pauses) or overrun (usually causing players to stop). In practice this is not that big of a deal, and I doubt on the iPhone sessions will be long enough to really make this a problem.
Whether this will become a general-purpose streaming protocol remains to be seen. I would assume that Apple is at least going to make this work in a future update of OSX. For us though it is an exciting development, allowing us to showcase the flexibility of our design to this new protocol. And while I saw some fellow GStreamer developers griping about this new way of streaming, there as well it should be seen as an advantage, since (in theory at least) the flexible GStreamer design should make it possible to write a source element for this protocol that abstracts the streaming implementation and just feeds the re-assembled transport stream much like a dvb or firewire element would do.