Search This Blog

Turning Over A New Leaf

Blue Ocean Nissan Leaf

Last week I traded in my trusty 2012 Nissan Leaf SL for a shiny, new blue 2013 Nissan Leaf S. My first Leaf was a great car. I never had any problems, and it was incredibly fun to drive. I traded it in primarily because I wanted to significantly reduce my monthly payments. (And I really wanted it to be blue. I didn't have a choice with the first one because I had to take what I could get under special circumstances.)

I knew I was going to get another Leaf. I can't imagine going back to an ICE car after having experienced electric driving. (I just discovered that that makes me a statistic. Apparently I'm in agreement with 97% of EV owners in getting another EV after the first one.) There are other options out there now, but for the price and availability, a Nissan Leaf S simply cannot be beat.

There are two Nissan dealerships in Madison. One dealership had eight 2013 Leaf S cars on their lot (three in blue) and the other had four of them. With the 2014s finally arriving, this created more than a little competition to get those cars sold. After all of the tax credits and incentives were accounted for, I ended up with a brand new Leaf for $17,200. That's insane.

I decided to lease this one because the technology is moving so fast that I was chasing the value of my car down with the loan payments. How fast? Now it appears that Nissan may have a Leaf with 135 mile range as soon as next year. At the minimum, there is going to be a big push for more range as Tesla nears release of its Model E in 2017. The current range of the Leaf is enough for my needs, but prices will continue to drop since the performance of each model year is so much better than the last. With a lease I also don't have to worry about claiming the full federal tax credit because it's taken off the price of the car up front.

Do You Notice Anything Different?

That's the first question I get when people learn that I got a new Leaf. It used to be how far can you drive, or how long does it take to charge? Now that's all old news. People want to know what's new. The driving experience of the 2013 is indistinguishable from the 2012 to me. It's still an incredibly quiet ride with silky smooth acceleration that's immediately available at a push of the "Go" pedal. There is no hesitation. The torque provided by the traction motor was reduced from 207 ft-lbs to 187 ft-lbs, but I cannot tell the difference. It's still satisfyingly quick off of a dead stop, and it can accelerate up hills and onto the freeway effortlessly.

There are a fair number of other changes, especially because I went from the high-end SL model to the new low-end S model. I'll start with a list of things not in the S ordered by how much I'm going to miss them:

Cruise Control: Yes, the Leaf S does not come with cruise control. It's a bummer, but since I very rarely leave the city of Madison, it's not that bad. I used to use it on the beltline, but I've pretty much adjusted to life without it. If I get an EV with enough range to go to Milwaukee in the future, cruise control will definitely be a necessity.

Homelink rearview mirror: I didn't care much about the auto-dimming feature, but it was nice to have my garage door programmed into a button on the rearview mirror. Now I need a clicker, and the sun visors on the Leaf are really thick. They're so thick that I can't clip the clicker to them, so I resorted to dropping the clicker in the little pocket where the electric parking brake lever used to be. That works out okay.

Electronic parking brake: Speaking of which, I actually miss the electronic parking brake. It was kind of cool, and people would always wonder what that weird humming noise was when I started my car. It had nothing to do with the car being electric. It was actually the brake releasing. Oh well, a standard foot pedal parking brake replaces it.

Touch display with navigation: The big touch display was replaced with a small color display that's pretty much exclusively used for audio features. It feels a lot less high-tech, but I really didn't use it much. It was pretty much always on the status screen to show which song was playing off of my iPod and what my (grossly overestimated) average miles/kWh were. I only used the navigation feature a handful of times, again because I rarely leave the city with it, and Google Maps is totally adequate anyway.

Automatic LED headlights: These were nice, but headlights are headlights. I just need to remember to turn them on now.

Alloy wheels: They looked nice, but honestly, I can't see them from inside the car, and their effect on the car's efficiency was probably marginal at best.

Rearview camera: I could not break the habit of turning around and looking back when driving in reverse, so I never remembered the rearview camera display until I had turned forward again to put the car in drive. I know, weird, right? Looking backward when going backward, who would have thought?

Quick charge port: I'm sure the QC port would be really useful if you needed to charge your battery fast, didn't mind stressing the battery, and could find a DC charging station. I don't meet any of those requirements, so I never used it nor felt the need to.

