HydraMVC has become a part of HydraFramework. The source is on http://github.com/lukesh and you can read more about the framework at http://hydraframework.com. More later!
Category Archives: Uncategorized
I think I have a decent workaround to this old bug, where you run into formatting problems if you want to use a custom borderSkin on a Panel or Alert. (I especially wanted to use a skin created with Degrafa.) In addition, I wanted to set up something where I could create a generic Panel skin to use throughout my application, but also use the skin for Alerts without it messing up the title bar. Even though it’s over a year old, this post is still getting remarks about the layout bug.
Admittedly, my workaround is a total hack. However, that’s why it’s called a workaround. I’ve been using it without issues, and wanted to make it public. Click here to download a Flex project archive with the solution files. This is what it looks like:

Custom Panel / Alert Skin
Warning–non tech-related, quasi-philosophical, meta-existential, blah blah, so read at your own risk. Subtitled, need to write a technology post so this gets off my home page.
I can’t sleep. I’m kept awake by a series of haunting revelations in the form of what I can only describe as “the right questions” that seem to explain the nature of life and reality in a profound juxtaposition of perfect clarity and haunting mystery.
We all die. All of us must wrestle and come to terms with the fundamental mysteries of reality. Whether you call it philosophy or religion, something needs to click into place inside our brains–a framework on which we can use to reconcile what seems to be the ultimate futility of life itself as the years blow by with such callous speed.
What is life, anyway? Why do we consider the concept of our individual lives to be fundamentally equal to our conscious mind?
We say that a fire dies. Is the life of the fire it’s own existence, or is it more deeply, the consuming of the wood, and the eminence of heat and light? I tremble as I think about it! We clench our consciousness as if it were the essence of life! Somehow we are so afraid to lose it, that if we die, go into the ground, lose our ability to traverse through time, feel, interact, reason–that we DIE. Is that death!? Maybe not!
Our bodies are just husks–sublime, mechanical devices that burn food. So are our brains, our minds, and our consciousnesses, that was born at a period of time, lives through periods of time, and will at a period of time, die. Does the fact that we die at one period of time negate the fact that we are alive at another?! If the nature of our existence transcends time, when the time comes that we die, are we not still alive?! (That is, we are no longer conscious, but our existence has been etched into the fabric of space-time!) Our choices forever impact the universe, and CANNOT BE REVERSED.
We, dead, are a four-dimensional being, a being who’s existence simply IS. Life now is a process of growing that being. Our growth is complete when we die. Then we exist.
When a fire dies, the heat and light it emits exist, and have permanent impact. The life of the flame is not defined essentially by its own self-awareness.
Eternal life–what is it? Jesus defines it as simply, “knowing God”. Does this confuse you?! How can I hear this and not feel the uncanny mystery of this truth at the core of my assumptions about reality? Life, is simply knowing God? This begs a redefinition of the very word, meaning, and nature of life itself.
What is consciousness? Why is it so important to us? Self-awareness, reason, memories. We somehow place our identities in how we feel and what makes us laugh. What gives us the framework to do this? It’s as if a flame would base its value on some obscure properties of its existence rather than the heat and light it emits, is it not!? So we die and are no longer conscious in time. What does it matter?! We say that we “have lived”–can we not say at the moment of death, “I now LIVE”?! I have completed my growth through time, and I now EXIST?! Is not this four-dimensional being of our lives not OUR VERY SOUL?!
I move to separate the seemingly fundamental equality of the terms life, consciousness, identity, and soul.
I move to think of time as it is–equal in dimensional tangibility as height, width and depth. We can only see a slice of time at once with our current faculties, and this limitation is the construct of what we so dearly cling to as “consciousness”.
Our choices are IRREVOCABLE. They have such a profound impact on our identity! If we make a choice yesterday, and it’s a bad one, we shake it off, and say, “well, I’m a new man today”–as if our identity is limited to this slice of time. If every day is a ring that we stack on a post, unique in size and shape, at the end of our lives we will see a sculpture of individual identity.
We are fluid beings, and can only grow and change so much in each slice of time–like a fire rapidly changes shape, but slowly grows from a small flame, to a giant bonfire, to embers, to ashes. We are instructed to daily “renew our minds.” This terminology is just adequate. Every immeasurable slice of time that passes, not only do our thoughts and choices define what we think in the next slice, but they are building and growing what someday will define us as our identity. Our consciousness thereof is questionable as we define consciousness.
I laugh inside when religions define the afterlife so neatly wrapped–”oh, I’ll see them in Heaven”. YOU HAVE NOT A CLUE how you will see, if you will see, what you will see. I’m sure even more today than ever that the book of Revelation is more profound truth than we can attempt to rationally deserialize from the “three-dimensionally-flattened” view of John’s revelations. It’s like flatting a three-dimensional object to a two-dimensional drawing and attempting to examine it’s backside.
Whether you ascribe to a theistic or non-theistic world view, you must come to reconcile life in the contexts of origin, meaning, purpose and destiny. The questions of consciousness, ethics, and what happens after you die simply must be addressed. I say this, because even if you can somehow brush them off now as if you don’t care, you will care sooner or later. I’m not saying all this to proselytize, or to “save you”–this is simply a self-serving act of somehow attempting to articulate the rage inside! Tonight feels like the culmination of years of thought to me, so inadequately expressed, yet, to me, life-defining. Even if you don’t believe in God, think of the wonder of the ability to transcend time and experience the essence of the dimension of time all at once–what it must look like. The timelines of all the men and women of history, their interaction, your life–all visible at once as a sculpture entitled “humankind”.
So, I’ve been trying to cook up some decent blog content in the middle of writing this Flex platform, but the need to actually complete the project trumps writing about it… However, I’ve managed to stumble upon my west-coast twin. I’ve even used his wp blog template for a while.
Just a quick observation of how important it is to me that in order to achieve and maintain focus, I need to reduce my “sphere of awareness” as small as possible. I picture an imaginary bubble around me, and whether I like it or not, my mind is background-monitoring everything within that bubble. The larger the bubble is, the easier it is to be distracted as things vie for my attention, and the harder it is for me to zone in to what I’m doing as I’m constantly polling for updates from everything in that sphere. That’s why we all wear headphones.
The problem arises when switching between managerial and development tasks. A managerial mindset requires the constant awareness of the entire machine, and the ability to triage all kinds of interruptions. You get into that mindset, and you begin to habitually and frequently poll everything in that sphere. You begin to listen in to conversations, feel the need to check on status of things, re-check your to-do list for anything you might have missed. Then, when you detect that precious 10-minute pocket of time between fires, you have to get something done. You take of your managerial hat, and you put on your developer hat.
You’re refactoring the hell out of some code, the body flayed open with guts hanging all over the place, but you are constantly looking over your shoulder, expecting someone to ping you about something on your to-do list that is pending. I live in this place.
Twitter has become a once-a-day blog read, so no more Twitteriffic throwing Growl notes all over the place. IM closed. Yammer closed. Email closed. I decide that enough is enough and I have to get something done today. After a solid hour or two, I finally shake off the itching feeling of imminent interruption and get into a groove. I can’t shake it anymore, and I open my email, only to find that people are frustrated with me as they’ve been attempting to get my attention for hours. My sphere of awareness explodes, and now I’m putting out fires and feeling guilty for working.
My sphere is tired of expanding and contracting. I have to figure out a better way of doing this.
A few people here have only recently switched to Mac as their primary computing platform. People generally find most things to be easier and more pleasant to use on a Mac. However, there is frequently a point of confusion for a Windows user when they try to find their “network drives,” or mapped network shares that they had previously configured to automatically remap on login, and were displayed in “My Computer.”
This describes the methodology of mounting network drives in Finder so that they are easily accessible in normal workflow, minimizing the steps required to access those drives, and removing the need to remember if they have been mounted or not.
1. Mount the drives using Finder.
- Click on Finder, and select “Connect to Server…” from the “Go” menu.
- Connect to our primary data server “carbon” by entering “smb://carbon” in the “Server Address:” field and click “Connect.” Once Finder has connected, you will be able to select from the following shares: backups, documents, media, proposals, resources, temp, townhall, users, vault.
- Repeat this process for all the drives you would like to be accessible. Repeat this process as well for other servers as well. Our primary web server, “nitrogen” (use “smb://nitrogen” in the “Server Address:” field), will give you access to the “wwwroot” share.
- Open a finder window, and click on your username in the sidebar.
- Control+Click (or right click) in the window and select “New Folder.”
- Name the new folder “Network”
3. Create shortcuts to the network drives in the Network folder.
- You should see all your network drives on your desktop. If you don’t, click your desktop, select “Preferences…” from the “Finder” menu, and ensure that “Connected servers” is checked.
- With the newly created “Network” folder, as well as your desktop visible, select all your network drives and drag them to the “Network” folder. Your cursor should add a small curved arrow when you drag them over the folder.
4. Create shortcuts to the “Network” folder.
- Drag the “Network” folder into your sidebar, preferably as the first item, above your username.
- Drag the “Network” folder into your dock, next to the Trash Can.
5. Integrating into your workflow.
- Remember that you don’t have to remember to “mount the drives” when you need them. Treat them as if they are already mounted and just use them. OSX will mount them as needed.
- When saving a file from within an application, click the “Network” folder in the sidebar, and then choose the drive you want to open. If it’s mounted, it will be immediately accessible. If it’s not, there will be a slight pause as OSX mounts the drive.
- When you are opening file, or need to browse the network drive, it is often easiest to click the “Network” shortcut in the dock and select the drive you want to explore. Again, if it’s mounted, it will appear instantly. If it’s not, it will mount automatically. You will see it appear on your desktop.
- If you find the desktop icons of your network drives distracting, you can hide them altogether, guiding you to always use the dock or the sidebar as your first access to the drives. To do this, click your desktop, select “Preferences…” from the “Finder” menu, and uncheck “Connected servers.”
Keep in mind that this was written for OSX 10.5 Leopard, however this process will also work in 10.4 although the names of certain things may be slightly different. Also, this is just what I’ve found to be a streamlined workflow; it’s not necessarily “the way” ™ to do it. I’d love to hear what others do.
We’ve been using this for a while now, and I’d just like to tell the internets that Charles is awesome. I would definitely recommend it.
This is a flexified, simplified version of John Grden’s earth demo. Create a new Flex project called “GreatWhiteExperiment1″, add the GreatWhite source path, and paste the code:
package {
import flash.display.Sprite;
import flash.display.StageAlign;
import flash.display.StageScaleMode;
import flash.events.Event;
import org.papervision3d.cameras.FreeCamera3D;
import org.papervision3d.lights.PointLight3D;
import org.papervision3d.materials.ColorMaterial;
import org.papervision3d.materials.shadematerials.FlatShadeMaterial;
import org.papervision3d.materials.shaders.FlatShader;
import org.papervision3d.materials.special.ParticleMaterial;
import org.papervision3d.objects.primitives.Sphere;
import org.papervision3d.objects.special.ParticleField;
import org.papervision3d.render.BasicRenderEngine;
import org.papervision3d.scenes.Scene3D;
import org.papervision3d.view.Viewport3D;
[SWF(backgroundColor="0x000000", width="900", height="600", frameRate="30")]
public class GreatWhiteExperiment1 extends Sprite
{
private var renderer:BasicRenderEngine
private var scene:Scene3D;
private var camera:FreeCamera3D;
private var viewport:Viewport3D;
// 3d Objects
private var pointLight:PointLight3D;
private var earth:Sphere;
public function GreatWhiteExperiment1()
{
stage.align = StageAlign.TOP_LEFT;
stage.scaleMode = StageScaleMode.NO_SCALE;
renderer = new BasicRenderEngine();
scene = new Scene3D();
camera = new FreeCamera3D();
viewport = new Viewport3D(0, 0, true, false);
addChild(viewport);
camera.z = -350;
camera.focus = 1100;
camera.zoom = 1;
pointLight = new PointLight3D(true);
scene.addChild(pointLight);
pointLight.moveUp(350);
pointLight.moveRight(350);
var earthMaterial:ColorMaterial = new ColorMaterial(0x00CCCC);
//var earthBumpMaterial:MovieAssetMaterial = new MovieAssetMaterial("earthMapBump2");
//phong only, no bump
//var earthShader:PhongShader = new PhongShader(pointLight, 0xFFFFFF,0x404040,20);
//phong with bump
// create shader
//var earthShader:PhongShader = new PhongShader(pointLight, 0xFFFFFF, 0x303030, 20, null, null);
var earthShader:FlatShader = new FlatShader(pointLight, 0xFFFFFF, 0);
// combine shader with original material, for a shaded material
//var earthShadedMaterial:ShadedMaterial = new ShadedMaterial(earthMaterial, earthShader);
var earthShadedMaterial:FlatShadeMaterial = new FlatShadeMaterial(pointLight, 0xFFFFFF, 0);
// add to sphere
earth = new Sphere(earthShadedMaterial, 250, 12, 12);
scene.addChild(earth);
createStars();
stage.addEventListener(Event.ENTER_FRAME, handleEnterFrame);
}
private function handleEnterFrame(e:Event):void
{
earth.yaw(-.5);
camera.x=camera.y=camera.z=0;
camera.yaw(.5);
camera.moveBackward(1000);
renderer.renderScene(scene, camera, viewport);
}
private function createStars():void
{
//Create a new particle material;
var pm:ParticleMaterial = new ParticleMaterial(0xFFFFFF,1);
//Create a new particlefield.
var particleField:ParticleField = new ParticleField(pm, 2000, 5000, 5000, 5000);
scene.addChild(particleField);
}
}
}


