
August 27, 2008 09:39 AM :: Germany 

August 27, 2008 08:59 AM :: Utah, USA 
Nate Whitehill of Unique Blog Designs fame is running a contest for their one-year anniversary. It's tough to keep an internet business going these days, and it's sufficient to say that Nate and his co-workers put in a ton of hard work to stay on top!
Of course, I can't forget that they make some fantastic blog designs, such as the one Bob Buskirk recently adopted for his blog.
The contest! Entering is simple, just leave a comment on the contest page here. However, leaving a comment only counts as one entry! For an additional five entries, blog about the contest! The winner will be randomly chosen Monday, September 1st, 2008. We will draw the winner via streaming video from the UBD office.
Oh, and there are some sweet prizes! First place gets an iPod Touch as well as their latest Citrus WordPress theme. Three runner-ups will also get a Citrus WordPress theme. Game on!
I found this page, which appears to be fairly old, but its new to me, which means odds are its new to someone else too.
Its basically a page that allows you to look at a huge number of screenshots of colorschemes off of Vim.org at the same time. Be fair warned, it will suck massive bandwidth and be super slow on non-broadband connections. Other than that its great fun to look around.
Enjoy the Penguins!

August 27, 2008 03:33 AM :: West Virginia, USA 
Silent computing is something I had never thought about before today. Well, not really anyway. I mean it has occured to me in the past that, “Gee my computer is loud,” but past that I never really put much thought into how loud it really is or how much it actually annoys me.
Today though all of this did occur to me so I went to Newegg.com after reading this article on a fanless power supply. After going there I attempted to create the quietest computer I could, sans harddrive and graphics card. Sans harddrive for two reasons really. First, I have a perfectly good harddrive from Western Digital I would frankenstien I actually built this computer. Second, the quietest drives out there would, of course, be the massive flash drives that are parading as “hard drives” these days. While I, like everyone else, would love to own two or three, I like most, can’t afford to have one for the hell of it. Sans graphics card because I don’t know where to go with that. I have never owned a graphics card that was new or fancy enough to have a fan built onto it. Second, how loud are those anyway? Third, whats the best ATI graphics card, sans fan, that you can buy?
Given all of that, here is the list of hardware I came up with, what do you think? Can you do better? All Linux compatible of course.
Enjoy the Penguins!

August 27, 2008 03:29 AM :: West Virginia, USA 
So Great Britain did really well in the Olympics this year, coming forth in both total number of medals, and in the number of gold, silver and bronze.
| Country | Gold | Silver | Bronze | Total |
|---|---|---|---|---|
| Great Britain | 19 | 13 | 15 | 47 |
So well done to all the Olympic Athletes for taking part, from whatever country.
Britain is of course part of the European Union. Alexander Stubb, the Finnish Foreign Minister who is in the news at lot a the moment after taking charge in Georgia, one said that "the EU will always be more than an international organisation, but less than a state." (Source - PDF)
So the people running the young Europeans website, had the fab idea of adding all the EU's medals up.
| Country | Gold | Silver | Bronze | Total |
|---|---|---|---|---|
| EU | 87 | 101 | 92 | 280 |
| China | 51 | 21 | 28 | 100 |
| USA | 36 | 38 | 36 | 110 |
| Russia | 23 | 21 | 28 | 72 |
Only a couple of medals away from getting more than the next three regions combined!
Maybe you disagree with Stubb and think the EU is not any different than other international organisations. In that case we would compare the EU to America's and Russia's international organisations.
| Country | Gold | Silver | Bronze | Total |
|---|---|---|---|---|
| EU | 87 | 101 | 92 | 280 |
| NAFTA | 41 | 47 | 43 | 131 |
| CIS | 31 | 35 | 56 | 122 |
Still win!
Discuss this post - Leave a commentAugust 26, 2008 11:54 PM :: West Midlands, England 

August 26, 2008 10:54 PM :: Connecticut, USA 
Instead of relying on one expert you try to have many people add all they know and in addition the result will sometimes be better than whatever some expert could come up with.

