Wednesday, December 2, 2009

Emaily stability fixes, ~6000 email per day, Sydney

Since the release of Emaily 0.3, the usage skyrocketed. On the Monday after Thanksgiving, many people started to use it. As I am writing now, it is expected to send out about 6000 emails per day.

When I first reported that Emaily sends out 1500 emails per day that number was wrong, the real number was much lower. The cause of the false report was a software bug, which tried to send an email in every minute, but it failed and it counted as email sending. When I fixed the bug, the daily number fell to ~300. But now, the 6000 seems to be a real number, as no bugs are known which is about resending. :)

In the last days, we made a lot of efforts to stabilize the system. We got many concurrency-related errors, some people complained about duplicated waves from emails, etc. Now it seems that the most severe problems are solved, we got barely a few errors because of the underlying datastore, nothing else.

The focus of the near future is to refine the send and receive logic (how exactly we will add recipients to the blips, wavelets), fix how a new incoming email appears, fix of resending the arrived blip to the sender, etc. Soon you'll see changes for these.

From next week, I'll be in Sydney and work with the Google Wave team to make Emaily and Google Wave better. Are you interested? Just stay tuned!

Monday, November 30, 2009

New #Emaily release: 0.3 - manual send, incoming email threading, new participant icon. #googlewave #wave

