Entries Tagged 'General' ↓

Vivified

Quite some people have asked what the vivi branch in swfdec git is supposed to be. It’s my rewrite of the debugger. I’m actually pretty proud of how nice it turns out. I’ve taken the Flash virtual machine that Swfdec contains anyway and hooked it up with libming Flash compiler. The result is a Flash debugger written in Flash. The first screenshot of some things possible with it is here (click image for unscaled view):

The right tools are pretty much the most important thing when reverse engineering. How else am I to find what Swfdec does wrong if I’m not able to watch closely what it does at all times? Until the first video image is visible of a Youtube video, Swfdec has called 4500 functions and executed 70000 bytecodes (aren’t scriptable debuggers fun?). And if it does one bytecode or function call wrong, I have to find that. 75000 places to look. Fun!

In related news, Ubuntu seems to have almost managed to package Swfdec – finally. So you can stop poking me about packages.

Anyway, I’ll go back writing some more scripts in the debugger. Gathering stupid statistics is awesome. Especially when doing it with software I’m proud of.

Too much space

I’ve just been reading about the new Java popup exploit. It’s one of the “too much space” problems: applications are given the ability to acquire more screen space than is assigned to them. And it’s not only a problem with screen space – it’s certainly most visible there – but it’s also important for keyboard focus stealing.

It’s not only a problem for browsers, it’s a problem with lots of other technologies. I bet the window manager hackers know this: What do you do when a new window pops up (and grabs focus) while I am working in a different window? What does a filled panel do if the notification area or the drivemount applet suddenly get new icons? What do you think about applicatrions that decide to resize their windows without you requesting it? Or notifications that are always in the way? Popup blocking common in browsers tries to address this problem, but the alert() Javascript function can still escape its assigned space and keyboard focus.

Adobe’s Flash has been pretty good in respecting its assigned size. If you want to resize a Flash application, your only choice is calling back into the website to make it enlarge the embed window. Flash itself cannot resize. Or better: could not. It recently acquired the Stage.displayState property that allows it to go fullscreen. It seems to have been added primarily so you can watch your Youtube videos fullscreen (Youtube supports it already). Like popup blocking, it only works on mouse clicks, not all the time. I’ve been wondering how to implement it nicely in Swfdec, since I think the implementation in Adobe’s player leaves something to be desired: The annoying “Hi, I’m a popup, press Escape to close me” bar that shows in the middle for a short while after fullscreening. And I wonder if disabling keyboard input is a good idea.

Back to the original topic: If you’re a developer that writes an application that runs embedded scripts/applications, please do me a favour and don’t let them decide on resizing and focus stealing. And if you write an application that does this, please spend some time thinking about how to handle this.

I’d like to close with a very special cheers to Vincent and the people discussing embedding the notification area into the panel by default.

features \o/

It’s fun to finally run around in feature-land again. Stuff I do has an effect on real Flash files again and doesn’t just make more of my crazy tests work. Still, I remember it being more fun when the code and testsuite were smaller and I didn’t break stuff all the time. ;)

Anyway, Swfdec properly plays embedded Youtube now. Here’s the proof:

And to make you enjoy it, I’ve done a 0.5.1 release of Swfdec. Have fun!

History

“In an ideal world I would have a database with all the tracks I have ever listened”

— Quim Gil

This struck me. There’s way too little information about the past available on my computer evben though there’s gigabytes of available space that could be filled. Can I please have a history of all the music I ever listened to, all the videos I’ve watched, all web pages I ever visited, all the background images I ever used. Even my whole GConf history would probably only take 10MB.

Why do I want that? Do you remember you visited this webpage with fotos your friend showed you last month? Or the music you listened to when you were a teenager? I don’t, but why can’t my computer?

Things I learned today

“I hope to see myself getting paid for doing KDE work in a few years, although I still have much to learn. […] I also see many companies porting applications to KDE, and I feel KDE will be better embedding in the desktop market. I will hopefully be using KDE on a PDA too.”

“Every user should have Konqueror”

— The Internet’s Jono Bacon, 2001

Dear people

Since there is too many of these people: Dear people thinking this, Swfdec is not supposed to be a glorified Youtube player. Swfdec is supposed to be a full Flash player replacement. Actually, the tagline for Swfdec is “Swfdec – making Flash not suck“.

Making Youtube work is a pretty obvious first goal for anyone writing a general-purpose Flash player as it’s by far the most requested use case. But as anyone following development should have noticed, there has been no focus on adding missing Youtube functionality but instead improving general Flash support.

Done

Done, 3 months of silence. It’s feeling weird to get a lot of press after being able to play Youtube and then not getting anything else done for a lot of time. But as noted in a previous blog post, I wanted to clean up the codebase. That is done now. Swfdec 0.5.0 “Meet Plan Party” is out. It should be equivalent in functionality to the last 0.4 release, but if you find any regressions, please file a bug, as I’m sure we’ve missed something.

What improvements does it offer the user? Some Flash files are less broken than they used to be, but in general, there’s not much changes. There is definitely no new Flash sites I can advertise as working.

What has changed is development. The code got way simpler and it’s much easier now to implement a missing feature or fix a broken one. Apparently other people think the same now, as there’s a whole lot of people interested in hacking Swfdec and providing patches. The Swfdec IRC channel grows all the time, too. Thanks guys.

