Wednesday, February 10, 2016

Preserving A Lost Literary Form



I saw this on the Writer's Circle and was amazed at the abilities of these artists who call themselves Master Penmen. I would love to have something done by one of them. It is truly using words as art.

Preserving A Lost Literary Form

Thursday, September 03, 2015

The Enigma of IT-Controlled Development Hosts

Long ago a friend of mine once said, "Software doesn't wear out." He said that to defend his position that a non-profit organization we were both involved in should continue to use some MS-DOS based software that required a lot of effort to use and maintain, but it was paid for and staff knew how to use it.

There is value in having a stable host platform for software development. Often, a company's processes become embedded in shell scripts that live and run on software development hosts. This kind of investment requires stability of the host software environment. Stability means you run old software. It departments worldwide actively encourage running old software.

What my friend and modern IT departments have in common is a misconception that software doesn't wear out. In reality, it does wear out, if you think about it a certain way.

The fallacy is relating the software world to the physical world when it comes to expectations of usability. In the physical world, a car's tires wear out from use. The tires were bought with a set of requirements - size, tread type, stickiness, cost - and once bought, those requirements are static with respect to the tires. We don't change our expectations of the tires simply because our environmental requirements change. We just replace the tires using new requirements.

The tires wear out. They change relative to a static set of expectations of the car's environment. The car doesn't change the size of tires needed. The car doesn't change the tread required or the stickiness of the rubber the driver wants. If the car's owner wants to operate the car in an environment that requires different tires, they replace the tires.

In the world of software however, the software doesn't change relative to its environment. It doesn't wear out, but in a different way. Unlike the example of the tires, the software environment changes relative to other software components. While it doesn't wear out, like the tires, it suffers relative degradation with respect to its environment. The effect is the same as the tires wearing out. You eventually have to upgrade or replace the software.

IT departments don't like change. They like static things and I completely understand why. Often it is the IT department that is on the main battle line to keep companies operations going. The more change that is introduced into the system, the harder it is to keep things going smoothly. And if things don't go smoothly, they get yelled at.

So I understand where they are coming from.

Development hosts are usually a very different beast when compared to software systems used for production. The primary difference is that often a development host is used by a single developer. That developer will by necessity, alter the software environment of their development host many times per year.

Such alterations include things like adding or creating new tools, updating development toolchains, adding and changing applications based on changes in personal workflows, and simply because the developer wants to make changes. This doesn't mean there are no boundaries. Each developer has build environment requirements that must be maintained for building the source code, but the principle remains that developers have very dynamic environments for very good reasons (even the reason of "I want to" is a good reason).

Enter the problem of IT-controlled development hosts. Remember, IT wants static environments and for good reason. The developer wants a dynamic environment and for good reason. 

Just as it is not practical for the developer to tell the IT guy that he should arbitrarily update software on a production system, it is not practical for the IT guy to tell the developer he cannot update software on his or her development host.

Let's look at real world example. Consider a company that uses RHEL 6.x as their primary development host operating system. RHEL 6 was first released in 2010 with some components dating from 2009. It is now 2015 and some of those original components still date back to 2009. They use this older version because IT has invested a lot of effort into setting up a development production environment. They want to preserve that investment and so they keep it as static as possible.

But why are some of RHEL 6 components so old? It's not some conspiracy or ignorance on the part of Red Hat. Since the software doesn't wear out, there was no need to replace it. Components that saw security patches or other major updates were updated or replaced. However, many were not. Often these components are the ones that software developers touch.

This enigma of maintaining stability by preserving the past in software is not unique to Red Hat or any one company. Most are guilty of doing something similar.

If it ain't broke, don't fix it.

The problem with that phrase is the definition of "broke". To the IT staff, if some software has no security bugs, no significant feature bugs, and no known incompatibilities, they don't consider it broken.

However, to the software developer if some software no longer meets the requirements of the developer, it's broken.

If it's broken, fix it.

Both of those positions are valid. Both should be respected. So when it comes down to it, as a software developer, I won't insist that IT update their production software out of respect for them knowing how to do their job. I will insist that IT not interfere when I update my development host software out of their respect for me knowing how to do my job.

These two sides of the issue do not have to be at odds. We can actually get along, provided we play in our own backyards. 

Saturday, August 29, 2015

Just Forgotten

I have been working on the draft of my latest book and I am currently about halfway through the primary writing. I would like to share a small excerpt from one of the chapters.


--------------------


"What are you thinking?" she finally asked.

He sighed. "What if… what if I wake up in the morning and I'm the old Rob? What if I wake up and have to start this all over?"

She tilted her head to the side and pursed her lips. "If you wake up and have forgotten all about today, I would give you another chance. We would do the day over again. If you wake up as the old Rob and you do one thing out of line, I'm calling the police and having them take you in for psychological evaluation."

He smiled and looked at her, catching a glimpse of those gray hazel eyes that draw him in. "That's what I thought you'd say."

"Why do you ask? You're not planning on undoing all this are you?"

He shook his head. "Heavens no. I don't ever want to go through this again. This day sucked." He quickly looked at Jil. "I mean other than you and the kids of course. I'm talking about what happened to me."

She looked at him and frowned.

Now he was backpedaling. "What I mean is the amnesia thing. Not that getting rid of the old Rob was bad, but--"

She smiled and saved him from his rambling. "I agree. It sucked. But now we have this amazing opportunity. Let's not waste it."

They sat in silence as the shadows lengthened and merged into dusk. He was still unsure where all this was going. More importantly to him, why it ever happened in the first place.


Tuesday, June 30, 2015

A Rational Point Of View On Climate Change

Atmospheric carbon dioxide (CO2) levels are at about 400 parts per million (ppm). Local concentrations may be above or below this number but that is a good average. NASA says that is the highest level on record.

In the last 150 years, global average temperatures have gone up an estimated 0.85 °C. 

Now, let's talk about these and other facts and what is not being told to you.

