Yet Another Project

I have way too many projects as it is, but I keep adding to the pile.  For quite some time, I’ve been lamenting the fact that there is no good headless browser for the .NET runtime (IMO).  There are ways to drive a full-fledged browser (Watin), there are simple implementations (SimpleBrowser, etc), and then there is the option of trying to host a Java-based browser inside your .NET app (HtmlUnit).  I have written plenty of web automation using existing libraries like this, but they usually run into issues.  Using Watin in a multi-threaded content crawler, for example, usually results in memory exhaustion or a bunch of COM/Interop exceptions when trying to walk 90,000 pages.

So this prompted me to finally take the plunge and take a shot at writing a purely .NET, headless web browser.  Sounds crazy, but after a day into it I am a lot further along than I thought.  The great thing about modern software development is that a lot of the components you need are usually already out there.  My goal:

  1. Develop a fully-functional, fully-compliant, purely .NET Level 3 Document Object Model.  I think I’ve managed to achieve Level 1 compliance in the first day and I am attempting to add Level2 and Level 3 compliance today.
  2. Fully support JavaScript and CSS.  JavaScript support is achieved through the use of the Jint library.
  3. Retain a small memory fingerprint.

After one day the browser is able to perform simple requests and perform simple JavaScript tasks (jQuery support is still a way off, though):

var WebBrowser = new WebBrowser()
{
EnableJavascript = true,
EnableDotNet = false,
Timeout = 15000,
UserAgent = new Firefox9Agent()
};

Browser.NavigateTo("http://www.google.com/");
Browser.CurrentDocument.Forms[0]
.Populate(f => f.SetValue(f.FindById("q"), "KLF Web Browser"))
.Click(e => e.id.Equals("btnG"));

Sorry, Target, but you have no right!

I am all for stores asking a customer for ID to verify age when buying tobacco, alcohol, or other age-restricted products. But stores should only have the right to look at a valid document for the purposes of verifying this information. They should not have the right to record every bit of your personal information. But that is what the Target corporation is asking for when they scan your ID card. The information contained in the barcode probably varies by the issuer, but take a look at what is contained in the Washington State driver’s license information. Would you let someone take a copy of all this information to the backroom copy machine just to make a $10 purchase? I won’t, and furthermore, I don’t think they should have the right to ask for it in the first place.

You want to look at my ID to verify my age? Great! You want to record all my biometric data? Kiss my … and while you’re at it, put all the stuff in my cart back on the shelf because I won’t shop at a store that believes they have the right to ask for such information.

If you think I’m just being irate… well, you could be right, but there are plenty of other people who feel the same way (Google “target scanning your ID”).

Fred

pissedconsumer.com

Consumerist.com

Papers Please!

Thanksgiving at Last







It has been a lot harder to arrange visits with my daughter Kristin, now. She is growing up fast and I am missing so much of it. We did get to finally have Thanksgiving together with the family, though. I made up a full holiday meal like I used to years ago, including:

  • Fully dressed, oven-baked turkey
  • Cooked ham
  • Stuffing
  • Garlic mashed potatoes
  • Mashed yam with butter and brown sugar
  • Green bean casserole
  • Freshly baked rolls
  • Norwegian red cabbage
  • New item: Swedish meatballs (turned out awesome)

Happy Thanksgiving!



Time seems to be flying by these days and the holiday season is here again already. I took my first vacation in a really long time this month. Oh so worth it! I flew out to the east coast starting in Raleigh, North Carolina, where I saw my friend Sky for the first time in a long time. Sky thinks I should move down to North Carolina where the tech sector is strong and you can buy a monster house for relatively little money. Hmm. I don’t know that I am ready for a move like that, yet.


From Raleigh, I traveled north into Virginia to visit my friend Cathy. The last time I saw Cathy was just after my first wedding! I was really wanting to get in a game of gin rummy but her husband David was too tired. Maybe next time! She liked Sky’s suggestion to move to the south, too. The contrast between Cathy’s home town and Raleigh were pretty striking. It was like entering a different county with the accents… even Cathy has a southern drawl, now!




The final northward leg of my trip took me into the Washington DC/Maryland area where I was able to see my cousin, Ragnhild, her husband Bjourne, and their daughter/my cousin Johanne (who all moved here from Norway recently). Also, my “Tante” Ingrid and Uncle Thor were there as well (which prompted my trip in the first place). Staying at Ragnhild’s place was like staying at a spa! Ragnhild/Bjourne just had a 40 foot lap pool and in-ground hot tub put into their back yard and their house is huuuge. And the weather? Could not have asked for better. It was in the mid 70′s and sunny the entire time!




