Archive for July, 2009

Small organic farms on the rise

I just read a Fortune magazine article about a farming youth movement and how young people are starting organic farms and businesses.   I find the article timely considering I just wrote an article of my own advocating backyard organic gardens.

You can read the Fortune article here:

http://money.cnn.com/galleries/2009/fortune/0907/gallery.farmers_organic_local_young.fortune/

Declassified imagery graphically shows global warming in action

President Barack Obama declassified satellite imagery that graphically shows the effect of global warming. The imagery was previously kept classified by the Bush administration.

Read more:

http://www.guardian.co.uk/environment/2009/jul/26/climate-change-obama-administration

View the images:

http://gfl.usgs.gov/Publications.shtml

Compost Toilets the “in” thing

And I thought writing about composting in a Victory Garden was a good thing to do, but I’ve been easily bested by people in Fiji who created composting toilets because they found their sewage was seeping into the sea and affecting their coral reefs.

The toilets separate liquids and solids, with the liquids becoming a fertilizer after some filtration (it’s sterile, afterall).  The solids are mixed with dry stuff like sawdust and then packed away for several months.  The solids compost over time and become fertilizer, too.

I’ve read before that nitrogen-rich urine makes good fertilizer and also helps a compost pile break down faster, but this is the first I’ve read about people using good ol’ #2 for their garden.

Use a classpath resource or kill your application’s portability

Here is the secret way to kill your application’s portability — and by portable, I mean across different computers, let alone operating systems:  Hardcode all your paths.

That’s it.  That very quickly kills portability.  It’s easy to accomplish, too.  Simply refer to all your configuration files, for example, by fully qualified pathname, like this:

1
2
System.setProperty("com.yourcorp.refdata.config.filename",
    "C:\\Documents and Settings\\FOO\\Perforce_FOO\\PATHS_CHANGED_FOR_ANONYMITY\\RefDataConfig.xml");

The above snippet is something I’m battling with to get unit tests working in my project. Naturally it doesn’t work for me because “FOO” isn’t my username nor is my Perforce sandbox “Performance_FOO” because, again, “FOO” isn’t my username.

This unit test won’t work across machines using the same OS, and our brethren using Macs or Linux boxes are completely hosed.

Don’t hardcode any paths in your application!

In Java, use a classpath resource.   This gives you portability.  It also allows a Configuration Management team the ability to package all required resources into a single artifact for better version control.

The safest way to get a classpath resource would be to use your current classloader to find the resource.

1
2
3
4
5
6
// Well-behaved Java programs set the thread's current classloader when running in a
// multi-classloader environment.  You see this when you write containers of any type.
Thread.currentThread().getContextClassLoader().getResource("/some/path/RefDataConfig.xml");
 
// or another way... sufficient for most cases
this.getClass().getClassLoader().getResource("/some/path/RefDataConfig.xml");

Drivin’ like Gandhi

Did you know Americans drive 3 trillion miles annually?  We drove 250 billion miles just in April ‘09.  Pretty amazing.

The article Drive Like Gandhi shows how much we could save nearly 700 million barrels of oil and $34 billion by applying a few simple, conservative, and thrifty tips.

5 ways to help your new hire

It’s said that some of the most stressful things you can do in your life are move, have a kid, get married, and start a new job.  It’s all true, too, but this essay focuses on starting a new job because I’ve just started one.

All new employees are vulnerable, regardless of rank or position.  The newbie doesn’t know anyone, doesn’t know the culture, the business, or how to do the job they were hired for.  Yes, they have the skills and are experienced enough to do the job, but they lack all required institutional knowledge to start doing that job on the first day.  It’s a tough position to be in, especially considering the new hire is probably excited and enthusiastic, but rendered utterly impotent by lack of knowledge.

The best way to keep the enthusiasm alive and make that new hire productive is to get them integrated as quickly as possible.  Here are 5 simple things that will reduce downtime, reduce stress, and increase morale for the newbie.  This list is geared towards developers and techies, but some items apply generally.

1.  Make yourself available!

Nothing is worse than being shown your desk or office and then having your guide disappear, leaving you all alone.  Plan on spending time with your new hire or otherwise arranging their first few days to learn from the right people.  Yes, it takes time and everyone is busy with the current release, but abandoning your newbie increases their stress and lengthens the learning curve.

2.  Make sure their PC is ready to go

Twiddling thumbs is bad enough, but not having a PC online with email ready is even worse.  Make sure the new hire can connect to whatever resources they need to do their job.  Many companies achieve most of this by having ghost images of machines with most software pre-installed, but there are necessary network tasks as well.  Email setup?  Is the new hire in the right distribution groups?  All shared drives and other resources given the right permissions?

Make a checklist of all the tasks required to get the new hire into the network and domain.

3.  Hello, World!

The canonical “Hello, World” program proves a lot of things for such a simple application.  It proves that your environment is setup correctly, that you can checkout, build, deploy, and run your code.  It provides a working foundation to build upon and learn within.

What is the “Hello, world” equivalent for real world projects?  A working build from a clean checkout where all unit tests can run, preferably within the IDE, with minimal setup and configuration.