Let's start with those carbon dioxide levels. If you look at the NASA chart of global CO2 levels which goes back about 400,000 years, it shows that CO2 levels peaked at about 300 ppm. So it sounds like we are about 100 ppm higher than the past.

Not so fast. If you think about 400,000 years it sounds like a really long time. Let's look at another number. Scientists estimate that the age of the earth is about 4.5 billion years old. Written out it looks like 4,500,000,000. There are 11,250 periods of 400,000 years in the age of the earth and nearly all of that time the earth had some kind of atmosphere.

If you look at the NASA data over the last 400,000 years there is another thing that is instantly noticeable in their graph. There is a very distinct and undeniable 100,000 year cycle of CO2 levels. They go up relatively quickly at the beginning of the cycle by about 120 to 150 ppm and then go down very slowly back to a much lower level. This pattern is so obvious, my kindergartener can see it.

Scientists also say that in the earliest past of the earth, there was very little oxygen and that it slowly accumulated over time. Some speculate this could have taken about 2 billion years. So what does the geologic record say about CO2 levels in the earth's past where there was abundant life?

About 500 million years ago in the Cambrian period, CO2 levels were about 7,000 ppm. That is not a typo. That is the estimated number by the GEOCARB III estimates. Spring forward about 100 million years to the Devonian period (about 400 million years ago) and levels had dropped to between 3,000 and 4,000 ppm. Spring forward again to the Jurassic period about 150 million to 200 million years ago and the  CO2 levels dropped further to be between 1,500 and 2,500 ppm.

And what are the CO2 levels today? About 400 ppm.

Now let us turn our attention to that temperature increase and let's start with the temperatures from the deep past. The average global temperature during the Cambrian Period was estimated at about 21 °C (70 °F), during the Devonian Period the estimate is 20 °C (68 °F), and during the Jurassic Period the estimate is 16.5 °C (62 °F).

What is the current average global surface temperature? About 14 °C (57 °F).

What is so important about the Cambrian Period? The Cambrian Period is when an event occurred that scientists call "the Cambrian explosion." Let's talk about that. I'll quote Wikipedia because they have the clearest description.

"The Cambrian explosion, or less commonly Cambrian radiation, was the relatively short evolutionary event, beginning around 542 million years ago in the Cambrian Period, during which most major animal phyla appeared, as indicated by the fossil record. Lasting for about the next 20–25 million years, it resulted in the divergence of most modern metazoan phyla. Additionally, the event was accompanied by major diversification of other organisms. Prior to the Cambrian explosion, most organisms were simple, composed of individual cells occasionally organized into colonies. Over the following 70 to 80 million years, the rate of diversification accelerated by an order of magnitude and the diversity of life began to resemble that of today. Many of the present phyla appeared during this period, with the exception of Bryozoa, which made its earliest known appearance in the Lower Ordovician."

