9/29/2006 09:06:00 AM|W|P|Jacob|W|P|I have a few sites that I try to read regularly. I would like to read more, and I am sure sometimes I should be reading less. I use a feed aggregator because I don't have time to check sites for new content all of the time. Ryan McHale, pointed me to Google Reader a while ago, but I did not like the interface. I then tried Bloglines, but it never seemed to be advancing and it started to grate on me. Feed aggregation is a rather web 2.0 feature (at least web 1.5), but Bbloglines is a completely web 1.0 site. A few weeks ago I went back to Google Reader and have been loving it. This morning there was a message in my aggregation from the Google Reader Blog that a new design has been released. This new layout is great! It is a mix of the classic Reader and Bloglines. Even if you only have one or two sites you checkout from time to time, I think a feed aggregator is worth it.|W|P|115953971749024923|W|P|New Google Reader|W|P|jacob.tomaw@gmail.com9/28/2006 10:47:00 PM|W|P|Jacob|W|P|Today I continued writing unit tests for the Excel Upload tool. I want to go more into depth later about what writing tests means, but for now the basic idea is I am writing code that tests application code. Today I started looking that the test coverage. This is how much of my application code is being executed by my test code. We are using a tool called Cobertura to generate this information. It runs the tests and determines what lines of code have been executed. Cobertura takes this information and generates a web page with pretty colors and highlighting of code reporting the percentage of code executed by class and package. You might think everyone would want 100% test coverage. That might be the ideal, however much of ones code might be simple getters and setters, a facade to more code, or a number of other things with minimal logic involved. Writing tests for these patterns can be very time consuming. It is good to know you have written these simpler things correctly, but you really want to test the code that does the processing and this might be only 20% of a class. If you write the tests for this processing logic well you should be able to flush out many of the problems with the simpler code. Also today, I needed to tell my Project Manager what tasks I foresee with COLO Phase 3 and the LOEs (Level Of Effort) for these tasks. It is the nature of a project manager to be worried about when their project is going to be completed and mine is worried about the 2 weeks I am going to be taking off in 9 work days. The total for my LOEs was 9 days. That is cutting it close, but it is not critical I finish before marrying. The code complete date is at the beginning of November, and I will have a couple days to work on it. The PM is also worried about the Front End team being held up while I am gone. To alleviate this Anton, who has worked on Phses 1 and 2 with me) will be covering me if the Front End developers need any thing.|W|P|115950163689795714|W|P|WIDT2|W|P|jacob.tomaw@gmail.com9/27/2006 10:40:00 PM|W|P|Jacob|W|P|Following my earlier post you might ask, "So what have I been doing today?" First, for the purpose of these posts I am going to give my project codenames. When they are out in the wild I will let you know what they are and more about how they work. However, until they are in our customer's hands I don't want those folks with the gnome or you-know-what DOTCOM to know about them. So, I am going to call my current project COLO. We are currently developing phase 2 of COLO. There are two distinct areas of this current phase and I am working on an Upload Tool for this feature. Our Quality Engineering testing team is very constrained right now, so I have added an on/off switch for it. (In our version control software I called it an activation semaphore because I am a nerd). I am going to integrate my code in the off state, then when QE has the resources it can be turned on and tested. We then had an unscheduled fire drill. Turns out this was not intended for Orbitz, but the building pulled the wrong alarms. Todd, Tom, Jeremy and I did not want to wait all afternoon to go back up stairs so we went to lunch. I know this is not what you are expecting for an article about my job, but this is part of working in Chicago. After lunch I worked on creating tests for a package I extracted to process Excel Spreadsheets. This package was buried in one specific code base and I pulled it out so everyone could use it. These classes did not have any tests so I am adding them. THis is backward to the methodology we are trying to use, I will talk about that in a future post. FInally, Every Wednesday we have a dev team meeting were someone presents what they have been working on or new technologies we should be aware of. In the past I have presented Java5 and how we integrate with MapQuest. Today Andrew presented on JODA . In Java the time processing is not a straightforward as you might expect. Universally, this is considered one of the worse parts of the language. JODA is an open source project at SourceForge and provides a great set of features. Also, Alex (my boss) talked about how airlines determine their pricing structure. I still cannot tell you when the best time to buy is, other than buy when you think it is an acceptable deal.|W|P|115941481958932099|W|P|What I Did Today 1|W|P|jacob.tomaw@gmail.com9/27/2006 10:23:00 PM|W|P|Jacob|W|P|I am often asked what I do by friends and family I have not seen for a while. I usually respond by saying I am a Sr. Software Engineer at Orbitz, the travel website. This garners one of two reactions. Either they nod and have a look of confusion on their faces and go on to another topic, or they say "I cannot imagine what you do." No matter the reaction the implication is the same for my description, it is not very descriptive. I think this comes from training as a software engineer. Everyday, I work with two different groups of people, technical and non-technical. The technical are other engineers of various levels and responsibility. Not everyone knows exactly how what each other does works, but we all have similar backgrounds and training allowing us to abstract things to the same technical level. This ability to talk in tech-speak allows us to communicate in a detailed manner about our work. The non-technical people work in general business product management, project management, quality assurance (testing), customer support, sales, marketing, etc. They all know what our product does in English. When we talk to them we use English with tech-speak sprinkled in when there is no English equivalent. I almost never tell my non-technical managers what I am doing, I tell them what feature I am working on and how long it will/has/is going to take to complete. Before we begin a project, I attend meetings to learn about new features. I take the English requirements and the images of the desired feature, then process them into my own internal technical representations. Once that is complete I can tell if something is possible, given the resources we have and the technologies we are using, and when it could be done. Never how I am going to do it. This is not a fault of the business or of engineers. Business folks do not care that I am going to write 3 JSPs and have 4 action classes that will then process XML data this way and that finally putting it into the database using the DAO pattern. I also don't want to tell them because I want to have the freedom to implement something as I see fit while I am doing it. If I had to tell them every detail I would be locked into it or need approval to change. However, this makes me severely out of practice of actually telling non-technical people, like my mom and friends from high school, what I do. I think people should be interested in what software engineers do and how software works. Not because we are important or what we do is really hard or special, but because everyone uses it more and more everyday. When most of our products were made out of material things, people could take them apart and even if you did not know exactly how it worked you could describe its basic function to someone. Think about a car engine or record player. You may not know exactly how it works, but you know that the engine is lubed by oil, gas is injected into the engine, the pistons move, a spark is made, and exhaust is expelled. Or you know that a record spins at a speed and the grooves touch a needle that moves to make sound. Today we treat software as magic. The computer just did something and there is no way of knowing what. Data is entered and more data comes out. I want to dispel this by telling you more about what I do and how what I do works. Hopefulling in an easy to understand way. The key to this is going to be you asking me questions. If there is anything you don't understand, leave a comment or email me. No matter how minor, if you have a question more do out there.|W|P|115941380519479759|W|P|What Do I Do?|W|P|jacob.tomaw@gmail.com9/27/2006 10:49:00 PM|W|P|Anonymous Anonymous|W|P|Why does OrbitzTLC mess up my flight plans every time?9/12/2006 10:13:00 AM|W|P|Jacob|W|P|His greatness, Richard M. Daley, Mayor, vetoed the 'Big Box Ordinance.' This was a city bill to set a higher minimum wage for the most popular large stores, like Wal-Mart and Target. This was the Mayor's first veto ever, he has been in office 17 years. It is going to stand because 3 Aldermen suddenly realized it was a bad idea. Russell Roberts of Cafe Hayek has a great rundown including quotes from the transformed Aldermen and links to other works about why this was a bad idea to start with.|W|P|115807403291415302|W|P|Victory for Smiley and Spot|W|P|jacob.tomaw@gmail.com