I could have easily taken another day or two to take in all the sights in Washington DC. I walked for a good 6 hours around the nation’s capital, but there was just too much to see. I will have to take another trip back there, I guess, but I am really wanting to visit Europe again. My cousin and her husband have a place in Spain on the Mediterranean and I really want to see that! Perhaps this next summer! I had a great trip, but I really wish Kristin could have met her Norwegian relatives.

Anyway! Happy Thanksgiving everyone!

Need a REAL Vacation

The semi-annual trip to Silverwood for “Scarywood” has come and gone now, but I am feeling the need to take a real vacation. It’s been over seven years since I’ve flown somewhere to get away and even then it was just a trip to Vegas.

67 Shopping Days Left!

For the first time in a long time, I’ve started to do my Christmas shopping early. I am not sure why this is… probably because retailers are already in that mode and when I see something that would make a great gift I just go ahead and buy it (dang those retailers). The downside is that I have presents sitting around for longer, but the upside is that I don’t have to rush around at the last minute trying to find that perfect gift!

Just In Time For Winter!

The New Year is supposed to be the time to say ‘Out with the Old and in with the New’ but when your furnace fries, you really can’t wait that long!  Thankfully, my good neighbor happens to be in the heating and AC business.  Not only is he a good neighbor, but he does great work!

Old FurnaceI was sure that this job was going to be a pain since my furnace is located in a rather cramped space in my basement, but Scott got in there no problem and swapped out the furnace in two hours flat.

New FurnaceThe new furnace is now in place and looking sharp. Gone is the old duct tape patch job that the previous owner had and it is now fitted with custom-built ducting that fits just right. So bring on winter! Bring on the snow! As long as the power stays on I am ready! If your house isn’t ready for winter and/or your heater, heat pump, etc, need work then I strongly recommend Haas Heating!

Google+ API Released

Well, as you can tell from title, the wait for the Google+ programming API is over and it seems like we’ll be waiting a while longer for a real API to come along.  The initial offering from Google has only a few, read-only methods available.  The dates in the headers insinuate that this code was written in 2010 and if that were the case I would expect it to have a lot more functionality.  I understand that Google is being cautious, but *yawn* I am reeaally loosing interest in this platform, now.

Amazing Weather!

I just got back to work after a 5-day “staycation” and I could not have asked for better weather! The long weekend was a mixed bag, though. I went fishing for the first time in a looooong time and I even caught something I could cook for dinner! I had jury duty, but thankfully there were no cases to be heard and we all got to go home (apparently there was a phone number I could have called to find this out ahead of time, but most of us didn’t realize that). I tackled and finished a couple of plumbing projects around the house: Fixed three breaks in the sprinkler system and a broken sink trap in the basement (I heart plumbing).The unfortunate things were that I did not get to see or talk to Kristin all weekend and I broke my main pair of glasses. I sometimes fall asleep with them on and have to bend them back in shape in the morning. I guess that bending them back in shape too many times finally took its toll.
I also managed to finish up my weekend project: A custom invoice generator. It uses .NET web services to talk to a home office, collect data, and collate it into invoices using Word automation.

EWU vs. UW Football

Wow.  I would not have expected to ever see this college football match-up for quite a while, but the EWU Eagles will be playing the upper-division UW Huskies on September 3rd, 2011.  While the Eagles did win the FCS national title last year, they go into this game down 14 of their seniors from last year, including J.C. Sherritt and star Taiwan Jones who was the 4th round draft pick of the Oakland Raiders (good luck with that).  I would have been curious to see last year’s championship team play UW, but I have misgivings about this match.  It’s good for EWU to play an upper-division school and maybe get another in-state rivalry going, but at the same time I’m dreading the actual outcome!  All I can say is, “GO EAGLES!”

[UPDATE: Final score: UW 30, EWU 27... the score alone does not do the game justice, though.  As one UW friend of mine said: "The Huskies have nothing to be proud of."].

Next Page »


a

 

January 2012
M T W T F S S
« Dec    
 1
2345678
9101112131415
16171819202122
23242526272829
3031  

Pages


Follow

Get every new post delivered to your Inbox.

Join 301 other followers