Finally, Emaily 0.3 and some long-awaited changes are ready! In the last month, we have improved Emaily by:
  • Adding the possibility of manual sending (blip-by-blip, no automatic emails). You just have to uncheck the "Automatic send" checkbox, and in the new or edited blips, a "Send" button will appear. By clicking it, it will initiate the email sending.
  • Fixing the bug with accented, cyrillic, chinese, etc. (not plain US) e-mail subject encoding problem. (now you'll see "УРА, работает" instead of "???, ????????").
  • Support for threading of incoming emails. Your emails will appear as a new blip if they are answered by the email recipients. They won't always open new waves from now. (Credits for this goes to Christophe!)
  • Changing icon for email participants (to make it easier for you to distinguish email recipients from the robot itself). Note, that it is not the final icon, but better than the previous one.
  • Reduced the database and CPU usage of emaily when you have multiple email users on a wave.
Please take a look at the open issues page, vote for your favorite feature (or bug), and then they'll be implemented/fixed earlier.

We know that Emaily is still in an early stage, there are some missing features which we would like to address. There are also known issues, especially sometimes strange participants appear in the waves which Emaily creates (vote for this bug here).

Besides these, we have plans for improvements, too:
  • Adding the possibility to autocomplete email addresses from the user's addressbook. This is not that easy that it seems (vote for this here).
  • Add HTML email support for receiving and for sending also (vote for this here).
  • Add attachment sending/receiving (vote for this here).
If you did not find your favorite feature or you encountered a bug, please open a new issue.

We express our deeeeeeep gratitude to all who helped us in finding bugs and using Emaily. Guys, without you we would not have had such progress! Thanks all of you and keep going!

Enjoy using Emaily!

Best regards,

Guru & Balázs
representing the Emaily team.

Tuesday, November 17, 2009

Emaily short news: version 0.2.2: bugfix release; publicity, community; in the works #emaily #googlewave #wave

I'm happy to announce the new version of Emaily: 0.2.2, the new homepage, some community news, and what are in the works.

Emaily 0.2.2:

There are not too many user visible changes in this release, it is mainly about bugfixing. If you are interested about the technical details, here they are:
  • We did not store the wave-id to the wavelets, just the wavelet-id. I assumed it is unique, but it turned out that there are many wavelet ids that are the same, so we actually ended up an almost unusable database. Now in this release, we will start storing the wave-id, so each wavelet is actually unique.
  • Some cleanup happened in the email-receiving code.
  • The datastore tricked me a little: I assumed that if I set a field to null, then it won't match a given numeric query (less than a number), but I was wrong. The result of this mistake was that every time the robot checked for emails to send, it looked through the whole database. Over time, one call consumed more and more CPU, and became slower and slower. The fix was easy, and now it works well.
  • There was a bug in the robot API, which made the robot fail and forget to record the changes in its state when a blip is deleted. This was probably caused by some recent change, because earlier we did not have this problem. I made a workaround for that, so this is also working fine.
  • Added an empty robot page in http://emaily-wave.appspot.com, which redirects to the homepage (http://emaily.dlux.hu).
I hope this release will be much more stable than before.

New homepage

Well, not actually new, but the informations are updated. I hope the usage is easy enough now for most people to use it.

Publicity, community

I opened a wave for questions and feature requests. If you did not know about that yet, check the new homepage for the link. (I don't want to write the link here, because it might change in the future. The reason is that it is getting pretty slow to load: 132 blips currently). Feel free to contribute!

Arpit wrote a nice review about Emaily, you can check it here! Thank you very much!

l3reak has a step by step description of Making Google Wave work with E-mail & facebook. Very extensive description on how to use Emaily! Good work, thank you!

In the works

We are working on two major things, and I hope we can get it done soon:

Manual sending:

Emaily currently sends unedited blips after about one minute, but some people prefer pressing the "Send" button instead.

Maybe you want to write a very important email to your love, your landlord or your boss: you don't want Emaily to rush you, do you?

Threading:

Now Emaily creates a new wave from all your incoming messages, but a conversation-like user experience would be much better: We'll create a new blip instead of a new wave when a reply comes from an email user.

If you are interested in the updates about emaily, subscribe to my twitter (dluxhu) or to the "emaily" label in my blog.

Monday, November 9, 2009

Emaily 0.2.1: Easier to use email sending in Wave #emaily #googlewave #wave

This weekend was pretty busy in the Emaily world!

Christophe and me also worked on things, and we incorporated the first change from Karan, too. Some of them you can see already, some of them are coming in the next week(s)!

The biggest news is that you don't need to manually encode the email address anymore if you want to send an email to someone with Emaily.

Here is how to use Emaily now:
  • Add emaily-wave@appspot.com to your contact list.
  • Click on the contact entry, select "New Wave".
  • It will create a new wave with you and Emaily in it.
  • The robot will add a blip at the end of the Wave, and an input box where you can add email participants with their email address. It will do the hard work for you to convert their email address to Wave participants. No more manual work. You will see that the new recipients will show up in the recipients list.
  • After you finished, you can leave the blip as is, or you can even remove it.
Features to come in the next releases:
  • Make Emaily an extension: how about a "New Email" button to make things even easier?
  • Threading: do you want the answers in the same wave as you sent the first email from? We want that, too!
Enjoy!

Saturday, November 7, 2009

Emaily release: 0.1.1: Bugfix. ~1500 emails are sent out daily. #wave #googlewave

New weekend, new Emaily release. Not too much visible change in version 0.1.1, just a small bugfix, which made emails queue up. If you just got your email which you sent a couple of days ago, then this is why it happened. :)

About ~1500 emails are sent out daily with Emaily now. This is a big number given that it is just a very early version!

Spread the word, use this robot!

In the next weeks we're going to work on more usability features. If you have a feature request, feel free to send it!

Sunday, November 1, 2009

Emaily 0.1: Google #wave now sends and receives email #googlewave

We are sending and receiving emails, too!

This is a major breakthrough even if the code is in a very early stage.

Changes:
  • Now it does not send emails right after you submit a blip, it intelligently waits a little before sending. It even collects multiple blip changes into one email.
  • Email receiving is activated. You will get new waves from emails which are answered to your wave outgoing email address. (which is: yourusername+googlewave.com@emaily-wave.appspotmail.com). The code for this is made by Christophe.
Please note that the version number is 0.1, so many things are still not working, but we are working on them. These are:
  • Threading: incoming emails always create a new wavelet. In the future versions, if you get an email answer to a wave, then it will just create a blip.
  • Answering to the wavelet's address. Every wavelet has an email address, and whenever someone answers to that address, it is currently not working. Emaily uses it as an outgoing email address if an email contains changes from multiple people.
  • HTML emails.
  • Receiving emails automatically. Currently wave creation is triggered only when someone does something in a wave where the robot is a participant. This is the limitation of the API, but if many people will use the robot, it is not going to be a problem. So if you are testing Emaily, and trying to receive emails, just open a wave which contained an email recipient, edit a blip and press "Done" without changing the content. It will trigger creating wavelets from emails.
  • Sending emails from your username@googlewave.com. We cannot send emails from your email address currently because of security. We're trying to figure out how it would be possible.
Redirecting emails to your wave box email address

If you are brave enough, you can redirect all your emails to your wavebox. In GMail, go to Settings / Forwarding and POP/IMAP, select "Forward a copy of incoming mail to ...", write your wave incoming email address there: yourusername+ googlewave.com@emaily-wave.appspotmail.com. Select "keep GMail's copy in inbox" if it was not selected.

Note, that I DO NOT suggest this yet, but you can give it a try.

Happy Waving!

Balázs & Christophe

Sunday, October 18, 2009

Emaily approved for the Wave Samples Gallery

While we are still working on Emaily to make it usable for many people, I submitted it to the Wave Samples Gallery, because it can contain some code which would be usable for others, for example usage of guice in a robot and using the "proxyingFor" request field to determine the email address of an email user. The submission is just accepted a couple of minutes ago. Here is the entry for Emaily: http://wave-samples-gallery.appspot.com/about_app?app_id=46003

For people who want to use it: it can send emails, but it cannot receive answer yet. See my previous blog post on the usage.

Wednesday, October 14, 2009

St Maarten airport (2004)

In St. Maarten, there is a beach behind the airport. We had a couple of hours there. The airplanes are landing just about 20 meters above our head.

But the takeoff is also interesting. I tried to record it into video (with a Fuji FinePix 5000), but the hot sand was so burning so that I had to hide behind the car after a couple of a second, so the end of the video resembles to a disaster-movie:


Another movie from the same place (landing, no my video):

Sunday, October 4, 2009

Emaily 0.0.2: Google #Wave now sends email - but lots of work ahead to make it usable

I'm happy to announce Emaily version 0.0.2, which now able to send email. This is the first time email can be sent from Google Wave.

But don't be too excited about that, it is still not too useful, it has a lot of limitations. The main problems are:
  • You cannot receive answer to the email yet.
  • There is no rate-limiting on emails: If you edit a blip and submit it, then it will immediately fire an email to the recipient. When you edit a blip and finish editing, it will send it again, etc. It is a pretty annoying user experience for a user who is participating on a constantly changing wave. This makes me a little bit cautious about publishing it too much, because if people will start spamming with this tool, we have to disable the it until we add some rate limiting to it.
How to test it

First of all, you have to do some work with the email address you want to send the email to:
  • Take it apart into two parts: username and domain (the separator is the @ sign), for example for test@example.com the username is test and the domain is example.com .
  • Add the emaily-wave+username+domain@appspot.com to your contacts, in our example it would be emaily-wave+test+example.com@appspot.com.
You have to do it exactly this way, it will probably won't work if you do it in an other way:
  • Open a new wave with the previously created contact. Don't add multiple email-contacts to the wave, it is not working yet as intended.
  • Write your message.
  • Click "Done."
The email will arrive to the recipient's mailbox, but he cannot answer to it yet.

You can return and edit the wave, add new blip to it, these operations will generate a new message.

We're working on adding the ability to receive emails, plus rationalize the outgoing emails somehow. A lot of work have to be done on make it more user-friendly also.

Thursday, October 1, 2009

Swine flu: the media vs. other opinions

I got many emails, videos and documents about the Swine Flu antidote (TamiFlu) and the vaccine. I have no chance to check whether these are true or not, but there are a few things which are true for me:
  • I don't like the media, they usually concentrate on bad things. If there is one crazy lunatic in 1000 people, they will report it and state that everyone is a crazy lunatic, so everyone should be sent to jail.
  • I usually don't like the medicines, because they are trying to force something to your body, and they are usually suppressing the symptoms, not solving the root cause of the problem. Most of the time I did not think that using medicine is justified. Extraordinary cases of course can happen (painkillers after wisdom teeth operation, etc.).
  • Because of the reason above, I usually don't take medicine, just sometimes vitamins.
  • Medicines can have a lot of side effects.
  • I think the world as it is now is just simply crazy, and I don't believe that it is naturally like that. I saw people suppressed who just wanted to do some big and good thing. I feel that something is just not right.
  • Why a good doctor could not help a patient with cancer with his knowledge and why he asks the patient after a couple of months what she did with herself so that her results look very good? What did he studied for 10+ years?
  • Where is the homeopathic curing, which actually tried to handle the root of the problem? Why it is considered "alternative medicine"?
So far I got the following things:
Against these informations, there is the media, and that many people are in danger, many people died, etc.

So, everyone have to decide for himself what he thinks about this topic.

If you have any material about this topic, please post it to the comments.

Tuesday, September 22, 2009

First release: emaily 0.0.1

I made a new release about Emaily, an Email Robot for Google Wave.

This is the first release, it does not actually do too many things, just add an email-participant selection gadget to a wave, when itself is added.

How to use it:
  • Add emaily-wave@appspot.com to your Wave addressbook.
  • Create a new wave.
  • Fill the subject, start writing the email.
  • Add Emaily Robot to your wave.
  • You will see that the participant selection is popping up.
Work in progress. :) I am looking for coders and helpers.

