My tummy hurts :(

Screen Shot 2012 04 30 at 13 54 46

Blog Categories:

If you have to rely on this during sex...

…to prevent your partner from texting, it is indeed a sad day.

http://www.instructables.com/id/Textercuffs-To-stop-habitual-texters/

Blog Categories:

The Alarm That Cried Wolf

In the apartment building I live in, there is a policy to frequently test the fire alarm.  If I am right, they test it monthly, and every year they test each unit's alarm individually.  The testing is done so frequently that I have been conditioned just like the boy who cried wolf, by having heard approximately 150 fire alarms in the past 3 years always due to testing, to ignore them.  No matter what.  If I have 150 false positives and 0 true positives, you filter it out.

So what will happen the day the fire alarm is real?  I will ignore it and burn to ash.  Too much testing can be a bad thing.

Blog Categories:

Forgotten Greatness

Every now and again I stumble across some long forgotten memories.  This time it was triggered by my daughter's quest to learn more advanced mathematics.  She was busy playing on a web site where they ask for answers to equations like:

NewImage

NewImage

So I decided to show her that there is more than one way to look at algebra, one can also approach it from a graphical perspective.  On Mac OS X I opened up Grapher and plotted this linear line graph and showed her how one can read off the answers to any value of x graphically.  She wanted to have the application on her computer too, but unfortunately it is Mac OS X only.  Then I remembered in 1993 I wrote an application called SciCalc that did this and much, much more.  So I Googled it and found it here where I originally uploaded it to: http://garbo.uwasa.fi/pc/math.html.  It was a trivial matter of getting VirtualBox on a Windows 7 machine with FreeDOS, and then installing SciCalc.

The whole process gave me a sense of longing for a time in my life long gone.  A time when writing software was stimulating, exciting, new, unique, wonderful, rare, rewarding, mysterious, meaningful and personal.  Before it became my profession and politics and economics took everything away from me.  A time when I spent the night writing my first TSR DOS application in assembly language, that prevents the user from rebooting the machine by pressing Ctrl+Alt+Del.  A time when you could understand each and every function in the operating system, each BIOS interrupt, and therefore be able to fully control the PC.  That time has gone from me now. Today it is about web applications, e-commerce, time to market, profits, cost savings, egocentric business people, outsourcing, frameworks, RAD, compromises…

Software development is no longer an art.  It is now purely a technical process to produce end results.  It is not important to write secure code.  Sure everyone is touting it as the panacea of today's issues, but look deep into the heart of many security vulnerabilities in today's software and you will see absolutely ridiculously stupid mistakes like using strcpy instead of strncpy, or allowing SQL injection attacks, or not securing your deployments from their default (non secure) configuration because the developer does not truly understand software engineering - it is purely a job to make a living, therefore he knows as little as possible to get by.  It is not important to conserve resources, as the common belief of today is that RAM and disk space is cheap, software developers cost money.  So then the developer releases an application to market under pressure from time and budget constraints, a lack of enthusiasm and pride in his work to deliver an O(n2) algorithm instead of spending 2 days longer to find that O(log(n)) algorithm instead.  Why be concerned (or even informed) about the difference between using varchar(200) or nvarchar(200) in database design?  Why worry about profiling an application to understand its performance characteristics and then tune the indexes and database parameters optimally when you can just stuff in more RAM or buy a bigger server?  Because it is cheaper.  And money is everything.  Lost is the art and in is the practical cost benefits.

I digress.  This is about a time in my life when I truly enjoyed writing software programs.  I can honestly say that I've never worked on any commercial project that ever came close to the satisfaction I enjoyed from my discovery crusade between 1993 and 1996.  That was the time of C++, assembly language, reverse engineering viruses, hacking, and other things best left unsaid.  When I wrote SciCalc there were no (to my knowledge) API's or libraries or toolkits or frameworks or anything for that matter for what I wanted to do.  To give you an idea of what it entailed to write SciCalc, here are some things I had to write by hand:

  • Mouse driver in assembly language
  • Cursor image masks (I actually wrote a Pascal program to allow you to graphically draw these image masks and then generate the C++/Pascal/Assembly structures for the code)
  • SVGA driver
  • Graphics primitives such as windows, buttons, event handling etc.
  • Text file viewer with full scrolling capability
  • Installer
  • Copy protection scheme
  • Database Engine

Today you will use Windows'/Java's UI toolkits like WPF, Swing etc. which provide convenient point, click, drag, drop support for adding UI elements.  SciCalc is a DOS application, switching to graphics mode and rendering all the primitives in hand written assembly and C++.

Here are some screenshots:

Main Screen - About

Scicalc2

More screenshots...

Blog Categories:

My major gripe with security updates

I agree, security updates are necessary to continue protecting us from hackers and viruses.  I understand and acknowledge that software will continue to have security related issues in the foreseeable future.  I do NOT agree that software have to have as many security issues as they do.  I firmly believe most software is written not from sound engineering principals.  If it was, then security would have been a prominent part of the SDLC and software would have been much more secure - not impenetrable, but much better than now.

I digress.  The issue I have with security updates is when this happens:

Screen Shot 2012 04 05 at 12 22 40

I am in the middle of developing software, researching etc.  I have at any given moment 30 - 60 tabs open in various browsers, I use this for segregation to enhance security.  To patch Adobe's Flash (which seems to have daily security updates), I need to close ALL my browsing sessions.  Even though some browsers can remember the last state, they cannot remember the desktops I had them on.  So it is a huge mission to close them all.

Please people of the IT world… Figure out a way to patch your software WITHOUT IT NEEDING TO SHUT DOWN MY BROWSER.  It is really not that hard to do.  Work WITH the browser vendors to support a hot reload feature.

Blog Categories:

2MP CCD Up Close

20120402 DSLR IMG 0042 Edit Edit

20120402 DSLR IMG 0011 Edit 2

Blog Categories:

RAID Weirdness

Recently I decided to change my whole network infrastructure.  One part of this project was to replace my existing Windows machine, a Core i7 950 LGA 1366 based machine, with a new Core i7 3930K LGA 2011.  Since enough things changed, I decided to sell my existing Windows machine and build a new one.

I did however decide to keep my Adaptec 3805 PCIe x4 RAID card that used to run in the existing Windows machine (3 x 1.5TB Seagate Barracuda 7200 rpm SATA II HDD's in RAID5, and 2 x 1TB Seagate Barracuda ES.2 7200 rpm SATA I hard drives in RAID1).  I needed this space and since hard drives are so expensive with the floods in Thailand, it just made sense to keep it.

So on the new system I have this configuration:

  • Intel Core i7 3930K 6-Core CPU
  • Asus P9X79 Pro LGA 2011 Motherboard
  • 32GB DDR3-1600 RAM
  • nVidia GTX 580 1.5GB GPU
  • Dell U2711 27" LCD
  • Corsair Cooling Hydro Series H100
  • Seasonic Platinum 1000W ATX PSU
  • 2 x OCZ Vertex 3 240GB SSD's in RAID0 on built in Intel X79 RAID controller as main OS/Apps

The Adaptec RAID controller had been with me for the past 3 years, and worked without a fault.  However, when I moved it to the new system, I ran into issues.  Initially it booted up the two RAID volumes just fine, but performance was degraded.  I noticed that copying a large amount of photos over the network to the server took increasingly longer and longer to complete.  The copy rate dropped off to below 10MB/s.  Later, when I copied data from the 1TB RAID1 volume on the Adaptec to the RAID5 volume on the same controller, the copy slowed down to 4MB/s.  Something clearly was messed up.

Two days later I got woken up by the wonderful sound of my RAID alarm.  RAID1 failed, in specific, CN1 Device 0.  I had the RAID5 on CN0 devices 0,1,2, and RAID1 on CN0 device 3 and CN1, device 0.  The error was that the drive disappeared from the system.  It detected the drive by itself after a little while and started rebuilding the RAID1 set.  This took many hours.  Once done, it failed within 10 minutes again.  Same thing.  I checked the cables - all were good.  So I was baffled.  I assumed either the CN1 cable was bad, or the RAID card, or the hard drive.  So I purchased 3 x 2TB Western Digital Caviar Black drives.  Disconnected the RAID1 set, and connected the new RAID5 on CN1 device 0, 1 and 2.  I initiated a build/verify on the RAID5 volume, and after a gruelling 24 hours it finished.  This duration was absurdly long.  Less than one day after the build/verify completed, the exact same thing happened, device 1 on CN1 dropped out of the set.  I rebuilt it, and then device 2 dropped out. I therefore confirmed that it was not the hard drive that was bad, nor the specific CN1, device 0 port.

Next step - replace the card as I could not find any SATA breakout cables.  As usual, I purchased the best I could afford - the LSI MegaRAID SAS 9265-8i Kit RAID PCIe 8x RAID card.  This card was PCIe 8x and supported SATA 6Gbps, with 1GB RAM as cache.  The Adaptec only had 128MB.  I installed the LSI card in a PCIe x16 slot next to the Adaptec, and moved the 3 x 2TB over to CN0 devices 0,1 and 2.  A RAID5 volume was set up and initialised.  After 4.5 hours the build was done.  This was much better.  Next step was to initiate a copy of data from the RAID5 on the Adaptec to the RAID5 on the LSI.  This took a long time as the read speed on the Adaptec was horrific.  Once done, I moved the 3 x 1.5TB RAID5 from the Adaptec to CN1 device 0,1and 2 on the LSI, and removed the Adaptec card.

One day later the LSI's RAID alarm went off… One of the old RAID5's drives stopped responding and dropped out of the set… CN1 device 1.  I was stumped.  EVERYTHNG was replaced.  The RAID card, the SATA breakout cable, the power connector from the PSU to the hard drives, the hard drives was not replaced however these were working before in the Adaptec even when the 2x1TB RAID1 failed.  And I *know* these hard drives are fine.  I could not see how the motherboard could have any effect, as the RAID card abstracts the SATA drives.  The PSU is more than powerful enough at 1kW.

In the end the ONLY thing that has worked (so far, it's been a couple of days) was to move the 3 x 1.5TB old RAID5 array to my Linux machine on the Adaptec RAID controller CN0 device 0,1 and 2, and leave the LSI with only the new 3x 2TB RAID5 on CN0 device 0,1 and 2.  This means I wasted a LOT of money on a card with 8 ports when I can clearly only seem to use 4 at a time.

This issue is still unresolved, but at least it seems like I have two working RAID5 volumes now, although not in the same machine.

Blog Categories:

First Day With Canon 5D Mark III & 1Ds Mark III As Reference

53W9762

G0C9887

G0C9926

G0C9950

Blog Categories:

When is a song brilliant?

One criteria is that whenever you listen to it you get an uncontrollable smile…  This girl is awesome.

Blog Categories:

Providing Estimates

Even after many decades of the IT industry being around, there still seems to be a huge impedance mismatch between non technical people and technical people.  I am not even talking about the split between the business and the IT department.  Those are worlds apart.  What I am referring to is the impedance mismatch between business analysts and system architects.  Technically a business analyst is not necessarily a technology person, however business  analysts working with software development teams are technology people - they need to be otherwise they cannot bridge the gap between the two worlds.  They are called Technical Business Analysts or System Analysts.

So when a requirement from the business is analysed by the business analyst, and handed over to the system architect for estimation, even when it is just a high level estimate, sufficient details are required to enable such an estimate.  The problem here is that the business analyst needs to understand enough of technology to provide sufficient information and to understand a very, very important aspect of system engineering.  Many times the bulk of time and cost on a project is not spent on the easy, straight forward aspects.  Many times the cost (and hence the reason so many projects overrun their budgets) are due to the exceptional conditions, the border cases that are extremely hard to work around and requires a huge amount of effort to implement.

So when a request is made for certain system changes, especially when those system changes consist of a myriad of potholes that will need to be navigated around, before an estimate of cost can be delivered at least some depth of analysis is required to understand the extent of these exceptions. I have built systems where the code for performing 98% of the system's operations were written in 30% of the time/budget, the final 2% took 70% to complete.  Sometimes this is called the Pareto principle.

In my experience very few business analysts understand this, hence the ongoing struggle to provide seamless support to the business without appearing to be unnecessarily stubborn.  I am sure the client would not be happy with an estimate that could be incorrect by as much as 99%.  So spend 1 day more analysing requirements and the inaccuracy in such an estimate might go down to 20%.

Blog Categories:

Pages

Subscribe to Read It Or Don't. RSS

Back to top