August 26, 2008 06:48 PM :: Germany 
SCENARIO:
My host machine runs a stable amd64 Gentoo and Virtualbox. My guest operating system is again gentoo (this time a bleeding edge unstable ~x86 with evil overlays), but every X11 capable guest should work.
The guest machine network uses NAT, so there's nothing to configure, just dhcp and internet works.
GOAL:
Have guest apps to look native on my host DE, using systray, being able to copy/paste, while still running on a protected enviroment.
No need to run session managers (xdm) in the guest machine, neither to configure Xorg or to install VirtualBox Guest Additions.
HOWTO:
NAT doesn't allow host to ssh in guest, but there's a workaround:
$ VBoxManage setextradata "VBoxInternal/Devices/pcnet/0/LUN#0/Config/ssh/HostPort" 2222
$ VBoxManage setextradata "VBoxInternal/Devices/pcnet/0/LUN#0/Config/ssh/GuestPort" 22
$ VBoxManage setextradata "VBoxInternal/Devices/pcnet/0/LUN#0/Config/ssh/Protocol" TCP
Read here to find how to undo those steps.
The guest now must be shut down (a simple reboot will not work).
Now the host machine can ssh into guest using this command:
$ ssh -p 2222 "user"@localhost
On the host machine we uncomment/edit those lines in /etc/ssh/ssh_config
ForwardAgent yesOn the guest machine we uncomment/edit this line in /etc/ssh/sshd_config
ForwardX11 yes
X11Forwarding yes
Remaining in the guest machine we reload the ssh revice:
# /etc/init.d/sshd reload
Now we run (from the host) a little test to see if everything works fine:
$ ssh -p 2222 "user"@localhost -YC xclock
If it complains about wrong autenthication remove from the guest ~/.Xauthority and try again.
Now we make things nicer:
$ echo "alias runguest='ssh -p 2222 "user"@localhost -YC '" >> .bashrc
Now we can open a terminal and:
$ runguest firefox
Cool, isn't it?
DEAR LAZYWEB:
One of the nicest features of VirtualBox is the ability to "hibernate" the guest "saving the machine state". Can anybody find a way to ctrl-z a forwarded app, suspend the Virtual Machine and then foreground it once resumed the VM?
August 26, 2008 06:07 PM :: Italy 
August 26, 2008 04:42 PM :: Utah, USA 
August 26, 2008 02:48 PM :: Utah, USA 




August 26, 2008 02:09 PM :: Utah, USA 
August 26, 2008 12:55 PM :: Germany 


