I start exercising like some people quit smoking. An incentive the last time I did this was that our company started a fitness challenge where we would form into teams and compete for prizes at the end of a six-week period. It was very interesting: The definition of "exercise" was left intentionally vague and we were graded on our ability to meet or beat our own estimate of how many minutes we would exercise per week. So, for instance, I estimated I would exercise for 210 minutes a week. I figured it would be no problem to walk for a half hour seven days a week. Well, it turned out to not be as easy as I thought (kind of like writing at least one blog entry a week). But, the fact that I might be letting my teammates down got me outside on days I didn't feel like doing it. It was good motivation and, if I really felt bad some day, I knew I could catch up later in the week. I had a few really long walks on Sundays to catch up for the week!
So, here I go again. I'm starting to gain back the fifteen pounds I lost during our move out of the old house and into the new house and I'm feeling it more when I climb the stairs. This time, while there is another fitness challenge going on, I'm not a member of a team so it is going to be harder to keep going. The best I ever did in getting good, prolonged exercise and sticking with it was when I was bicycling to work. I was riding 14 miles a day round trip and the weather didn't usually stop me. I did that for about ten years. Of course, I was younger then and unmarried. Now with the office moved farther out (it's now a 20 minute drive in the car and on a highway that doesn't allow biking), I can't do that. I'll try to take some pictures of where I walk behind our office and post those. I'll also try to post my progress here from time to time. Maybe that will be my motivating factor.
By the way, the picture at the top is one I took of my son and our dog about five or six years ago. We were walking in the woods not far from our house at the time. It is one of my favorites. It was not taken where I am walking at the office. I'll show some of those pictures another time.
Monday, March 26, 2007
Friday, March 16, 2007
A World Bug List
By "Bug List", I mean a list of problems that must be dealt with. Humanity needs to keep a bug list of problems. We need to be reminded every day about the safety of our food supply, the lack of potable water, how many people are going to bed hungry tonight. We need to be aware of the rising number of homeless people, the state of financial institutions (people were worried about the sub-prime lenders before this week when one of the largest threatened bankruptcy). Our children are not reading as much as they should and antibiotic resistant bacteria are on the rise. There needs to a bug list that we all check every day and a way for people to either be assigned to work on those problems or a way for people to volunteer to work on those problems. We can' just wait around for the problems to reach their tipping point and then start worrying. These kinds of things just should not be allowed to sneak up on us.
Once a problem gets big enough or critical enough, it will be noticed and stories will be written about it. Television and radio will do shows and specials about it. Movies will be made. But, usually, when a problem gets to that point, it is too late to save some people. We all need to wake up each morning and think about what we are going to do that day and decide if there is anything we can do to help some problem on the list. We need to go to bed each night and consider if our actions that day helped with any of the problems on the list. Of course, there is no one list. And, of course, if there was one place, say the United Nations, where such a list was kept, who would have the authority to assign tasks? The people who worry about a world government would not want to be associated with it. It would have to be voluntary and that's just the situation we have now.
I don't want to sound like I don't think anyone is doing anything about any of this. Certainly there have always been good people trying to solve the problems that affect us all. Governments were probably first formed to handle these sorts of things. And there have been companies who were either founded to solve some of these problems or who donate to helps some of these problems. It's just that it seems so disorganized and uneven. I remember a coworker once saying that he was as apt as anyone to give money to people on the street but that he was against government programs to help them. What he didn't understand was that people can't exist on a haphazard "I'll help you when I feel like it" attitude. We need to dedicate resources that can be depended on year in and year out to fix these problems.
I know people who keep personal lists of people and events they pray about and help out with every single day. I need to get more organized and do something like this, too. In the end, this blog entry is not accusing anyone who reads it of not doing enough. This entry is just my own realization that I do not do enough. I m too concerned with my own little problems. I don't pay enough attention to things that affect the world and instead focus only on things that affect me. I hope this will be a start in the right direction.
Once a problem gets big enough or critical enough, it will be noticed and stories will be written about it. Television and radio will do shows and specials about it. Movies will be made. But, usually, when a problem gets to that point, it is too late to save some people. We all need to wake up each morning and think about what we are going to do that day and decide if there is anything we can do to help some problem on the list. We need to go to bed each night and consider if our actions that day helped with any of the problems on the list. Of course, there is no one list. And, of course, if there was one place, say the United Nations, where such a list was kept, who would have the authority to assign tasks? The people who worry about a world government would not want to be associated with it. It would have to be voluntary and that's just the situation we have now.
I don't want to sound like I don't think anyone is doing anything about any of this. Certainly there have always been good people trying to solve the problems that affect us all. Governments were probably first formed to handle these sorts of things. And there have been companies who were either founded to solve some of these problems or who donate to helps some of these problems. It's just that it seems so disorganized and uneven. I remember a coworker once saying that he was as apt as anyone to give money to people on the street but that he was against government programs to help them. What he didn't understand was that people can't exist on a haphazard "I'll help you when I feel like it" attitude. We need to dedicate resources that can be depended on year in and year out to fix these problems.
I know people who keep personal lists of people and events they pray about and help out with every single day. I need to get more organized and do something like this, too. In the end, this blog entry is not accusing anyone who reads it of not doing enough. This entry is just my own realization that I do not do enough. I m too concerned with my own little problems. I don't pay enough attention to things that affect the world and instead focus only on things that affect me. I hope this will be a start in the right direction.
Tuesday, March 13, 2007
"It's all downhill from here"
This is one of my favorite expressions when I get to one of my favorite times on a project. I can't say much specific about the project I'm working on right now but I can share some general ideas.
I work for a company that makes electronic products. To design these products, we need electronics engineers (the hardware engineers who pick out the parts to use and figure out how the parts will be connected together and to the outside world), firmware engineers (since just about everything we make uses a microprocessor, these are the guys that write the instructions that run the microprocessor which runs the product), mechanical engineers (who design the case or enclosure for the product and any special connectors or support hardware the product may need) and software engineers (our products are mostly used by connecting them to a desktop or laptop computer to start them up, make changes to them or get the information that our product collects). In this particular product, I'm part of the software team. The hardware part is mostly finished and the firmware and mechanical parts are in the works along with the software. It's kind of like building a bridge where you have to build supports up to a certain level to build the bridge up to that level and then work off the bridge to build a higher level of supports to build the next stage of the bridge. Nothing can be completely finished without the other parts coming along at nearly the same pace.
So, I am sitting at my desk with partly finished hardware and firmware and I am supposed to be able to send certain commands to the board and get a certain response back. Specifications are written for each part of the project but, since we've never built exactly this device before, no one is sure how it will really run or what is the best way to do things. As we go along and one method appears to be inefficient, we change the specification just a bit to make things better. So, the specification is just like the supports for building the bridge. You can't build the complete support structure before the bridge starts because the fact of building the bridge will change the area where the supports will be. The trick is to keep everything on as close a similar schedule as possible. I've been attempting to send commands to the board and get a good response for about two weeks with no luck. Part of it was a lack of completely understanding the specification and part of it was the specification not being completed. Also, I am building on software written by someone else based on an earlier version of the specification which has changed. So, yesterday, I finally reached the point where I was able to generate a complete, well formed command which should have gotten a good response from the board but didn't. That's a hard way to end the day and I was in a race at the end of the day to get a good response from the board.
It turned out to be a combination of problems - which is usually the case. Single problems are easy to find and fix. The problems that cause you trouble are when two or three simultaneous simple problems interact to cause a big, honking problem that keeps you up at night and makes you wife and kids afraid to see you arrive home at night. In this case, one piece of hardware had been misconfigured so that it and the board under test were trying to interact at different speeds. Also, the firmware of the board should have been returning a "partially" meaningful response but was not. And finally, the software had been written for an earlier version of the specification which had changed - but the software hadn't. I was able to reconfigure the hardware to talk at the correct speed and I was able to find the problem in the software and fix it. The firmware couldn't be changed (the firmware guys were gone for the day) but that didn't matter if I fixed the hardware and software problems. So, the last thing I did before going home was to send the "Let's start talking and assign me an ID" command and the board sent back the "It's nice to see you and here's your ID" command! Now, since all the other commands will use these same building blocks, I should be able to send any command and get a reasonable response. That's what I'll be working on next.
So, now is the time I say, "It's all downhill from here!" To me this is good. It means I'm no longer struggling up the hill. I've gotten past the hard part, taken in the beautiful view from the top and I'm heading down the hill which is easier. Plus I can see the end of the trek. This is the best part of any project to me. I feel I understand how everything works now and there are no limits to what I can do.
I work for a company that makes electronic products. To design these products, we need electronics engineers (the hardware engineers who pick out the parts to use and figure out how the parts will be connected together and to the outside world), firmware engineers (since just about everything we make uses a microprocessor, these are the guys that write the instructions that run the microprocessor which runs the product), mechanical engineers (who design the case or enclosure for the product and any special connectors or support hardware the product may need) and software engineers (our products are mostly used by connecting them to a desktop or laptop computer to start them up, make changes to them or get the information that our product collects). In this particular product, I'm part of the software team. The hardware part is mostly finished and the firmware and mechanical parts are in the works along with the software. It's kind of like building a bridge where you have to build supports up to a certain level to build the bridge up to that level and then work off the bridge to build a higher level of supports to build the next stage of the bridge. Nothing can be completely finished without the other parts coming along at nearly the same pace.
So, I am sitting at my desk with partly finished hardware and firmware and I am supposed to be able to send certain commands to the board and get a certain response back. Specifications are written for each part of the project but, since we've never built exactly this device before, no one is sure how it will really run or what is the best way to do things. As we go along and one method appears to be inefficient, we change the specification just a bit to make things better. So, the specification is just like the supports for building the bridge. You can't build the complete support structure before the bridge starts because the fact of building the bridge will change the area where the supports will be. The trick is to keep everything on as close a similar schedule as possible. I've been attempting to send commands to the board and get a good response for about two weeks with no luck. Part of it was a lack of completely understanding the specification and part of it was the specification not being completed. Also, I am building on software written by someone else based on an earlier version of the specification which has changed. So, yesterday, I finally reached the point where I was able to generate a complete, well formed command which should have gotten a good response from the board but didn't. That's a hard way to end the day and I was in a race at the end of the day to get a good response from the board.
It turned out to be a combination of problems - which is usually the case. Single problems are easy to find and fix. The problems that cause you trouble are when two or three simultaneous simple problems interact to cause a big, honking problem that keeps you up at night and makes you wife and kids afraid to see you arrive home at night. In this case, one piece of hardware had been misconfigured so that it and the board under test were trying to interact at different speeds. Also, the firmware of the board should have been returning a "partially" meaningful response but was not. And finally, the software had been written for an earlier version of the specification which had changed - but the software hadn't. I was able to reconfigure the hardware to talk at the correct speed and I was able to find the problem in the software and fix it. The firmware couldn't be changed (the firmware guys were gone for the day) but that didn't matter if I fixed the hardware and software problems. So, the last thing I did before going home was to send the "Let's start talking and assign me an ID" command and the board sent back the "It's nice to see you and here's your ID" command! Now, since all the other commands will use these same building blocks, I should be able to send any command and get a reasonable response. That's what I'll be working on next.
So, now is the time I say, "It's all downhill from here!" To me this is good. It means I'm no longer struggling up the hill. I've gotten past the hard part, taken in the beautiful view from the top and I'm heading down the hill which is easier. Plus I can see the end of the trek. This is the best part of any project to me. I feel I understand how everything works now and there are no limits to what I can do.
Thursday, March 08, 2007
The professional community
I heard another interesting story on NPR this morning about some new ideas of testing for cancer. While the story itself was good and hopeful (that we may catch another form of cancer in its early stages) it made me think of what we expect of our local doctors. After hearing this story, how many people will go to their family doctor and ask about these new procedures? They should, of course, because it is a good idea to take charge of your own health. But how many local doctors will know about the new ideas? Now I'm being a bit careless here thinking that listeners to public radio may know something before most doctors. It has probably been in the literature for a while. But the question is - Does my family doctor keep up with new ideas and procedures? Does he go to conferences? Does he participate in the medical community? Doctors can't be expected to do research on their own or test new procedures. They rely on other doctors and groups of doctors and scientists to do that and spread the word. That's where medical journals and conferences come in. Do doctors have a continuing education program where they go back to school to learn about new ways of doing things? I hope they do.
In engineering, I don't think it is as structured as it is in the fields of medicine and law. There are lots of opportunities for continuing education but you have to go looking. And they are not managed, rated or structured as well. But there are plenty of ways to keep up to date. There are:
* On-line communities (newsgroups and web sites) - One of the best I've found is the community that grew up around the Borland programming tools that have since become the CodeGear programing tools. Members of that community go to amazing lengths to help fellow programmers learn new ways of doing things. I've tried many other communities and you are either ignored or ridiculed.
* Conferences - The best conference I have ever attended is the yearly Embedded Systems Conference. There is one on the West Coast (in San Jose, CA, which I have not attended) and one on the East Coast(in Boston, MA, which is the one I have attended). It's is always well attended which is bad in a way because the class sizes are usually pretty large. But it also means there are lots of people with lots of different ideas to talk with. It has opened my eyes to a lot of new things. This is an especially good conference in that it mixes hardware and software classes.
* Magazines and books - Here it is hard to pick one or a few. I will have a post at a later date to just list my favorite books and magazines. While the number of magazines and books has diminished over the years, I find that the quality has remained high.
* Continuing learning - I think this is the weak link. While there are lots of available classes presented by universities and companies, the quality varies a lot and there is no association to rate them or oversee the quality. Here you have a choice of taking a semester long course at a college (or university) or a short course that lasts a few days to a week. I've taken good ones and bad ones but you never knew what you were going to get until you were in it. This is a real crap shoot.
I think one of the things that distinguishes a professional job from other jobs is the commitment of the professional to keep up with what is new and to keep improving their methods and their knowledge. If my boss asks me to do something, I don't want to be doing it the way I would have done it five years ago.
In engineering, I don't think it is as structured as it is in the fields of medicine and law. There are lots of opportunities for continuing education but you have to go looking. And they are not managed, rated or structured as well. But there are plenty of ways to keep up to date. There are:
* On-line communities (newsgroups and web sites) - One of the best I've found is the community that grew up around the Borland programming tools that have since become the CodeGear programing tools. Members of that community go to amazing lengths to help fellow programmers learn new ways of doing things. I've tried many other communities and you are either ignored or ridiculed.
* Conferences - The best conference I have ever attended is the yearly Embedded Systems Conference. There is one on the West Coast (in San Jose, CA, which I have not attended) and one on the East Coast(in Boston, MA, which is the one I have attended). It's is always well attended which is bad in a way because the class sizes are usually pretty large. But it also means there are lots of people with lots of different ideas to talk with. It has opened my eyes to a lot of new things. This is an especially good conference in that it mixes hardware and software classes.
* Magazines and books - Here it is hard to pick one or a few. I will have a post at a later date to just list my favorite books and magazines. While the number of magazines and books has diminished over the years, I find that the quality has remained high.
* Continuing learning - I think this is the weak link. While there are lots of available classes presented by universities and companies, the quality varies a lot and there is no association to rate them or oversee the quality. Here you have a choice of taking a semester long course at a college (or university) or a short course that lasts a few days to a week. I've taken good ones and bad ones but you never knew what you were going to get until you were in it. This is a real crap shoot.
I think one of the things that distinguishes a professional job from other jobs is the commitment of the professional to keep up with what is new and to keep improving their methods and their knowledge. If my boss asks me to do something, I don't want to be doing it the way I would have done it five years ago.
Thursday, March 01, 2007
Happy St. David's Day
Today is the feast day of the patron saint of Wales - St. David who died on March 1, 589 AD. It's the Welsh equivalent of St. Patrick's Day for the Irish (with fewer parades but larger choirs). St. Patrick was a Welshman by the way. [Update - Sorry, I was wrong about this! On St. Patrick's Day this year, I found that he was probably born in Scotland.]
So, have some leek soup (a non-authentic recipe below), plant a daffodil and hum the tune to The Ash Grove. It only happens once a year.
According to the link above, Welsh leeks are different from leeks found in the Americas. Welsh leeks are called "ramps" here and are hard to find. They are only available in season, too. If using American leeks, use only the white or very pale green parts and throw the rest away.
Cawl Cennin (leek soup)
Ingredients:
- 2 Tbsp butter
- 4 large leeks
- 250-300 grams (8 - 11 oz) bacon
- 4 mid sized potatoes
- 1 can chicken bouillon/broth (8 oz)
- 1/4 cup milk
- 1/2 cup cream
- ground black pepper
Directions:
- Melt the butter in a large saucepan. Chop the bacon and leeks, peel and dice the potatoes.
- Add bacon and leek to the pan and soften for a couple of minutes. Add potatoes, bouillon and season to taste.
- Boil (covered) for 30 minutes. Pour the soup into a food processor and mix until smooth.
- Pour back into the saucepan, add milk and cream and reheat. Do not boil.
- Serve immediately.
Which businesses compete?
I heard an interesting piece on National Public Radio's Morning Edition as I was driving to work this morning. They were talking about the two digital radio companies, XM and Sirius who want to merge but have to make a case for this not being anti-competitive, testifying before a House of Representatives committee. The companies claim, among other things, that aside from competing with each other (which they say cuts down on the options that customers have because now, customers can only hear certain personalities on one or the other companies' stations), they are, in reality, competing with regular (so called terrestrial) radio and Internet radio. Since both of these are free, the merged company would still be under pressure to keep its prices low.
So perhaps we can extend this argument to allow all the automobile companies to merge because, after all, they are competing with walking and bicycling which are free. Beverage companies could all merge because, in reality, they are competing with water which is mostly free and is, Heaven help us, subsidized by the government! Perhaps we'll end up with all the major industries merged like in the movie Rollerball where there was just one, world-wide Energy company and just one, world-wide Entertainment company. Wouldn't that be more efficient? As the ads say for all the banks that keep merging, their sole purpose in merging is, "To better serve our customers." Yeah, and to raise the rates of all their services. And to fire "redundant" workers.
So perhaps we can extend this argument to allow all the automobile companies to merge because, after all, they are competing with walking and bicycling which are free. Beverage companies could all merge because, in reality, they are competing with water which is mostly free and is, Heaven help us, subsidized by the government! Perhaps we'll end up with all the major industries merged like in the movie Rollerball where there was just one, world-wide Energy company and just one, world-wide Entertainment company. Wouldn't that be more efficient? As the ads say for all the banks that keep merging, their sole purpose in merging is, "To better serve our customers." Yeah, and to raise the rates of all their services. And to fire "redundant" workers.
Subscribe to:
Posts (Atom)