More information about the project:

Sunday, September 13, 2009

Home audio server from Mac Mini (or any Linux/Unix)

I've read many posts about using computers as home media servers, but none of them provided the necessary functionality which I needed. In this post, I'd like to share my setup with a Mac sound server, and a Mac client. The process can be adopted to Linux easily.

The setup

First of all, I use a laptop as my main computer, and all of my music is in it. I bring it everywhere. At home, I have a Mac Mini. It is used mainly as a guest computer and for backup.

When I go home, I'd like to use my stereo to play my music. Plugging the sound cable into the laptop is too old-school, and it limits my movement in the flat, so I needed to find another solution.

I could use Apple's music sharing technologies (iTunes Music Sharing, iTunes Home Sharing - this is new in iTunes 9), but the problem is that it does not count in my laptop that I have listened the music. I have automatic playlists, which pick only songs which are not played recently, so that I don't listen music repeatedly. I also use iTunes DJ a lot, and remote libraries cannot be added to iTunes DJ, so it is also not working. I like my playlists, so it is not a good solution.

I had an Airport Express before, but it did not play music videos, just music. It would have been a good solution, though.

The best setup so far was that I mounted my iTunes library which relies on the laptop to the Mac Mini and started the iTunes instance in Mac Mini. It always took a couple of minutes to set up, so I did not use it frequently. Another reason why I did not like this was that I often started iTunes in the laptop accidentally when the iTunes run on the Mini, and that is dangerous: who knows what happens with your library file if two iTunes instance uses it. The last and most annoying problem was that if someone else used the Mac, then my iTunes was in the background, and could not use the audio output.

The solution

In my old Linux days, I used Esound to send music and sound effects to another computer. It was more than 10 years ago, but Esound is still around, I've found two blog entries which uses that to solve this problem: on MacOSXHints and on a DSLinux-related site. I improved them a little, and here is my solution:

The server

The server computer in my case is a Mac Mini. This computer is connected to the Hi-Fi, so this is turned into an audio server, like the Airport Express, but it also mixes the sound effects of the currently logged in user, so that guests also can listen to some music when they use the computer.

What you need to do the setup:
  • esound
  • netcat (I used gnetcat here.)
These can be installed through macports or might be available through fink, too. On modern Linux distros, these packages already installed.

I created a shell script, which starts the esound daemon and listens to incoming music. Put this script to any place, for example name it as /usr/local/sbin/esound.sh:
#!/bin/sh
BINPATH=/opt/local/bin # macports binary directory
export HOME=/Users/root
$BINPATH/esd -as 1 &
while true; do
$BINPATH/gnetcat -l -p 7752 | $BINPATH/esdcat
done
Add executable rights to this and create a home directory for the root user: /Users/root.

Then create a launchd config file, which will start this shell script every time you restart your computer:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN"
"http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>esound</string>
<key>ProgramArguments</key>
<array>
<string>/usr/local/bin/esound.sh</string>
</array>
<key>RunAtLoad</key>
<true/>
</dict>
</plist>
Save this file as /Library/LaunchDaemons/esound.plist. Then load and start the script as root:
sudo launchctl load /Library/LaunchDaemons/esound.plist
sudo launchctl start esound
If you have a Linux box, you probably want to tweak the path of the binaries, and use the rc.d mechanism to start these jobs.

Now what you have is a music server computer, which listens accepts sound input on TCP port 7752, and automatically restarted in every reboot.

The client

The client is in my case also a Mac (a laptop). I used the following software in it:
  • esound
  • netcat (I used the standard nc command here)
  • SoundFlower
You can install esound and netcat as you did for the server. SoundFlower is a Mac application, so you should not have problem installing that.

Start SoundFlowerbed and set up SoundFlower(2ch) as a default input and output channel in Audio Setup.

Then start esd, esdrec and netcat to send the music to the server:
esd &
esdrec | netcat servername 7752
Start your iTunes, and Voila!

When you are finished and you want to listen to music again in your laptop, you just need to stop esd, esdrec and netcat, plus you can just map SoundFlower output to the Built-in Output.