Allow me to translate: During a time when the earth was 7 °C hotter than it is now (that's about 45 °F hotter), and CO2 levels were 17 times higher than they are now, the earth had the largest increase in life and life diversity it had ever seen before and since.

So why is it important that the global temperature estimates being tossed around in the media now only go back about 150 years? During the Medieval Warm period which started around the year 900 and lasted until about 1300, the northern hemisphere of the earth underwent a warming period that was most likely linked to a global warming period but records are not clear to what extent.

Following that warm period, there was a lull in the temperature that resulted in what scientists termed the "little ice age" which lasted from about the year 1550 to about 1850. During that time, global temperatures dropped about 1 to 2 °C (2 to 4 °F) below the 1,000 year averages of that time. This cooling effect has been seen to be repeatable.

In the North Atlantic, sediments accumulated since the end of the last ice age, nearly 12,000 years ago, show regular increases in the amount of coarse sediment grains deposited from icebergs melting in the now open ocean, indicating a series of 1 to 2 °C (2 to 4 °F) cooling events recurring every 1,500 years or so. The most recent of these cooling events was the Little Ice Age. These same cooling events are detected in sediments accumulating off Africa, but the cooling events appear to be larger, ranging between 3 to 8 °C (6 to 14 °F).

So by 1850, the global temperature was about anywhere from 1 to 8 °C cooler than the 1,000 year average for the planet at that time. Let's just use the more conservative of the estimates and call it 1.5 °C cooler by 1850 than it should have been.

Remember that global temperature increase I quoted as fact up above? If you accept that there has been a 0.85 °C temperature increase since 1850, then when compared to the 1,000 year average, we are still 1.5 - 0.85 = 0.65 °C cooler as a planet.

Got that? When you compare the current temperatures to the temperatures from about 150 years ago, the end of the "little ice age" it looks like an increase while in reality it is just the planet returning to its earlier average temperatures.

Now let's talk about the human induced elements of the equation.

It has been said that human industrialization has caused catastrophic climate effects. I disagree. In fact, I think human industrialization has had hardly any effect overall when compared to the planet climate as a whole.

What is their evidence? Rise in CO2 levels correspond to rise in industrialization. Rise in temperatures correspond to rise in industrialization.

Think carefully for a moment. In general, humans did not have significant advances in society, culture, or science during periods of great stresses when just surviving topped the priorities. Sure, necessity was the mother of invention, but sweeping changes in human development do not occur until there is either a stress so significant a change is forced or there is sufficient free time to create a change not borne of the need to survive.

Therefore, it is no coincidence that industry and populations grew rapidly during a period of relative warmth. With warmer temperatures and higher levels of CO2, food was abundant. Life was easier. People had time to consider options.

During the past there were two such warming periods that saw surges in human developments. The Roman empire erupted onto the world and rapidly expanded during the warming period known as the Roman Climate Optimum. Later, during the Medieval Warm period, there was an expansion in Europe that resulted in a huge number of castles and cathedrals that were constructed as a result of prosperous times. In South America, the Mayans rose to dominance during this time as well.

The Romans pushed the bounds of engineering during their reign. The Europeans developed impressive techniques to build their cathedrals and castles while the Mayans built similar impressive structures in some of the most hard to reach peaks in South America. 

Then the little ice age came and things kind of went downhill both in Europe and in South America. The Europeans suffered famines, disease, and a general collapse of civilization. The Mayans dwindled until they were mostly wiped out by the Spanish. And technological progress was brought to an abrupt halt. Even the Renaissance, which started while temperatures were still warmer, fizzled by the 1600s as life became more difficult.

When things started warming up again in the mid 1800s, humans began industrializing. The warming was not a result of the industrialization. The industrialization was a result of the warming. That is simply how things worked for the historical past of humans. Technological advances came after issues of surviving were well in hand.

Warmer temperatures resulted in increased human activity. That linear connection is part of the geologic record and an indisputable fact.

And now, for the last 2 million years or so, the earth has seen deep ice ages and its climate has been dominated by cyclical patterns of warming and cooling. These cycles are readily seen in the geologic record and now are known to coincide with cycles in solar activity as well. We do not stand at the brink of a catastrophic global warming period. We stand in a brief lull between ice ages. Ultimately, we will see another ice age come.

It is not a matter of "if" we enter a new ice age. It is simply a matter of when.

I reject your man-made global warming and substitute it with solid facts, backed by mountains of geologic data, accumulated over centuries and not polluted with "temperature adjustments" as has been the case with the raw temperature data from numerous sources in support of their myth.

There is no man-made global warming.

Tuesday, May 19, 2015

Minecraft Miners Are Stronger Than Superman

I've been playing Minecraft lately. A lot actually. Today while driving to work I thought about how much would all that material weight that the miner is carrying around with him in the game. I didn't have the answers while driving and I wouldn't have the answers now at work if it weren't for an AC unit that went offline last night.

Apparently last night at some point, the air handler in the lab shut down and all the equipment started heating up. This morning there were emails about it and when I tried to get onto my VM development host, it was not there. Apparently everything is down.

The AC was repaired but now we wait until everything is cool enough to stop tripping heat protection gear and allow the units to come up.

So I had some time.

I looked up some weights and have the following approximations to work with.

sword, about 5 pounds
pickaxe, about 5 pounds
shovel, about 5 pounds
1 cubic meter of dirt, about 3200 pounds
1 cubic meter of stone, about 2700 pounds
1 cubic meter of coal (bituminous), about 1900 pounds
1 cubic meter of obsidian, about 5200 pounds
1 cubit meter of iron ore, about 11,300 pounds

There are 27 inventory slots and 9 hot slots for a total of 36 possible items in inventory. Stone, dirt, and coal can stack 64 units per slot.

For regular mining, I tend to have one sword, at least 3 picks, a couple shovels, and food (survival mode). That means I will be picking up dirt and cobblestone with hopefully a load of coal and iron. If I am deep mining, diamonds and emeralds, but let's assume that is not the case.

So just starting out I have 30 pounds of tools and maybe 20 pounds of food. That 50 pounds of supplies is just a tiny drop in the bucket as you will see.

Let's say I mine until fully loaded in inventory and have only my sword, 1 pick remaining, 6 full slots of coal, 4 full slots of iron ore, 8 full slots of dirt, and 16 full slots of cobblestone. How much does that weigh?

Remember, each inventory slot holds 64 items.

10 pounds of tools
6 * 64 * 1900 = 729,600 pounds of coal
4 * 64 * 11300 = 2,892,800 pounds of iron ore
8 * 64 * 3200 = 1,638,400 pounds of dirt
16 * 64 * 2700 = 2,764,800 pounds of stone

That is a total of 8,025,600 pounds, or roughly 4,000 tons.

Oh yeah, and 10 pounds for the sword and pick and maybe 5 pounds of food, but really 15 pounds doesn't really factor into the equation at those scales.

So there you have it. If Minecraft miners were real people, they would be capable of carrying 4,000 tons of material with them as they actively mine and walk. 

Monday, May 11, 2015

Warcraft - Minecraft... What's The Connection?

I've been a gamer for years. And while I've never been a hard core gamer, I've played a lot of games and even took some games to extremes. I started back in the days of Wolfenstein - still love that game - and have played through all the Dooms, Wolfenstein 3D, Duke Nukem, Quake(s), Unreal, and many others. Some I can't even remember anymore.

I really enjoyed Baldur's Gate and Neverwinter Nights a lot. Once I created a character on Neverwinter Nights that became so uber awesome, there was no bad guy, or group of bad guys in the game I couldn't defeat. So yeah, I can be OCD about games.

I was always a PC gamer, not console gamer. I never had a console until we got one for my young son (at the time) when he received a Nintendo 64. Mario never looked so good as he did on that game. We played the heck out of that console.

Over the years we played a lot of console games though. After the N64 came the Gamecube, a PS2, and finally we waited around and got the Xbox 360 after the prices dropped on it. And a Wii. Oh, by the way, as a kid I had one of the first Atari 2600 game consoles anywhere near where I lived. We rocked.

I stopped playing video games for a while until along came a game that sucked me in further than any other.

World of Warcraft.

I was never into the whole Warcraft series because I didn't like the style. But Wow had that whole FP perspective and that hooked me.

I wasn't a big-time raider or belong to one of the big-time guilds or anything. I was a solo quester and chased after the quests, achievements, and exploring the land and lore of Azeroth. I played this game a lot. Too much. Way too much.

In a compromise with my wife, where I would give up WoW and she wouldn't kill me in my sleep, I quit playing WoW.  I quit playing all games in fact.

I was good for a while. Then I had to play something. I played Temple Run for a time on my phone. I played Candy Crush - and then decided that game was using psychology to lure people into real purchases to advance through the game so I quit - and I recently played through a number of levels of Minion Rush (which did a similar thing as Candy Crush).

Yes, it placated my OCD brain a little, but it wasn't immersive. There was no tie-in to imagination.

Then my wife bought Minecraft for the Xbox 360 for our daughter. I started playing it with my daughter (who is only in Kindergarten). Together we built dozens of houses, a floating island with a water slide, a number of floating structures, and even an entire airport with hanger (my daughter's idea).

With my daughter's wild imagination and creativity, we created all kinds of things. She likes color, so we used the dyed wools a lot for construction in orange, pink, and every other color it has. She created an entire house out of Pepto-Bismol pink that to me, is an abomination to the eyes, but she likes it.

Then she saw an image online of a fairly elaborate house and she asked me to help her build it. Which meant I mostly built it while she ran around and planted cactus and created waterfalls in the trees - we were using cooperative play mode and two controllers on the Xbox 360.

I decided to create a world of my own. Being a newb, I didn't understand Minecraft all that well, but I understood questing, survival, and construction. So I jumped right in. I forbid my daughter from going into it because she likes to "make it better". That usually means randomly she plops in red, blue, orange, or pink blocks in my finely crafted stone brick walls and floors.

I was all about the survival mode on my game world and all about the creative mode on her game world. In her world, we had everything available to us in creative mode. In my world, I had only what I could mine or craft.

Any my OCD brain got hooked again.

I've been playing Minecraft now far more than I should. I know it's annoying to others. But, unlike WoW, it is by definition casual. And that means that when the wife says "honey..." or the kids need something, I can just go to the menu screen and put down the controller. And I do, every time, immediately.

As I learned more about the game and watched online videos, I realized just how crappy the world is that I spawned in. It has to be one of the worst random seeds in existence Minecraft.

There are no deserts, two-thirds of the world is covered in snow, there are no prairies to speak of, and not one temple or overland dungeon anywhere. 

There is one and only one village. It was way north on the map and I spawned way south. I found it by meandering around with stacks of torches and building dirt huts to spend the night in.

I settled into the blacksmith shop and immediately expanded it and started digging down. I went down a few levels and started a tunnel straight back south to my original base. It was over 450 meters of digging a 3x3 tunnel.

Now here's the weird part. While digging under the village that first day, I could hear the villagers going in and out of doors like crazy. This went on and on. It took me a while to get past the village above because I kept running into water I had to block it off several times as well as crossing a chasm.

Then I heard the zombies trying to smash doors above me in the village. It was night apparently. Still, the villagers were opening and closing doors like mad. I go back to the surface and look out. It was night. There were zombies everywhere now. I went back to digging. I came back up during the day and the village was completely empty.

That's right. I had been in the village exactly one day and it was wiped out by the zombie apocalypse.

That was when I decided that I was tired of struggling in this crappy spawn world, but I already had an investment in time and construction in it. That's when I decided to use creative mode liberally.

I built a wall around the entire village - the only village in the map - and created new houses. Then I spawned new villagers. I also set up fencing and spawned some animals. 

Basically I rebuilt the entire village.

Now I am all OCD about my "mine" which arguably would rival the impressiveness of the Mines of Moria and would even have the Dwarven miners from LOTR praising its construction.

So World of Warcraft and Minecraft... what's the connection?

My OCD brain likes to immerse in a fantasy world. In WoW I was immersed in a world of the game designers creation. In Minecraft, the world was a canvas and I am altering it to suit my purposes and my designs.

Often, I find myself using Minecraft to model ideas I have in my head about locations in my next book.

Quick unashamed self plug here: 

The Trillborne Wife, by Kevin Farley and Policy available now on Amazon.com, Kindle and paperback editions.

I've created areas in Minecraft that help me figure out travel times over distance for my books, as well as relative positioning. It has been invaluable. But mostly, I've been building stuff.

Am I playing Minecraft too much just like I was in WoW?

Maybe. I play it a lot. But, I still get everything done that I need to and I have the added benefit of playing it with my daughter and encouraging her imagination. If she wants waterfalls out of the tops of tall trees, why not? It's her world, let her be master over it.

There. I've confessed my sins. I play Minecraft casually in creative mode. I suppose some would say I've lost my gamer reputation. So be it, we have some pink houses to build in the clouds.


Thursday, April 02, 2015

The Fallacy of Collaboration in Open Work Environments.

Here's an idea. Let's assemble a group of non-engineers to redesign the work environment for software developers and software testers. Let them base all their ideas on the work flow and behaviors of the non-engineering departments like accounting, HR, administrative, and operations. Next have them throw out the idea of actually considering what it's like to work day in and day out in an engineering environment where disruptions mean slowing progress, less productivity, and irritability among the employees.

Now, tell them to wrap their ideas with words like "open", "fresh", and the trump word "collaborative".


Okay, I can't keep that up.


I've worked in many environments, from folding tables at startups to door'ed offices. I've had high and low wall cubicles. I've even worked in a metal box (those that know need no explanation). I've been around. I know what does and what doesn't work.


Engineers and many non-engineers often work "in the zone". If you know what I mean, good. If you don't know what I mean, no one can help you.


If a person is put in an "open" environment where there are no cubicles, just open desks, no "private" space, how do you think that affects their productivity?

Let's talk about that. One of the claims of the open space supporters is that it fosters easy and open communications. They say it makes it easier for people to discuss their tasks and projects. They say it improves productivity. But does it really?

Let's consider a typical engineering team at a company working on a mature (already deployed) product. Joe's working on supporting an existing large customer with a feature request. Mary is working on a feature request from sales for an upcoming contract. Bill and Amy are working on some critical bugs in separate obscure areas of the code that are complex and requires a lot of concentration. Each one has a schedule deadline in less than four weeks.

Sue, Keith, Margaret, and Jack are working on a long term project that won't be complete for about eight months. Casey and Alyssa are new grads doing bug fixes to learn their way around the code base. Lydia and Tom are interns doing whatever is needed.

So Lydia, Tom, Casey, and Alyssa naturally ask a lot of questions. Something they would do in any office environment regardless of walls or cubicles. I know because I did when I was new and I do when I have transitioned jobs and I have answered countless questions from other engineers just like them.

Sue, Keith, Margaret, and Jack will be working on the same basic project for a long time, so they will be collaborating regardless of the office environment. 

And those guys with the schedule crunch Joe, Mary, Bill, and Amy? They are working on very separate projects from everyone else. They all work on the same code base so they all will collaborate in ways as needed.

What looks like collaboration when considering Lydia, Tom, Casey, and Jack is to Joe, Mary, Bill, and Amy a lot of disruption. It is a lot of interruptions to their "zone". It slows them down.

Similarly, Sue, Keith, Margaret, and Jack, though they don't have the same schedule pressure, they need to remain focused on keeping a longer schedule on track over the eight months. The collaboration from others often distracts and diverts their attentions to the point that schedule does become an issue.

So what is my point?

Even in a high wall cubicle environment where we have that private space, many engineers still put on headphones to keep the distractions at bay and get into the zone. Countless engineers listen to music while working just to drown out the already too busy and noisy office environment with it's "hall talk", impromptu meetings in cubes that spill over to neighboring cubes, and the office antics.

It has been said that cubicles are "bland" and "boring". I don't see that as a problem. I see an open table environment without walls to cover distractions and provide at least the illusion of privacy to be disruptive. It is not "fresh" and "modern". It is reminiscent of the bullpens of the early to late 20th century with rows and rows of women putting typewriters through their paces.

Before I am accused of sexism it is a fact the overwhelming majority of office typists at that time were women. Look it up. I defy that fact to be disputed.

So this is what an open environment once looked like.



And that is what comes to mind when people talk about it now:



The only difference is the density.

Look, if open office environments really worked all that great, why is it that so many of the companies that opted for them later had to do retrofits to combat acoustical problems, remove some of the "openness" in exchange for private space, and in general, gradually move to more and more private spaces?

Because they don't work for people and the don't take into account the behaviors from the typical engineer that in many aspects demonstrates characteristics common in the autism spectrum.

Open plans don't work for engineering teams with the possible - and only a possibility, not a given - exception to small teams working on a single focused task or project like is often found in startups and one product companies (think Facebook).

So when management arbitrarily makes the decision to move it's engineering department to an open space plan what can they expect? Glad you asked. I'll tell you what I've seen over the years.

A) Resentment to being treated like just another resource, not deserving the dignity of a private space (that is nearly a quote from many engineers).

B) Increase in the number of engineers wearing headphones in an attempt to ignore everyone and everything.