So I guess now that the foundations are up to speed, we can get to implementing lots of new features – at least until we find more stuff that is broken. What I’m after in getting working next is Google Video, better support for Youtube (in particular making the embedded player work), and I want support for the Flash 8 bling features. We’ll see how far we get.

One thing I’d like to see fixed is the low-hanging fruits. There’s a lot of requested features in Swfdec that need to be implemented and it’s not hard to do, but it requires dedicating time to it. In no particular order:

  • The command-line player needs to be made a serious application so we can install it. It needs a menu, a .desktop file, etc – all the stuff a good viewer application should have. Currently the only way of quitting it is Ctrl-C in the command line running it.
  • Swfdec needs gettext support.
  • The Mozilla plugin needs preferences. People want to be able to define (ideally on a per-site basis) if Flash should be played or not and if audio should be used.
  • There should be an Epiphany plugin integrating Swfdec more closely.
  • Someone needs to write a Konqueror and Webkit plugin. I didn’t find anyone at aKademy willing to do that.
  • Swfdec needs a thumbnailer.

Of course I’d also love if someone actually started writing real applications using Swfdec so I’d have a clue if the Swfdec API is sane or what is missing. (Hint: I would really love a GUI to do my tests in.) And of course the Swfdec library itself requires lots of work to. So, anyone interested? The Swfdec API is fully documented and I intend to keep it that way even when I need to expose a lot more API to make your application work.

And one last thing: If you have cool Flash files and think we should know about them so we can make them work in Swfdec, send me a link to the files. Making cool Flash files work is a lot more fun than working on boring ones. And we’ll certainly debug them more thoroughly.

PS: This post got delayed to you by Guadec and FlyBE.

Arrival times

80 vs 30, and it’s better structured. There’s things that KDE does better than Gnome.

British Airways

The interesting thing about first impressions is that you only get one chance. British Airways royally screwed theirs. I wouldn’t have minded if there’s a problem or even two. But apart from not losing my baggage (other people I met did lose theirs) they managed to mess up pretty much everything. The thing I can blame them least for is British authorities treating me like a suspected criminal whenever I’m about to board an aircraft. Although I do somewhat blame them that they chose Heathrow as their hub. It’s certainly nicer in Frankfurt or Amsterdam.

No, the things I’m blaming them for is that they canceled my flight and didn’t provide an alternative. Well, they did inform me a day in advance via email and suggested I call their hotline. But waiting half an hour on a telephone listening to the same 2-minute loop is not really an option unless you’re lucky enough (as I was) to get someone to borrow you their local landline phone. But it was a really awkward situation not knowing if I’d get back home any time soon. It wasn’t even a problem after I had reached their hotline – I just got on the next flight 3 hours later.
And I do blame BA for every single flight I was on being delayed, on average an hour and a half. I can probably live with some of my flights being a bit delayed, but all of them? And three out of four for more than an hour? And to make matters worse, they didn’t even tell me. I kept sitting in front of the checkin thinking the aircraft would start any minute, but nothing happened. For hours.

So here is what I’m looking for that BA didn’t deliver:

  • Don’t mess up all the time. Keep yourself better organized, you don’t have to have delays and lose luggage all the time.
  • If something doesn’t work out as planned, keep me informed. And inform me as soon as possible. Tell me as soon as you know about the delay of your flight. This makes me feel like you care about me.
  • If something gets seriously messed up, again tell me why. And provide me with options. If you can book me on a flight some hours later, just do it. Send me a mail stating “your flight was canceled, we put you on the next flight, because we thought that would be at your interest. If it is not, please call/mail us at xxx.” And if you provide contact information, don’t let it be a hotline where I have to wait 30 minutes on hold.
  • Treat people better when something was messed up. It makes them remember you positively even though theior experience was worse. So if someone has to wait 10 hours for their connecting flight because you cancelled it, how about giving them access to your lounge?

Two things I think I should note that round things up: BA had 4 counters opened at Glasgow for the 3 aircrafts starting soon. Two for fast baggage drop after quick check in that I couldn’t use because of the cancelling (someone fix that), one for people not eligible for quick check in, and on for In-Scotland flights with a guy twiddling thumbs, because there were no such flights. It might not matter for British people if they have to wait for 90 minutes in a queue because there’s some guy twiddling thumbs, but I was a bit pissed.
And the second thing was the guy from LA who told me that his flight from Heathrow got canceled and he only got a flight a day later. But BA didn’t want to change his flight from LA to Heathrow to a day later without a lot of convincing from him. He coined the term “BA: big enough not to care”.

Themes…

There’s a nice rant by Aaron about themes. There’s a similar rant by Morten that writing theme engines is hard and there shouldn’t be so many crappy ones. The unfortunate thing is that they both don’t offer a soluton. We all know that the current system isn’t really up to the task. Everybody is complaining about it, application writers, theme engine authors, artists creating themes. But there’s three fundamental problems about this issue: The first is that we’re bound by Gtk API standards, which makes it hard to modify the current mess, the second is that no one has come up with a good API and third I haven’t seen a lot of people spending time thinking about this problem.

But what really worries me even more is that the blog contains a comment by our graphic guru Jimmac claiming that themes suck and we should instead use style guidelines and hardcode the theme. If we had done this, wouldn’t we still use Raleigh? Wouldn’t that also imply that Firefox should get rid of CSS support and use some style guidelines? Maybe I’m in a minority, but I want to be able to make my desktop look like Toontown, heaven or the cool new thing. Unfortunately, currently it always looks like Gnome.