Don’t NTFS Compress OS HD

Never compress your main hard drive (that has Windows installation in it, usually C:\).
It will modify the MBR and thus Windows will fail to boot. You will need to fix the MBR with the Recovery Console, accessed by booting from the Windows Setup CD.
You can copy your installation CD to a USB, using WinToFlash to make it bootable.
Once inside the recovery console, type “fixboot” and thus the MBR is fixed.
I read an alternative way to fix this by booting from a live CD/USB (Linux ok) and copying the three MBR files.

Logic Gate Simulation

This would really help digital engineering/discrete maths students:

Error on Linking MSVC++ Projects

Upon successful compilation of builds, the linking process  might stumble upon a linking error. These may happen in the form of unresolved externals or redefinitions.

On unresolved externals: make sure all of the dll or lib exists. Also check the code generation property and select the appropriate options. Make sure all projects use the same code generation correspondingly.

On redefinitions, I had to ignore one of the libraries which caused the redefinition. For instance, in my project, I had to ignore these libraries for the release build :libcmtd.lib;libc.lib;nafxcw.lib;msvcrtd.lib;msvcrt.lib

And these for debug build:

Would be grateful for enlightenments on further details of those libraries. I could’ve saved hours on solving the linking errors.

PS: Don’t forget to set EMBED MANIFEST to yes when using non DLL settings. Found this out the hard way.

Macros for Build Commands in MS Visual Studio

Other than the ones stated here:

We can also use Windows System Environment Variables (under Control Panel->System Properties) to retrieve the path. For instance: ($DXSDK_DIR)
will lead to the DirectX SDK directory, includes a trailing backslash.
I needed to use these macros since the software development are conducted on different machines with different SDK directories/drive letters. Absolute include directories should always be avoided. 🙂

Connect Samba Server of Linux/Ubuntu to Windows PC

My Samba server usually have trouble detecting Windows PCs on the network. Instead of restarting the Ubuntu to hard refresh the list, just enter the computer name manually:

smb://<insert computer name>/

No need to wait for a correct list to show up.

Beautiful Architecture (Software Engineering)

At first I thought this was a book on computer architecture, it turns out that it was on software design. Overall the book shows examples on examples of software architectures that are “beautiful”.  Beautiful architecture exhibit universal principles:

  • When change occurs, only one place needs to be modified.
  • They have adequate construction tools.
  • Not only beautiful at run-time, but also at construction time.
  • They use a minimum set of mechanisms, as long as the requirements are met.
  • Use controller objects. Base the architecture on use cases and one function at a time.
  • Considers the likely growth of the system.
  • Resists the entropy, does not become more disorganized over time.

The book gives an analogy of a software architecture as a music composition. It may be played by different musicians or at different places, but the composition is supposedly beautiful as it can be suited to the corresponding environment. There are architectures that meet functional requirements, but it does not imply that it meets quality requirements. For instance, there are numerous ways on how to set up web pages: JSP, PHP, Static HTML, CGI are just to name a few.  Choosing a technology is a very significant architectural decision.

Since I have been working in a software development company, I feel how important it is to have a good company structure and healthy development process as mentioned in the book. Newly recruits should be able to understand the system without heavy effort, and fixing bugs should have a predictable timescale. Quality software have good cohesion, where related functionality are gathered in modules; and also minimal coupling, in which there is few wiring between those modules. As I said on how bug fixing should be predictable, is that the architecture should help us locate funcionality. We should know effortlessly on which module should be fixed. The architecture should also be malleable and refactorable,  as this also encourages simple and easy to change designs.

Have you ever played online games? How about Massively Multiplayer Online (MMO) games? Jim Waldo wrote a chapter on Architecting for Scale, which describes on different approaches taken to tackle the scale problem of MMOs. Two common ways of dealing it was by geographical areas and sharding. Sharding is practically duplicating the world on a different server, but users on different shards cannot interact with each other. He described an alternate approach, which is called the Darkstar architecture.

Another interesting chapter in the book was on the Facebook platform by Dave Fetterman. Facebook is conceptually a standard n-tier stack, where we request a certain social data, which is then processed by Facebook’s logic and then becomes a display output. Facebook then grows broader of the stack, and makes itself integrateable by outside systems through applications. While the social data remains the center of the architecture, the platform has grown into an array of Web Services: FB API, FB Query Language, and FB Markup Language.

The book goes on telling stories on Xen (virtualization), Emacs success, and KDE. The final part of the book is on functional vs object oriented programming and somehow describing beautiful building architectures. Though they are physically different (software are practically intangible), the same design principles can be applied to create beautiful architectures.

Cultural Tolerance

Sometimes when we do what we think is polite, can be interpreted as rude by others. For example, when we are visiting as guests; in American customs the host would ask the guest about his/her preference, such as what drink to serve, hot or cold, with sugar, milk, or even add cookies :). In Indonesia, it depends, the host will adjust according to his closeness to the guest, but would most likely offer options. In Japan, the host never ask the guest about his preference. (This is just simple generalization for comparative analysis).

“Please help yourself” can have an unpleasant ring on Asian ears. The Asian traditional sensibility interprets it as “nobody will help you” instead of “please take what you want”. Nowadays as people get more exposed to foreign culture, they have more sense to tolerate and understand these cultural differences.

Internet Explorer Script Error MFC (Line 815 Char 3)

I am using Visual Studio 2005 SP1 (C++), and I wanted to add a class for a dialog when the IE error showed up. Needed to find a quick fix and here is what I found: (turns out it was because I installed IE8)