C) Schedule slips as the so-called collaboration reveals itself to be mostly disruption and interruption slowing down progress.

D) Employees leaving to take jobs in other companies without open office plans. They won't say that is the reason they are leaving, but most will admit it is a significant contributing factor.

E) Decreased morale to the point of impacting business for the first year. As people leave and new people come in and are resigned to the environment it will improve, but not dissipate.

F) Many experienced engineers will pass opportunities to go to companies with open environments.

G) A lot more WFH emails. If you are unaware of that acronym it means "working from home", a message subject sent out in email to your team when you are going to be working from home for the day. 

Consider item G for a minute. If you have the choice of working from the comfortable atmosphere of your home, or in a place where you have no privacy for eight hours, endless chatter and disruption, and the constant feeling that people are watching everything you do, where would you choose to work?

These are not thought experiments or guesses. These are observations I have made over the years and are real.

I understand there are a lot of proponents of the open environment for the office. Funny thing though, that majority of engineers are not proponents of them. 

I find that telling.

Now, let's consider some very specific, and very real, concerns from engineers over open office plans.

1) Where is my personal whiteboard? While this may not seem like a big issue to a lot of people this is a HUGE issue to engineers. We use our whiteboards all the time. We need our whiteboards. And no, we don't want to share a whiteboard on wheels that is shared by several engineers.