Note

The original tips uses music compression, but I've found it not necessary. Uncompressed music uses about 170k/s bandwidth, it is fine for a decent wireless router. If you have problems with the bandwidth, you could take a look at the referenced tips how to do the music compression.

Friday, September 11, 2009

What did you do at 09:09 09.09.09?

Something to remember: 09:09 09.09.09 was a special moment, and we won't have that special moment in this life any more (Update: thanks for Sorin, who pointed out that it is not really true, see below). So it is good to remember what did you do at that time.

I just turned into my other side after pushing the Snooze button in my iPhone.

And you?

Update: Actually I should have been written 9:9 9.9.9, because it is more unique, and the next similar time is going to be 11:11 11.11.11, and that's going to be the last probably in our lifetime.

Saturday, September 5, 2009

Mainau Island

On Sunday last week we went to Mainau island. This is a beautiful park close to the german border with a lot of flowers.

It was a really nice walk in the island. For me the most exciting part was the Butterfly House, where I could practice the macro-photography. It is a very humid closed place where there are plenty of flowers, trees and butterflies. Catching them was not really hard, some of them liked to fly to visitors, they were not shy.

I had to realize that macro photography is not really easy. Millimeters count if it comes to the focus. I wonder that maybe the autofocus system of my camera is not perfect (I tried to not move too much), I made a lot of blurry photos.

Besides bad ones, I made a couple of good one, and I'd like to share the best 3 with you:

Butterfly 1

Butterfly 2

Patient model

When we left the island, I just simply loved the shadows on the bridge:

Sunset over the bridge

That was a really nice afternoon!

More photos maybe coming later if you have more time or the demand is really high. :)

Steps to replace an old mac

Disclaimer: doing the following steps requires that you have some knowledge about Macs. Do these steps at your own risk. I used Mac OSX Leopard, maybe your system is different and will not work for you, I take no responsibility about your data loss.

I got a new MacBook pro laptop, and usually a new task comes with a new computer is to set it up. I had my old laptop, and I just wanted the new one to work in the same way as the old one. The first tool which is handy in case, is the Migration Assistant.

Migration Assistant

This program be found in /Applications/Utilities. You have to have a firewire cable and you have to boot your old mac in target disk mode. Here is how you can do that. I set it up to copy everything including all settings and all possible users. Unfortunately it cannot handle File Vault users, so I had to do it manually later. For me it worked for about 3 hours in the background (I could use the computer in the meantime), and after that, a lot of things were copied, including network settings, my MacPorts installation (in /opt/local), all of my non-encrypted local files (music, shell scripts, etc.), even my Hungarian Plus keyboard layout, which lies in /Library/Keyboard Layouts.

You can do anything during the copy, but make sure you don't do any permanent changes in your home directory if it is file vaulted, since you'll overwrite everything soon with your old home directory.

Copying a File-Vaulted user

I had a file-vaulted home directory, and this is not copied by the Migration Assistant, so I had to copy it manually. If you don't have file vault or don't want to copy it, you can skip this step.

Given that the old computer's disk is called Macintosh HD, and the old computer is in Target Disk mode, then your file vault home directory is in the Macintosh HD/Users/.username or Macintosh HD/Users/username . Note, that there are two Macintosh HDs, the remote computer is the one which has an eject button next to it, and this is what you need now.

You cannot see the files in Finder which starts with a ".", but you can navigate to the parent folder and press Cmd+Shift+G, and then enter the directory name, and it jumps into it.

Copy the username.sparsebundle file to your local computer somewhere outside to your home directory, for example in the root directory of your new computer (Macintosh HD).

When it is finished, you'll need to have another administrator user. If you don't have one, create it in the Account Preferences.

You can detach your old computer now, or if it is not finished with the Migration Assistant, wait for it, and detach it after.

Log out with your current user and log in with your other admin user. It is very important to log out with your user, not just use fast user switch, because we'll overwrite the user's home directory.

Find where is your main user's home directory, it should be in Macintosh HD/Users/username (or maybe .username, but it is usually happens only when you forgot to log out with that. Check if you are logged out properly before continue).

Assuming you copied your old sparsebundle to Macintosh HD, you have to do the following in terminal to have your old home directory replace your current one (replace username to your short username):
cd /Users/username
mv username.sparsebundle username.save.sparsebundle
mv /username.sparsebundle .
Now you are ready, and you are able to log in to your old environment in your new laptop!

Registered software, iTunes

We're almost ready, but some registered software requires a new registration, since you use them in a new computer. Check your Applications directory and re-register your software if you don't want surprises after some weeks when you try to launch your favorite but rarely used software out in the wild without internet and with no access to your registration numbers.

iTunes also requires you to register your new computer in iTunes store to listen to your audio and watch videos you bought. There is a menu item for that: Store/Authorize computer.

Time machine

Time machine will think that it is a totally brand new computer (which is actually true), and it will start backing up your system entirely into a new space. This is probably not what you want. If you want to continue using this new computer as you used your old one, it would be convenient to save to the same place as the old computer, and archive only the differences.

I've found a good tutorial about how to make it work here. The only addition to this that if you use a remote backup (not to mention remote encrypted backup), then the referred file which starts with a "." will be in a different directory: It will be in the folder which stores the sparsebundles, not in the directory where Backups.backupdb is in. After that, you also have to rename the sparsebundle file to match your new mac address. But other than that, that document fully applies and worked for me.

That's it!

Those steps seems to be necessary and enough to copy and set up everything the way it was in my old laptop. Double check that you have everything in your new computer, and then you can start to wipe everything from your old computer and give it to your daddy, your wife, sell it, etc.

Saturday, August 29, 2009

Sunset at the beach