Please follow these steps:

–          Open regedit (on a 64-bit OS, open the 32-bit regedit)

–          Under “HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet
Settings\Zones”, create a new key called 1000 (if it isn’t already there)

–          Under 1000, create a DWORD entry with:

o   Name = 1207

o   Type = REG_DWORD

o   Data = 0x000000

Restore Ubuntu Jaunty Panel

My friend played with the panels (its position, size, etc) it turned out to cause a tragedy. He nearly couldn’t do anything with the freshly installed, keyboard-shortcut-less Ubuntu. After searching the web, here’s the fix:

1. make a new folder in desktop, to open the nautilus file browser.

2. run gnome-terminal in /bin/ (if not mistaken)

3. Type in

gconftool-2 –shutdown

rm -rf ~/.gconf/apps/panel

pkill gnome-panel

sudo debconf gnome-panel

Hope it works for you.

Howto: Troubleshoot MCP-55 Ethernet on Ubuntu Jaunty 9.04

I installed a fresh Ubuntu Jaunty on a desktop and couldn’t connect to the local area network (DHCP). I tried the following tweaks, and finally it worked.

add to/etc/modprobe.d/options

options forcedeth msi=0 msix=0

sudo rmmod forcedeth
sudo modprobe forcedeth

sudo /etc/init.d/networking restart
sudo dhclient eth0

During the last line, the ethernet will start listening and start DHCPDISCOVER on eth0. I clicked the network manager to reattempt a connection and it worked.

Japan’s Fun Facts,, Did you know….?!

1. Japanese like to eat “Nattou” for breakfast. Nattou is a food destined to either be hated or favored for your entire life. It is sticky, salty and “ammoniacally” smelly. If you do happen to eat it for the first time, you will get caught in stringy “natto” spider web. No wonder it’s tasty, since it is partly made out of fermented soy beans, mustard, raw quail egg, and bacteria (Bacillus subtilis natto). The good part: I nearly threw up after chewing 10 times. The bad part: it’s healthy. 😉 Itadakimasu!

2. Japanese (female) students like to wear high heels to campus. More than half at mine. Some like to save up to buy Louis Vuitton bags. And while I shiver of the dreaded winter, they have the “heroes” ability of wearing mini-skirts even in those conditions. Envy that! (not the skirts, the ability). Urayamashii yo.

3. Sometimes you can find escalators that are crazily steep, nearly perpendicular to the ground. It’s nearly like an elevator. Not only that, they can also be so long. Beware of the local customs though. At Kyushu-Kanto area we stand still on the left, and walk on the right. In Kansai (Kyoto, Osaka, Kobe, etc), it is the exact opposite. Stand still on the right if you don’t want to be bumped with “Sumimasen!”

4. Bring your passport if you go shopping at Akihabara, which the Japanese refer to as “Electronic City”. We can get discounts by showing a tourist visa (6 months max stay). Too bad my visa was for one year, so no luck for me. Zannen desu ne.. 😦
Also be careful in this area, there were crime last year. Kiotsukete ne..

5. For romantic hotspots in the Kansai area, I would go for Kyoto and Kobe. Kyoto’s atmosphere is uniquely, traditionally outstanding. There are romantic paths of Gion area. But be sure to bring money, a (romantic) dinner here on average can cost $120 per person.
For hungry moneysavers, go to Kobe, there is a Wonderful all you can eat restaurant for only $20. They have delicious crab, meat, seafood, Italian food, pudding, ice cream and even chocolate topping if you need to get fat. One plus, the waitress were very fine 😉 Another plus, it is located by a lake/sea and we can view Kobe city from there.
Oh, Kobe have significant number of foreigners, and the first mosque built in Japan was in the city of Kobe! Sughoi…!

Repository Open Source di Indonesia (Ubuntu)

Pasca kepulangan dari Jepang, saya mencari server repository utk mengupdate Ubuntu. Mengapa repot2 mengubahnya? Sebab di kampus saya ada batasan filesize yang bisa didownload, yikes X|

Pertama saya mencoba Kecepatannya lebih baik dibandingkan server luar, namun masih kurang memuaskan. Setidaknya saya mencari yg melebihi 1 MB(yte)/detik. Dimana lagi selain server intranet.. Akhirnya setelah susah payah mencari :P, saya menggunakan

Untuk Ubuntu, karena server ini tidak terdaftar pada pilihan repo, kita harus edit manual file /etc/apt/sources.list (sudo gedit /etc/apt/sources.list).

Untuk masing2 baris, tambahkan dengan server yang kita inginkan, misalkan dari:
deb hardy main restricted
menjadi (copy-paste-edit):
deb hardy main restricted

Kemudian, comment isi file yang lama, misalkan dari:

deb hardy main restricted
#deb hardy main restricted
sekedar untuk berjaga2.

Hasilnya update jadi kenceng (>2 MByte/s) 🙂


Kalau salah memasukkan PIN berkali-kali (atau tidak sengaja seperti kasus adik saya), akan diminta nomer PUK yang tertera di kartu perdana.
Kalau malas menelfon call centre, atau mengambil kartu perdana (atau hilang), coba masukkan 12345678.

Tidak perlu repot2 nelfon call centre (dan membayar) 😉

Babylon A.D.

I watched the movie last night. The story wasn’t that great, but the action was thrilling.

I just hope that I don’t turn into a freak in the movie, who made a supercomputer as a mother, to create a genetically mutated child. (strange concept) 😛