August 26, 2008 10:51 AM :: Utah, USA 
This article is part of the OQO odyssey series - You can find the previous posts here, here and there.
If you think, the rest of the installation would be a cakewalk, you are under a misapprehension. But let’s talk about it one after the other.
I should start my report at kernel level which was the first big thing as I haven’t seen the WIFI Card or the Ethernet controller on the pci bus. But where is it? The answer is USB:
Bus 003 Device 002: ID 1557:0002 OQO model 01 WiFi interface
Bus 003 Device 003: ID 1557:0003 OQO model 01 Bluetooth interface
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 001 Device 004: ID 1557:7720 OQO model 01+ Ethernet
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Great. The info delivered from the lsusb command is as useful as windows error messages on a Linux environment. So all that helps now is googling for some more hints what they really did. After some hours I was sure: The Ethernet card turned out to be an ASIX AX8817X based thing while the wlan should be something like an Atmel AT76C505A USB WiFi.
Knowing the components it was quite easy building a suitable kernel. But how do we transfer our chroot stuff to the umpc? Our main problem there are our permissions we got to preserve. I have decided to do it the ‘tar’ way, abusing ssh for saving some space while unpacking:
tar cpf - * | ssh oqo “(cd /mnt/gentoo/boot; tar xvpf -)”
But you should take care of the disc first: If you unpack the archives over some existing files, you might run into troubles - at least I did: The device booted, but the next emerge ripped out many essential packages due to some strange things happening with the world file. So my advice would be formating the partition before doing that stunt!
The transfer went fine and just like a miracle the OQO booted. Wow. I could even log into the system for checking if things are ok. As I didn’t like the damn small keys, I just started up an ssh session to the device still being connected to my Ethernet card but sadly ACPI and WIFI refused to work.
Cursing doesn’t help here - so I continued my research which lead me to a package named net-wireless/at76c503a which should take care of my WIFI card. But did you notice the word ’should’?
The next thing I’ll be doing is shooting some messages to some mailing lists for getting some hints. But I’ll keep you updated!
August 26, 2008 06:24 AM :: Vorarlberg, Austria 
Reading some posts about embedding languages/runtimes in applications on Planet GNOME reminded me I still had to announce some really quick and incomplete code blob I created some days after last GUADEC edition (which was insanely cool, thanks guys).
It takes WebKit’s JavaScriptCore and allows you to embed it in some Python program, so you, as a Python developer, can allow consumers to write plugins using JavaScript. Don’t ask me whether it’s useful, maybe it’s not, but anyway.
There’s one catch: currently there is no support to expose custom Python objects to the JavaScript runtime: you’re able to use JavaScript objects and functions etc. from within Python, but not the other way around. I started working on this, but the JSCore API lacked some stuff to be able to implement this cleanly (or I missed a part of it, that’s possible as well), maybe it has changed by now… There is transparent translation of JavaScript base types: unicode strings, booleans, null (which becomes None in Python), undefined (which becomes jscore.UNDEFINED) and floats.
I did not work on the code for quite a long time because of too much real-job-work, maybe it no longer compiles, sorry… Anyway, it’s available in git here, patches welcome etc. I guess this is the best sample code around. It’s using Cython for compilation (never tried with Pyrex, although this might work as well). If anyone can use it, great, if not, too bad, I did learn Cython doing this ![]()
August 25, 2008 09:49 PM :: Connecticut, USA 
August 25, 2008 08:58 PM :: Connecticut, USA 
August 25, 2008 07:16 PM :: Utah, USA 
As announced I spent the last weekend at the FroSCon 2008, in Siegburg near Bonn. For the first time ever, I had the chance to meet some of the people behind DokuWiki. And it was really great
. We spent almost the whole weekend hacking in our own room on the FroScon area. Apart from updates to the XML-RPC backend we had a lively discussion regarding possible implementations of Wiki Farms with DokuWiki and I think there where also some ideas about WYSIWYG floating around. Because we where quite busy, I somehow completely forgot to attend any lectures during the whole weekend though
.
On Saturday evening a social event took place, or in other words, there was beer1) and barbeque and we had a good time chatting about all kinds of stuff. Sadly I had to leave early on 15:15 on Suday to catch my train back to Munich.
All in all it was a really great experience to meet all those nice people, and it's cool to be able to connect a face and some good memories to an IRC nickname or and email address
. I am really looking forward to the next event (maybe the CCC congress in december
).
August 25, 2008 07:02 PM :: Germany 
August 25, 2008 05:38 PM :: Connecticut, USA 
August 25, 2008 04:48 PM :: Utah, USA 
August 25, 2008 10:42 AM :: Utah, USA 
I was feeling kind of nostalgic today, after the house poking around, and I always enjoyed driving Wisconsin Highway 33 (which has terminus points in La Crosse and Port Washington!). In fact, I think taking that 4 – 5 hour drive from one end to the other was my favorite part of living in La Crosse, to the point that I had often gone out of my way to start my drive at one end, so I could say that I drove the entirety of 33.
Anyway, nostalgia. I “drove” 33 again today by turning on satellite view on Google Maps, zooming in as close as I could for each location, and scrolling from La Crosse to Port Washington. Fun times.
August 25, 2008 03:05 AM :: Wisconsin, USA 
Uma das coisas mais comuns no uso do gentoo, principalmente quando mistura pacotes estáveis, testings e unstables (como eu costumo fazer), é o downgrade de algum pacote para alguma versão anterior sem uma razão aparente, como o downgrade de uma versão estável para uma antiga versão.
Isso ocorreu comigo quando fui realizar um emerge -NDuav word:
hellboy ~ # emerge -NDuav world
These are the packages that would be merged, in order:
Calculating world dependencies… done!
[ebuild UD] dev-util/bzr-1.1 [1.5] USE=”bash-completion -curl -emacs -sftp -test” 3,346 kB
[ebuild U ] app-text/poppler-0.8.6 [0.8.5] USE=”jpeg zlib -cjk” 1,435 kB
[ebuild U ] app-text/poppler-bindings-0.8.6 [0.8.5] USE=”cairo gtk -qt3 -qt4 -test” 0 kB
Total: 3 packages (2 upgrades, 1 downgrade), Size of downloads: 4,781 kB
Would you like to merge these packages? [Yes/No]
Vejam o caso do bazaar (dev-util/bzr), mas acontece que a versão 1.5 é uma versão estável como aponta o eix:
hellboy ~ # eix dev-util/bzr
[I] dev-util/bzr
Available versions: 0.17 1.1 ~1.3 ~1.4 1.5 [M]~1.6_rc5 {bash-completion curl emacs sftp test}
Installed versions: 1.5(07:43:31 PM 08/23/2008)(bash-completion -curl -emacs -sftp -test)
Homepage: http://bazaar-vcs.org/
Description: Bazaar is a next generation distributed version control system.
A razão deste comportamento é sempre por causa de algum pacote já instalado ou que vai ser instalado, eu acho que a maneira abaixo a mais simples para descobrir qual o pacote esta forçando o downgrade.
Primeiro eu mascaro o todas as versões abaixo da versão já instalada do programa que esta sendo forçado o downgrade, no caso, todas as versões do bazaar abaixo do 1.5.
sudo echo ‘<=dev-util/bzr-1.4′ >> /etc/portage/package.mask
Feito isso, refaço o comando que originou o pedido de downgrade e vejo o resultado:
hellboy ~ # emerge -NDuav world
These are the packages that would be merged, in order:
Calculating world dependencies /
!!! All ebuilds that could satisfy “=dev-util/bzr-1.1*” have been masked.
!!! One of the following masked packages is required to complete your request:
- dev-util/bzr-1.1 (masked by: package.mask)
For more information, see MASKED PACKAGES section in the emerge man page or
refer to the Gentoo Handbook.
(dependency required by “dev-util/bzrtools-1.1.0″ [installed])
!!! Problem resolving dependencies for dev-util/bzrtools
!!! Depgraph creation failed.
Dai eu observo que o responsável pelo downgrade é o pacote dev-util/bzrtools, que consta com todas as versões consideradas como instáveis:
hellboy ~ # eix bzrtools
[I] dev-util/bzrtools
Available versions: ~0.17.1 (~)1.1.0 ~1.3.0 ~1.4.0 ~1.5.0
Installed versions: 1.1.0(02:34:38 AM 02/06/200 ![]()
Homepage: http://bazaar.canonical.com/BzrTools
Description: bzrtools is a useful collection of utilities for bzr.
Como é um caso de pacotes instáveis, uma maneira seria apagar o pacote instável ou utilizar a keyword, como eu estou querendo aprender mais do bazaar, prefiro arriscar utilizar o pacote instável.
sudo echo ‘=dev-util/bzrtools-1.5.0 ~*’ >> /etc/portage/package.keywords
Com isso elimino a fonte do downgrade e refaço o meu comando sem medo de downgrades :-D.
hellboy ~ # emerge -NDuav world
These are the packages that would be merged, in order:
Calculating world dependencies… done!
[ebuild U ] dev-util/bzrtools-1.5.0 [1.1.0] 82 kB
[ebuild U ] app-text/poppler-0.8.6 [0.8.5] USE=”jpeg zlib -cjk” 1,435 kB
[ebuild U ] app-text/poppler-bindings-0.8.6 [0.8.5] USE=”cairo gtk -qt3 -qt4 -test” 0 kB
Total: 3 packages (3 upgrades), Size of downloads: 1,517 kB
Would you like to merge these packages? [Yes/No]
![]()

August 25, 2008 12:33 AM :: DF, Brazil 
August 24, 2008 08:46 PM :: Connecticut, USA 
" map <F3> to html-ify a given document
map <silent><F3> :so $VIMRUNTIME/syntax/2html.vim<CR>August 24, 2008 06:24 PM :: Germany 
Now that I’m looking for a house, I’m kind of regretting that large payment I made towards my student loan a month ago because “the money was just sitting there.” Doh!
August 24, 2008 04:10 PM :: Wisconsin, USA 




August 22, 2008 11:52 PM :: Connecticut, USA 
August 22, 2008 08:52 PM :: Connecticut, USA 
Picked up, among others, the Forgotten Realms Campaign Guide. Have only paged through it, but it’s pretty interesting so far. Unapologetically changed the physical landscape, dropped a lot of deities, killed off Mystra, dropped the Weave, so on and so on. Am I going to run it? Dunno. But it’s tempting me, in that “ooh, it’s the Realms” way, changes or not.
Need to read more (also reading GURPS stuff). Maybe I’ll dust off the Undermountain campaign…
August 22, 2008 07:32 PM :: Wisconsin, USA 
Static methods and variables are shared by all instances of the class. Static variables are initialized when a class is loaded whereas instance variables are initialized when an instance of the class is created. Static methods belong to a class, therefore, it can only access static members of the class and it can be called before instantiating the class.
class StaticCase {
static int staticCounter = 0;
int nonStaticCounter = 0;
StaticCase() {
staticCounter++; //class level
nonStaticCounter++; //instance level
}
}
class StaticCaseImpl {
//static method, entry point
public static void main(String... args) {
//StaticCase.nonStaticCounter, error, not a static variable
StaticCase sc1 = new StaticCase();
StaticCase sc2 = new StaticCase();
System.out.println("staticCounter sc1: " + sc1.staticCounter);
//output is staticCounter sc1: 2
//or in static context, StaticCase.staticCounter
System.out.println("nonStaticCounter sc1: " + sc1.nonStaticCounter);
//output is nonStaticCounter sc1: 1
System.out.println("staticCounter sc2: " + sc2.staticCounter);
//output is staticCounter sc2: 2
//or in static context, StaticCase.staticCounter
system.out.println("nonStaticCounter sc2: " + sc2.nonStaticCounter);
//output is nonStaticCounter sc2: 1
}
}
August 22, 2008 02:23 PM :: Zamboanga, Philippines 

August 22, 2008 12:56 PM :: Connecticut, USA 
August 22, 2008 12:36 PM :: Utah, USA 
You remember that I have tried to crack some random passwords using John The Ripper, don’t you? Well - if you don’t, here’s the according post. Fact is, that I’m as curious as you are about the results - that’s why I didn’t give up yet. So here are the results so far:
guesses: 0 time: 30:22:54:46 c/s: 970 trying: luomme7
We’re cracking since 30 days and no password was cracked so far.
August 22, 2008 06:05 AM :: Vorarlberg, Austria 
August 21, 2008 09:40 PM :: Connecticut, USA 
August 21, 2008 02:59 PM :: Utah, USA 
The word tuple is used quite a lot in computing. That’s what database people call a row in a table. It’s also what several programming languages call a structure where the fields are ordered but not named.
It seems to be one of those words that is hard to translate, so other languages often use the English word. And yet there is some confusion about pronunciation. Some say tahple, some say twople. As far as I know there is no dispute about the spelling, it’s tuple. So where do you get twople from that?
I think having a lot of exceptions on pronunciation from what is the obvious pronunciation is bad for language. There are words that are fancy or interesting enough to perhaps deserve it, but tuple isn’t one of them. So I’m going to keep saying tahple.
August 21, 2008 07:09 AM :: Utrecht, Netherlands 
As promised in the first part, we want to do the stunt ourselves - but as I do not own a copy of Flash nor someone was willing to donate a license, I have to do it in PHP using the MING Library. But let’s stop ranting and get down to a text editor:
ming_useswfversion(7);
$movie=new SWFMovie(7);
$movie->setDimension(480, 360);
$movie->Background(0,0,0);
What we did here is the start of a small php script that generates an empty flash object we’ll be using as our workspace. Its size is 480 by 360 pixel. As I’m damn creative, I just call it ‘video’ and start adding some more code for embedding the video ’screen’ into it:
$stream = new SWFVideoStream();
$stream->setDimension(480, 350);
$item = $movie->add($stream);
$item->moveTo(5, 5);
$item->setname("video");
Now our scene is set and ready for the flv file we know from the first post. In Flash we’d be using ActionScript. I guess it would look that way:
connection = new NetConnection();
connection.connect(null);
stream = new NetStream(connection);
video.attachVideo(stream);
stream.setBufferTime(10);
stream.play('http://ourhost/mystream.flv');
For using that code in PHP, I just smack it into a variable and add it as SWFAction to our project. Regarding the location of our flv file: Feel free to be creative - I’m just using a static location here as it’s just a demo.
$action = new SWFAction($action_string);
$movie->add($action);
Ok people - Now the important part: as I am a man, I need something to play with while watching the video. How do buttons sound? Controls?
Let’s fire up gimp and paint them. If you’re nice, save them as DBL graphics or just use the png2dbl tool that came shipped with ming. As I’m done with the paint job now, let’s hack it into our player:
$button = new SWFButton();
$flags = (SWFBUTTON_UP | SWFBUTTON_HIT | SWFBUTTON_OVER | SWFBUTTON_DOWN);
$button->addShape(ImageShape("images/pause.dbl"), $flags);
$action = new SWFAction("stream.pause();");
$button->addAction($action, SWFBUTTON_MOUSEDOWN);
$button_ref = $movie->add($button);
$button_ref->moveTo($x, $y);
And that was the easy part because I want a progress bar. As we have already quit our paint program, we’ll be doing it using PHP:
$mc = new SWFSprite();
$shape = new SWFShape();
$shape->setLine(4,25,0,0,128);
$shape->movePenTo(0, 5);
$shape->drawLineTo(0, 10);
$mc->add($shape);
$mc->nextFrame();
$slider = $movie->add($mc);
$slider->moveTo($xMin, $y);
And now let’s move it:
$a = new SWFAction("startDrag(this, $xMin, $y, $xMax, $y, 1); drag = true;");
$slider->addAction($a, SWFACTION_MOUSEDOWN);
$a = new SWFAction("stopDrag(); drag=flase;");
$slider->addAction($a, SWFACTION_MOUSEUP);
The progress bar is now drag able, but it still doesn’t work until we add some more code:
// width in px
width = xMax - xMin;paused = false;
if(drag) {
// pause stream while seeking
_global.stream.pause(true);
paused = true;
x = _root._xmouse - xMin;
seekTo = (_global.streamLen / width) * x;
_global.stream.seek(seekTo);
} else {
pos = (_global.stream.time * (width / _global.streamLen)) + xMin;
this._x = pos;
this._y = y;
}// restart paused stream
if(paused) {
_global.stream.pause(false);
}
And that’s it. Let’s finish the movie by skipping to the next frame. Regarding my demo script here, I’ll just write a swf file as I have hardcoded the FLV file location. Alternatively you might want to make php send the swf file to your clients.
$movie->nextFrame();
$movie->save("FLVPlayer.swf");
The moral of the story: There’s no magic behind those video portals. It’s just some lines of code, darn simple and stupid.
August 21, 2008 06:54 AM :: Vorarlberg, Austria 
August 20, 2008 12:59 PM :: Germany 
August 20, 2008 12:54 PM :: Germany 
The pop singer Lily Allen wrote a piece on her blog saying that she had finished her anticipated second album called Stuck On The Naughty Step but her record company had not yet released it, perhaps because the people supposed to be doing that had been laid off.
For this post, it does not matter if you like Lily Allen or not, but in the last paragraph, I linked to the Lily Allen's blogpost, look did it again! Not hard was it?
Well three of four of Britain's major national broadsheet papers quoted from the above blog post, the Times, Guardian and Telegraph, All three of them failed to link to their source. The Metro, the paper they put on buses and trains, did not do any better.
Only the tax funded BBC managed to link to Allen's site. However, the link is across in the right column, and does not link directly to the blog post.
I know by the standards of newspapers that the hyperlink is cutting edge technology, being invented only in 1965 by Project Xandu and first used on the World Wide Web in 1991 by Sir Tim Berners-Lee
The journalists presumably had the blog they were cutting and pasting from in front of them while writing, would it have been that much more effort to cut and paste the URL into the post?
On most browsers, you can copy the URL with these three shortcuts: Ctrl+L, Ctrl+A, Ctrl+C
Unless you are on the Mac, then you want: Cmd+L, Cmd+A, Cmd+C
Hyperlinks are what turns text into hypertext, there is a clue in every link: http://, the HTTP stands for Hyper-Text Transfer Protocol. It is not PTDP the "Plain Text Deadend Protocol", it is not NWHTHTCNLP, the "Now We Have Them Here They Can Never Leave Protocol".
Linking to what are you talking about is how the Web works, like taking your trolley back to the trolley rack is how supermarkets work. Throwing your trolley into a ditch or leaving it in the middle of the road ruins the ecosystem. It is also rather inconvenient for the other shoppers who find there are no trolleys anymore.
Likewise, withholding the sources to keep your readers in the dark is disrespecting the ecology of the Web. Again the key is in the name "Web", interconnected sites, it is the World Wide Web, not 'My Little Cul-de-sac'.
Discuss this post - Leave a commentAugust 20, 2008 10:38 AM :: West Midlands, England 
Have you ever asked yourself how sites like YouTube are working? Why it is possible grabbing videos from there that simple? How it’s built? I guess that’s some questions now. But if you don’t mind, I’ll answer some…
Let’s start with our web browser and hit a video portal. As an example I’m using the following video clip found on YouTube:
Let’s assume that everything web based has to be downloaded to your computer to be displayed in your browser. In our case it’s a website and the embedded flash video object which should even be cached on disc. The clue here is the fact that if you hit the reload button, the video is already ready to be played instantly.
As a proof you can empty your browser cache and reload the site again - et voilà, we’re downloading it again. Having an empty browser cache is a nice thing, especially if you are looking for objects inside. Regarding our experiment here, we should have the swf flash movie in there, the website itself and some images.
But if you watch your cache carefully, there’s more in it - a strange file named .flv which leads back to Macromedia if you google for it. Let’s watch another video without clearing the cache and see what happens: The swf file stays pretty much the same - just the flv file count increases.
Now let’s add 1 and 1 and hope its result is 2: If I am right, the flv file i