2) Where is my ergonomic desk and chair? A lot of engineers have opted for standing desks, desks that can do both standing and sitting.

3) Where do I put all my stuff? Many of us are packrats and while arguably we may have too much junk, as engineers we think differently than most normal people. We think "I may need this" because one day we probably will and we don't want to have to go hunting it down. The open spaces don't have much in the way of private storage and more importantly, your messy desk is exposed for everyone to see.

4) What about my extra equipment? Not everyone works with just a single computer on their desk. Often, engineers have equipment or extra computers - that may be specially configured build or test machines - and any number of peripherals on their desks. In these new open environments, space is at a premium, where do we put our equipment?

5) Will there be enough space for my two extra large monitors and everything else I need? There is no escaping it, engineers need screen real-estate. We need lots of screen size to get lots of windows display at once. 

These are very practical concerns that have no easy solutions in open plans. There are solutions however in cubicle environments which satisfy the needs and requirements of engineers regardless of how boring or bland the cubes may be.

When it comes down to it, you won't hear employees openly griping excessively about open environments (for the most part). The reason is simple, they don't want to lose their jobs... yet. But, silence on the part of the employees who choose to not speak does not equate to support or even consent. It could mean they are afraid, but not accepting.

So much of what I have described constitutes a toxic work environment: constant observation, restrictive desk space, lack of equipment, and fear.

Thursday, February 12, 2015

My second book, Policy, is available on Amazon in both e-book and paperback. I really enjoyed writing this book. I think because of the first person perspective I put into it with the main character being a caricature of myself.

Fed up with the political elite of Arjor controlling everyone's lives, famed robotics engineer Levi Garren decided to do something about it. His efforts resulted in Rena, a sentient AI program, and the scorn of the political establishment.

A failed attempt on his life leaves him stranded on the continent of Moragar where the native races live two centuries behind the rest of the planet. With the help of Rena and the beautiful Balai, a purple-skinned native, Levi has to beat the odds just to survive.

The experience changes his life and his entire world, in more ways than he ever expected.

http://www.amazon.com/dp/B00SCKIJG2



Sunday, August 31, 2014

Taking A Five Year Old To Lowes

I took Kara with me to go to the local home improvement store, Lowes this time, and she had energy. A lot of energy.

As we walked around, she ran back and forth, like on an invisible leash, never getting more than about 30 feet away, but certainly with her own ideas of what she wanted to do.

So here is a sampling of some of the moments.