One evening we headed towards Clearwater Beach. We parked the Mustang ("Mustang? What Mustang?" - you might ask. Well, I'll probably talk about that later), and went to the shore.

The water was pretty warm, Andi enjoyed it very much:

Playful

At the sea

The sunset was beautiful, we saw rays coming through the clouds. When I took shots of the Sun, I got these kind of sepia-like photos. This style reflects the humid and hot weather:

Rays

Here the sun almost went down entirely. I would have been happy to have a 70-200 with me, this is all the quality I had with a 24-105: I had to crop, this is 1/4 of the original photo:

Last minutes

Later, the Sun disappeared behind the horizon, but its rays were still visible. This painted the sky to more bluish (at least this is how the camera set the white balance), as you can see it in the following photos.

In this shot on the left, you can see Pier 60:

After sunset

Photo from the pier:

Red sky

This place is busy even at and after sunset. There are street musicians, street performers, craftsmen every day. This event is called "Sunsets at Pier 60", it is actually a "daily festival", which happens around the time of sunset (whether permitting) and they even have a webpage: www.sunsetsatpier60.com:

www.sunsetsatpier60.com

As I progress with the photos from Florida, I'll post some more.

Enjoy!

Sunday, August 23, 2009

Sunset at the top of Fort Harrison

We've arrived back to Zürich after a couple weeks of Florida, and I started to look at the photos we made.

In the first days, we went up to the top of the hotel, to see the view and see the sunset.

The following photos are made there:

Sunset behind Clearwater Beach

This photo was taken after sunset. The sun already set behind Clearwater Beach, but it painted a beautiful sky.

Shine

I made this long-exposure shot with a tripod, I liked the pattern that the light draws, and the color of the sky. (The signature is on the wrong side, I'll replace this photo once I get back my Pro account :) Update: Done. :) ).

Shadows

The shadows were really nice here, plus the color of the sky was still beautiful. The idea of the photo is coming from Andi, but the execution was mine. Another interesting fact about this shot is that I did not adjust the saturation at all.

More photos coming as I have some time to process them!

Tuesday, August 18, 2009

Programmer jokes

I've found many jokes about programmers here, I've copied my favourites to my blog, I hope you'll enjoy them:



A Cobol programmer made so much money doing Y2K remediation that he was able to have himself cryogenically frozen when he died. One day in the future, he was unexpectedly resurrected.

When he asked why he was unfrozen, he was told:

"It's the year 9999 - and you know Cobol"



There are 10 types of people in the world. Those who understand binary and those who have regular sex.



“Knock, knock.”

“Who’s there?”

very long pause….

“Java.”



An SQL query goes into a bar, walks up to two tables and asks, "Can I join you?"



Q: how many programmers does it take to change a light bulb?

A: none, that's a hardware problem

and

Q: How many prolog programmers does it take to change a lightbulb?

A: Yes.



Programming is like sex:

One mistake and you have to support it for the rest of your life.




from xkcd.



If you put a million monkeys at a million keyboards, one of them will eventually write a Java program.

The rest of them will write Perl programs.



These two strings walk into a bar and sit down. The bartender says, "So what'll it be?"

The first string says, "I think I'll have a beer quag fulk boorg jdk^CjfdLk jk3s d#f67howe%^U r89nvy owmc63^Dz x.xvcu"

"Please excuse my friend," the second string says, "He isn't null-terminated."



Unix is user friendly. It's just very particular about who its friends are.



A Geologist and an engineer are sitting next to each other on a long flight from LA to NY. The Geologist leans over to the Engineer and asks if he would like to play a fun game. The Engineer just wants to take a nap, so he politely declines and rolls over to the window to catch a few winks. The Geologist persists and explains that the game is real easy and a lotta fun. He explains, "I ask you a question, and if you don't know the answer, you pay me $5. Then you ask me a question, and if I don't know the answer, I'll pay you $5." Again, the Engineer politely declines and tries to get to sleep. The Geologist now somewhat agitated, says, "OK, if you don't know the answer you pay me $5, and if I don't know the answer, I'll pay you $50!"

This catches the Engineer's attention, and he sees no end to this torment unless he plays, so he agrees to the game. The Geologist asks the first question. "What's the distance from the Earth to the moon?"

The Engineer doesn't say a word, but reaches into his wallet, pulls out a five dollar bill and hands it to the Geologist.

Now, it's the Engineer's turn. He asks the Geologist, "What goes up a hill with three legs, and comes down on four?" The Geologist looks up at him with a puzzled look. He takes out his laptop computer and searches all of his references. He taps into the Airphone with his modem and searches the net and the Library of Congress. Frustrated, he sends e-mail to his co-workers -- all to no avail.

After about an hour, he wakes the Engineer and hands him $50. The Engineer politely takes the $50 and turns away to try to get back to sleep.

The Geologist is more than a little miffed, shakes the Engineer and asks, "Well, so what's the answer?"

Without a word, the Engineer reaches into his wallet, hands the Geologist $5, and turns away to get back to sleep.



See the rest of them on the page there are some more very good ones!

Saturday, August 8, 2009

Google Chrome for Mac displays flash

The latest Google Chrome for Mac now support displaying Flash. The interaction with the flash media is still not working yet, but at least you can now view your favorite YouTube videos in it without the need to switch to another browser!

Good progress, guys!

If you want to follow the development, you can go to the known bugs list page.

Update: It seems that there are some work done in the Gears support also, Offline Gmail seems to detect the Gears, though it is not seem to be fully functional yet.

Monday, July 20, 2009

Viki in the sunset on Explore

The photo about Viki (~BabinKuk) hit Explore today on Flickr:

Viki in the sunset (Explored)

This is my 12th photo on Explore. I can't really understand how this works, this photo is not even on my main page, no comment has been added to it in the last two months, etc. But I'm happy that people like it. :)

Saturday, July 18, 2009

Breakfast at Google

I usually eat a pretty special breakfast: Strawberries! I like them very much. I usually take 3-4 bowl of them, depending on my mood. Sometimes I add some more spice, and replace one of them with a fruit salad. But strawberries are better than kiwi, star fruit, banana, etc..

They are especially good with some joghurt on the top of them. They are really sweet without added sugar, and I think they are healthy, too.

Where to start? Breakfast @ G

Enjoy your meal! :)

