Saturday, February 19, 2011

Entity Frameworks and Spatial Data

So as part of my new job I've begun self edification in ORM (Object Relational Modeling). I've been asked to evaluate methods to use .Net 4.0 Entity Frameworks with spatial data. The rub being that the framework currently doesn't support SQL server's spatial types.

After a lot of reading and some experimentation I think I've found a solution. There are some basic requrements I am trying to meet. First the solution needs to accommodate frequent rebuilds of the edmx model. I expect developers on my team to be making frequent changes and I don't want to be constantly making hand edits to xml. Second I need to allow for spatial queries - can't just axe spatial support altogether.

So first I built the model from the database using the wizard. No problem - I get the usual warnings that the tool will skip spatial types. No way to access the spatial data via EF.

I read that we can store spatial data as a varbinary in sql server. So back to the db to add a binary column. Put on a trigger to handle keeping the spatial column and the binary data in sync with a re-cast of binary data inserts or updates. Now back to visualstudio to rebuild the edmx. Sure enough same warnings but now I have my binary column that I can, with the addition of a patial class, cast to a spatial object. Additional casts back in the set method and I'm writting binary data back through EF. With my after insert trigger to keep things copacetic I am in business!

Just have to add some stored proceedures or explicit sql for spatial queries and done.

Monday, January 17, 2011

New beginings

So after starting my new foray into PHP dev with the Forest Service two things happened. The birth of my second daughter and a new job. Needless to say this, along with the holidays has occupied my time for the last few months.

The PHP project has completely stalled out due to my time constraints. It will now be progressing in a different direction with me providing some ad hoc support instead of a wholesale rewrite. Probably not much to share there I think.

My new job is now in development. I'm a database developer working on a project to replace some legacy applications. As part of that I've been asked to own and work on the data access layer. Now I've done some .Net development in the past and I've written some DAL code, but alas that was in .Net 2.0 and things like Linq to SQL and other object relational modeling systems have come to fruition. I will be frantically ramping up to grok as much as I can as things get cooking.

Monday, December 20, 2010

SSIS and Lego Mindstorms

So I've begun to skill up on Sql Server Integration Services (SSIS) in anticipation of starting a new job. My hope was two fold - to accomplish a professional development goal (MCITP Database Development Certification for 2008) and hit the ground running in my development role after the first of the year. So I went to crack open the Business Intelligence Development Studio (BIDS) and a self paced training kit. Much to my surprise the components in BIDS reminded me of Lego's integrated development environment.

It had been a long time since I've used BIDS for much. In previous development endeavors I was dissuaded from using SSIS or reporting services as they required exceptions in the production environment. Not since I studied for my exams for SQL Server 2005 had I really looked at SSIS and then it was with the intent of obtaining just enough proficiency to pass the exam.

In this last pass though it was apparent that fundamentally the two were very similar in their graphical syntax. For instance SSIS has the same "sequence containers" and "loop containers". Control structures do not have the same striking similarities but the concept of dropping graphical objects and linking them in sequences to accomplish a goal remains the same.

Less than a decade into my career, I fear my 8 year old son is already poised to surpass my technical skills.

Saturday, November 20, 2010

Silly String Shooter


Ok so after over a year of messing about I finally have completed my Silly String Shooter. It serves no higher purpose other than to optically recognize a threat and neutralize it with gooey silly string.

Here we have it with the heavy duty missile switch to arm the device, a potentiometer dial to adjust for range and an arcade over ride button to commence firing at will.

To begin I started with some basic hardware and an arduino. A friend, Andy suggested using a hinge to depress the button on the spray can. I also had some scrap wood, some "L" brackets.

After I roughed in a vertical post I mounted the servo and hinge. I cut and bent a wire coat hanger for the armature to operate the hinge. This worked marvelously.
I then proceeded to wire up an IR sensor and mount it to one side of the post (so as to "see" around the can of projectile goo).
I found what I thought was a reasonably sized enclosure for the arduino and such and proceeded to stuff it to the gills with buttons, dials, batteries and switches. Here is a shot of what is contained in the enclosure. Basically a battery, arduino, a dev shield, and the aforementioned external controls.
With a little bit of code I can use the powered up arduino to react to 2 different stimuli. The arcade button when depressed sends the servo into a pulsing fire mode that squirts unsuspecting intruders or kittens with silly string. Alternatively by arming the device and setting the distance with the potentiometer knob, perpetrators that break the IR beam are squirted automatically.

Check out the video for a crude demonstration.



Wednesday, November 3, 2010

New adventures in development

So I've undertaken a new project this past fall. I felt compelled to share what few skills I have with the Forest Service. It seems they have some volunteer websites they use to track volunteer hours, trail conditions, plants etc that could use some work.

Initially it seemed like a fairly simple task to knock off the rust from my php / mysql skills and sort out a few pages. Now it appears to be a slightly more daunting task with little or no documentation for the current site and a fairly complete data model for a go forward site. I expect some additional forensic work this week and some real coding soon.

Additionally, I've been reading blogs on SQL Server Central since catching Steve Jones at SQL Saturday #52. He had some interesting perspectives on creating a personal brand and the state of the modern resume. From now on I hope to post with more focus and regularity. I hope that with the new look and some discipline I can share my professional and volunteer experiences.

Tuesday, August 4, 2009

Making Maibock

So I got a few minutes now that the move has more or less concluded. Soon I hope to be firing up the soldering iron to prep for robothon! Mini sumo here we come. Additionally I want to get the arduino to log some temperature data from inside the mash tun. Projects whoo hoo!

This message has been sent using the picture and Video service from Verizon Wireless!

To learn how you can snap pictures and capture videos with your wireless phone visit www.verizonwireless.com/picture.

Note: To play video messages sent to email, Quicktime@ 6.5 or higher is required.

Wednesday, April 15, 2009

Fire in Motion


Criteria Met! Tinkerbell took off from the start line the first and second run. During the second run sparklers were aflame and I can now check autonomous robot on fire from my must do list. Now that I have a better idea of the terrain and the conditions (a beautiful Colorado day), I hope that there is another competition next year that will afford me the time to improve on the platform. All and all a great showing by all the competitors! There were some that ended up in trees or the drink, but I think everyone had a good time. Sparkfun put on a great event - and now I have as much time as I will ever have to prepare for the next one.