Archive for the 'General' Category

5 years since start of the project

Thursday, October 8th, 2009

5 years and 1 month ago I’ve received British permanent residency (officially called Indefinite Leave to Remain) – I resigned next day from my previous job at Phones 4U and one month later (had to work my notice period!) I started this project with first crawler code.

The road would have been a lot easier to walk if I’d known how far the project would go in just 5 years! We’ve got more tough years ahead of us, but this time I know how far we *can* go – somewhere past the horizon…

Seagate 1.5 TB (ST31500341AS) disk is recognised as BIOS 500 GB plus firmware (SD1A) upgrade quirk

Friday, December 19th, 2008

Just had one of the two new 1.5 TB disks bought for testing show up as 500 GB disk in BIOS and Windows – motherboard was GigaByte, which seems to have had same issue with Hitachi disks before.

The solution is to try to use Seagate Tools (DOS) to set new native Max setting. This action actually failed (or so the tool reported) however after short test was run it became clear it treated the disk as 1.5 TB. After reboot the disk was correctly recognised by BIOS.

If you buy one of those disks make sure you upgrade your firmware (SD17 to SD19, and some other CC1H – you need get the right one for your disk as they use different platters) – you can do that by going to chat with Seagate support, they answered pretty quickly however it then gone to hell as the ISO file they gave me was shown as broken and burning it only resulted in README.txt file shown. One hour later they cut me off as they claimed it was all fine – it turns out they were right and booting that disk worked! However they had no clue that this was non-standard ISO, probably intentional to avoid people copying the firmware data.

Don’t use quick format on those disks – there are serious questions on their quality (that’s why they must be so cheap), don’t trust anywhere near important data to those – I know I wouldn’t, but they might be okay for temporary files usage where failure can be tolerated (barely). Seagate really deserves to be seriously slapped for terrible customer experience (you can’t easily upgrade firmware) and having such serious quality issues in the first place with top of the line hard drives.

64-bit compilation errors in Visual Studio 2005

Friday, July 20th, 2007

After just having spent some hours trying to compile a C/C++ piece into a 64-bit DLL I came across with a number of error messages searching for which does not yield a lot of great results, so I thought to post them here for the benefit of the others who come across:

  1. “unresolved external symbol __security_check_cookie”: Configuration Properties->C/C++->Code Generation switch off Buffer Security Check (/GC- command line) and this error goes away
  2. “unresolved external symbol _DllMainCRTStartup” (not to be confused with __DllMainCRTStartup@): Configuration Properties->Linker->Input – make sure “Ignore All Default Libraries” is set to “no”.
  3. Could not find kernel32.lib user32.lib etc – if you search for this files in VS2005 directory you will find them in various places, but for 64-bit mode they should be in AMD64 – if they are not there, then go to setup of VS and make sure you installed 64-bit compilers and tools: you can try install recent Platform SDK from Microsoft, however even though it contains these files in correct directory they don’t appear to help compile even if you provide path to them in “Additional Library Directories” in Linker options.
  4. “module machine type ‘X86′ conflicts with target machine ‘X64′” – this message appears if you have not got correct 64-bit kernel32.lib or other similar DLLs, so that VS takes 32-bit versions and then can’t link them since they are not 64-bit. This error comes up after you think you “fixed” error #3 by giving path to place where you think correct kernel32.lib exists – solution is the same as in error #3.

Hope this will save a few hours of fruitless efforts trying to understand what the heck Visual Studio is on about when trying to compile a wee 64-bit .DLL :)

Crucial memory

Wednesday, May 30th, 2007

My long held belief that cheap memory costs more in a long run was confirmed in the last few days when 3 out of 4 chips in two OCZ 4 GB (2x2GB) PC2-5400 Vista Upgrade edition kits failed miserably in a new Intel Q6600 based system – one memory chip would have errors in memtest and with 2 others the system won’t post at all. New delivery of chips from Crucial sorted it all perfectly – 50% more expensive, but can you really afford bad memory that will lead to very weird crashes that would imply other hardware components are at fault?

While on the subject of memory – testing it with memtest also provides nice benchmark showing bandwidth available to processor in case of L1 and L2 caches and actual RAM: the stats for Q6600 (2.4 Ghz) system running with dual channel memory 4×2 GB at 667 Mhz (CL5) shows that actual speed of ram is just below 4 GB/sec – to put this into perspective it suggests that reading all RAM in that server would take whole 2 seconds! This is of course much faster than reading same 4 GB from hard disk, but still – RAM is anything but very fast insofar as processor speeds are concerned: L1 cache for example is rated as almost 400 GB/sec by the very same memtest, this is almost 100 times faster than accessing data from RAM! L2 cache is slower, but still almost 170 GB/sec.

What this means is that those who wish to obtain very high performance from their code should think carefully about algorithms used so that they are cache friendly – otherwise software might run slow because it is bottlenecked by comparatively slow RAM accesses.