In the electrical aisle, she stopped by the conduit and grabbed a fitting that she began to pretend was a gun. "Pew, pew, pew" and all. Another one was a cannon.

She went for the clearance priced disco ball like a mosquito to a back porch light.

She wanted to sword fight... with long florescent tubes.

She found that some people had put PVC fittings back in the wrong boxes. She spent 10 minutes or so trying to sort them back to where the needed to go. If left unchecked, we would be there until closing while she sorted.

She opened the display doors by the door section.

She sat on a display commode to "see how good it felt".

She picked up a variety of hand tools and proceeded to tell me what she was going to do with them. No, Kara, you can't paint with a concrete chisel.

She danced in the hardware aisle, she was singing by the power tools.

And all this took place in the span of 25 minutes.

Saturday, August 16, 2014

The Trillborne Wife is now available on Amazon


My first ever book, The Trillborne Wife, is now available in the Amazon store in both e-book and paperback. I encourage all of you to take a peek and look at the Amazon preview.

This is exciting for me because this is my first completed book and the first one I have ever published.

Amira was content to raise her daughters alone and secluded from the rest of the world, teaching them the ways of the trillborne, natural shape shifters. She had everything she needed, or so she thought.

Her life was thrown a curve when she met Kiv, a mage in exile and hunted by the crown. Their life together was blessed and peaceful until Kiv's violent past caught up with them. Amira was about to come face to face with the greatest challenge of her life. It would test her strength, her abilities, and her convictions.

Her story is a spirited look at life and death through the pain of love with more than a touch of sarcasm.

http://www.amazon.com/dp/B00MS48SLO



Tuesday, July 29, 2014

The Trillborne Wife - Teaser

Amira checked the wind and realized the girls would be upwind of the hunters. She sensed no dogs, which was good. There was no chance humans could ever track her daughters' scents. She needed to lead whoever it was coming her way far from the girls and her house.

The men were headed up the ridge and she saw they were armed with swords and bows. One of them pointed her direction and the others looked up. She dropped to the ground and hid her packs under a thick bush. She would come back for them later when the danger was gone.

Seconds later she heard the sounds of these would-be hunters pick up the pace. Instantly, she transformed into a wolf and ran into the meadow to get their attention. She reversed and ran east toward the valley mouth as fast as she could go. She heard the men yelling something as they changed direction to match her movements. They had taken the bait and were coming after her.

She paced herself so they wouldn't give up the chase too soon, intending to lead them out of the valley and lose them or they simply gave up and left.

Running a mile or so, she came to a small stream that drained into the creek that meandered through the valley. She stopped at the water's edge checking back over her shoulder for her pursuers. They were not too far off and still coming her way. Hopping over the stream, she continued down to the valley floor.

Nearing the remnants of the road that traced its way up the valley, Amira stopped at the tree-line, scenting for danger. She heard more voices. They were very close and coming up the road, just a stone's throw away. With hunters in pursuit and these new intruders ahead, she felt trapped and almost panicked. She went directly from wolf to brown bear and charged out onto the road, snarling and roaring a challenge to this new threat.

Monday, June 30, 2014

Windows Annoyances


Windows Annoyances

Over the years, I have been keeping a list of features of Windows that I find annoying. Some are just the brokenness of Windows while others are deliberate choices. Yet, most of these annoyances can be fixed. It just takes someone determined to fix them to do so.
Sadly, I don't think most of these annoyances will ever be fixed if for no other reason than "it's how it's always worked before". There is a real concern of breaking the way things have worked. Hence the lethargy demonstrated in the glacial adoption rate of Windows 8. Furthermore, most Windows users will not realize these features are problems because they know no better.
Here is my current list of Windows annoyances in no particular order other than it is the order in which they came to mind.

1. Dialogs Are Not Resizable

This is my number 1 pet peeve with Windows. So many times I have been presented with some dialog box, usually with information I really need, but cannot see all of it because the dialog is not resizable. This is so stupid it is inexcusable. It is the result of laziness and a don't-care attitude by Microsoft engineers.
This could easily be fixed by modifying the implementation of the dialog boxes themselves within Windows and application writers using those dialogs whenever possible.

2. Poor Mouse Wheel Integration

More often than I like, I try to use the mouse wheel to scroll a window I am in and it simply doesn't work. There is no integration with the mouse wheel. This doesn't make sense to me. I thought this would be something inherited by the window on creation and scroll events would be delivered like paging or something else. It makes no sense that it is not an easy integration with all apps.
This could easily be fixed by integrating the mouse wheel into the underlying GUI components so that all windows inherit the feature automagically.

3. Window Scroll Requires Focus

This is in my top 5 annoyances. I am used to just pointing to a window, but not clicking it, and scrolling with the mouse wheel to view the contents underneath the upper window. This is how the major Linux UI systems work. But not Windows. You have to grab focus on a window to scroll it with the mouse wheel -- assuming it has mouse wheel integration which is NOT the default for Windows.
This could be easily fixed by modifying the underlying GUI components to accept the appropriate events and default to sending and handling mouse wheel events in the window being pointed at.

4. Window Title Bar Grab Is Slow

Often I grab a window by the title bar and try to move it only to find out I haven't really grabbed it yet. There is often a noticeable lag when you try to grab a window on Windows like this. It lags and therefore doesn't move with your pointer. Instead, it either just sits there, or some weirdness ensues from your action depending on the application.
I'm not sure how to fix this. Part of it is just based on Windows being sluggish. However, if the GUI events were buffered, perhaps they could be handled anyway.

5. Indexing Seems To Always Run

It seems like no matter how many times I turn this off, the indexer still starts and runs for a while. I don't know if it being reset by some Windows update, started by some service, or its just the NSA spying on me. At any rate, it sucks down CPU and slows the system down. Is it really the indexer? Is it something else sifting through all the files?
This could be fixed by adding one simple user config item in the control panel to globally disable/enable indexing -- or whatever it is running -- once and for all.

6. No Middle Mouse Button Copy/Paste