Car Wings: I confess, I played around with Car Wings a couple of times. I found it completely useless. I won't miss it or that stupid dialog box that I had to respond to every time I started the car.

Solar panel: I still don't understand why Nissan bothers with this solar panel. It's too small to provide much of any benefit, and it only charges the accessory battery anyway. It's still available on new SL models if you want one. I won't be interested until it's a serious panel that covers the whole roof and charges the main battery.

Aside from cruise control and possibly the Homelink rearview mirror, I could easily do without most of these features, which is why I went with the S model for this car. One feature that was introduced on the 2013 Leaf was a B-mode that enabled stronger regenerative braking. It sounds interesting, but the S model doesn't have it. That's alright by me since the regenerative braking on the 2012 Leaf was already sufficient, and there are always losses associated with it so to get the highest possible efficiency you want to avoid any type of braking when you can, even the regenerative kind. Other new features in all models of the 2013 Leaf include:

Percent battery charge meter: This is hands-down the best new feature in this car. On the dashboard display you can now select an option to display the charge percentage left on the battery, the same type of readout that laptops have had for, well, forever. It took me all of five minutes to get a feel for how the percent reading goes down during driving and started completely ignoring the GOM (Guess-O-Meter, or estimated miles left). The percent charge meter will also be a significantly better meter to use for my data collection.

15% more efficient: Nissan improved the Leaf's driving efficiency by 15%, and my first impression is that this is real, significant, and noticeable. I used to be able to do my 23-mile round-trip commute twice on an 80% charge in the summer, but with the 2013 Leaf, I can do it three times. I'll probably be able to easily do it twice in the winter now, whereas it used to be a nail-biting experience the couple times I needed to do it in the 2012 Leaf.

Drives in ECO mode by default: The normal drive mode and ECO mode are switched so that the first mode is now ECO mode. That suits me just fine because it's the mode I normally drive in. Every once in a while I like the extra pep of drive mode, but most of the time it's too touchy, and I'd rather stick with the more efficient ECO mode. All of the fast acceleration is still there anyway. You just have to push down farther on the accelerator to get it.

Larger trunk: Nissan moved the charger to the front of the car, freeing up substantial space in the trunk. Sweet.

Cabin heater is a heat pump: The new cabin heater is about twice as efficient as the 2012 standard cabin heater, so I may actually use it this winter. We'll see. The heated steering wheel and seats were enough last winter. (Update: Unfortunately, the S does not have the heat pump. Guess I won't be using it. Oh well.)

Locking charge port with light: Now if I ever use a public charging station, I can lock the plug to my charging port so no one can unplug it. It's definitely a good feature to have. I wouldn't want someone disconnecting me prematurely, and since I'm getting a Chargepoint card, I may actually have a use for it. The little light under the charge port door is a nice addition as well.

Overall, I'm very happy with the new features on the 2013 Leaf. It's definitely an upgrade from the 2012 model, and I hope that Nissan keeps refining the Leaf in the future. Even though I went from the high-end model to the low-end model, I'm extremely pleased with it. I got rid of a lot of features I didn't use, and the car feels basically the same as the old one. If anything, I'd say the seats are a little more comfortable because they're a bit cushier, and the braking is a bit smoother. The 2012 Leaf had a tendency to stick a little right before coming to a complete stop and when inching forward. Nothing major and you got used to it, but the smoother stopping is nice.

Wrapping Up The Data On The Old Leaf

I've taken all of this data on my 2012 Leaf, so I'll give a quick final rundown of the last set of data I have. Unfortunately, it's taken a while for the weather to warm up this spring, so the temperatures didn't get back up into the 80s and 90s. Because the temperature range of the data from February until now is restricted, linear regressions won't work quite as well for estimating the battery's health.

I've kept the methodology the same since the last time I reported my Leaf's mileage statistics. I record the temperature, odometer, and miles left on the GOM after every trip, as well as the starting miles on the GOM after I charge and the kWh used from the wall outlet with a P4460 Kill A Watt electricity usage meter. I use the temperatures and odometer miles to calculate an average temperature per mile driven for each charging cycle.

