Under the Space Needle - Seattle, WA
Pike Place Market, Seattle, WA
Heaven Lives in Woodinville, WA (at the Red Hook Brewery)
Palace of Fine Arts, San Francisco, CA
Coit Tower - San Francisco, CA
Big, Incredible Redwoods - Muir Woods, CA
Down the Waterfall, Capilano River, North Vancouver, BC
Melbourne Skyline from the Yarra River, Melbourne, Victoria, Australia
Tidal Pool, Diagonal Tree - Mallacoota, NSW, Australia
Sydney Tower at Dusk, Sydney, NSW, Australia
Opera House, Sydney, NSW, Australia
St. Mary's Cathedral, Sydney, NSW, Australia
Wednesday, December 19, 2007
Tuesday, December 18, 2007
December Blues
Well, been a while, so here goes.
First, an update on where I have been and what I have been doing. Last weekend my fiancee ditched me to meet up with her friend in Austin, so I celebrated by...catching a cold. So last week was pretty rough. I didn't feel like much the whole week. Lucky to have such a great fiancee to take good care of me. I have been taking guitar lessons finally. Jena got me a guitar a couple of years ago, and after some self-teaching, I figured out I can't teach myself very well, so I have been going to a great teacher for a few lessons now, and it's amazing how far I have come. Someday I will be able to rock like a true guitar god...or at least be able to play a few songs...preferably Led Zeppelin or Tom Petty or something good that's not too challenging and doesn't require 12-strings. We went to New York City this weekend and braved the cold wet weather. It's a crazy place - I never know how people live there, but there must be something to it since both of my college roommates and some other good friends are either moving there or have been there for a while. Too much action for me...
We took the bus there, which was good...cheap, had wireless internet, and gave me time to read! I finished The Ethical Assassin, by David Liss. I had read his first three books, which were historical fictions based on a family of exiled Jewish merchants in England from 1500-1700. I love history, and have been getting more into historical fiction. Liss' fourth effort, however, jumped to the other end of the spectrum, diving into a mystery about an encyclopedia salesman in the trailer parks of Northern Florida. It was really a good quick read like the others. The pace and rhythm of the storytelling is always pretty uncanny in his books.
Not much else to add. Still working through Manhunt and the Alexander Hamilton bio, and also through three chapters of Herding Cats, a book about programmers being promoted to lead other programmers, which is where I find myself these days, often cluelessly. I have already noticed ample quantities of advice that I can use in my day to day work.
More on Christmas shortly, along with some good pictures we have taken lately during our travels!
First, an update on where I have been and what I have been doing. Last weekend my fiancee ditched me to meet up with her friend in Austin, so I celebrated by...catching a cold. So last week was pretty rough. I didn't feel like much the whole week. Lucky to have such a great fiancee to take good care of me. I have been taking guitar lessons finally. Jena got me a guitar a couple of years ago, and after some self-teaching, I figured out I can't teach myself very well, so I have been going to a great teacher for a few lessons now, and it's amazing how far I have come. Someday I will be able to rock like a true guitar god...or at least be able to play a few songs...preferably Led Zeppelin or Tom Petty or something good that's not too challenging and doesn't require 12-strings. We went to New York City this weekend and braved the cold wet weather. It's a crazy place - I never know how people live there, but there must be something to it since both of my college roommates and some other good friends are either moving there or have been there for a while. Too much action for me...
We took the bus there, which was good...cheap, had wireless internet, and gave me time to read! I finished The Ethical Assassin, by David Liss. I had read his first three books, which were historical fictions based on a family of exiled Jewish merchants in England from 1500-1700. I love history, and have been getting more into historical fiction. Liss' fourth effort, however, jumped to the other end of the spectrum, diving into a mystery about an encyclopedia salesman in the trailer parks of Northern Florida. It was really a good quick read like the others. The pace and rhythm of the storytelling is always pretty uncanny in his books.
Not much else to add. Still working through Manhunt and the Alexander Hamilton bio, and also through three chapters of Herding Cats, a book about programmers being promoted to lead other programmers, which is where I find myself these days, often cluelessly. I have already noticed ample quantities of advice that I can use in my day to day work.
More on Christmas shortly, along with some good pictures we have taken lately during our travels!
Tuesday, December 4, 2007
The Communication Generation
It's truly amazing to me how far the telecommunications industry has come over the past few years. It's incredible to stop and think how impatient you get when you can't call someone on their cellphone. Not too long ago, I was in high school, and I had a PAGER. That was pretty sweet, because as long as someone was by a phone that accepted incoming calls, you could always get in touch with them. Now, obviously, we have cellular phones. Everyone always knows where everyone else is and what they are doing, and if they can't talk right now, well, you can text message them! I think the younger generation takes this for granted, but I can remember when I was nine years old and went for a bike ride for a couple hours, and my parents thought I was dead. I can remember the look of relief on their faces. Now the nine year olds have MotoRazrs. I am guilty myself. When I can't reach Jena for an hour, I sometimes start to fear the worst. Ten years ago, I would have thought "she'll be home when she's home".
The communication revolution seems especially incredible as I read some of the books I have read lately. The War of 1812 was basically over, the British and American delegations having signed the Treaty of Ghent. Today, this would all be done over a videoconference being streamed live to the State Department. Back then, the American delegation had to get back on the boat to come back to Washington to tell everyone that they could stop fighting. Now, if anyone has ever heard of the Battle of New Orleans, it was fought while the ship was sailing. Pretty amazing stuff. A pivotal battle in a war being fought after the war is over! Kind of funny to think that the US actually won the war after they had already stopped fighting.
Now, this all comes with a price. Now you can't claim ignorance as a reason for not doing something. "I couldn't find Bob, so I couldn't work on this widget" is no longer valid. Bob is always available, and so are you. People can always find you. If they don't have your cell phone number, they can call the other thousand people they know to get it. You are always "around". I still haven't necessarily reconciled that part of the communication revolution.
I guess there wasn't really much point to this post other than to stop and say "wow", because things go on in the world that we simply take for granted, and they are often pretty incredible.
The communication revolution seems especially incredible as I read some of the books I have read lately. The War of 1812 was basically over, the British and American delegations having signed the Treaty of Ghent. Today, this would all be done over a videoconference being streamed live to the State Department. Back then, the American delegation had to get back on the boat to come back to Washington to tell everyone that they could stop fighting. Now, if anyone has ever heard of the Battle of New Orleans, it was fought while the ship was sailing. Pretty amazing stuff. A pivotal battle in a war being fought after the war is over! Kind of funny to think that the US actually won the war after they had already stopped fighting.
Now, this all comes with a price. Now you can't claim ignorance as a reason for not doing something. "I couldn't find Bob, so I couldn't work on this widget" is no longer valid. Bob is always available, and so are you. People can always find you. If they don't have your cell phone number, they can call the other thousand people they know to get it. You are always "around". I still haven't necessarily reconciled that part of the communication revolution.
I guess there wasn't really much point to this post other than to stop and say "wow", because things go on in the world that we simply take for granted, and they are often pretty incredible.
Labels:
books,
communication,
ramblings,
thoughts
Monday, December 3, 2007
Web Applications and Memory Abuse
As a performance engineer, part of my job is to make our software run really really fast. Another part is to figure out how to make sure that it still runs as fast with 1000 users as it does with 10. That's usually the harder part. You can usually squeeze gains out of each transaction enough to make the single-user cases perform fine. Jeff Atwood describes it very well in this blog post. Says Atwood:
A big reason for poor scalability is the abuse of memory. Everything is faster when loaded from memory, right? That's always good, right? Matter of fact, why not put everything the user sees in their session? That way all they have to do is go straight to their own little section of memory so that everything they do is fast fast fast. Hmm. Good when the n is small. Bad when the n is big. Let's say, for kicks that every user session grows to 2MB. That's not unrealistic when considering some of the data-driven applications that you use on a day-to-day basis. Not so bad, right? After all, memory is cheap! Now, let's say your application is running on 32-bit Windows. For reasons explained here, you can only fire up a 1.5 GB JVM. So let's say you have 500 active users on your system. Do the math:
1500MB total heap size - 250MB server bootstrap - ( 500 users * 2MB session ) = 250MB for processing. Now things aren't looking so peachy, eh. However! We can just cluster, right, so we have multiple JVMs running, to take advantage of all that memory! Ha! In the words of Lee Corso, "Not so fast, my friend!". The default method of session propagation is simply to multicast the session changes across cluster nodes. Now you have 1GB of user-specific crap clogging up each of your JVMs. That leaves little heap for actual system processing needs. Now, factoring in the fact that most users don't proactively log out of systems, rather letting their session lapse to timeout, and the fact that many (non-financial) systems have rather long timeout intervals, you could have ALL THAT MEMORY just sitting there for users who may not even be in the same room as the computer that was associated with that session. Bad. Smokey says that "Only you can prevent forest fires". Well I am saying "Only you can prevent OutOfMemoryExceptions!" You could also put it like this: "Friends don't let friends bloat their sessions."
However you say it, you need to understand the trade off between saving processing time on the database and ruining the overall ability of your application server to respond to increasing numbers of sessions and requests.
"Everything is fast for small n. Don't fall into this trap. It's an easy enough mistake to make. Modern apps are incredibly complex, with dozens of dependencies...The only way to truly know if you've accidentally slipped an algorithmic big O bottleneck into your app somewhere is to test it with a reasonably large volume of data."As an example:
A big reason for poor scalability is the abuse of memory. Everything is faster when loaded from memory, right? That's always good, right? Matter of fact, why not put everything the user sees in their session? That way all they have to do is go straight to their own little section of memory so that everything they do is fast fast fast. Hmm. Good when the n is small. Bad when the n is big. Let's say, for kicks that every user session grows to 2MB. That's not unrealistic when considering some of the data-driven applications that you use on a day-to-day basis. Not so bad, right? After all, memory is cheap! Now, let's say your application is running on 32-bit Windows. For reasons explained here, you can only fire up a 1.5 GB JVM. So let's say you have 500 active users on your system. Do the math:
1500MB total heap size - 250MB server bootstrap - ( 500 users * 2MB session ) = 250MB for processing. Now things aren't looking so peachy, eh. However! We can just cluster, right, so we have multiple JVMs running, to take advantage of all that memory! Ha! In the words of Lee Corso, "Not so fast, my friend!". The default method of session propagation is simply to multicast the session changes across cluster nodes. Now you have 1GB of user-specific crap clogging up each of your JVMs. That leaves little heap for actual system processing needs. Now, factoring in the fact that most users don't proactively log out of systems, rather letting their session lapse to timeout, and the fact that many (non-financial) systems have rather long timeout intervals, you could have ALL THAT MEMORY just sitting there for users who may not even be in the same room as the computer that was associated with that session. Bad. Smokey says that "Only you can prevent forest fires". Well I am saying "Only you can prevent OutOfMemoryExceptions!" You could also put it like this: "Friends don't let friends bloat their sessions."
However you say it, you need to understand the trade off between saving processing time on the database and ruining the overall ability of your application server to respond to increasing numbers of sessions and requests.
Labels:
java,
performance,
software
Tuesday, November 27, 2007
Thanksgiving
I had a great holiday. My mom and I drove up to good old Crawfordsville, Indiana, to spend the holiday with my grandparents. My grandfather hasn't been doing so great lately, so it was really good to see him again. We had a nice quiet turkey day where everyone ate a lot and then napped. My cousin came into town on Friday from Illinois. It was great to see him. On Saturday, we helped my grandparents celebrate their 70th wedding anniversary. To understand how incredible this is, let me give you a rundown on average life expectancy in some select nations:
United States: 77.1
United Kingdom: 77.7
Peru: 70.0
Mexico: 71.5
Canada: 79.5
France 78.8
So this means that my grandparents have been married for almost as long as most people can reasonably expect to live. Wow. Each day, the mail carrier came with a giant stack of cards from all over the country. Their local newspaper carried a small story about them (on the heels of a much longer story about their 65th anniversary), and the local radio guy gave them a quick shout-out! A nice thing about living in a small town. The flower man showed up Friday and had to make three trips to the van to bring in all the goodies. It's so nice to see such an outpouring of love and support for people who have spent their whole life spreading love and kindness to their family, friends, and community.
While I was there, I got a chance to do some reading. I took in another book by George Pelecanos, Drama City. It's another story based in the underbelly of Washington DC. This time it's about people and whether or not they can change. If you get past the grit, it's an interesting and thought provoking plot. Can people change? If they think they can't, is it because they are scared to change, or just that they really are "born a certain way". It's an interesting way of looking at the nature vs. nurture debate in the context of a crime novel. The other book I got through last week was 1812, The War That Forged A Nation, by Walter Borneman. This was a fast paced read about the War of 1812, a conflict that is really underserved by traditional history classes as taught in high school and college. I learned a lot about the causes of the war, the major players, and the incredible ineptitude on both sides that marked much of the battlefield 'strategy'. To be sure, the leaders of the early 19th century can certainly be seen in their early careers - Winfield Scott, the leader of the military campaign against Mexico, Andrew Jackson, who later ascended to the presidency, William Henry Harrison. Pretty impressive group. It was a decent book - I would recommend it.
Now I have moved on to reading Manhunt, The 12-day Chase For Lincoln's Killer, by James Swanson. I kept on seeing it in the bookstore, and coming off of reading Team of Rivals, I was drawn to it as a natural sequel. That, and still trudging through Alexander Hamilton. It's a great book so far, but still a long way to go before I can give my final report.
United States: 77.1
United Kingdom: 77.7
Peru: 70.0
Mexico: 71.5
Canada: 79.5
France 78.8
So this means that my grandparents have been married for almost as long as most people can reasonably expect to live. Wow. Each day, the mail carrier came with a giant stack of cards from all over the country. Their local newspaper carried a small story about them (on the heels of a much longer story about their 65th anniversary), and the local radio guy gave them a quick shout-out! A nice thing about living in a small town. The flower man showed up Friday and had to make three trips to the van to bring in all the goodies. It's so nice to see such an outpouring of love and support for people who have spent their whole life spreading love and kindness to their family, friends, and community.
While I was there, I got a chance to do some reading. I took in another book by George Pelecanos, Drama City. It's another story based in the underbelly of Washington DC. This time it's about people and whether or not they can change. If you get past the grit, it's an interesting and thought provoking plot. Can people change? If they think they can't, is it because they are scared to change, or just that they really are "born a certain way". It's an interesting way of looking at the nature vs. nurture debate in the context of a crime novel. The other book I got through last week was 1812, The War That Forged A Nation, by Walter Borneman. This was a fast paced read about the War of 1812, a conflict that is really underserved by traditional history classes as taught in high school and college. I learned a lot about the causes of the war, the major players, and the incredible ineptitude on both sides that marked much of the battlefield 'strategy'. To be sure, the leaders of the early 19th century can certainly be seen in their early careers - Winfield Scott, the leader of the military campaign against Mexico, Andrew Jackson, who later ascended to the presidency, William Henry Harrison. Pretty impressive group. It was a decent book - I would recommend it.
Now I have moved on to reading Manhunt, The 12-day Chase For Lincoln's Killer, by James Swanson. I kept on seeing it in the bookstore, and coming off of reading Team of Rivals, I was drawn to it as a natural sequel. That, and still trudging through Alexander Hamilton. It's a great book so far, but still a long way to go before I can give my final report.
When To Take A New Job
Whenever you read about the "most stressful life events", you always hear about deaths of a family member or friend, marriage, divorce, sickness, moving and changing jobs. All are about change. Change stresses us out. Change makes our hair fall out, eat ice cream, drink, bite our nails. Change makes you work. Change means learning new tricks, not perfecting old ones. Change means new people, new places, and new patterns. It's hard. Status quo is easy. Doing what you have been doing is comfortable. In some cases, the status quo is good. Healthy family and a great marriage, a nice place to live - these are things that you would like to continue as is. Those are things that only appreciate - they don't always depreciate.
A new job is different. First of all, let's be clear about what working is. It is renting your skills to someone for pay. You are selling your ability to perform a given set of tasks for a rate that you and your employer determine. In economic terms, you are not only selling your skills and work ethic, but also paying an opportunity cost that can be defined as "what you would be doing, learning, or earning somewhere else". When considering a job switch, you have to think of it as an investment. You are making an investment in your place of employment every bit as much as they are investing in you. As in other investments, you have to ask yourself "Am I earning as much on my principal here as I could be somewhere else?". Also up for debate are the risks presented by the unknown of another position. Now, sometimes you are at a place in your professional career where you can honestly say to yourself "I know it's time to go, things can't possibly get much worse." That's easy - get a new job. As long as you don't take a job that pays so much less that your peace of mind gained isn't equal to money lost, you always win. It's when you aren't miserable, when you aren't terribly paid, when you are challenged to an extent, when you are growing that you have to ask yourself the following questions:
1) Am I growing faster than I could grow elsewhere? Is the knowledge I can gain here available anywhere else?
2) Am I making significantly less than I could or should given my background and the positions available elsewhere?
3) What are my real goals for working? Money? Prestige? Titles? Personal growth? Pride? Societal impact?
4) What is it that I really don't like about my current situation, and would be it better or worse elsewhere?
5) Am I thinking about leaving because there is a problem that I don't want to face?
If you can answer these questions honestly, and you find yourself saying things like "I have learned a lot here, but haven't learned a lot lately", or, "Man, I had no idea someone with my experience level could make xxxx", or "I like what I am doing, but my boss causes me so much stress that I can't see myself here in the long term", then you can probably begin your job search in earnest.
The key in technical jobs is keep yourself on the right part of the skills to market expectations continuum. Essentially, it's your responsibility to keep your skills ahead of the market - you have to have the skills that are current, but also display the ability and initiative to stay ahead. Some jobs give you that for free. When they don't, either you do it yourself, or find someone else who can let you do it for pay.
In the end, if you keep yourself current, and you work hard and smart, you can move and even if it doesn't work out, you can just move again. Obviously you don't want to be a job hopper, but if you are clear and honest with yourself with respect to your goals and reasons for moving, you won't have an issue with that. So, I guess what I am saying is, move if you really should move, but otherwise look at your situation and figure out why you are moving.
A new job is different. First of all, let's be clear about what working is. It is renting your skills to someone for pay. You are selling your ability to perform a given set of tasks for a rate that you and your employer determine. In economic terms, you are not only selling your skills and work ethic, but also paying an opportunity cost that can be defined as "what you would be doing, learning, or earning somewhere else". When considering a job switch, you have to think of it as an investment. You are making an investment in your place of employment every bit as much as they are investing in you. As in other investments, you have to ask yourself "Am I earning as much on my principal here as I could be somewhere else?". Also up for debate are the risks presented by the unknown of another position. Now, sometimes you are at a place in your professional career where you can honestly say to yourself "I know it's time to go, things can't possibly get much worse." That's easy - get a new job. As long as you don't take a job that pays so much less that your peace of mind gained isn't equal to money lost, you always win. It's when you aren't miserable, when you aren't terribly paid, when you are challenged to an extent, when you are growing that you have to ask yourself the following questions:
1) Am I growing faster than I could grow elsewhere? Is the knowledge I can gain here available anywhere else?
2) Am I making significantly less than I could or should given my background and the positions available elsewhere?
3) What are my real goals for working? Money? Prestige? Titles? Personal growth? Pride? Societal impact?
4) What is it that I really don't like about my current situation, and would be it better or worse elsewhere?
5) Am I thinking about leaving because there is a problem that I don't want to face?
If you can answer these questions honestly, and you find yourself saying things like "I have learned a lot here, but haven't learned a lot lately", or, "Man, I had no idea someone with my experience level could make xxxx", or "I like what I am doing, but my boss causes me so much stress that I can't see myself here in the long term", then you can probably begin your job search in earnest.
The key in technical jobs is keep yourself on the right part of the skills to market expectations continuum. Essentially, it's your responsibility to keep your skills ahead of the market - you have to have the skills that are current, but also display the ability and initiative to stay ahead. Some jobs give you that for free. When they don't, either you do it yourself, or find someone else who can let you do it for pay.
In the end, if you keep yourself current, and you work hard and smart, you can move and even if it doesn't work out, you can just move again. Obviously you don't want to be a job hopper, but if you are clear and honest with yourself with respect to your goals and reasons for moving, you won't have an issue with that. So, I guess what I am saying is, move if you really should move, but otherwise look at your situation and figure out why you are moving.
Labels:
work job hiring
Tuesday, November 13, 2007
Veterans Day Should Be Called Traffic Nightmare Day
So yesterday Jena says to me, hey it's Veterans Day. We should drive to work. There won't be any traffic. This makes sense to me. I agree with her. We drive. Here's the catch. Veterans Day is probably the most 'unobserved' holiday in the private sector. So there are still lots of folks going to work. The DC government thought it would be a good day to observe weekend parking laws. 4 lane roads became 2 lane roads. Some 3 lane roads became 2 or 1 lane roads. Did I mention it was trash day? So the trash trucks are one lane over from the parked cars, and all the other traffic is stuck in the ONE OPEN LANE. It took me 40 minutes to go .5 miles. Not awesome. Note to self: Always take metro.
Just started reading Alexander Hamilton, by Ron Chernow. Big book. Good so far. More on this later. It's 720 pages long, so the complete writeup could take a while =)
Just started reading Alexander Hamilton, by Ron Chernow. Big book. Good so far. More on this later. It's 720 pages long, so the complete writeup could take a while =)
Friday, November 9, 2007
Lots to talk about
Since I just started this blog, it never really occurs to me to write. So as to avoid the untimely and premature death of my blog, I better get on the horse. To that end:
I have been all over the past few months. Jena and I visited my grandparents in Indiana, which is always fun. I have an amazing pair of grandparents. They are 91 and 89, and still live at home by themselves, no problem. They are a great source of inspiration. They are both so sharp and love each other so much. They live in a little town between Indianapolis and Lafayette, surrounded by a bunch of really nice people who take care of them, taking them to the grocery store, to church, to doctor's appointments, and so on. Nobody lets them do yard work. I guess that's the difference between living in the Midwest and living on the East Coast. Anyway, we had a great time. Like everyone else I know, they LOVE Jena, and Jena loves them, so it's great to get her out there to spend time with them. My grandmother taught Jena how to crochet, and we took them out on rides (they can't drive anymore). Every time I go out there, I come back more aware of just how lucky I am to have special people like that in my life.
After returning from Indiana, it was back to work, then off to New York City to do some recruiting at Columbia University. I hadn't done a career fair before, so it was fun to get out there and do some selling (hopefully I can get some help for our team too). I also, as an added bonus, got to take the train (always nice) and see my college roommate and great friend Billy, his new wife, and my friends Tyran and Kareem in Brooklyn. That was fun, although I wasn't feeling great. The career fair went well, although my feet were definitely killing me after 9 hrs of standing. The campus is beautiful, and the ride there along Central Park West was definitely enjoyable. Of course, I forgot my camera, so no pictures. Then back on the train and back to DC.
The next morning, time to drive to Hilton Head for a week of R&R with Jena and my mom. The drive was uneventful, if a little long. Once we were there, it was vacation time. We did the traditional things that you do at the beach. Sit at the pool, sit at the beach, play putt-putt (I won, extending my dominant winning streak to 3 ), eat yummy seafood (if in Hilton Head, DO NOT leave without eating at Redfish ), relax, sleep a lot. We took day trips to Savannah and Charleston, such cool cities with that old Southern charm and nifty historic districts. It was a good time had by all, and a nice way to recharge.
So, what have I been reading lately? A LOT, thankfully. My schedule has finally opened up, and while the act of traveling can be stressful and time consuming, it also affords me with a lot of downtime where I can get some reading done. So what have I read?
Free to Choose - Milton and Rose Friedman - This is Milton Friedman's 1980 rant about the pernicious nature of government's attempt to 'protect you'. It's an assault that reeks of libertarianism, while toeing the line with reality. When I was in school, I really really wish that this had been required reading. I took a couple classes in Public Economics and this would have tied together a lot of the concepts we were looking into without getting buried in graphs. Sometimes real world examples are required to make complex things clear. What I really enjoyed about this book was the discussion of government regulation, and how the only people who actually win are big business special interest groups. Ahhh, so true. It's definitely an infuriating book to read for all the silliness that it exposes. The prescient discussion of the privatization of social security is obviously very relevant 27 years later. Just sad that a paternalistic government that has failed to educate its citizens uses that same excuse when telling us that people can't handle their own money because they don't know enough. Ahhh. Anyway, it's a fantastic book. You don't need a background in economics to get the concepts in it, as it's written in a very lucid non-academic manner. Bravo, Mr. Friedman.
I also finally got around to reading Band of Brothers by Stephen Ambrose. By now, lots and lots of people have seen the HBO miniseries by Steven Spielberg and Tom Hanks, which was amazing. I have been meaning to check out the book, and I finally got around to it. Amazing stuff. I am something of a military history buff, and a history buff in general, but this book took you further. The amazing camaraderie and fearlessness that these men displayed during a war that wasn't driven by smart bombs and unmanned drones is absolutely striking. I simply can't imagine jumping out of an airplane, much less into a firefight behind enemy lines, then having to fight your way back to your reinforcements. Now imagine doing it repeatedly. Incredible. A very easy book to read and a great view of what it took to be a soldier in those days.
Dogs of God - James Reston - Ever read a book that made you think "Man, that was a lot of great information but who the hell was the editor?"? That was how I felt when I was reading this one. It was a book filled with interesting facts about Spain during the inquisition and the age of Columbus. All the right information was there, but instead of choosing to follow a timeline or a theme (Columbus, the exile or forced conversion of Jews, and the final showdown with the Moors), Reston skips around in time and in theme. It made the book far more confusing and far less satisfying than it could/should have been. Ah well, you can't win em all.
I also read a few guilty pleasure-type books, none of which are really worth discussing here (I was at the beach!).
I have been all over the past few months. Jena and I visited my grandparents in Indiana, which is always fun. I have an amazing pair of grandparents. They are 91 and 89, and still live at home by themselves, no problem. They are a great source of inspiration. They are both so sharp and love each other so much. They live in a little town between Indianapolis and Lafayette, surrounded by a bunch of really nice people who take care of them, taking them to the grocery store, to church, to doctor's appointments, and so on. Nobody lets them do yard work. I guess that's the difference between living in the Midwest and living on the East Coast. Anyway, we had a great time. Like everyone else I know, they LOVE Jena, and Jena loves them, so it's great to get her out there to spend time with them. My grandmother taught Jena how to crochet, and we took them out on rides (they can't drive anymore). Every time I go out there, I come back more aware of just how lucky I am to have special people like that in my life.
After returning from Indiana, it was back to work, then off to New York City to do some recruiting at Columbia University. I hadn't done a career fair before, so it was fun to get out there and do some selling (hopefully I can get some help for our team too). I also, as an added bonus, got to take the train (always nice) and see my college roommate and great friend Billy, his new wife, and my friends Tyran and Kareem in Brooklyn. That was fun, although I wasn't feeling great. The career fair went well, although my feet were definitely killing me after 9 hrs of standing. The campus is beautiful, and the ride there along Central Park West was definitely enjoyable. Of course, I forgot my camera, so no pictures. Then back on the train and back to DC.
The next morning, time to drive to Hilton Head for a week of R&R with Jena and my mom. The drive was uneventful, if a little long. Once we were there, it was vacation time. We did the traditional things that you do at the beach. Sit at the pool, sit at the beach, play putt-putt (I won, extending my dominant winning streak to 3 ), eat yummy seafood (if in Hilton Head, DO NOT leave without eating at Redfish ), relax, sleep a lot. We took day trips to Savannah and Charleston, such cool cities with that old Southern charm and nifty historic districts. It was a good time had by all, and a nice way to recharge.
So, what have I been reading lately? A LOT, thankfully. My schedule has finally opened up, and while the act of traveling can be stressful and time consuming, it also affords me with a lot of downtime where I can get some reading done. So what have I read?
Free to Choose - Milton and Rose Friedman - This is Milton Friedman's 1980 rant about the pernicious nature of government's attempt to 'protect you'. It's an assault that reeks of libertarianism, while toeing the line with reality. When I was in school, I really really wish that this had been required reading. I took a couple classes in Public Economics and this would have tied together a lot of the concepts we were looking into without getting buried in graphs. Sometimes real world examples are required to make complex things clear. What I really enjoyed about this book was the discussion of government regulation, and how the only people who actually win are big business special interest groups. Ahhh, so true. It's definitely an infuriating book to read for all the silliness that it exposes. The prescient discussion of the privatization of social security is obviously very relevant 27 years later. Just sad that a paternalistic government that has failed to educate its citizens uses that same excuse when telling us that people can't handle their own money because they don't know enough. Ahhh. Anyway, it's a fantastic book. You don't need a background in economics to get the concepts in it, as it's written in a very lucid non-academic manner. Bravo, Mr. Friedman.
I also finally got around to reading Band of Brothers by Stephen Ambrose. By now, lots and lots of people have seen the HBO miniseries by Steven Spielberg and Tom Hanks, which was amazing. I have been meaning to check out the book, and I finally got around to it. Amazing stuff. I am something of a military history buff, and a history buff in general, but this book took you further. The amazing camaraderie and fearlessness that these men displayed during a war that wasn't driven by smart bombs and unmanned drones is absolutely striking. I simply can't imagine jumping out of an airplane, much less into a firefight behind enemy lines, then having to fight your way back to your reinforcements. Now imagine doing it repeatedly. Incredible. A very easy book to read and a great view of what it took to be a soldier in those days.
Dogs of God - James Reston - Ever read a book that made you think "Man, that was a lot of great information but who the hell was the editor?"? That was how I felt when I was reading this one. It was a book filled with interesting facts about Spain during the inquisition and the age of Columbus. All the right information was there, but instead of choosing to follow a timeline or a theme (Columbus, the exile or forced conversion of Jews, and the final showdown with the Moors), Reston skips around in time and in theme. It made the book far more confusing and far less satisfying than it could/should have been. Ah well, you can't win em all.
I also read a few guilty pleasure-type books, none of which are really worth discussing here (I was at the beach!).
Wednesday, October 17, 2007
Why Is It That If You Use An IDE You Aren't A 'Real Programmer'?
I was perusing dZone and I ran across an interesting blog post that applies the Pareto Principle to software developers. I agree with most of the sentiments shared by the author, but one thing got me:
We don't use Eclipse because we are part of some herd that is shepherded through our careers by the big players like Microsoft, Oracle, BEA, IBM, or the Eclipse Foundation. We do it because it's easier. We do it because we could try to remember the exact method calls on String, and which argument does what, but we don't really feel like it. We do it because it allows us to refactor throughout a large codebase without pulling our hair out. We do it because we like the plugins that all those awesome "20 percenters" developed for us. We do it because we can use the debugger to figure out the problems that we would otherwise spend hours fixing by sifting through System.out.println() statements.
I can understand why people would postulate that IDEs make programmers lazy. This can be true in some respects. You should probably learn how to build programs and compile and execute at the command line. You certainly shouldn't be doing builds out of them, or using them as a production deployment tool. Some people can be misled into thinking that an IDE is all they need. That's not true at all, but writing good software is not just a matter of what tool you use (or don't). You can write terrible software in any editor, even vi! It's about understanding the business requirements, understanding how your users use the system, and how to create code that is easily reused and easily maintained. I just think that having a better holistic view of your codebase makes a world of difference. There are too many advantages to using IDEs to NOT use them.
But I could be wrong =)
"The 80% folks make up the bulk of the software development industry. They’re not stupid; they’re merely vocational. They went to school, learned just enough Java/C#/C++, then got a job writing internal apps for banks, governments, travel firms, law firms, etc. The world usually never sees their software. They use whatever tools Microsoft hands down to them — usally VS.NET if they’re doing C++, or maybe a GUI IDE like Eclipse or IntelliJ for Java development."You see this opinion again and again in the nerdoblogosphere, and it's one of the silliest things you can say that would distinguish an accomplished programmer from an "80 percenter". I would consider myself part of the 20% that this author is referring to. I make decisions for my team to develop or refactor software that has direct impact to literally millions of students around the world. At my company we have a ton of really smart "Alpha developers" as this post refers to them. Guess what? All of them use Eclipse.
We don't use Eclipse because we are part of some herd that is shepherded through our careers by the big players like Microsoft, Oracle, BEA, IBM, or the Eclipse Foundation. We do it because it's easier. We do it because we could try to remember the exact method calls on String, and which argument does what, but we don't really feel like it. We do it because it allows us to refactor throughout a large codebase without pulling our hair out. We do it because we like the plugins that all those awesome "20 percenters" developed for us. We do it because we can use the debugger to figure out the problems that we would otherwise spend hours fixing by sifting through System.out.println() statements.
I can understand why people would postulate that IDEs make programmers lazy. This can be true in some respects. You should probably learn how to build programs and compile and execute at the command line. You certainly shouldn't be doing builds out of them, or using them as a production deployment tool. Some people can be misled into thinking that an IDE is all they need. That's not true at all, but writing good software is not just a matter of what tool you use (or don't). You can write terrible software in any editor, even vi! It's about understanding the business requirements, understanding how your users use the system, and how to create code that is easily reused and easily maintained. I just think that having a better holistic view of your codebase makes a world of difference. There are too many advantages to using IDEs to NOT use them.
But I could be wrong =)
Terracotta Clustering
A product I have been reading about is Terracotta. Currently at my company we use Tomcat's native clustering, which does session replication across all nodes - this is practical for many of our subsystems, but obviously it has to change your perspective on the way you use (abuse) the session for storage. A solution like Terracotta is great because you aren't replicating session across every JVM, and you don't have to deal with annoying things like making sure any object that is replicated implements java.io.Serializable. I hope to test it as part of some R&D for my company as a potential configuration. The architecture is explained by this diagram:
I will post an update with my experiences.
The architecture diagram would make it appear that in a clustered environment, you have introduced a single point of failure, which would be pretty counterintuitive, but of course, you can cluster the Terracotta servers as well. Effectively, Terracotta with its granular session update writes, configured in a clustered setup, should theoretically scale in a near-linear fashion. I am curious to see if this is the case. Furthermore, I am interested to see if we can integrate it with our application without having to completely hack the installer!
Some interesting links for anyone who is interested:
Interview with Terracotta
Terracotta Confluence Site
Terracotta from theServerSide
Terracotta's Scalability Story
Some interesting links for anyone who is interested:
Interview with Terracotta
Terracotta Confluence Site
Terracotta from theServerSide
Terracotta's Scalability Story
I will post an update with my experiences.
Labels:
java,
performance,
software
Monday, October 15, 2007
Sad End to a Great Weekend
Well this weekend I went with Jena to Syracuse for Homecoming. Jena was invited back by the Information Sciences school to an Alumni Career Panel where she spoke and attended a reception for current students. She did great, like I knew she would...so I got in Friday and we woke up Saturday and took a nice walk around Syracuse's beautiful campus. I can see why people want to go there. It's a great campus in a town with a lot of old-school character. The students are excited about the school and the sports. This was my second visit, the first time to watch Hakim Warrick have a dunk contest with himself against Providence a few years ago (there was also a basketball game that Syracuse won by about 30). This time I attended a football game where SU jumped out to a 14-0 lead against a tough Rutgers squad, but proceeded to lose 38-14. It was fun to take in the game - we met Jena's aunt and uncle and her cousin, also a SU alum. We then hung out in town, the flew back yesterday morning, where we watched the Redskins fumble and drop a sure win into a disappointing loss. To top it off, we walked outside as the game ended to find that my bicycle was stolen! Hrrmph. If you see a crackhead riding around the streets of DC on a bike that looks like this:
Please feel free to smack them. I loved that bike!
The trip did give me a chance to complete the Magellan book, which was an entertaining read, and then a chance to crush through George Pelecanos' book, The Night Gardener. It was a great read, as they all seem to be. Gritty crime novels all, the stories are based in Washington DC, which is great for me, as I can really picture the scenes that he sets. Pelecanos has developed a wide range of recurring characters that you can empathize with, and despite the very dark nature of most of the novels, he always sprinkles in some hope. I definitely recommend this one to anyone who likes crime novels, especially if you are a DC resident and/or native.
Please feel free to smack them. I loved that bike!
The trip did give me a chance to complete the Magellan book, which was an entertaining read, and then a chance to crush through George Pelecanos' book, The Night Gardener. It was a great read, as they all seem to be. Gritty crime novels all, the stories are based in Washington DC, which is great for me, as I can really picture the scenes that he sets. Pelecanos has developed a wide range of recurring characters that you can empathize with, and despite the very dark nature of most of the novels, he always sprinkles in some hope. I definitely recommend this one to anyone who likes crime novels, especially if you are a DC resident and/or native.
Friday, October 12, 2007
Books I Am Reading
I mentioned earlier that I enjoy reading when I get time...since I have been traveling a lot, spending a lot of time in airports, and I have been on a bit of a good book streak. Here is what I have been reading lately (not that anyone necessarily cares) =)
Over The Edge of The World - Laurence Bergreen - This is a pretty fascinating account of Ferdinand Magellan's circumnavigation of the globe, detailing the navigational challenges faced by the Molucca Armada in its search for fame, fortune, and legend as it sailed around S. American to get to the Spice Islands. It's a great account of a somewhat-maligned and ill-represented piece of exploration history. Based on a chronicle kept by Antonio Pigafetta, the ship chronicler, it tells us about the crew's relationship with the people living in present-day Argentina, and the Indonesian and Filipino islands; their ups and downs, the ever-present theme of religious mission, and the ever-present threat of mutiny that came with an untrusted Portuguese captain in a Castillian fleet. Good reading, and I have learned a lot about something that high school and college history books gloss over.
1491 - Charles Mann - Not only does the author share a name with one of the most fantastic pass rushing defensive ends for the Washington Redskins, he can also write a pretty decent account of the changing views that cultural anthropologists and archaeologists have about the "American" continent in the pre-Columbian era. As something of an Inca and Aztec history buff, it was fascinating to see some talk about the societies and daily life of those societies before Europeans arrived, not just through the eyes of Castillian historians, but from oral history and archaeological evidence. Definitely worth a read, and he has a great list of citations and further reading if he's piqued your interest.
The End Of Poverty - Jeffrey Sachs - This one starts off as a rather annoying list of the places Jeffrey Sachs has been and how he did awesome work there, then it turns to what he has learned and how he can use this knowledge to bring the rather ambitious "End of Povery" about. Economics readers may be a bit disappointed, as this book is more driven by anecdotal evidence than hard core supply/demand graphs and numbers, but for once, someone complains about something and then tells us how we should do something about it. Kudos for that - this book is definitely worth a look.
Over The Edge of The World - Laurence Bergreen - This is a pretty fascinating account of Ferdinand Magellan's circumnavigation of the globe, detailing the navigational challenges faced by the Molucca Armada in its search for fame, fortune, and legend as it sailed around S. American to get to the Spice Islands. It's a great account of a somewhat-maligned and ill-represented piece of exploration history. Based on a chronicle kept by Antonio Pigafetta, the ship chronicler, it tells us about the crew's relationship with the people living in present-day Argentina, and the Indonesian and Filipino islands; their ups and downs, the ever-present theme of religious mission, and the ever-present threat of mutiny that came with an untrusted Portuguese captain in a Castillian fleet. Good reading, and I have learned a lot about something that high school and college history books gloss over.
1491 - Charles Mann - Not only does the author share a name with one of the most fantastic pass rushing defensive ends for the Washington Redskins, he can also write a pretty decent account of the changing views that cultural anthropologists and archaeologists have about the "American" continent in the pre-Columbian era. As something of an Inca and Aztec history buff, it was fascinating to see some talk about the societies and daily life of those societies before Europeans arrived, not just through the eyes of Castillian historians, but from oral history and archaeological evidence. Definitely worth a read, and he has a great list of citations and further reading if he's piqued your interest.
The End Of Poverty - Jeffrey Sachs - This one starts off as a rather annoying list of the places Jeffrey Sachs has been and how he did awesome work there, then it turns to what he has learned and how he can use this knowledge to bring the rather ambitious "End of Povery" about. Economics readers may be a bit disappointed, as this book is more driven by anecdotal evidence than hard core supply/demand graphs and numbers, but for once, someone complains about something and then tells us how we should do something about it. Kudos for that - this book is definitely worth a look.
Performance Engineering Reading
While performance engineering isn't necessarily entrenched at many companies (outside of a few people recording and playing back LoadRunner or SilkPerformer scripts), there are some really smart people writing about it in the 'interweboblogosphere'. A couple of things I am reading about today:
Coding Horror on "little n"
jsLex - A JavaScript Profiler - saw Mr. Buffone present at JavaOne - it's a neat tool and a great idea.
Coding Horror on "little n"
jsLex - A JavaScript Profiler - saw Mr. Buffone present at JavaOne - it's a neat tool and a great idea.
Labels:
java,
performance,
software
Tuesday, October 9, 2007
Process? We don't need no stinkin process!
OK, I admit it, we do need process. We are a growing company. We have a lot more developers working here now, across more products and releases than ever, and somehow we have to coordinate that. However, I do not subscribe to the view that a successful company just all of a sudden hits a moment in time where EVERYTHING that they did just doesn't work anymore. Where all your processes that are in place are now obsolete, and things you didn't have processes for need processes most desperately. Yesterday, we were producing good software well, but today if we don't do it this new flashy way, it's just not good software anymore.
I personally think we have done a pretty good job making software. I guarantee that there is more we could do, but that we do well as is. We have a bunch of grown-ups working here, who are obviously very competent engineers, and can stay on task. We should reward them with greater freedom to explore ways to improve the software and their skill sets.
There has been a culture across different jobs I have worked at in my young career that rewards the latest acronym or fad that hits all the blogs and gets a writeup in Dr. Dobbs. Everyone needs to be doing that because somebody else does it successfully. The difference is that different people are working there. What worked there doesn't necessarily mesh here, and what has made us successful perhaps wouldn't thrive elsewhere if hoisted on another organization.
Obviously, I work for a software company, and when I leave my job, I go develop some more. When I get home, I feel so free, just to do work and screw up, and learn something new as a byproduct of it. I love the freedom of expression that comes with a blank slate and no "existing framework" or architectural standards to burden me. If our processes are so broken, why is it that the existing framework (the artifacts of said irreparable processes) is sacrosanct? Seems odd.
I wish we could take all our brightest minds and just put them to work on things like "how can we make really awesome new stuff and take the stuff that sucks and make it better", instead of, "oh well we use sprints now and the SCRUM master wouldn't be agile if the burndown is a waterfall of SDLC leverage, so we can't do that feature. But hey, we can just do it later." By then, a new barrage of process change will take up our time, and eventually the "new" feature will be based on technology that was obsolete five years ago.
When I go home, I get to decide what makes the greatest impact to users and bottom line and what will be the best way to do things right now, using traditional methods of estimation like "how much better will this make the product, and is it worth it in light of the fact that it takes n hours"? It's freedom, baby! Catch the fever.
I personally think we have done a pretty good job making software. I guarantee that there is more we could do, but that we do well as is. We have a bunch of grown-ups working here, who are obviously very competent engineers, and can stay on task. We should reward them with greater freedom to explore ways to improve the software and their skill sets.
There has been a culture across different jobs I have worked at in my young career that rewards the latest acronym or fad that hits all the blogs and gets a writeup in Dr. Dobbs. Everyone needs to be doing that because somebody else does it successfully. The difference is that different people are working there. What worked there doesn't necessarily mesh here, and what has made us successful perhaps wouldn't thrive elsewhere if hoisted on another organization.
Obviously, I work for a software company, and when I leave my job, I go develop some more. When I get home, I feel so free, just to do work and screw up, and learn something new as a byproduct of it. I love the freedom of expression that comes with a blank slate and no "existing framework" or architectural standards to burden me. If our processes are so broken, why is it that the existing framework (the artifacts of said irreparable processes) is sacrosanct? Seems odd.
I wish we could take all our brightest minds and just put them to work on things like "how can we make really awesome new stuff and take the stuff that sucks and make it better", instead of, "oh well we use sprints now and the SCRUM master wouldn't be agile if the burndown is a waterfall of SDLC leverage, so we can't do that feature. But hey, we can just do it later." By then, a new barrage of process change will take up our time, and eventually the "new" feature will be based on technology that was obsolete five years ago.
When I go home, I get to decide what makes the greatest impact to users and bottom line and what will be the best way to do things right now, using traditional methods of estimation like "how much better will this make the product, and is it worth it in light of the fact that it takes n hours"? It's freedom, baby! Catch the fever.
Monday, October 8, 2007
Welcome
Finally made it into the world of blogs. I was told I had to have one by a respected colleague, so here it is. I will try to not be what I don't like when I read, which is judgmental, snobby, ranty, snarky, etc. I will just try to point out my observations and write about what's going on in my life. Maybe this way I can keep in touch with people a bit better, since that's definitely a weakness of mine. I have a little bit to talk about between my work life and my personal life.
To introduce, I am from Arlington, VA. I am a proud graduate of the Business School at James Madison University, where I majored in Computer Information Systems and Economics. I am getting married to a wonderful woman by the name of Jena. We are tying the knot next September 6th, here in Washington DC. I work as a Software Performance Engineer at Blackboard, Inc, in Washington, DC. I live with Jena in a townhouse over near Eastern Market. It's a great neighborhood with lots to do, tons of restaurants and bars, and one sad Safeway to shop for our groceries. When we aren't planning our wedding, we love to travel, exercise, and watch sports live and on TV, and when I get time, I like to sit down and do some reading. So, hopefully I will keep this updated and it won't be one of those blogs that just dies a slow (or fast) death due to lack of interest on the poster and the readers' part!
To introduce, I am from Arlington, VA. I am a proud graduate of the Business School at James Madison University, where I majored in Computer Information Systems and Economics. I am getting married to a wonderful woman by the name of Jena. We are tying the knot next September 6th, here in Washington DC. I work as a Software Performance Engineer at Blackboard, Inc, in Washington, DC. I live with Jena in a townhouse over near Eastern Market. It's a great neighborhood with lots to do, tons of restaurants and bars, and one sad Safeway to shop for our groceries. When we aren't planning our wedding, we love to travel, exercise, and watch sports live and on TV, and when I get time, I like to sit down and do some reading. So, hopefully I will keep this updated and it won't be one of those blogs that just dies a slow (or fast) death due to lack of interest on the poster and the readers' part!
Subscribe to:
Posts (Atom)