Pages

Elevation Sickness

I never thought I will experience this, but yesterday I had a mild
case of elevation (mountain, altitude) sickness.

I was skiing with Liliann which was very exhausting because she was
going straight down and my job was to slow her down with the long
harness, constant "resistance training" on my legs. After that Sławek
took me to do some "real skiing" and somehow I just could not keep up,
I was breathing very heavily, but feeling like chocking, I was
lightheaded, even after a long rest, on the way back I was on the
verge of passing out. At that time I just thought I was just
dehydrated and out of shape, which sadly I am. My friends mentioned
it is because of the elevation.

After coming back to the hotel room the whole evening I had attacks of
coughing even if I did NOT get cold at all. That is when I realized it
is definitely elevation sickness. I loaded up on NyQuill, drunk lots
of Gatorade (in case I was dehydrated), and passed out.

I woke up feeling good and ready to ski. Yesterday was a pure woo-doo,
I cannot explain it otherwise. Today, I have been skiing the whole day
both with Liliann and alone in the conditions and elevations as
difficult as yesterday. I did some crazy runs like "Psychopath" some
12,000+ feet up (the mountain sickness starts at 8,200 feet). Nothing
wrong with me, I felt good and had energy on the end of the day.

I remember from school that it takes for the body about 48 hours to
create red blood cells to carry decreased oxygen levels to the body
and brain. Since I have been in Rockies for over 2 days, I guess I am
slowly adjusting.

http://en.wikipedia.org/wiki/High_altitude_pulmonary_edema



Lost?

In case you get lost take the following:
"psychopath" , "bone yard" and the "tunnel"

You will be just fine!



View From Breckenridge



Hotel window view



Weather gods are smiling.



Skiing? Anyone?!?

There are no words to describe the experience.


Keystone, Colorado

Perfect weather, perfect snow


Lili and Olivia



Skiing on top of the world



Skiing in Keystone, Colorado

Uki, Lili, Slawek Gaik, Olivia


Nice log house



View from the bookstore

I already spend most of my free time in the bookstores, I don't know
if I could handle this view! Boulder, Colorado.


Boulder, Colorado



Kid manicure



Rotten spoiled kids

Can you believe how some parents can rotten spoil their kids?


Kenosha, WI

The town I have been working at whole 2008. It has a beautiful
lakefront.

It has been a good year at work.



Ready to see my family



#0002 sticker



label



Management Style

"If employees just did what they were told to do, you would continually find defects at the end of the line. We want employees to go beyond what they are told and be creative, building quality into the process." - Mitsuo Kinoshita (Toyota)


I have learned about this for the first time in U.S. Marines c.1995 during Total Quality Management training based on Japanese Kaizen. The young Marine leaders were trained to make independend decisions in case of the interruption of the chain-of-command (death of the superiors) in order to be able to function in chaos of battle, conflicting reports and lack of communication with the outside world.

I modern company it means that the manager is serving as a mentor and instructor that constantly makes the employee responsible for planning, sharing knowledge and executing of the tasks. The manager should faciliate the communications, continous quality improvement, cut the bureaucratic "fat" and inefficiencies (BS). Manager should empower the employees to act and grow, not just do their jobs.

While "running a thight ship" the manager(captain) should strive to achieve a command where each member of the team comes forward with ideas, takes pride and responsibility in the work, grows and learns, transfers knowledge to others and is able to take charge when called upon.


Winter 2008



Happy New Year 2009!



Yes, A4 Quattro can do it!



Quality improvement (Toyota example)

To understand current situation I have been re-reading a book on Toyota's quality process. I found many thoughts that can apply to programming directly.

"Something is wrong if we do not look around each day, find things that are wrong, unclear, tedious or repetitive, and then rewrite the procedures." - paraphresing Taiichi Ohno (Toyota)


One of the recent changes on our way of software development is to de-emphesize the rush for new features in order to ensure the quality of the delivered product.