This may not seem like a big deal to you Windows guys, but it is a big deal to us Linux guys. Imagine if you will -- and you have to imagine because you can't do this on Windows -- that you can simply select text you want to copy in one window, then point to another window -- it doesn't even have to be in focus -- and simply middle click to paste the selected text into the target window. No separate copy. No separate paste. Just select and click and done. I really miss that.
This could easily be fixed by adding in the middle mouse button copy/paste event in the underlying GUI implementation and all windows inheriting it.

7. All File Copies Use Buffered I/O

This is the reason why large file copies on Windows drop to a crawl. To the techie, the reason is the default I/O type for copy operations on Windows is buffered I/O. As a result, large file transfers eat up all the cache, increasing overhead and slowing things down. They don't even benefit from caching because they are huge files. There are utilities and Microsoft finally added an option to XCOPY in Windows 7 (the /j parameter) to skip buffering, but the default is to buffer. Therefore the default is to crawl. Or possibly even just fail randomly on network file transfers.
This could easily be fixed where the size of the file to be copied can be determined. Simply have the copy tool check the file size. If the file is greater than some number, like 100 MB, then always default to unbuffered I/O.

8. Unique Flash Drive Driver Installs

Probably in my top 5 annoyances as well. It's just annoying and really isn't a problem. Well actually, it is a problem. Here's the situation. You plug in a Centon flash drive for the first time. Windows says "hold up pardner, gotta load me some drivers" which takes time. It loads said drivers from *somewhere* and your device is presumably ready. Now you plug in a Patriot flash drive for the first time. Again with the delays and driver loading. But why? It's just a flash drive. They all work the same. On Linux, there is one driver that handles nearly every flash drive on the planet. Are Microsoft engineers incapable of doing that? Or is there something else going on?
This can easily be fixed by just not doing it. Obviously Windows can figure out its a flash drive once it's plugged in. If it's just a regular flash drive, just use the default base driver and treat it as a flash drive and don't tell me you need to load something specific.

9. Mysterious Processes Holding File Resources

How many times have you tried to eject a flash drive from Windows only to be told "Not so fast, chum. Somebody's holding an open file there!" Or whatever the error message says. The point is, too often mysterious processes that really should have nothing to do with your flash drive seem to hold an open file on it so you can't remove it without risking corruption. Just lovely, isn't it?
This could be fixed in two ways. First, if there's not current I/O on the path to the flash drive, then it's probably just being held open but not being used. So just close the file and let the app deal with the error with a closed file. Second, fix the underlying problem of Windows not being able to manage its file descriptors well enough so that this kind of thing doesn't have to happen at all. It's OK to close a file that must be closed even if some service or application is still holding a reference to it.

10. Can't Shut Down Quickly

This is related to so many other problems with Windows. You're done for the day, you need to shut down your laptop and get out of the office quickly to do whatever, and when you click shut down… you go into a long wait. Sometimes this takes several minutes. And don't give me the same old lame excuse about "applications need to completely properly" and other excuses for bad programming. The simple fact is, Windows has to give apps and services longer to exit properly because Windows doesn't keep things tidy in its own house.
The interior of Windows is so complicated you can't keep things tidy. I suspect this is due to years of rushed and bad security patches. It is also because of the need for rushed and bad security patches to keep some appearance of trying to do something about its dismal security. All of that junk that is running in the background, monitoring, filtering, sifting, reporting, and who knows what else, takes time to be stopped properly. Stop it too abruptly, bad things happen.
There is a way to fix this and that is that when the user requests shutdown, and the system is waiting for all processes to exit, give the user a "nuke" option that when pressed, kills all the processes anyway, releases everything, and shuts down like the user intended.

11. Generally Sluggish UI Responses

It seems like every time I click on windows and dialog boxes -- or try to resize things -- Windows has a noticeable lag between when I start the action and when it performs the action. This could be for many reasons but my gut feeling is that this is primarily caused by software bloat. Windows is simply running too many lines of code too often.
Every action, every click, has to descend through a myriad of layers of software required because of Windows GUI components being mired in class upon class in hundreds of separate objects in the current trend of software design: object oriented to the max.
I don't know how to fix this without a rewrite of the GUI components and a restructuring that eliminates some of the intervening objects and layers. Surely something could be improved.

12. Every Flash Drive Searched For Playable Media

I simply don't believe that people only use flash drives to move music and videos around, but judging from the default behavior of Windows, that is what their designers think. For some reason, Windows just has to search that entire 64 GB flash drive of source code repository backups, relational databases, and thousands of zip files you are archiving because there just might be a song or a cat video somewhere on there. Seriously, just stop it. I don't want my media searched.
This can be easily fixed by providing a single control panel setting somewhere that disables/enables the feature.

13. Slow Boot Process

Windows has always had a notoriously slow boot. There are many reasons for this and without a fundamental rewrite of Windows, it won't get much better. You can throw bigger, faster hardware at it to compensate, but that is all it is, compensating. Put Linux on that same hardware, and its still booting faster than Windows.
So why is it so slow? Partly because Windows has an overly complex design and implementation. And partly because there have been so many rushed and bad patches applied to the code over the years. And also partly because Windows is so inherently insecure, we are all required to run some sort of anti-virus software that gets bigger and bigger and has to do more every year. It doesn't have to be this way.
This could be fixed, but not easily. It would require some rewrite of the fundamental parts of the core of the operating system, but it could be done. Another thing that could help is to stop running all the services it does by default. Enabling everything it does by default makes sense to some guy who is thinking about helping a remote user "some day, some where", but it does not make sense to the average user that will never have a Microsoft technician log into their machine remotely.

14. Booted Is Not Really Booted

