Auto-tune the news: Pretty freaking cool

posted by admin on 2009.04.22, under Video
22:

So these are completely worth watching because a) these kids are more talented than Akon-Kanye-TI-the-same-R&B-dude-with-a-voice-syth and b) they’re actually pretty clever.  I give you, Auto Tune The News:

UI design limitations

posted by admin on 2009.04.22, under Technology
22:

Steve Frank wrote a great piece on the state of UI design.  Steve’s point about UI innovation mainly occuring in mobile devices got me thinking.  

Although I never was able to do much more that longingly look at the Newton, I was a loyal PalmOS user from the Palm Pilot 5000 through to the Treo 650 when, finally, someone developed a device and interface that sufficiently worked with my own programming, ie., iPhone.  

I tried others.  I bought a Velo when it was first available and sold it a couple days later, not only did I hate Windows Mobile with a passion the Velo single handedly ruined me for the “NetBook” buzz of today.  Windows-Only-Smaller was horrible and as an interface I’m of the opinion that Microsoft’s UI design concept peaked with Windows for Workgroups 3.11 as it was at least fairly stable by that time and the interface was not hidden behind a “start button” which has just never made an ounce of sense.  Start button’s on a coffee maker?  Brilliant.  “Start” to look for something that will hopefully lead you to something else that will get you hopefully to your intended application destination?  Ridiculous.

BlackBerry, I wasted some money there too.  The CrackBerry is, honestly, lost on me.  I don’t get it.  The jog-wheel is horrible.  It’s unusable for anything other than Pong. The trackball that was on a client provided 8820 I thought at least lent some interactivity to the device even though it really is just a glorified jog-wheel scrolling through the icons.    I always ended up going back to the trusty Treo 300 until it was no longer available and then to the 600 series.  And now PalmOS is dead, may God bless it’s soul.

To me, it seems that the user interface will forever be limited and, excluding simple familiarity as Steve mention, forever foreign to humanity until some sweet holographic stuff is possible.  The most significant lacking element of the interface is time and space. 

Think about it, any sense of depth, area, location, and time is essentially an illusion created by timestamp CRUD and graphics.  The user is abstracted by even these optical illusions via a flat visual portal and remote interactivity devices aka., your keyboard and mouse.  When I think of UI I think of how I live and interact with the physical world around me.  

In the real world an association of time and place is implicit with that of events, conversations, and actions which provide indicators for memory creation and retrieval.  These associations free my brain from requiring a hierarchically organized eidetic storage system. 

The human brain ingests more metadata than the actual object target, it would seem, and it does so in a way that object recall can be triggered by loose associative inter-connectivty with another human computer.  Sometimes, there is stuff we don’t know that we’ve even stored until someone else’s recall (direct or otherwise) triggers our own recollection - and the most important thing there is that we didn’t kick off a subroutine to select * from brain with some immense join or regex to match a random pattern.

And I’ll get back to this line of thought later.

Adventures in PostgreSQL

posted by admin on 2009.04.20, under Technology
20:

We’re using PostgreSQL as our database at Klaggle.  My respect for Postgres continues to build, this is the first project I’ve used Postgres with, so the respect may be more fear than anything.  There seems to be a black art to Postgress, and the body of knowledge out there is far from organized although it is “out there.”  Here’s my part in adding to the obfuscation.

Performance Tuning:

Postgres has been around awhile, sometimes you find a clue from the days when 512MB RAM was a mind blowing quantity and the direct extrapolation, especially after a couple days of looking for said clue, is so non-intuitively opaque you wonder if in fact you’ve found a clue.  The first thing in tuning Postgres is to realize that, for whatever reason, the Postgres gods have an “out of the box” installation assumption of a minor footprint.   From an engineering perspective, especially these days, you have to respect the capability of Postgres to run well with constrained resources and for the this ability to be, de facto, demonstrated upon firing Postgres up for the first time.  From a practicality perspective it’s horseshit because occasionally quasi-turn-key brilliance is appreciated.