When we propose a new product (QA build) we STOP new development until all problems are resolved and the application is trully polished, unit tested and documented. We involve our clients in QA process.

Only when problems are resolved we can provide product for UAT (user acceptance testing) and production deployment.

Only when everyone is absolutely happy with the features they delivered we start PLANNING the new development.

While in planning phase, we listen to the user feedback and fix any problems we missed, code at this point is still the same as UAT.

This is: fix problems first policy.

Once a stable product backed up by a suite of regression tests (Selenium) and delivered to the users, we go into a phase of intense development of new features.

The philosophy here is to continously deliver new, solid features that fully satisfy the client. Quality vs. poor quantity.  Having less features hardly ever breaks the deal, having production problems always does.


Gilead: PersistentRemoteService

Gilead does merge operations when you made a service call using PersistentRemoteService, before with hibernate4gwt it didn't do it on all service calls. So we had this nice error

[WARN] StandardContext[]Exception while dispatching incoming RPC call
java.lang.NullPointerException: null
at net.sf.gilead.core.PersistentBeanManager.mergePojo(PersistentBeanManager.java:423)
at net.sf.gilead.core.PersistentBeanManager.merge(PersistentBeanManager.java:289)
at net.sf.gilead.gwt.GileadRPCHelper.parseInputParameters(GileadRPCHelper.java:89)
at net.sf.gilead.gwt.PersistentRemoteService.processCall(PersistentRemoteService.java:147)
at com.google.gwt.user.server.rpc.RemoteServiceServlet.doPost(RemoteServiceServlet.java:86)

So if you don't use spring to create your PersistentRemoteServices, then you have to include these 2 lines in the constructor of all your services.

XmlBeanFactory application = ApplicationContextFactory.getXmlBeanFactoryInstance();
setBeanManager((PersistentBeanManager) application.getBean("hibernateBeanManager"));


After skiing

Ok, so this picture is not so good, but it is the only one I have. My hair is wet (melted ice), we are tired and it is a late night outside. We are sitting in front of a big log fireplace in the ski lodge.




Wilmot Mountain

http://maps.google.com/maps?f=q&q=42.498959,-88.187553%20%28Wilmot%20Mountain%29


Konrad & Dorota



Night skiing



No fear! Exhibition, baby!

Liliann first time up with the lift today. Here coming down on black diamond run "Exhibition", fun and no fear.





Good corker

It saves an incredible amount of effort.


Marking your batches



Into secondary fermentation

This wine batch #0005 is milky yellow now, but in few weeks it will be
crystal clear.


Racking (transfering)

I am racking #0005 into secondary fermentation carboy.


First two wines

First two wines are bottled! They both taste great, they just need to
age a little to mellow down.


Spring beans: ApplicationContextFactory

This code snipped shows you how to get a bean from the applicationContext.xml

<bean id="statusDao" parent="baseTransactionProxy">
<property name="target">
<bean class="com.xyz">
<property name="sessionFactory" ref="sessionFactory" />
</bean>
</property>
</bean>


package com.xyz;

import org.springframework.beans.factory.xml.XmlBeanFactory;

public class Xyz
{
    public static void main(String[] args)
    {
XmlBeanFactory beans = ApplicationContextFactory.getXmlBeanFactoryInstance();
                   setBeanManager((PersistentBeanManager) application.getBean("hibernateBeanManager"));
        StatusDao statusDao = (StatusDao) beans.getBean("statusDao");

Status status = statusDao.fetch(new Long(1));
System.out.print(status.getEntity());
    }
}




No one have promised life to be fair

No one have promised life to be fair
Yet, I still wonder where I'd have err
And so much so -- it is so bleak
It 's surely not because I'm weak
I am a flower, beautiful, strong
I haven't done anything wrong
Born to a garden that they call "lost"
No one invited -- I am a ghost
Guarded by dogs that cannot see
color and beauty that is in me
But flower's bueaty is being lost
If no one smell it, no one's a host
No one to care, no one to cherish
I live alone and so I'll perish.


Mac: resetting system and user password