Sunday, July 12, 2009

Glarus - Klöntalersee

Last weekend we decided to go to hike to some nice place with friends from the firm. Diana chose a nice hike: from Glarus to Klöntalersee. The photos were awesome in the webpage, there was a lake, there were mountains, the forecast predicted nice weather, the expected duration was only 2.5-3 hours (in one direction), which meaned that if I stopped to take some photos, it is only 4-5 hours, which was totally enough. So it sounded like a very nice trip!

We departured around 11 by car fro Zürich. The distance was not too much, but we stucked in a traffic jam for about an hour, so it took more than two hours to get there.

The weather was really great during the trip:


The clouds looked even better through (polarized) sunglasses:


In the traffic jam we listened to many slovak child songs, and a very famous star from the 60s. We listened him so many times that I though we'd never forget his name. But I did. I even sang one of his song in karaoke earlier, but unfortunately it does not come into my mind now. Juro, can you help me out? :)

When we arrived to the starting point in Glarus, the battery of my iPhone 3G just got empty. It was a pity because I wanted to use that to record the track of the hike for geotagging the photos. Fortunately we had a T-Mobile G1 with MyTracks, which lasted until the end of the hike.

We headed uphill. We did not really know where to go, we hoped that sings would show the way to the waypoints listed in Activity Workshop page. We went through meadow and forest:




At this crossing, we presumed that we were going to the wrong direction, since we had to go down slightly:


But the road headed upwards later. Looking back:



We stopped for a short while at 778m. Everyone had a rest except the photographer:


Yes, this route still goes upwards!

But no, we did not plan to go THAT high:


Nice view while looking back (HDR):

Looking back

The way behind us:


In the forest:


Elevation: 1015m, it was a good achievement so far. We wanted to go to Schwamhöchi, so we still went to the right direction:


But after that, we were lost. We followed a path which we should not have done, so we ended up missing Schwamhöchi with the nice view to the lake, so I could not take a nice photo of it.

At the highest point of our trip, we arrived to this place (~1060m):



From here, we went downhill, and the best view to the lake was this (at 938m):


When we arrived to Rhodannenberg (862m, which was basically a restaurant at the lakeshore), I took some photos of the lake and after that we got something to drink and rested a little:

Klöntalersee

From this point, we took the easy way: took the bus back to the car, then headed home.

I am slightly disappointed about the weather we had: it was all cloudy, no blue sky, so the photos were not that good that I expected. The two HDR photos which I made during the trip were OK, but that's all.

The hiking performance was not so bad: 600m up, 200m down, 3.5h including some rest too, so I was very satisfied regarding this!

If you want to enjoy the slideshow of the whole trip, just click here:

Wednesday, July 1, 2009

Unscientific javascript test: Firefox 3.5, Safari, Chrome on Mac

Firefox has 3.5 recently released, and it claimed to contain a faster javascript engine than its predecessor.

Safari, Chrome also contain fast engines, so I decided to give them a try: which one is faster?

Chrome Experiments contains fun stuff in JS, so I used that. Note, that I am using a MacBook Pro for testing on a Mac OSX because that is my work computer. Note also that watching javascript animation is totally not a scientific speed test. :)

I chose the Depth of Field experiment, which requires a lot of calculation.

For FF 3.5, the result was not really enjoyable, it had an average of 1 frames per second on the first 32 second of the animation: I counted around 35 frames altogether. On Safari, it was around 70 frames, on Chrome, it as around 80 frames.

I think the result is obvious without any nifty graphs. :)

Chrome for Mac is not really a production-level software yet, but it can be usable pretty well for javascript-heavy applications like GMail, Google Calendar, or any other sites, except the ones that use Flash (Youtube for example), since there is no plugin support yet.

Monday, June 29, 2009

10 photos on Flickr explore

Explore is a way to discover the most interesting photos on Flickr. It shows the top 500 most interesting photos of every day. Each photo competes in the day it is uploaded, and the top list changes over time according to the views, comments, etc. of the photo. These 500 photos are selected by computers based on measurable factors.

While checking Scout today, I've realized that two new photos hit the Explore recently, and with these, I now have 10:

Self-self-self-mirror portrait in Melide (Explored)


Here is the scout poster of the photos (including the dropped ones):

10 explore photos: Thanks for all of my visitors

It was a good start of the day. :)

Sunday, June 28, 2009

The new www.dlux.hu

Executive summary: New on www.dlux.hu: less content, more pointers.

In details: I did not really update my www.dlux.hu site in the last years. It was made with Apple's iWeb, I had a lot of problems with that in the beginning (in Hungarian), and maintaining the site with that tool was a little bit of hassle.

Since then, the net evolved a lot (web2.0), so instead publishing new content to this site, I decided to use other sites, so that I have less content on this site and more content all around the web: my blog, my flickr page, facebook, twitter, etc.

I also added a link to my hacks page, which contains some open-source software.

I removed links to my old and outdated blogs, too. Here are the last links to them:
Now it is going to be OK for another few years, until web 3.0. :)

Sunday, June 21, 2009

Quinten, part 2

Ok, now I have a little more time to tell the story of our Quinten trip.

Last year we had a trip to Quinten, but at 1/3 of the route, it started raining very heavily, so we had to turn back.

A few weeks ago my friends also started a trip to Quinten, but they also turned back because of the rain.

After these two incidents, this hiking destination seems to be unreachable and unconquestable.