What follows is the same analysis that I did at the two-year mark, but I'll skip the basic post-charge GOM regressions because without the data at higher temperatures for the last time period, the regressions are pretty useless. The other main way to look at the data is to estimate what the post-charge GOM miles should be when the Leaf is fully charged, given the average temperature of the trips driven on that charge. Here's a plot of two years worth of charging and driving with the new data in green (click for a larger view):

As you can see, it's hard to tell if the Leaf has lost any more range in the last couple months. Normally, a linear regression of this data could tease that information out, but without the data at the higher temperatures, it probably won't be very reliable. Let's do it anyway.

Graph of Estimated Range in First and Second Years

It looks strange that the 2014H2 line gets so close to the 2012H2 line at 75℉. If we were to use this linear model as an estimate of how much capacity the battery has lost, it would show a loss of 15.6% at the 0℉ point, and only 3.2% at the 75℉ point. Neither of those losses is realistic. If we instead went with an average value, the battery may have lost about 9% of its capacity. However, the battery capacity indicator on the dashboard still has all twelve bars, so even 9% loss is unlikely. I'm willing to bet, given the slow degradation that I've seen before, that the battery is still at 94%-95% capacity.

The other point of interest is the validity of the Leaf's energy efficiency meter. Now that I have a few months of data that include a measure of the electricity used to charge the car from the wall outlet, we can take a look at how the mileage efficiency compares with the Leaf's meter as the weather warms up. I've broken the measurements down by month to smooth out day-to-day variations:

Leaf miles/kWh
Calculated miles/kWh
Charging Efficiency

Clearly, my calculated values are increasing relatively faster than the Leaf's reported values, resulting in closer agreement as the ambient temperature increases. I'm not sure that it's enough to make me believe that the discrepancy is entirely due to inefficiencies in the 110V trickle charger, but at least it's moving in the right direction.

The Leaf's mileage efficiency should peak at 5.1 miles/kWh in the summer, and the calculated efficiency from the wall will probably be 3.8 or 3.9 miles/kWh, giving a charging efficiency of about 75%. That still seems too low to me, as I would expect something closer to 85%. I'll have to see what happens with the new Leaf. It won't be an apples-to-apples comparison, but it will still be interesting to see what happens.

Wrapping Up

I'm very excited to have the new Leaf. It's what I really wanted the first time around, and after a two and a half year wait, I finally got it. The ride is as comfortable and fun as it was in the 2012 Leaf, and the new features, including the improved efficiency and larger trunk, are a welcome addition. I am especially happy to have a real battery charge meter. It should prove very useful for future data analysis, and it significantly improves my feel for the range of the car. It's amazing that something so simple could be the best new feature of the 2013 Leaf.

Oh, if you're in the market for a well-maintained, fully-loaded used Leaf, and you're in the Madison area, you could head over to Kayser Nissan. There's a silver 2012 Leaf with a very healthy battery at a great price sitting on the lot.

Search Strategies For Learning

Of all the skills that a programmer needs to perform well, the most essential is the ability to learn quickly. The landscape of programming is steadily changing, and the only way to keep up is to learn new things as fast as you can. Programmers are constantly dealing with new problems, using new interfaces, learning new languages, and programming in new domains. We need to make our programs faster, bigger, slicker, cleaner, safer, more robust, more secure, and more useful.

To accomplish all of these goals, we're going to have to learn. It comes with the territory, and there's no getting around it, but being programmers, we're naturally going to try to optimize it. Much of learning to do something new consists of searching for what you need to know to take the next step towards your goal. It can take the form of searching the web for documentation or tutorials, reading books that will teach you all about the subject that you need to know, or searching manuals and specs for the exact information you need for a particular task.

So learning requires a lot of searching. Conveniently, Computer Science provides more than a few search algorithms that we might find useful. Of all of the search algorithms available, the path-finding algorithms are probably the most applicable because most of the time, when programmers are learning something, we want to find a way to get from our current insufficient knowledge to a working system by following a series of logical, easily understood steps. That pretty much sounds like a path-finding problem to me, so let's look at some of the best options we have at our disposal to solve that problem.

Graphs, Vertices, and Edges, Oh My!