Recently I had to research how to recover my system password on my Mac, I was not thrilled with my findings. With a quick Internet browsing, I discovered that one can reset a Mac system password with the operating system CD, which is provided with any Mac purchase as well as stores like Apple, BestBuy, etc. 
I had the urge to call the Apple support because I did not believe that Apple would have such a naive fix to a significant issue like a system password. More importantly there is no data loss after reseting a system password from the bootable CD. Also you have the ability to reset any user account password.
 While it is great that I was able to regain my access to my system password with out losing any data on my computer, it made me rethink about security on my machine. 
Here is how to reset a system and/or user password:
  • Insert the MacOS CD that matches with your Mac OS version.
  • Shut down your Mac
  • press C key + power button.
  • Click Continue for the welcome menu
  • Select Utilities from the upper menu bar
  • Select Reset Password from the Utilities menu.
  • Select HD, which is your hard drive
  • Enter your new password
  • Click on Reset Defaults
  • Click on save button
  • Select Quit Installation CD from the MacOS Install CD


Java: file writer

public static void main(String[] args)

    {

try

{

    FileHelper.write(new File("csd_temp.txt"), "Hello World!");

} catch (FileNotFoundException e)

{

    e.printStackTrace();

} catch (IOException e)

{

    e.printStackTrace();

}

    }

    public static void write(File file, String text) throws FileNotFoundException, IOException

    {

if (file == null)

    throw new IllegalArgumentException("File should not be null.");

if (!file.exists())

    file.createNewFile();

if (!file.exists())

    throw new FileNotFoundException("File does not exist: " + file);

if (!file.isFile())

    throw new IllegalArgumentException("Should not be a directory: " + file);

if (!file.canWrite())

    throw new IllegalArgumentException("File cannot be written: " + file);

Writer output = new BufferedWriter(new FileWriter(file));

try

{

    output.write(text);

} finally

{

    output.close();

}

    }



GILEAD replaces Hibernate4GWT

Background information:
http://noon.gilead.free.fr/gilead/index.php?page=f-a-q

1) Download ZIP:
http://sourceforge.net/project/showfiles.php?group_id=239931&package_id=291834&release_id=639455

Import jar files into Maven2 repo:




mvn install:install-file -DgroupId=net.sf.gilead -DartifactId=adapter-core -Dversion=1.2.0.29 -Dpackaging=jar -Dfile=*download location*/gilead-1.2.0.29/dist/adapter-core-1.2.0.29.jar

mvn install:install-file -DgroupId=net.sf.gilead -DartifactId=adapter4gwt -Dversion=1.2.0.29 -Dpackaging=jar -Dfile=*download location*/gilead-1.2.0.29/dist/adapter4gwt-1.2.0.29.jar

mvn install:install-file -DgroupId=net.sf.gilead -DartifactId=hibernate-util -Dversion=1.2.0.29 -Dpackaging=jar -Dfile=*download location*/gilead-1.2.0.29/dist/hibernate-util-1.2.0.29.jar

mvn install:install-file -DgroupId=net.sf.beanlib -DartifactId=beanlib -Dversion=3.3.0beta21 -Dpackaging=jar -Dfile=*download location*/gilead-1.2.0.29/adapter-core/lib/beanlib-3.3.0beta21b.jar

mvn install:install-file -DgroupId=net.sf.beanlib -DartifactId=beanlib-hibernate -Dversion=3.3.0beta21 -Dpackaging=jar -Dfile=*download location*/gilead-1.2.0.29/adapter-core/lib/beanlib-hibernate-3.3.0beta21b.jar




2) replace in XYZ.gwt.xml


<inherits name="net.sf.hibernate4gwt.Hibernate4Gwt15" />


with



<inherits name="net.sf.gilead.Adapter4Gwt15" />


3) replace LazyPojo with LightEntity


import net.sf.hibernate4gwt.pojo.java5.LazyPojo;
public class BaseDTO extends LazyPojo

with



