четвер, 21 квітня 2011 р.

Kindle 3G in Germany: pay more and get less

Today Amazon.de has opened Kindle Store in Germany. Previously to order Kindle one would have to order it from Amazon.com and wait for delivery from the US. Sounds good, but let's have a closer look. New Kindle 3G on Amazon.de costs exactly the same price at on Amazon.com, but in EUROS. So using Google we get:

(189 Euros) - (189 U.S. dollars) = 59.3970376 Euros


(189 Euros) - (189 U.S. dollars) = 86.6187 U.S. dollars

Note that Kindle 3G from Amazon.de has English keyboard and English menu items, so there is no German localization whatsoever. The question is why the hell does it cost 60 Euros more? You may think the price is higher because mobile Internet in Germany is more expensive, but in the description they specifically say that Kindle 3G allows to use 3G only to visit Wikipedia and Kindle store, while American version allows you to browse any web-site over 3G. Therefore you get no free 3G Internet, no localization and for a higher price. And of course you can't purchase it from Amazon.com anymore. Bravo Amazon!

понеділок, 21 лютого 2011 р.

How to change default Google calendar


Apparently there is no functionality to change your default calendar in Google Calendar. However there is a workaround. Note that first calendar in the list "My calendars" on the left (you may need to expand it) is the default and it is created when you register in Google Calendar.

Shortly speaking you need to export both of your calendars into local files, erase all events from default calendar and unsubscribe from other calendar that you want to be the default, create new calendar to host old default calendar's events, rename default calendar to other calendar and import events back appropriately.

Here are the step by step instructions. Let's say you have a default calendar "Events" and other calendar called "Daily plan" that you want to make the default. Here is what you need to do:
  1. Click on the small triangle next to current default calendar (first in the list) and select "Calendar settings"
  2. Click in "ICAL" button next to bottom-most "Private Address" section. This will save a local file on you computer that contains all the events from your current default calendar. Rename the file form "basic.ics" to something more reasonable, e.g. "dafault.ics"
  3. Perform the same operation for the other calendar and save it as "other.ics"
  4. Go to "Calendar settings" from "Settings" menu on the top-right from the main page and select "Calendars" tab
  5. Click "Delete" button next to default calendar. Note that this does not delete the calendar, but only removes events from it. It is impossible to completely delete default calendar without deleting your Google Account.
  6. Click "Unsubscribe" button next to the other calendar. This will actually remove the other calendar from your account.
  7. Click on the default calendar name (e.g. Events) and rename it to other calendar that you wanted to be the default (e.g. Daily plan).
  8. Return back to the list of calendars by repeating step 4
  9. Create new calendar that will host your old default calendar events with the same name (e.g. Events). You can create a calendar by clicking on "Create new calendar" button. Afterwards return to the list of calendars again.
  10. Now click "Import calendar" link next to "Create new calendar" button.
  11. Select file "default.ics" and import it into newly created calendar "Events". This operation may take longer or shorter time depending on the number of events that you have. Be patient, it took me about 2 minutes to load 300 events.
  12. Perform the same operation and import "other.ics" into default calendar current named as other one (e.g. Daily plan).
  13. You may want to change calendars' colors to be like before the change (they must be swapped by now). You can do that from the main page by clicking on the triangle next to calendar name in the list and selecting appropriate color. You can also change additional settings like calendar description from the calendar settings, which can be reached as described in step 1.
  14. Viola! You are done.
Please keep the exported files before you are sure that everything worked well. In case you have messed something up you can always restore your calendars from these files. Please let me know if something is wrong with these instructions.

четвер, 3 грудня 2009 р.

How to call NPN functions in NPAPI plugin

For every NPN function used like NPN_GetValue, NPN_Evaluate, NPN_ReleaseVariantValue etc. one has to write a wrapper. First of all we need to save pointer to NPNetscapeFuncs* which is passed to NP_Initalize:

NPNetscapeFuncs* npnfuncs;
NPError NP_Initialize(NPNetscapeFuncs *npnf) {
npnfuncs = npnf;

Then we need to write a wrapper for each function. Here goes an example for NPN_GetValue, NPN_Evaluate, NPN_ReleaseVariantValue:
/* Wrappers for NPN functions */

NPError NP_LOADDS NPN_GetValue(NPP instance, NPNVariable variable, void *value)
return npnfuncs->getvalue(instance, variable, value);

bool NPN_Evaluate(NPP npp, NPObject *npobj, NPString *script,
NPVariant *result)
return npnfuncs->evaluate(npp, npobj, script, result);

void NPN_ReleaseVariantValue(NPVariant *variant)

The procedure entry point ?_Xfunc@tr1@std@@YAXXZ could not be located in the dynamic library MSVCP90D.dll

If you ever see the message "The procedure entry point ?_Xfunc@tr1@std@@YAXXZ could not be located in the dynamic library MSVCP90D.dll" from the program, then one of the solutions is to install the Visual Studio 2008 Service Pack 1. First try installing redistributable version (~4MB) and if this won't help, then try downloading the full version (~800 MB). This bug is caused by mistake from Microsoft which may not be seen on developer's machine, but may appear on client running the software.

If you want to download full installer and install it on machine where there is no access to Internet, then you should better use offline installer.

середа, 6 травня 2009 р.

An Inconvinient Truth

Just watched this movie. It's about global warming, which everybody is talking about. Before watching the movie I simply didn't think about it much. But this movie changed it all. It's not like any other movie about global warming, but rather a good . So I would recommend everybody to watch it. It's just 1,5 hours of your time but it can make the world better.

пʼятниця, 10 жовтня 2008 р.

Another way to remove Recycle Bin from desktop in Windows XP

Sometimes you cannot simply Delete Recycle Bin from desktop. There is another way to do it. Try following:
- Press "Start" button and select "Run..."
- Type "regedit" and press "OK"
- Navigate to HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\HideDesktopIcons\NewStartPanel in the left panel
- Add new DWORD Value by right clicking on the empty area in the right panel and selecting New --> DWORD Value
- Type name "{645FF040-5081-101B-9F08-00AA002F954E}"
- Double click on the new DWORD Value and set Value Data to "1"
- Press "OK" and close Registry Editor
- Refresh you desktop
- Viola! You shouldn't see Recycle Bin anymore

If you still want be able to access Recycle Bin without being able to empty it try reading this tutorial.

вівторок, 19 серпня 2008 р.

Remove "Empty Recycle Bin" from Recycle Bin popup menu

If you are:
- insane on emptying Recycle Bin every time you see it's full
- want to remove "Empty Recycle Bin" from desktop icon popup menu
- want to keep Recycle Bin icon on the desktop to be able to open it

Then there is a solution for you:
- Select Recycle Bin icon on desktop and press Delete
- Confirm action - icon should disappear (if that won't work than try this tutorial)
- Right click on any empty space and select New --> Shortcut
- Enter explorer ::{645FF040-5081-101B-9F08-00AA002F954E} into location field and press Next
- Enter Recycle Bin as name of shortcut and press Finish
- Go to the popup menu of the new shortcut and select Properties
- Press Change icon at the bottom of dialog
- Type %SystemRoot%\system32\SHELL32.dll into Look for icons in this file field
- Select Recycle Bin icon, press OK and then OK to close dialog
- Enjoy ;)

Tested on Windows XP and Vista.