Your new developer needs a checklist of software to install and a simple guide to building and running the project’s unit tests.  I think a checklist is better than a preconfigured environment (from, say, an OS image with everthing preinstalled) because it gives the developer a thorough grounding in the technologies used for the project.  Let them install the build tools themselves and set the appropriate environment variables.  Let them install the source control software and checkout the project.  I believe this gives the new developer a sense of ownership over their PC and deeper project knowledge by knowing how to get it running from the ground up.

It’s true that the new developer will not be truly productive until they gain more intimate knowledge of the code and project, but by having the project running quickly on their local PC, the amount of downtime is lessened and the new developer feels less stress.

 4.  Define your SDLC

How does your new developer get new issues to work and resolve?  What is the process for testing and check-in?  Who are the people responsible for helping the developer get code through the process?

This is basic Software Development Life Cycle stuff and the foundation of the Capability Maturity Model (CMM).  It also helps the new developer feel a whole lot less lost when entering a new environment.

5.   Pair ‘em up!

There’s strength in numbers and comfort in a crowd.  The new hire doesn’t know anyone, so pairing him up with another new hire encourages bonding and forges immediate workplace friendships.  It also helps them both learn more quickly because they are both asking questions and going through it together.  They’ll remember different tidbits when overloaded with too much information in the first couple of days.

If there is only one new hire, have a more tenured employee work with them the first several days.  It’ll slow down the developer who’s been there a while, but it will speed up the new guy.

CONCLUSION

You know your new guy is stressed out and generally uncomfortable.  Making the assimilation process quick and easy is the humane thing to do, but it also makes a lot of business sense.  You are paying that new developer a lot of money.  You should want them to be productive as quickly as possible, as opposed to soaking up company resources.  Make them feel at ease and decrease the learning curve by getting them immersed quickly into the new environment.  It only requires a little bit of planning to keep them busy for the first several days and some basic documentation to get them up and running with a working project.

The above list is certainly not complete, it’s comprised of the first bunch of things that I thought would make my own transition easier. I’m sure a lot of new developers feel as I do when starting a new gig.  Please feel free to leave other helpful tips in the comments.

5 reasons we should all grow Victory Gardens

Victory Gardens were a popular and patriotic way to aid the war effort during World War II.  Millions of families across the country planted gardens to alleviate pressure on the domestic food supply during the war.  Victory Gardens also boosted public morale because everyone felt civic pride through their contributions.  In today’s difficult times, planting a garden makes more sense than ever.  In the spirit of public service, we should consider them Victory Gardens, just like the ones our grandfathers and grandmothers had.

Here are five good reasons we should all grow Victory Gardens. Mark Turansky's row garden

1.  SAVE MONEY!

Fresh vegetables from the grocery store can be expensive.  Growing your own vegetables is inexpensive!  Seeds are cheap.  Water is cheap.  Time and sunshine are free.

Enjoy a continuous harvest by staggering plantings of various veggies with different maturation rates.  You  are guaranteed that something will be available for consumption every day during the growing season.

2.  100% ORGANIC

Your home-grown, fresh vegetables are chemical-free.  Do you really want your children consuming pesticides and poisons designed to kill organisms?  Growing your own vegetables is 100% organic.

There is a trend afoot for organic farms and gardening that’s bigger than your backyard.  Organic farms are being built into developments and subdivisions as an amenity, giving the local community access to fresh, healthy, and chemical-free produce.

3.  REDUCE WASTE

According to the EPA, 24% of our landfill waste is comprised of lawn clippings, leaves, and organic scraps from the kitchen.  In other words, perfect compost materials account for a quarter of our garbage!  This is a waste of our tax payer money.  Fiscal conservatives and environmentalists alike can agree to save money, space, and resources by composting.

Making compost is easy and it’s great for your soil.  It makes your garden vibrant and healthy, and the legacy you leave long after you move from that house is revitalized and regenerated soil.  This is a Very Good Thing for our communities.

Compost4.  GOOD FOR THE ENVIRONMENT

Your fresh vegetables have a small or even negative carbon footprint. There is no truck carrying your produce across the country for consumption, so there is no pollution from your veggies.  And considering that all green plants convert carbon dioxide into oxygen, your garden is cleaning the air.

5.  IT’S FUN AND REWARDING

My daughter loves picking snowpeas with me when I get home from work.  She loves playing in the dirt and planting seeds.  It’s a great way to bond, but it’s also a valuable learning experience.  She is seeing the results of her work while learning when and how to plant various crops.  I know she’ll have great memories of working the garden with Daddy.

Sophie picking peasMore than bonding with my girls (the baby just likes playing in the dirt, but she’ll learn), gardening is also rewarding for me.  I enjoy watching it come alive and grow.  It’s a great reason to spend time outside enjoying the sunshine.  It’s fun to get dirty while getting some exercise. I also know I’m doing a good thing for my family, my community, and our environment.

I encourage everyone to grow a Victory Garden during this recession.  Let’s show future generations that we’ve learned something from The Greatest Generation.  We’ll all be better off, and so will our communities and environment.

Switch to our mobile site