Today I grabbed another low hanging fruit. This time it is Selenium. I had played with Selenium recorder a long time ago; I got to use Selenium recently, in a previous iteration of the current project that I am working on. At the time though, I was using Selenium mainly as a way to quickly populate a form before I actually tested it.
Even using Selenium IDE in this manner, just too quickly populate a form for manual testing, it is a huge time saver. Rather than testing every 10 minutes, one can test every couple of minutes.
But today I started moving towards using it for actual testing.
There are some issues that slow down quick adoption of the tool though.
Selenium IDE is quirky in my opinion. It doesn't behave the way I expected it to behave. I expect that the test, after I record it, will be saved. Instead, I have to manually save each case. Also, it would be nice if one could easily move the order of the tests around in a test suite. I found myself in the last few days having to create new suites just to switch the order.
And there is a conceptual switch that has to happen as well. It was only in the last few days that I realized that if the task cannot be completed, that is a test failure, not the equivalent of compilation error.
But even with these small limitations, and using it in this limited capacity, Selenium has already saved me a lot of time, and helped to bring my current project to successfully meet a very tight deadline. It has also been helpful in debugging a hard to find error, and helped to speed up integrating the system on the deployment site.
So you are going to hear a lot more about Selenium here in the near future.
This was a comment to @geobabbler 's entry on GIS for Kids
I have been thinking about teaching the children of Crunchy Granola Academy more about GIS, and I was also thinking about having some GIS activities for my daughter's Brownie meeting.
Here is the comment that I wrote on the site:
We should exchange some ideas.
You probably want to move from the concrete physical to physical maps and then into gis. And if possible, being physically present in the grounds of the place where they are mapping would be good to help the kids make the mental leap that gis translates into the real world.
I have done walking papers with my children, and that is something that they really enjoyed. It is Concrete, they have a physical map, and they get to walk around some area.
I also have had my kids in the OSM parties. In one we got the hike Rock Creek Park and in another we hiked the zoo.
I would say that the gps unit is not really that interesting to them because it doesn’t seem to do much except to show a tiny map.
However, they did like entering notes for different points on the way in a notebook.
A possible activity that you can have for them, although this will take a little bit of planning is to create a short orienteering course. We could skip the compass if that is a problem and the area is small enough, the most important thing would be to use a map to find different points in a playground or a room.
Another activity, if these are taking place at a school, would be to map their classroom, first creating maps, and then adding points of interest, then adding demographic data, such as how many children are in different parts of the classroom.
If this could then be translated into software, then the basic concepts should be understood when you move into mapping a school grounds or some local park or area.
I will have to look at Portable GIS to see if I think my kids could handle it.
I will probably cross post this comment as an entry in my website.
I noticed today that my statement about why I had to adopt best practices was very similar in emotional content to this famous moment in American cinema. Please hum the theme music as you read the text:

"As God is my witness, as God is my witness they're not going to lick me. I'm going to live through this and when it's all over, I'll never let a project become a death march again. No, nor any of my folk. If I have to lie, steal, cheat or kill. As God is my witness, I'll never let a project become a death march again..."
That is what she said. Or something very similar, I don't recall correctly.
In any case, today I aggressively used redmine, the open source project management software, to track every activity that I am doing for my current project. This is part of my efforts not to let my current project become a death march.
Redmine was introduced to me by @GeoDAWG. He set it up for the project that I am using and for the another project. If we had actually kept using redmine in the other project, we would have saved ourselves from a lot of grief.
Strengthening a practice that already exists is low hanging fruit, so I am going to go for it.
What has changed right now is that now I have the strong motivation to keep it up to date. So that is what I did today: I updated tickets, wrote new tickets, and added more items and reorganized the wiki for the project.
Before I thought updating tickets was boring; now I think it is boring, but critical.
So I am going to get serious about adopting agile practices.
Since I first read about agile development, a lot of it made sense to me. I attempted to embrace many of its practices. Some have become habits; most of them are still goals.
Since the zombie project, that has changed. Now I know that it is not only something nice to strive for, but that it is necessary, important.
And that is something that one can only earn via experience: to get that full, instant, visceral reaction to something that makes us act.
My favorite analogies to this are economic crises: most people know that they are wrong, and that they should be avoided, but those who can control the economy just don't care as long as they are making money. It is only those who have lived through deep economic crises who know the deep pain, the massive social change, and the lost opportunities that come with them. That is probably why the post-Depression political and business leaders were so careful with the economy; the boomer generation of leaders never really lived through that. But ask a person who lived through the Depression about another one, and they will passionately say that it should be avoided at all costs.
That is how I feel about software development now: crisis projects should be avoided at all costs. And that is what agile practices attempt to prevent or attempt to manage in a rational manner.
So here I go, ready to start embracing agile practices. I will be documenting my experience here. Hopefully it will be done quite regularly since I will attempt to do one action to move towards agile practices every day.
Well, I have finally enabled comments on the site. Although this is not entirely true: only new content will be have comments. I will see how good the anti-spam module is for a few weeks, and then I may figure out how to turn comments on every page.
After doing some research, it seems that there is no clear way to unit test asp .net WebForms.
ASP .Net web forms behavior collides with the current testing principles. The big one being that you only test public methods. Well, it seems that most Web Form pages don't have ANY public methods, making it impossible to test following the unit test principle. For those developers that want to do testing, it means that they have to expose the different private methods that they are using as public methods, breaking a big principle in OOD, which is that public methods are the interface to the object. So the developer who wants to unit test their code either breaks the principle of not testing privates or breaks the OOD principle of exposing as little interface as possible.
So the solutions that I have found either involves some complex code bending to allow for the testing of private methods, doing weird practices such as exposing private methods as public.
The other big solution seems to be to move to the MVC framework. Ideal solution for new projects if one has the time to learn the framework, but won't help that much if one has to work with legacy code.
The one idea that popped into my mind as I was writing this is that maybe it is possible to mvc-ize a bit the code. If every interaction of the page has to rely on objects, then we can test those objects. This seems to have some limitation in that separating database interactions may be difficult, impossible, or create greater problems that it attempts to solve. But at least it, if used properly, allow for testing of potentially breakable parts of the code.
I will experiment with this idea and see what happens.
Crunchy Granola Academy
So after almost 2 months and a half, I finally have the time to actually interact with my children.
Today I did math with Isabella again, I attempting to teach Alexander to read, and then I worked with Isabella on her homework. Then we practiced the violin. Isabella showed a surprising interest in Old Time music, and what finally got her practicing violin was her desire to learn how to play Boil Them Cabbage Down, which I am learning as well.
Isabella did two exercises in math which is good. At some point she decided that she was bad it, which really angered me because she is actually quite good at it, but hopefully in the next month she will be back to normal on that front.
Old Time Music
So after working a lot over the weekend, I decided to buy myself a present, and I got a book with Old Time fiddle music. At home there are three sources for interest in this music: interest in folk music in general mainly the easy listening pop stuff from the 60s, but some other stuff as well, my interest in contra dancing, which I barely ever do, and Railroad Tycoon.
So now I have about 60 tunes to learn. I doubt I will get through that anytime soon, so I won't buy another music book retail until I finish reading that one.
In any case, I am going to have a lot of fun with it. And it seems that Isabella likes it too.
Chess, Hebrew, Torah
These have taken a back seat right now. I will get them back on track once everything returns to normal in the following weeks.
Erlang, Cobol and Tech project
Same thing. Although there are these really cool android classes over the internet that I have been taken. I must do the task to really learned them though. Then I will create a schedule for the rest.
Exercising
That really took a back seat, and now I am all achy. I had to go to the doctor today on that. That I must start working on because I must protect my health. Let's see how it works out.
Yeah, I also wanted to start a political party. And an international political party for that since I am already making one. It is the the International Love Party, where people who are moved by love can join together, enhance their love for humanity and maybe even do something!
I will put a link to its blog soon. Hopefully the store will get up quickly as well.
This stormy weekend I got to make a number of nice silly goals. I built a snow maze in the driveway, I made another igloo, the biggest one that I have made, actually, and I built a sled area for the kids to go down our driveway. I used their sleds to snowboard down it. It was fun.
I did this in the last month over a weekend. We hiked for 6 hours in Great Falls, MD. We hiked over the park in the trails, and then we visited the vistor's center and saw this great little gate keeper museum there. Then we saw part of the falls. We were going to go to the Billy Goat Trail Section A, but then I saw the entry to Olmstead Island, which I haven't been to at all, and we went there first. It was great, and my daughter really loved the island.
Then we went to hike on the Billy Goat Trail Section A. We got to finish half of it since it got dark. We had to use the emergency trail exit. Then we hiked in the canal towpath in the darkness until we got to the car. It was really nice. :)