import net.sf.gilead.pojo.java5.LightEntity;
public class BaseDTO extends LightEntity

4) replace


import net.sf.hibernate4gwt.core.HibernateBeanManager;
import net.sf.hibernate4gwt.gwt.HibernateRemoteService;
public class SomeClassImpl extends HibernateRemoteService

with

import net.sf.gilead.core.PersistentBeanManager;
import net.sf.gilead.gwt.PersistentRemoteService;
public class SomeClassImpl extends PersistentRemoteService

5) change how you get the beans:

ApplicationContextFactory application = ApplicationContextFactory.getInstance();
setBeanManager((PersistentBeanManager) application.getBean("hibernateBeanManager"));
addressDao = (AddressDao) application.getBean("addressDao");


It also seems like there were some issues with merging arrays that was
fixed in the 1.1.1 version of hibernate4gwt http://hibernate4gwt.sourceforge.net/news.html

We have had some issues with merging objects that contain Lists or
Sets of other objects and getting classcastexception errors. hopefully
going to the new version will fix these issues.



Java compareTo method for TreeSet

  • To use java comparable class, implement Comparable<> in your class
  • Write a compareTo method as below:

public int compareTo(TeamDTO teamDTO)

    {

TreeMap map = new TreeMap();

map.put(getKey(teamDTO), teamDTO.getId());

map.put(getKey(this), this.getId());

if (map.firstKey().toString().equals(getKey(this)))

    return -1;

return 1;

    }



#0005 Gewurztraminer

output 6 US gallons

day 1) Sunday, December 14, 2008
  • sanitize primary fermenter bucket
  • add 4 L of warm water, mix in the Bentonite (30gr. / 35ml)
  • add grape concentrate (9L / 2.37 US gallon)
  • add warm water until 6 US gallons
  • S.G. 1.080 (the reading should be within 1.074-1.090)
  • sprincle 5 gr. "Lalvin EC-1118 Saccharomyces bayanus" yeast, do not mix
  • leave for 14 day until S.G. is 0.998, or lower
  • mix occasionally for first few days
Saturday December 20, 2008 - start secondary fermentation - anaerobic
  • S.G. : 1.020
  • fermentation continues well
  • rack into 6 gallon carboy



#0001 Riesling Ice Wine

3 U.S. gallons

Saturday, December 13, 2008

  • half way cleared
  • racked clear top to about 4 bottles 
  • added glass marbles (bad idea)
  • added clarifying agent to the rest and set to the cooler place
Saturday, December 13, 2008
  • only half way cleared
  • leave until clear in the cool place
Saturday, December 20, 2008
  • clearing went well, but i would not use marbles again
  • not as clear as original top batch
  • bottled and put away

final S.G. 1.046


#0003 Pomegranate Cherry Apple

3 U.S. gallons

Sunday, December 14, 2008
  • in the middle of secondary fermentation
  • check S.G. 1.078
  • leave until fermentation ends (alcohol kills the yeast)



#0004 Pomegranate, Cherry, Apple, Honey wine

day 1) December 4, 2008
  • 2 US gallons of Apple cider - Indian Summer
  • 1.5 quarts of honey
  • 10 cans of Pomegranate Cherry
  • add water to 5.5 gallons
  • S.G. 1.076 10% potential alcohol
  • add 6 Campden tablets
  • mix 1 cup of warm water and 1 Tbsp of Bentonite
  • wait 24 hours
day 2) December 5, 2008
  • add yeast nutrient
  • add Pectic Enzyme
  • PH 3.8
  • add yeast starter
  • mix
day 9) Saturday , December 13, 2008
  • racked from primary frementer to secondary carboy
  • S.G. 1.000 (no sugar left)
  • fermentation stopped
day 10) Sunday, Decemeber 14, 2008
  • added 10 lbs. of sugar until S.G. 1.074 (very sweet)
  • added the orange juice yeast starter
  • leave until fermentation stops (alcohol content kills the yeast)
Output 6 U.S. gallons