The main important things about Quinten (from Wikipedia):
Quinten is an idyllic hamlet situated on the north shore of the Walensee in Switzerland. It belongs to the municipality of Quarten. As there are no roads leading to Quinten it is only reachable by boat or on foot.
According to this source, Quinten has only 41 inhabitants.

The plan was to go to Weesen with car, go to Quinten on foot, take the ship to Murg, go back to Weesen with train, and then go home. It was part of the plan not to departure early, since the best photos can be taken in the dusk.

That was enough for background, the photos themselves will tell the rest of the story, so click on the photo to continue:


Quinten, part 1

On the last weekend, we went to Quinten. It was a very interesting hike, it was not too difficult, but the rain and the scheduling made it slightly more complicated than we thought originally. :)

I don't want to tell the whole story now, I just uploaded a few photos to flickr from the tour.

The first photo was taken in Weesen, next to the train station, we left the car there. The weather was totally beautiful. I am very happy about my Manfrotto 725b tripod, I could close the aperture (f/14) and make the landscapes sharp. Note, that this shot is not HDR:

Swiss nature, Weesen

On the way, we've encountered a few tunnels, and the lights inside was really nice, so we decided to play with them. Here is Andi frozen for 1 sec. The lighting is entirely natural, it came from a hole in the side of the tunnel. (I forgot to remove the polar-filter, aaaargh):

Andi in the tunnel

Going further, when the road narrowed and we left the houses behind us, we've found a nice creek crossing our way. In this situation, the wide-angle lens was very handy:

Creek in the forest

Going just a few meters away, we've found a small waterfall. It was pretty dark here, so I could not do anything without the tripod. I think these long-exposure shots happens to be pretty good:

Waterfall in the forest 1

The wide angle version:

Waterfall in the forest 2

That's all for now, this was just a teaser. Stay tuned for the second part. :)

Wednesday, June 17, 2009

Bon Jovi: It's my life - performed by Googlers

I've got a mail in the company from Tamas about a song that they performed recently, and I acutally loved it very much. I asked him if I can publish the song, and he said OK for that, so I added a few photos of mine to it, and created a photo slideshow.

I struggled with the latest iMovie for hours (that's a looong story), but finally I managed to make it ready.

I especially like the intro part. Let me know how you like it:

Sunday, June 14, 2009

Ticino journey

I had a few photos and stories (Swiss Miniatures part 1, part 2, Group Shot in Melide and Self-self-self-mirror portrait) already posted about our journey in Ticino, but I still have some other to tell about that journey, since the weather was very nice, hot and humid, and it was really exciting to travel around beautiful mountains.

I uploaded the photos to Picasa, wrote some stories to the photos, and you can even see them on a map.

Just click on the slideshow to see to the photos:


Friday, June 12, 2009

hacks.dlux.hu

I couldn't imagine that anyone would miss my old site with my very old hacks. But it happened!

I am moving out of my server, and I started to transfer the projects from that site to Google Code and Google Sites. I started it last weekend, but due to time constraints, I could not finish that, so I just created 5 projects in Google Code, plus I created the site for them. I wanted to finish during the week, but I could not manage to have time for that. I am always busy on weekdays, so it is anyway impossible to do any constructive thing, I don't even have time for blogging, so you'll got everything at the weekend. :)

But back to the story: I got an email recently that someone misses drsync. It is linked from the rsync resources page, and he was surprised that it is not there. I still did not move it to the new hacks page, so I pointed him to the old site.

The moral of the story: surprisingly some people are interested in my pretty old work, so it worth saving them. :)

Saturday, June 6, 2009

Host your homepage at Google

Google does not have a free web-hosting service. Once upon a time there was a Google Pages, but that is now replaced by Google Sites. Pages allowed quite good control over the HTML that it generated, but its upload/download capabilities was not that good. Now Sites does not even allow control over HTML, because the structure of the pages are pretty strict. I can forgive it, since Sites is actually a very good collaborative tool.

I had an iWeb-created homepage on www.dlux.hu, and I pretty much liked that, but I'll remove my hosted server from the provider, so I had to find a place for this page. No PHP, no database, no code, just the HTML generated by iWeb.

I did not need too big space, but I wanted some reliability, so I choose Google.

But how do you host your page at Google if it does not have a web-hosting service? The answer is: Appengine! It can serve static files, and can store files up to 100MB (I think). Though it is not really designed for that, but it works. It is also not designed for frequent webpage updates, but I also did not need that.

How do you do that? Here are the steps:

1, Create an account at Google. Pretty easy from the Appengine homepage.

2, Create an application. It is also straightforward from the same page. You don't need to set up any authentication, just select a nice name for that, like www-example-com.

3, Download the AppEngine SDK. This is the official location of the SDK. Install it also.

4, Create your web-application. This is the hardest part, but it is not that hard either:

Create a directory for your application, let's call it myapp.

Copy your webpage into that in the data subdirectory.

Create an app.yaml file for the application. It is almost just a copy-paste from here. The only thing you need to edit is your application name:

application: myapp
version: 1
runtime: python
api_version: 1

handlers:
- url: /$
static_files: data/index.html
upload: data/index.html

- url: /(.*)$
static_files: data/\1
upload: data/.*

4, When you are ready, you can upload your application (assuming you are in the myapp directory):

appcfg.py update .

That's so simple. At least it seems. There are some problems with this simple approach, but you probably won't run into that:
  • I had filenames in my blog, which contain dots, and appengine did not like them.
  • Another issue is that in case the URL has // (double slash), then it reports a 404. Some of my internal links created URLs like that, so it had to be worked around that also.
If you are interested, I can explain how you can work these limitations around, let me know if you are interested.

What I want from Aperture 3.0

I've heard a rumor that Aperture 3.0 is just around the corner, and I hope that it is true. I like it very much, because of the non-destructive editing features it has. This blog post is actually inspired by another blog post in the same topic.