Before reading my thoughts, here are some of the most valuable links I’ve found regarding Postgres and performance tuning.  My intent here isn’t to express my prodigal brilliance in Postgres, it’s to attempt to organize what I’ve found.  I’m an idiot.  Just ask my wife.  But here’s some nuggets from a few that are far smarter than I:

http://www.ca.postgresql.org/docs/momjian/hw_performance/0.html

http://varlena.com/GeneralBits/Tidbits/annotated_conf_e.html

http://www.freebsddiary.org/postgresql-analyze.php

http://www.amd.co.at/adminwiki/PostgreSQL

Additionally, there are two vital tidbits to understand:

1. Postgres runs under a multi-process paradigm as opposed to a multi-threaded paradigm.  Fixing that in your mind goes a long way towards researching how to tune your hardware, OS, etc.

2. Hierarchical data relationships can be absolute murder your database performance.  M-U-R-D-E-R it.  Okay? So if you’re dataset is dependent on maintaining anscestor/child contexts start rewriting your schemas. (More on that later)

First steps - Hardware:

We’re in start-up mode.  I found a Generation 3 HP DL380 with dual 3.2Ghz XEON procs, ordered some refurbished parts to beef things up including 12GB of RAM to make a decent platform all for about $675.00.  Checkout http://www.pacificgeeks.com who I found, after the fact,  and who last time I looked is selling the same kit fully loaded for $500.00.

Before you bang your head any further trying to load Ubuntu 8.10 on your HP with a 5i controller just stop and burn Ubuntu 8.04 to a CD and start over.  8.10 doesn’t write the GRUB config to disk and although the installation goes flawlessly, it’ll never boot.  8.04 is fine, it’s supported until 2013.  I’m betting a firmware upgrade to the 5i controller would fix things but two failled downloads of the ISO from HP and I moved on.  

It made sense so I did it.  The server has 6 73GB 10k RPM drives.  I mirrored disk0 and disk1 for the OS.  Disk2 through disk4 are RAID 10 for the database(s).  The basic consideration here is that logging, OS/System calls aren’t competing with the database.  Also, Postgres benefits from a number of spindles and this config gives the speed of striping with the redundancy of mirroring.

15,000 RPM drives would have been better but the price difference is significant especially when you’re you’re own investor at the time.

Second Steps - Kernel Tweaks:

You have to make a couple changes to the kernel to increase shared memory availability first.  Obfuscation #1, “Calculating SHMMAX and SHMALL in 2009″:

kernel.shmmax=2202671224

kernel.shmall=2202671224

Then make changes to postgresql.conf:

  • shared_buffers
  • effective_cache

Postgres’ daddy, Paul Momijian, recommends that effective cache be sized to fit your most active tables.  If you’re going to be spending anytime living with Postgres I highly recommend injesting most of what he says as gospel.  His postgres blog is here - http://momjian.us/main/blogs/pgblog.html

The top 4 tables I have total (as of writing this) roughly 1.1GB so I’ve set my effective cache to 1.6GB for now.  Supposedly Linux is very effective at caching what is relevant so for now I’ve got my shared_buffers set to 256MB.  The SHMMAX/SHMMALL configuration was calculated assuming this:

250kb + 8.2kb * shared_buffers +14.2kb * max_connections

For an idea of the performance impact of these minor changes, I had one query pattern that did several joins, sorts and counts that took an average of 1550ms to execute.  After modifying these memory settings that query now executes in 550ms.  

This isn’t finished.  Ask me to bitch about TurboGear’s ORM, SQLAlchemy…

What happened?

posted by admin on 2009.04.20, under Uncategorized
20:

CovertlyObvious 1.0 has been taken down.  The financial aspects have evolved to Think 20/20 Research which will be launched soon.  The consumer and market research is moving to Klaggle.com which will be launched soon as well.

The more random content will live on here, eventually.

pagetop

  • Follow me on Twitter