First batch of wine ready



First batch of wine ready



Bamboo fishing rod

I was snooping around basement of my house (c. 1942) and found this
old fishing rod, what a beauty!

This is a 3 piece rod, about 12 foot overall, with aluminum fittings. Single loop on the top. 
The quality does not indicate a high quality rod, but the bamboo is absolutely beautiful.
The company still operates with under $1 million in revenues.

Original Sticker:

No. S 123 
West Point Pole 
B and M Company
West Point, Miss.
Japan (bamboo I assume)

If you know more about these rods, or about the date of manufacture of this particular one , please leave a message.


Newsroom feedback from my website



Batch #0002 Pomegranate Cherry



December 12, 2008 - started clearification
  • S.G. 1.018
  • added 6 crushed Campden tablets to stop the fermentation
  • added 150 ml of sugar
  • added Kieselsol clarifying agent
  • added Chitosan clarifying agent
  • wait at least 24 hours and rack the wine to clean carboy
Saturday December 20, 2008
  • bottled 3 gallons
  • clarity excellent
  • color red (like Cherry juice)
  • taste excellent, sweet but not too much
  • left 3 gallons in the small carboy because I had no clean bottles and corks

  • sweet, 
  • final S.G. 1.024
  • very good wine


iPhone: Java blog

I found same interesting posts on the following site:

http://java4iphone.com/category/all-news/java/

PS: If the rumors are true there will be Apple-enabled Java on the iPhone!


[0142]Examples of other applications 136 that may be stored in memory 102 include other word processing applications, JAVA-enabled applications, encryption, digital rights management, voice recognition, and voice replication. 



Mac OS X: Black border around active element

For a day, or two, I had a thin border appearing around each active element on my Mac OS X, despite the fact that it was not effecting  anything negatively, it was extremely annoying for two reasons: 

1) it is visually disturbing
2) I was not sure if the system was corrupted, or worse - infiltrated by some spyware

After some research I have learned that I turned ON the feature for visually impaired by executing a shortcut Command-F5.



Quality Testing

Unit testing

This (jUnit) is the first step for creating a quality product. A simple fact of writing a test before code implementation, forces the developer to think about various "what if?" scenarios. Testing a given method, or module, for both positive and negative inputs is essential and it is also a good example of how to use that code. Running all the tests at regular intervals assures good integration and regressions testing.

Selenium UI testing

Selenium provide the ability to regression-test hundreds of features that would be tedious for the human to test and retest. It quickly identifies the points of failure.

Code freeze

Code freeze happens when the QA/UAT is built and following the build. No NEW development happens during the code freeze. ALL developers concentrate
on:
- fixing the issues that were identified in this build,
- documenting the items they just finished,
- updating the QA checklist with new features,
- creating Selenium tests for the items just finished,
- planning and documenting future development,



Aging

While waiting for my Audi being serviced I paged thru the People
magazine and realized that:

- in 10 years I will look like Johnny Depp (45)
- in 12 years I will look like George Clooney (47)

I just cannot wait to grow up!



iPhone: Actions & Outlets

Actions & Outlets may seem difficult, but it makes sense:

Action: a method that will be called once user does something to the widget
Outlet: a widget that will change as a result of some action



Connecting an Action: 
  • Drag from the desired Event (Touch Up Inside) to File's Owner 
  • select action method you wrote




iPhone: TextField to Label

To create action of the text field to populate a label...

- (IBAction) sgDoneEditing:(id) sender
{
UITextField *textField = (UITextField *)sender;
NSString *textFieldValue = textField.text;
NSString *label = [[NSString alloc]  initWithFormat:@"S.G.: %@", textFieldValue];
sgValue.text = label;
[label release];
}




Hello World!



Clearing half way

This wine has cleared only have way. You can see the line of sediment in the middle.


Saturday, December 13, 2008

  • racked clear top to about 4 bottles 
  • added clarifying agent to the rest and set to the cooler place

final S.G. 1.046



Secondary fermentation