A graph is basically a set of objects that are connected together in some way. In mathematical terms, the objects are called vertices and the connections between them are called edges. Here is an example of a graph:

Basic graph

If you imagine grabbing the center vertex, dragging it up to the top, and shaking the graph a bit, you get a different representation of the same graph that's commonly referred to as a tree:

Basic tree

This tree could be thought of as representing a body of knowledge about a particular subject, some of which you need to know to be able to do something you want to do, like build a web page that can find the most efficient route from point A to point B or build a robot that can make your dinner. The root node is the general subject under consideration, the next level of nodes would be main topics of that subject, the next level would be subtopics, and so on. As you descend the levels, you get more and more detailed knowledge of more specific aspects of the subject.


Breadth-First Search is one of the two fundamental graph search methods. (The other being Depth-First Search (DFS), which we'll get to in a minute.) If you were looking for a particular piece of information on building and programming a robot chef, and you did a BFS of the subject, it would look something like this:

Tree with depth-first search vertices highlighted

You would start by doing a general survey of topics relating to building a robot, possibly by reading a book (or more) on the subject, researching online for general information about it, and going through reviews and documentation for a few robot starter kits. Once you had a general idea of how to go about building a robot, you could drop down a level and continue learning about each topic in more detail. At some point, you would feel comfortable enough to start building your own robot.

Of course, you can't learn and remember everything about robots before getting started, so there will be a balance between continuing the BFS and actually building the robot. The search will end up being somewhat guided by issues that come up when you run into gaps in your knowledge, but the general idea is that you take a broad view of the subject. You're trying to learn as many different topics as possible so that you'll know what's possible and have a better idea of where to look when you get stuck.

I have a particular affinity for this approach. I'm not sure if I was always biased towards it, or if an experience drove me into adopting it as my primary strategy. But if it was the latter, I can distinctly remember what that experience was.

In fourth or fifth grade, I was in Cub Scouts, and one of the activities we did at one of our nightly meetings was a worksheet that had a large number of directions on it. I can't remember how many, exactly, maybe twenty directions in total. It was supposed to be a game, and the Scoutmaster upped the ante by making it a race. The first scout to complete the worksheet correctly won a prize.

The first instruction was to read all of the directions and then do exactly what they said. What followed was a series of instructions to complete a bunch of random tasks in the white space on the front and back of the worksheet - doing math problems and drawing pictures in specific places, folding the worksheet in various ways, circling and underlining different words on the page, etc.

Everyone immediately got to work frantically scribbling on the page. Well, almost everyone did. A couple kids just sat there and read the whole worksheet, like the directions said. The last instruction simply said to ignore all of the other directions on the worksheet, draw a square in the upper right corner of the page, and put your pencil down. One other scout and I smoked the rest of the troop in that race, but even more importantly, the lesson of that worksheet really sunk in for me.

When you race to try to finish something as fast as possible without knowing all (or most) of your options, you will likely end up wasting a lot of time doing meaningless, tedious, and superfluous work. If you take some time up front to survey the landscape, you can make better choices, accomplish much more in less time, and be more aware of available alternatives. Okay, that's why I love BFS and gravitate towards it when learning new things. What about other strategies?


The analog of BFS is DFS, and getting back to our tree, it looks like this:

Tree with depth-first search vertices highlighted

If you were using a DFS strategy while building our robot chef, you would probably go out and buy a robot kit, decide on a feature to get working first, and then dig into the documentation to try to implement that feature right away. Once that feature was done, you would move onto the next one and repeat the process. Your searching for information about robots would consist almost exclusively of finding the detailed information necessary to get each feature working as fast as possible.

The advantages of this approach are that you can get something working much more quickly than if you did a BFS, and you don't waste time learning things you may never need to know. I've rarely been good at this approach because I seem to need a good overview of a subject on which to hang more detailed knowledge, and I can't integrate the necessary details for a project unless I understand how the entire system works together. Some people are really good at DFS, though, and it's impressive to see them in action.

Beyond BFS and DFS, there are a couple other path-finding algorithms that are applicable to learning.

A* Search

Nearly 60 years ago, Edgar Dijkstra invented an algorithm to find the entire set of shortest paths from one vertex to all other vertices in a graph that has cycles. It's still in widespread use today. We don't really need to find all paths, so it's overkill for our purposes. A* search is an optimization of Dijkstra's algorithm that can be used to quickly find the shortest path to a particular vertex in a graph.

A* search uses heuristics to guide the search on a graph that has edges of different weights. For the graphs of subject knowledge that we're dealing with, we can think of the edge weights as the likelihood that that path will lead to the knowledge necessary to get a particular feature working in our project. Using an appropriate heuristic to guide the search, an A* search would look like this:

It starts by examining all topics of the subject, and then picking the most likely subtopic to explore next. It ends up being a hybrid approach between BFS and DFS, combining the advantages and softening the disadvantages of both of them. With A* search you would probably find a good book to get a general overview of the topics on building robots, and then you would drill down on those topics that were the most interesting for building a robot that could cook. You may not get a working robot as fast as if you did DFS, but you'll be more well-versed in building robots in general and will probably end up with a better design.

Another feature of A* search is that it keeps a list of the next vertices to search in priority order. As each vertex is visited, the unvisited vertices connected to it are added to the list, and the next vertex in the priority queue is visited next. When studying something new, we naturally create a list like this in our heads and loosely follow it as we're looking for what we need to know. If we make that list more explicit, by keeping tabs open and ordered in our browser or taking notes on what we're reading, we can improve the heuristics we use and find what we need faster.

A* search is the gold standard of search algorithms. There are many variations and optimizations of this algorithm that work better under certain conditions, but with a good heuristic, A* search is the go-to algorithm for path-finding searches. It works quite well as a learning strategy as well. Let's look at one more search algorithm to round out our options.

Sample Search

Sample search is a polite way of saying random search. You're basically picking a topic or subtopic at random and learning about it. Sample search would look something like this:

You may be thinking, why the heck would I ever want to do that? But we do it all the time. My RSS reader is a constant stream of articles that may pique my interest and set me off exploring in one area or another. A well-curated Twitter feed would probably be much the same. (Although I haven't been able to get past all of the noise on the few attempts I've made so far.) Watching for interesting questions on or other sites would be another example of doing a sample search. Any time you come across a piece of information that interests you and you pick it up and run with it, you're unwittingly doing a sample search.

It may not be the best way to quickly learn about a specific problem that you're currently dealing with, but it's a great way to find new things that interest you that you never knew about before. And every once in a while serendipity happens, and you come across an article or a book reference during your random searching that turns out to be exactly what you need for that troublesome problem that you can't figure out.

As a primary means of learning, sample search is impractical, but the random nature of it can be the catalyst to overcome barriers that you may be running up against. That makes it quite powerful in certain situations, so it's worth keeping in mind when you get stuck.

Know Your Learning Strategies

Each of these search strategies can work well under the right circumstances. BFS works best in cases where you don't know much about the subject in question and you're going to be working with it for a long time, so you need to build a solid foundation before proceeding. DFS works best if you already have some knowledge in the area, and you need to figure out something specific that can be easily found and used. A* search works best when you need an overview of a subject before delving into one or more specific areas of interest. And Sample search works best when none of the others do, and you need something to kick-start progress again.

Different people will make better use of different strategies, so be sure to experiment and find what works best for you. I naturally use BFS because I need to know how everything works, and I can think about problems much more effectively when I have a good idea of how everything fits together. But I've used all of these approaches, and they've all worked in the right context.

The trick is to realize when a particular search strategy is not working. Don't keep plowing along with a strategy that's going nowhere. Switch it up when you get stuck and you may find that a different strategy is what you needed to find exactly what you were looking for.

Driving On Sunshine

Every once in a while you come across an idea that jolts your brain and gives you a glimpse of what the future could be like. My wife read about one such idea the other day that has the potential to completely change the transportation sector and the energy sector, for that matter. It would be a revolutionary change, not an evolutionary change, and I can only begin to imagine the possibilities. It all starts with paving the nation's roads with solar panels.

It sounds crazy, right? But Scott and Julie Brushaw at Solar Roadways have a working prototype of a solar panel that can withstand the especially harsh conditions of highway road surfaces and produce electricity from the sun at the same time. Solar Roadways have a lot more information on their FAQ, for anyone who's interested, but here's a summary from their Indiegogo campaign:
Solar Roadways is a modular paving system of solar panels that can withstand the heaviest of trucks (250,000 pounds). These Solar Road Panels can be installed on roads, parking lots, driveways, sidewalks, bike paths, playgrounds... literally any surface under the sun. They pay for themselves primarily through the generation of electricity, which can power homes and businesses connected via driveways and parking lots. A nationwide system could produce more clean renewable energy than a country uses as a whole ( They have many other features as well, including: heating elements to stay snow/ice free, LEDs to make road lines and signage, and attached Cable Corridor to store and treat stormwater and provide a "home" for power and data cables. EVs will be able to charge with energy from the sun (instead of fossil fuels) from parking lots and driveways and after a roadway system is in place, mutual induction technology will allow for charging while driving.
The panels are quite feature-rich, making the national highway system a nearly complete, integrated infrastructure that combines transportation, power generation and distribution, communication networks, and water storage. I would imagine that the panels could also be upgraded to add new features as they're thought up and developed.

It's the kind of distributed application of renewable energy that I've been thinking would come about but just couldn't visualize myself - a new application that fundamentally changes our relationship with energy the way the internet changed the way we communicate. The breadth of possibilities is astonishing, but I would like to focus on one in particular - the interaction of such a roadway with EVs. First, what could such a future look like if every road was paved in solar panels driven on with EVs? And second, what is a feasible way to get there?

A World Paved in Solar Panels

If we ignore how we would achieve such a thing, and imagine for a moment that all of our roads were already filled with solar panels, what would driving be like? ICE cars would certainly be a thing of the past, but EVs would be much different than they are today as well. For one, if cars could get the energy they needed from the road, they wouldn't need much on-board energy storage. (Not to mention how freaking cool it would be to drive on your energy source, powered by the sun.) Batteries could be much smaller than they are now, instead of needing to get larger to increase the car's range.

Take a Nissan Leaf, for example, with its 24 kWh battery pack. It has about 80 miles of range, but how much battery capacity would the car really need if it got nearly all of its energy from the road through inductive charging? Certainly not more than a quarter of its current range would be necessary, but maybe 10 miles or even 5 miles would be sufficient. As the battery capacity drops, so would its weight, reducing the load on the drive motor and making it more efficient.

The battery would also probably be more advanced and thus higher energy density, reducing the weight even further. So would a 1-2 kWh battery be sufficient? A car with such a small battery could charge much faster than today's EVs, and you probably wouldn't have to ever plug it in anyway because it would charge from the road. Of course, it would also be much less expensive as well. Considering that the Leaf's battery likely costs well north of $10,000, such a car would probably cost half of what the Leaf does now.

EVs would not only get energy from the road, but information as well because the panels all have communicating microprocessors in them. It's a smart road, and it would make autonomous vehicles much easier to develop and coordinate than they are now. If every car could communicate with the road and each other, accidents could be all but eliminated, traffic congestion could be substantially reduced, and cars could form highly efficient drafting trains to further reduce energy usage. These are all benefits that could be achieved by autonomous vehicles without a smart road, but with a smart road, the number of sensors needed on the car could be dramatically reduced and the amount and quality of information used to make decisions could be much better.

A self-driving car would also provide the obvious benefit of relieving the driver to do other more productive or enjoyable things. So, a solar road could enable cars that never have to be charged or fueled up, automatically take you safely where you want to go, and cost less than today's dumb cars do. Can I have one now, please?

Getting There From Here

Obviously, we're not going to go from today's asphalt roads and ICE cars to smart solar roads and autonomous EVs overnight, but that's the beauty of this type of technology. Solar panels could easily be added to sections of road, piecemeal at first, and gradually more extensively as the production ramped up and the idea caught on.

Even without inductive charging EVs or autonomous vehicles to take advantage of the most advanced features of the panels, the road would immediately provide substantial benefits in power generation, and all of the other things mentioned above. Installing solar roads would have zero impact on the ICE cars that most people have, and there's no reason why new ICE cars couldn't also take advantage of the sensors and communication abilities of the solar roads and add autonomous features as well. People that needed ICE cars for their range to get between sparsely paneled sections of road wouldn't have to switch to EVs prematurely.

As solar roads became more connected and pervasive, people could move to EVs and the EVs could begin reducing their battery capacity. The transition could be completely incremental, without requiring any drastic shifts in production or forced decommissioning of ICE vehicles. Although, I would imagine when a certain area reached a critical mass of solar roads and autonomous EVs, all of a sudden everyone would switch over, like everyone did with smart phones and flat panel TVs. The benefits would be too great to ignore.

On the production side, factories could be built in a distributed way so that panels could be sourced more locally to where they're needed, creating thousands of new jobs across the country. If all of the roads were to be repaved with solar panels, a lot of factories would be needed to produce all of those panels for quite a long time, and some number of factories would be needed indefinitely for replacing damaged panels and paving new roads. Building that kind of manufacturing infrastructure would give a huge lift to our economy, likely for decades to come.

The possibilities are fascinating to think about. The Interstate Highway System cost about $500 billion in 2014 dollars, took 35 years to build, and completely revolutionized transportation and our economy. A project to pave the nation's roads in smart solar panels would be even larger in scale and would have an even greater impact on our economy's health and vibrancy. Do we have the political and financial will to undertake such an awesome endeavor? I hope so. It will be a total game changer.

The Programmer's Curse

I have this issue, or maybe it's more of a peculiarity. Let's call it a curse. I like to build things more than use them. This curse is most recognizable to me when I'm programming. It normally goes something like this. I'll be deep in thought, trying to figure out how to fix some bug or add a feature to a program I'm working on. It will occur to me that once I get this part of the program working, I'll have reached a significant milestone, and the program will have enough functionality to be much more useful than it was before.

You may think that such a thought would be positive and motivating, and that used to be the case. But then I would reach the milestone, make sure the program is working properly, clean up and check in the code, and sit back and think, okay, now what? I used to think that reaching a milestone would result in a great feeling of satisfaction, and I would be able to sit and play with the program for a while, enjoying my accomplishment. But what I've found is that the destination is surprisingly anticlimactic.

Don't get me wrong, it is very pleasant to have overcome a hard programming problem and have working code to show for it. But that's not nearly as interesting as tackling the next challenge. It's the next problem that keeps me going and gives me the greatest enjoyment, which is a good thing I suppose, because there's always more bugs to fix and more improvements to make.

I've noticed this curse in other things as well. Take LEGOs, for example. I used to love playing with them as a kid, and now that I have two kids of my own, I figured that would be a good excuse to start playing with LEGOs again. Now I'm realizing that I never really liked playing with LEGOs. I only liked building with them. Once a set is built, the best thing to do with it is take it apart again to build something else. LEGOs are much more interesting when they're in pieces than when they're put together. The problems are limitless, and as yet to be solved. The challenge awaits.

The same thing applies when I'm creating art. I used to do a lot of throwing when I had access to a potter's wheel in school, and the most enjoyable part about it was the act of creating the pots on the wheel with my own hands. I couldn't have cared less about the finished product, except for the occasional exceptionally good piece.

All I wanted was to be in the moment of creation, watching the soft clay spin through the mold of my hands and take shape. Each lump of clay was a problem to be solved, and I thoroughly enjoyed working through every one of them. I could easily produce a dozen mugs or bowls a week working only forty minutes a day, if my teacher hadn't required me to fire and glaze my pieces.

Maybe it's not so much a programmer's curse as it is a builder's curse. I'm too busy building new things to have much time for using the stuff I've already built. Besides, there's a whole pile of improvements to make on any given project. If I'm not chasing down a bug or designing a new feature, I feel like I've been set adrift without drive or direction.When I'm working on the next feature, I have purpose.

I'm learning to embrace this programmer's curse. I no longer think much about how great it will be to get the next thing done. I accept that there will always be yet another thing to do after that, so I enjoy the challenge I'm working on now. When I've solved it, I pocket the satisfaction of the achievement and quickly move on to the next task. It's a matter of loving what you're doing more than what's already done. Every once in a while you'll look back in amazement at what you've accomplished, but the real pleasure is in the moment, here and now.