In an attempt to solve the slow boot problem that has plagued Windows forever, the programmers have used a trick to make the users think they are booted when they are not. So basically, the do the minimal amount of work necessary to get the user to a login prompt. Once there, you can login, but the boot is still happening in the background. It takes more time, in some cases several minutes, to actually complete the boot process. Don't believe me? Boot up and immediately launch Firefox browser or something not part of Windows itself (like Internet Explorer) and see what happens. It will take a while.
This could be fixed, but I'm not sure it would make things better. Without fixing the underlying issue of a slow boot time, it would be pointless to fix this. If the underlying issues were fixed, this feature would no longer be required and thus is fixed.

15. Windows Media Player UI Is Horrible

The few times Windows Media Player accidentally gets started when I'm using Windows, and then I actually try to use it, I cannot stand the UI. It's like there's something messed up with the controls for the main display. Columns don't resize like you would expect. Also they put limits on the resizing of some elements. For example, if you want to resize the right side pane that displays a playlist, you are limited to how wide you can display it.
Furthermore, the UI is just fouled up with a lot of crud. In addition to the Windows title bar, there's a menu bar, some kind of location bar, and then the headers to the columns. It takes up a full 158 pixels on my display. That's ridiculous. Let's also not forget the codec nightmare of never seeming to have the correct codec to playback whatever it is you want to play. VLC it's not.
This can be fixed by redesigning the UI of Windows Media Player and incorporating more codecs by default into its installation.

16. Triple Click Doesn't Get Entire Line

Perhaps most Windows users won't think about this one because it's something I got used to in the Linux world. The triple click feature exists in some Windows apps, like Word, but it is not common. On the Linux desktop, this is just something that exists everywhere.
This can be fixed by adding the feature into the default mouse click handling components of the UI.

17. Reboot Required For Memory Release

Technically, it's not, but practically it is. No matter how many times you try to clean up a running system, you eventually run out of memory and have to reboot to get everything cleared up correctly. This tells me there are memory leaks in the system and the OS is not capable of managing resources well. And if the OS can't effectively manage its resources – like memory – then you have a broken OS.
This can be fixed by fixing the bugs in the Windows kernel and specifically the memory management routines.

18. Consumes A Lot Of Memory

For whatever reasons, Windows is just getting bigger and bigger on disk. A typical Windows 7 base installation ends up being anywhere from 20 to 25 GB on disk. Furthermore, a 64-bit installation requires a minimum of 2 GB, but don't expect that to perform very well. You need a minimum of 4 GB to make it useful. Better yet, get 8 GB so you can actually run multiple apps at once without the system coming to a crawl.
By comparison, a full Linux Ubuntu or Mint install takes up about 6 to 10 GB depending on the applications you have installed with the distro. Note, that is the size of the OS and applications. For Windows it takes those 20 GB or so just for the OS. Also in Ubuntu or Mint, you can easily run the 64-bit OS in 1 GB of RAM. Don't try that on Windows. It won't work.
I don't know how this can be fixed in Windows. Someone would have to completely redesign Windows and define what constitutes the base OS and leave a lot of the crap for addons which in my opinion would very seldom, if ever, get installed on a user's machine.

19. File Open Dialog Confusing

Let's say you go to open a file in some app on Windows and you know you put this app in a folder under your personal "home" folder, but when you see the file open dialog box, your home directory is not one of your choices by default. Wait a minute... what? Seriously? My own "home" folder is not one of the choices?
So here is the essence of the problem. The open file dialog shows you "Favorites", "Libraries", "Computer", and "Network" folders. But unless you make your folders favorites or libraries, you are forced to go all the way to the top of the file system on C or D drive – or wherever it is – and then navigate down to your own home folder and then find your file.
This can be easily fixed by simply making the user's "home" folder to be one of the default selectable locations.

20. SuperFetch Often Hijacks System

If you are unfamiliar with SuperFetch, allow me to summarize it. SuperFetch is a tool that allows Windows to cache files it thinks might be needed in RAM to speed up access to them. That's actually a good thing. I don't have a problem with the idea of SuperFetch. My problem is with its implementation.
The problem occurs when Superfetch goes off into the weeds, so to speak, and consumes nearly all of your CPU. That's when it becomes a problem.
This can be fixed by spending some quality time debugging the problem and fixing SuperFetch.

21. Anti-Virus Software Required

We all hate viruses. We all hate the bloat and impact to our systems that occurs because of viruses and their cure, the dreaded anti-virus software. The simple fact that really cannot be escaped or denied, is that Microsoft is inherently insecure. Because of that inherent insecurity, anti-virus software is required not for technical reasons, but rather it's required out of self-defense.
Microsoft has worked for years to solve this and have not solved it yet. They have applied numerous patches and bandages to improve the defenses of the OS and have plugged a lot of holes. There are still far too many.
This can be fixed by Microsoft continuing their improvements to the OS, but would be better solved by redesigning base parts of the OS that protect numerous other components.  

22. App Crash Leaves Sockets Open

When an application is launched that opens sockets for some network connection, and then that application crashes unexpectedly, the sockets are left bound and open. This can interfere with restarting services and other user application issues.
This can be fixed by modifying the network stack code to detect loss of socket owner and close the sockets.

23. Weird Limitations On Naming Files And Folders

There are a number of annoyances regarding file and folder name limitations. For example, you cannot create a file or folder named "con" or "prn" because Windows thinks you are trying to access the special device names. Another limitation is you cannot create a folder with a name that ends in a period like "apple." because Windows can't handle that pattern for folder names.
This can be fixed by updating the file system components to eliminate those limitations.

24. Uses Backslash ("\") As Path Separator

Windows is the only current operating system that uses the backslash ("\") character as a path separator when constructing folder paths. All of the Internet, all Macs, all Linux, and all Unix machines treat the backslash character as an escape character and use the forward slash ("/") character as the path separator. Microsoft opted to use backslash back in the 80's in MS-DOS 2.0 because the forward slash was being used already for command line options. This that was over 30 years ago. It is time for Windows to grow up.
This can be fixed by modifying the command processor and path handling components to switch the path separator to "/" and change input parameter switches to something else, preferably the hyphen ("-"). That would bring consistency with the larger Internet. It would be fairly trivial to support both schemes for a transition period of a couple of years before a complete switchover.