Sunday, September 26, 2010

Here comes Graphene... sharpen your pencils!

Reading about research and development around carbon-based, two dimensional, nano-worldly Graphene has been a lot of fun. If you're just ramping up as well, I thought I'd jot down some of my collected notes to help others on their way to good knowledge of Graphene.

First of all, Graphene is a one atom thick, 2-D slice of graphite, the "pure" stuff in your 2H pencil. It looks like a cross-section of a honey-comb with carbon atoms in a chicken wire-like pattern. Scribble on a piece of paper, take some scotch tape and left up your carbon-based jottings. Then desolve the tape with a solvent, like Benzene, and you're left with a few (or more) layers called Graphene.

Now, some tidbits or "reasons to care"...

  1. Graphene is the strongest material known.
  2. It's the thinnest membrane known, in the lab, to separate two bodies of liquids.
  3. Pop a hole in a sheet of Graphene a few carbon atoms wide, you have a "nanopore". Drag a strand of DNA through it, you can figure out its sequencing (all that G, T, C A stuff). FAST.
  4. Thanks to its incredible conductivity, it may eventually replace silicon as chip fodder. It's 100x more conductive than silica and isn't it nice it's not environmentally toxic as those other silica alternatives, like gallium arsenide?
  5. As part of the quest to utilize Graphene as laid on substrates of silica, researchers are working heavily on getting the signal-to-noise ratio ramped up to maximize all that good conductivity.
  6. Nanotubes are rolled up single layer sheets of Graphene.
  7. Because of its high conductivity, Graphene makes great sensor devices, able to detect substances and get the word out quickly.
  8. Graphene may represent a new class of capacitors, thanks to its conductivity and extremely large ratio of surface area to mass.

Lost the article I grabbed some of these details from. I'll post the link as soon as I find it. The bit about nanopores came from http://www.physorg.com/news203345672.html

Hope you found this helpful and now see Graphene as slightly less mystifying.

Saturday, September 18, 2010

Server software architecture technology today... a "drive by" appraisal

A colleague at my company distributed a couple of links on MUD -- "A BIG BALL OF MUD is haphazardly structured, sprawling, sloppy, duct-tape and bailing wire, spaghetti code jungle." from A Big Ball of Mud.

I never liked chaining (object methods end-to-end, ad nausem) because it made me feel stupid... It always came off as the "cool" thing at the expense, to me, of clarity. It also felt like a side-effect of IDEs where you just keep getting a drop-down pick list of methods once you complete the previous method name. I know I'm ridiculously blue collar about using vi instead, but what I like about it (being the absence of an IDE) is that it forces you to become more knowledgeable about the object/class definitions you're referencing. You know at some point you're going to have to track down a bug and wouldn't it be nice if you've already explored that deeper code, often written by somebody else. It gives you the extra layer of perspective you need when bug-chasing...

Yes, architectures are beginning to feel commoditized. But I like that. It's like design patterns. When Microsoft came out with C# it pissed me off, big time, as a rip-off of my beloved Java. But then I realized that the favor MS did for all of us was to raise the conversation to the next level of design patterns where the implementation details became less important. My guess is that was not MS's intent, but I believe it was a favorable consequence.

Anther advantage (or consequence) of commoditization is that these architectures are beginning to feel canned and the tools that support them are like-wise starting to feel that way, as they continue to mimic each other... Grails-Rails... does it really matter other than some business considerations?

But I have become a believer in the programming-by-convention. Yes, it goes overboard when you realize so many methods have been automatically created (views, controllers, services, session variables, etc.). But at least there's a higher level of "local standardization" that anybody who dives into the project can expect. I used to like thinner, start-from-scratch architectures... but it's so incredibly silly to have to re-think how to track session, how to send email, how to configure security, how to do things you've done a few hundred times over the past 15 years.

How's that for a preach-y entry?