For 3.0, I have a short wishlist. If anyone at Apple is reading this (I doubt it, but who knows :) ), please consider the following things:

Speed / responsiveness

The biggest concerns for me about Aperture is the speed. Image loading is quite slow (for a 12MP RAW of my Canon EOS 450D on a 1 year-old MacBook Pro takes about 2-3 seconds), plus if I do some retouching, and I accidentally have to undo, it takes ages to re-render the photo.

If the software need to generate previews or thumbnails, it becomes really slow. Though it should not, since these activites run in a parallel thread.

API for non-destrictive plugins

While there are many plugins for Aperture right now, they are working in a destructive way: they copy your image when you use them. That's not so funny if your original RAW image is 14M and the TIFF file from it is also at least that big. I could imagine non-destructive third-party plugins for framing and watermarking, more effects, like adjusting perspective, etc.

Video support

No, I don't want Aperture to edit video, just to manage the content which is downloaded from my camera (including video maybe), show a thumbnail, and call the appropriate editing software (iMovie, Final Cut Express, etc.) if necessary. Modern DSLR-s have video support now, and the Canon EOS 5D MkII can be considered a pretty decent full-frame camera.

Backup

It has now vault, but it is limited to local drives, and I've heard that it is not really compatible with Time Machine (e.g.: if Aperture is running, then it possibly back up an inconsistent Aperture Library).

Extending the Vault to remote drives would be just simply awesome!

That's all

These were the things what I expect in Aperture to be improved. I think these are not too much, no need for fancy new features, just a more solid and faster app.

Two new photos on explore this week

I'm happy that two of my photos also got to explore this week:

Getty center

Buda Castle by Night / A Budai vár éjszaka

Here you can see my other explored photos.

Monday, June 1, 2009

Promise is promise - Shooting Dóri at Nemzeti

It was quite some time ago when I was in Hungary (exactly one month), but I still did not have time to look at the photos I took with Dóri.

The story of this is that I promised her many months ago that I'd make some photos of her, but somehow I did not have the time. When I was almost at the stage of losing my credibility, I suddenly had the opportunity for this.

I did not have my Cactus V4 triggers yet, and I knew that infra would not work, so that I borrowed an SB26 from Ákos, which can work as an optical slave. He also asked if I need another flash, but I said that'd be OK. Well, I regreted a little that I did not accept the offer, because one flash was not really enough sometimes as you can see from the photos.

Ok, but where to go to shoot? We discussed the potential places for shooting, and it turned out that Nemzeti would be good.

It was about 8pm when we started, the wind was pretty heavy, and the sun was almost totally down. It was pretty late.

I had a white shoot-through umbrella with the SB26 set to optical slave, plus I had an 580 EX II on my camera to trigger that. Later, when the sun went down, they turned on the reflectors, and they had some orange-ish light, so I put CTO to the flash to balance it. After that I had one reflector and one flash, so it worked out pretty well, but I could use another flash for backlight. You can see that her dark hair is not distinguishable from the background in some photos.

We were there until 10pm, where they started the sprinklers, and we had to rescue all the equipment from the water. :)

After looking at the photos, I am very satisfied with them, and found a few really good ones. If I have to redo this, I would use wireless triggers with my flashes, and I'd start 1-2 hours earlier, because that time of the sunset gives a lot of possibility.

I now uploaded only 3 photos of the set, but I'll gradually add more. Check back to here later for more:


Sunday, May 31, 2009

Self-self-self mirror portrait

Many of my friends has self-mirror portraits. I am not really into this, but when I saw the mirror in our room in Melide, I was totally fell in love with it. I immediately decided to do a "self-self-self mirror portrait":

Self-self-self-mirror portrait in Melide

The bathroom was very small, this mirror was in the middle. I put one flash (580 EX II) on the top of the mirror with a LumiQuest Softbox III as the main light, it was directed to my face and the camera. I think it was set to 1/32 power or something like that. I had my other two flashes (an 580 EX II and a 430 EX II) on the floor pointing upwards to the ceiling set to 1/64 power on my both sides. The lamp above the mirror gave just enough light to be able to focus with the camera, but other than that it was totally dark in the room. The triggering was done with the Cactus V4s, though I think infra would work, too. (In a small space, infra can bounce from the walls, and there is a big chance to hit the destination. Unfortunately outside it did not work for me).

Besides being dark and having hard time focusing, I had to bend when I did the shot, so that was very tiring. I was not really satisfied with the sharpness of the image, so later I even tried some shots with a tripod. Those photos were sharper, but I finally chose one for posting from the earlier ones. I had only a limited time for this experient, since it was pretty late, and next day we had to wake up early for the Swiss Miniatures (see here and here).

Group shot in Melide

Actually this was the first time I tried the Cactus V4s. We were very happy about a packed day with travel through the St. Gotthard tunnel, visiting Locarno, and a short walk in Melide, and we sat down in the garden of a the restaurant to eat something.

I brought two flashes with me (580 EX II), plus two triggers. I don't usually go to restaurant with full set of umbrellas and lightning equipment, so I needed to take a photo with this set, and since I had to wait a little bit for the food, I started to play with putting the flashes to different positions, and see what comes out.

After about 15 minutes of playing with the shooting angle and the adjustment of the flashes, this was the final photo:

Group shot in Melide

The first flash was put just in front of the camera in the bench, hidden by the back of the bench, pointed directly to the group. The other flash was behind the second person on the right side, pointed to the roof, to give some fill from the top and some backlight also. I don't really remember the settings, but I think the front-flash was set up to the widest possible and about 1/4, and the back was set up to 1/2 and the narrowest possible.

I did not have any problems with the triggers, they did their job very well even when the flashes were not visible form the camera. Maybe that's because the flashes was not too far (2 and 4 meters), very much inside the 30 meter range, which was in the specification documentation of the transmitter.

Thank you for my friends to be so patient. :)