Thinking outside the box

SteelePrice.Net

My Links

Twitter Updates


Get Microsoft Silverlight
follow me

Article Categories

Archives

Post Categories

Image Galleries

Dot Net

General

Linux

OneNote

Windows

TechED Bloggers
Visual Basic Bloggers (OPML)

Thursday, June 26, 2008 #

Silvester - A Silverlight Twitter Widget

I have updated the Twitter widget on the right to Silvester.

Silvester - A Silverlight Twitter Widget

I did this for a couple of reason.  I really wanted a low impact Silverlight Widget on this page, and Silvester provides the best Twitter interface for a Blog that I have seen so far.  I took me a whole 5 minutes to do the update to the markup to place it on the page. 

Someday I wall actually update this blog engine to something recent... I don't want to go through the hassle of moving all my content and figuring out how to deal with the permalinks, not that I have so much traffic, I just want to do that because I have links to my own posts referenced all over the place in OneNote and I don't want them to become useless, a permalink is supposed to be permanent.  I will write a handler to do it when I have time and enough inclination to change engines.

posted @ 12:48 PM | Feedback (0)

Silverlight Control Contracts Diagram - For Skinning (Quite useful)

Tired of digging into controls with reflector or wading through the XAML from Blend and trying to figure out what is comment between controls?  This diagram is quite helpful when you are creating new styles and wondering what to include.

Silverlight Control Contracts Diagram - For Skinning

This was featured on Silverlight Cream #226 a while ago, but I just discovered it.

posted @ 12:10 AM | Feedback (0)

Friday, June 20, 2008 #

BitNami and Development Installations

I just discovered Bitnami... How have I never seen this before? I know about all the VM Appliance stuff and I use it occasionally but I really don't like VMs.  It's not a matter of speed really,its just a personal opinion for how I like to run things.  I used to really like VMs and I do still run several, the thing is, what if I want to install something like Redmine on a Windows machine then decide I don't need it on that machine, uninstalling from most other techniques are a horrid experience, usually easier to repave.

BitNami stacks make it incredibly easy to install your favorite open source software. Application stacks include an open source application and all the dependencies necessary to run it

BitNami :: BitNami Stacks

Bitnami changes that by making everything run in an isolated place that you can just nuke if you don't want it and everything continues on, no registry problem, no DLL Hell (which we still have no matter what the Marketroids tell you).  So far I am very pleased with what I am seeing, especially from the Ruby Space.

Microsoft needs to learn about how to make installations simple.  Installing Visual Studio is an all day process, and if you screw it up or put anything beta on that installation, repave is the only real way out.

I would really like to see Microsoft make Installable Appliances that live independently of my OS.  There is really no reason this cannot happen today and in Windows 7 this would be a great target of opportunity, but it won't happen due to what.... backward compatibility.

You know what... I don't care, they should just bite the bullet and make a real 64bit OS that is hardened and nothing can touch it except itself.  All programs should live in a sandbox that we can destroy at will.  How long does it take to copy a DVD? 5 Minutes, 10?  that is how long it should take to install Visual Studio.

posted @ 6:30 PM | Feedback (0)

Tuesday, June 10, 2008 #

Telerik releases a CTP of their Silverlight controls

via Tim Heuer: Telerik drops some Silverlight control goodies

One of the things I love about the Microsoft developer ecosystem is the partner channels that are enabled to create great add-ons to our platforms and frameworks.  Our partners in this space usually get to the better implementations before we do, taking on the task of filling some gaps in unique implementations while our teams can focus on providing the best framework for enabling that construction.

Their controls implement support for DataBinding, the new VisualStateManager model, Templates/Styles, etc.  Some of the controls they are providing are some that you may find interesting or enhance the existing control suite from the Silverlight core:

    • Menu
    • TreeView
    • Upload
    • RadCube
    • RadNumericUpDn
    • RadProgressBar
    • Animation framework

One of their key features is they’ve decided to make these source code compatible with WPF.  The full WPF are not yet available.  You can download the CTP for free right now on their site and view some sample implementations on their sample site.

I have had the pleasure of working with Telerik for several years and have found their controls indispensable for building my applications.  If their Silverlight Controls even remotely compare to the quality of their Asp.Net controls, I will be finding them at the top of my tools list as well.

One of the great things about Telerik is that when you post something on their Forums, they respond quickly, offer demo code to get you going and fix reported bugs (within reason) in the next available version and sometimes will even send you an immediate hotfix. This sort of customer care is what I really admire about Telerik.

I expect to see many more controls coming in the official release, these are just a few to get us started.

posted @ 2:31 PM | Feedback (0)

Friday, June 06, 2008 #

Silverlight 2 Beta 2 Downloads available

Still no sign of Blend 2.5 June CTP yet, will post as soon as I find it.

Jeesh! I don’t know why they seem to make this stuff so hard to find. Here they are, more later:

Silverlight 2 Beta 2 Download (4.66 MB)

Silverlight 2 Beta 2 Documentation (50.3 MB)

Have fun!

Peter Bromberg's UnBlog: Silverlight 2 Beta 2 Downloads

 

Note: from the Silverlight Forums -

The reason the links were not publicly announced is that everything is still being tested.  Part of that testing includes actual customer deployment scenarios from live servers, so the links are up but not made public before we're actually done.  We did find a couple problems during this phase, and recommend that you do NOT install until we actually announce the release.  VS Tools and Blend will be available at that time.

To address upgrade questions already appearing in this thread: updating the runtime and VS Tools will not require an uninstall.  For Blend, I'm not certain, but installing VS Tools Beta 2 will uninstall the Blend March (Beta 1) preview.  The Beta 2 runtime will not be able to run Beta 1 apps due to various breaking changes during this cycle.  All the details will be available when we release.

So be patient... they are all coming today.

As they become available, I will append the links here, when they are ALL available nd I have an Install Order I will make a new entry that covers it all.

Silverlight 2 Beta 2 Runtime:   http://go2.microsoft.com/fwlink/?LinkID=115261

Silverlight 2 Beta 2 Documentation:     http://www.microsoft.com/downloads/info.aspx?na=22&p=17&SrcDisplayLang=en&SrcCategoryId=&SrcFamilyId=&u=%2fdownloads%2fdetails.aspx%3fFamilyID%3dbce7684a-507b-4fc6-bc99-6933cd690cab%26DisplayLang%3den

Silverlight Tools Beta 2:   http://www.microsoft.com/downloads/details.aspx?FamilyID=50a9ec01-267b-4521-b7d7-c0dba8866434&DisplayLang=en
(this is silverlight_chainer which includes the SDK)

Silverlight 2 SDK Beta 2:  http://www.microsoft.com/downloads/details.aspx?FamilyID=ba7b510d-0646-4d06-9834-cb82d669872a&DisplayLang=en

Expression Blend 2.5:   http://www.microsoft.com/downloads/details.aspx?familyid=32A3E916-E681-4955-BC9F-CFBA49273C7C&displaylang=en

Deep Zoom Composer 0.9.0.3:   http://www.microsoft.com/downloads/details.aspx?FamilyID=457b17b7-52bf-4bda-87a3-fa8a4673f8bf&DisplayLang=en

All these are now working, so we are “Off to the Races“

Go Forth and build something COOL! 

 

UPDATE:

All of the above with instructions are available at: http://silverlight.net/GetStarted/

I had an error when I first intalled the Chainer, this is one set of solutions:

http://weblogs.asp.net/bradleyb/archive/2008/06/06/upgrading-to-silverlight-beta-2-and-visual-studio-2008-sp1-beta.aspx

 

posted @ 11:28 AM | Feedback (0)

Thursday, June 05, 2008 #

Now Available- Microsoft® Silverlight™ 2 SDK Beta 2 Documentation

For those who can't wait to get started learning the Beta2 changes... Like Me!

Microsoft® Silverlight™ 2 Software Development Kit Beta 2 Documentation

Brief Description

June 2008
The Microsoft® Silverlight™ 2 SDK Beta 2 Documentation

Download details: Microsoft® Silverlight™ 2 SDK Beta 2 Documentation

posted @ 12:43 PM | Feedback (0)

Wednesday, June 04, 2008 #

Skinning Silverlight controls just got easier

Tim Heuer just posted about Skinning in Silverlight 2 Beta 2.  We saw this at the MVP Summit and now that we can talk about it...

This has been one of the features that I’ve been excited about for a while since I heard we were changing it.  With the release of Silverlight 2 Beta 2 and the updated preview of Expression Blend 2.5 (June 2008), skinning and styling controls within Silverlight gets a bunch easier.

...

You may not realize it but the ScrollBar has a lot of elements that you can skin.  The thumb, the handles, the bar, every little detail…so now in Blend 2.5 we can right-click and choose to edit that...

Skinning Silverlight controls just got easier

In the Alpha I had to write a scrollbar from scratch, it sucked. I never realized just how much you had to do to make a scrollbar function properly and then the make it scale properly as well, what a pain.  Now it's just there and we can change out the parts to suite our design.

Something more is the new "Parts and States" model that I am totally excited about because it really does make programming controls so much easier.  With Parts and States, we can effectively change out state management effects and what gets loaded in a part of a control very easily.  This is so much better than other models we have had to deal with in the past.  I am in the process of converting an App over to Beta2 and will be posting some interesting demos and code relating to Parts and State soon.

posted @ 11:47 AM | Feedback (0)

Tuesday, June 03, 2008 #

Thinking Different with Linq and Lambdas

Today I had to look through a set of controls to extract the Text and build a dynamic search.

Normally, this means looping and/or a bunch of Ifs to do some validation.  With Linq to Objects at our disposal I distilled exactly what I needed down to this:

 

Dim q = From c In SearchCriteria.Controls _
        Where TypeOf c Is RadTextBox _
        AndAlso c.Text.Length > 0

Dim params = q.ToDictionary(Of String, String)( _
                Function(r As RadTextBox) r.ID.Remove(0, 5), _
                Function(r As RadTextBox) r.Text.Trim)

At first glance this is a so what... until you look at what it is really doing for me.

I am looking at a Web Page that I need to extract a bunch of criteria from and many of them will most likely be blank, so why even loop through them?  The AndAlso takes care of any problems arising from controls that are not RadTextBox.  Additionally, I need to take the results and put them into a Dictionary so that I can pass this onto my Dynamic Query routine.

The code this is replacing is about 30 lines of code (that I didn't write...) and I can see exactly what is going on in this concise format.  All I had to do is think a little different from the old habits of coding and apply some of the great new tools we have at our disposal.  What the Old code did was to loop through all the controls in the SearchCriteria DIV and check to see if .Text was filled, but to do that, it needed to cast the Control.  Then on top of that it needed to add the Dictionary Item.

This new code could actually be written on one line, but for programming clarity and readability, I broke it up.

Now this really reads easy and works perfectly, thanks to Linq.  A little refactoring and this could become a permanent addition to a Utilities class.

nb: the Remove leverages the fact that I use "Find_<DBFieldName>" in markup and not have to resort to bindings or strings, it also makes this a candidate for a code generation template.

posted @ 5:06 PM | Feedback (1)

Reaction to Bill Gates Keynote at TechED

But while he touched on Gates favorites like more natural human-computer interaction and easier software development for everyone, he focused on how Microsoft looks at the changing software development world today.

Most significantly, Gates talked about how modeling will transform software development for Microsoft customers, especially in how the software development lifecycle is managed. "Over time, code gets complicated, and you want to be agile and change it," he said. "This is definitely an area that's open for improvement."

He brought Microsoft technical fellow Brian Harry on stage to demonstrate some of the progress Microsoft has made in its modeling strategy, code-named Oslo. Microsoft intends to deliver some of the first test versions of a modeling language, repository, and tools by October at this year's Microsoft Professional Developer Conference.

Bill Gates Gives Last Big Speech Before Leaving Full-Time Microsoft Role

We get something other than VSS for the first time?  This is great, I just wish they would internally support other repositories in VS, like SVN...

So Bill is basically talking about  possible solution to what I have been whining about lately.  Software is just to damned hard to develop especially for smaller companies.  They can't throw 50 people at a project, they may have 1 or 2, and this is where tools to encapsulate an entire complicated solution shine.  The same guy can look at everything and see the relationships of the layering, make changes and not be required to be an expert on all technologies, they just need to be an expert in how to GENERATE code, the templates take care of the rest.

Modeling really helps helps if it is a streamlined into an integrated system that can be taught to outside contractors with ease.  Hopefully this will become a mainstream knowledge category for development.  So far with Oslo, I am really liking what I see, but I am not convinced yet, it looks like its too reliant on Biztalk which is only applicable for Enterprise development, not the small guy.

Models and templates could be sent out for development then used in house to build real applications.  I see templating nd software factories as a growing market that will come into the mainstream when it becomes a streamlined solution.  Today its not even close, but with a little tweaking and sharing between groups at Microsoft, all that could change for the better.

posted @ 11:19 AM | Feedback (2)

Monday, June 02, 2008 #

Microsoft linking Silverlight, Ruby on Rails

I really wish I could attend this.

(InfoWorld) Microsoft Corp. plans to demonstrate integration Friday between its new Silverlight browser plug-in technology for rich Internet applications and the Ruby on Rails Web framework.

The integration will be done via a plug-in, according to a Microsoft representative. Microsoft officials will detail Ruby on Rails efforts at the RailsConf 2008 conference in Portland, Ore., which is taking place now through the weekend. The plug-in will be free to conference attendees.

Microsoft linking Silverlight, Ruby on Rails

First off, let me explain a little about my understanding of Ruby.  I know nothing about it... so then, WHY in the heck do you keep posting about it? 

I first looked seriously at Ruby when I saw a demo by John Lam at the MVP Summit.  When I saw this I wondered why the heck are they showing this to us in a Visual Basic track?  I believe there is some strategy there that we can leverage.

from the above article:

The IronRuby project in general has featured processes that make it easier for Microsoft to develop open-source projects, said Lam.

"What we learn from building IronRuby will be applied in other product groups to help us become more open and transparent than we have been in the past," Lam said.

John doesn't say IF... he says WILL.  That is a pretty strong word and what can we infer from this?  What I saw at the Summit for the most part was very intriguing, but I didn't take it seriously when I saw it, I took it seriously when I got back and started really looking at what Ruby's Pluses are.  I have posted a few entries about that recently and I want to see just how some of its features can be placed into VB.

The great thing about Ruby is that it can do so much for you.  Funny, we used to say that about VB.  ActiveRecord (which is basically Linq and EF done better for the web) is really a great concept and makes me think of what VB tools at Microsoft could be.  At the same time I am thinking that I should learn (in great depth) yet another modern language and what should that be Lisp? C#? Not really, I think it shall be Ruby.  Even though Twitter is bouncing up and down like a cat on a hot tin roof, that is not indicative of the language and does not put the power of the .Net framework underneath it.  If I had the power of the framework I can do all the things I like about both.

I will be watching and writing about where I go with this, but what I am really hoping for is that the VB Team can get some of the goodness that other languages can provide and that it just goes into the framework along with a terrific usability interface to VB.  The real question is how long will it take?  Are we looking short term, doubtful, I think we are off in VB11 territory for anything to get that far.  I don't think we are too early to start wondering where we will want to be coding in 5 years.

posted @ 11:57 PM | Feedback (2)

We don't need no stinkin' DBAs...

This is precisely why I think that we need EntityDB. DBA's are great when you have the luxury of hiring one (or having one on staff).  MicroISVs and Small companies with a need for custom software do not always have this luxury, nor the insight to hire one.  In today's world of Code Generation, Metadata and an awesome pool of brain's at Microsoft - this can all be automated by some the best in the business.  Linq Plumbing should not be rocket science, it should be straight-forward and simple to understand.  I should not have to have a DBA to write a decent scalable model when the Object Model can generate a proper Database and communication layer all by itself.  I say it CAN, it just doesn't because there is not yet enough screaming for it.  So in the meantime, I will just keep screaming a little louder each day.

For example, one commercially available survey software that I won't name here, had code in it that retrieved of tens of thousands of rows from the database only to filter them out in a for/each loop in C#.

Needless to say, that ended up being a big bottleneck in terms of CPU use and network bandwidth.

The sales rep swore up and down about the scalability of the solution, when, in reality, it didn't take much traffic to bring the data center to its knees.

The moral of the story: trust your developers to write code, not manage huge amounts of data.

Depending on your developers, you may want to be careful about how much to trust them with the data.

Experienced DBAs can be a real pain to work with and that's what makes them great.

They demand referential integrity and schemas and won't let you make one little change to the schema to simplify what code you have to write.

Andy Leonard on Twitter's Woes

posted @ 6:02 PM | Feedback (0)

Office 2007 Team in charge of Win7 UI... Frightening!

In light of Kathleen's recent post about a much the Office 2007 UI Sucks; This is an announcement that send chills up and down my spine - and not the good kind.  She is not the only one who hates it, try using Office 2007 on a Tablet.

Microsoft plans a completely new GUI for versions of Windows 7 running on the kind of high-powered computers that now run Vista. The same team that designed Office 2007 is in charge of this interface, and it's likely we'll see something like the Office 2007 Ribbon in place of Windows' traditional menus and toolbars. Unlike the Office Ribbon, however, the new UI—whatever it finally looks like—will be something you can turn on or off, so corporate users can maintain the same interface they've been using for years, without expensive retraining.

Microsoft Windows 7: What the Future Holds - PC Magazine

I for one HATE, I said HATE! the Office Ribbon it is a complete waste of space and User Interoperability.  As a Developer we cannot even make a ribbon without serious pain or a Third Party control.  As a user we cannot change it to better conform to our daily use.

So, if Microsoft wants to give developers the UI elements needed to conform to this strategy, maybe... They had also better fix all their crappy designers and give us built in Code Generation in VS10.  I should not need the Expression Suite as a Developer, it should at least have a designer that functions in the primary Development Suite.

So here we go again, 2 years of speculation, delays and an end result that falls far short of the goal.

posted @ 3:16 PM | Feedback (0)

Sunday, June 01, 2008 #

This sort of interesting work has me looking seriously at IronRuby

MagLev is a Ruby VM based on the GemStone S64 VM, which runs Smalltalk. The Smalltalk VM has been extended with special byte codes to make it Ruby compatible. GemStone's Smalltalk VM has been used for over 20 years in sectors such as real time financial markets and the worldwide shipping industry. It as a mature, fast, stable, distributed, and transactional data store which can hold over a trillion objects or 17PB (Petabytes) worth of information. The goal of the MagLev project is to bring this distributed object technology to the world of Ruby on Rails...

In essence, MagLev was filling the roles not just of the VM but also the caching and persistent storage layers.

InfoQ: GemStone Reveals Plans for MagLev - Ruby VM at RailsConf 2008

Oh how I would love to see VB make this even easier. But it won't, so I am looking seriously at IronRuby as a preferred development language.  I wonder if we will start seeing enough demo material to make it worthwhile. 

I'll be watching closely to see how John Lam's team keeps making progress.

posted @ 5:17 PM | Feedback (0)

Wednesday, May 28, 2008 #

The UI has finally grown up

I have been waiting for this, for oh... 25 years...  While it may not seem remarkable in the demo, having it built-in to the OS is the key to its success.  We can do most of this today with add-ons, but they don't interact well with older Apps, just try changing the Font DPI in Vista and you will see what I mean.  I hope this is taken into account in the next generation of our UI.  The Mouse is a stupid device, but nothing has been able to provide its functionality yet, multitouch can, if done right.

Can I have my 19" Desktop replacement with Multitouch NOW please?

I can't wait to start working with this...

Ballmer And Gates Demo Windows 7: Multitouch, Pie Menus And a Piano | Gadget Lab from Wired.com

Now for the 2 year wait until its release :-( working with these silly restrictions of UI we have today.

I am about ready to STOP doing WebApp development and move everything to WPF and Silverlight, but not quite yet.

posted @ 12:04 PM | Feedback (0)

Tuesday, May 27, 2008 #

Everyone is Weighing in on what's wrong with Twitter

I really like what the good Doctor is talking about here.
Social networking should lead us to better in depth personal communications, not expose us to a ton of noise and frustration through outages.  It MUST work with my phone and be incredibly simple to communicate, today, its not.

The problem is, this is just a "teaser" of what it really could be, and it's totally disconnected from all the other "social" apps. It doesn't connect you to opening an IM chat (which is realtime, and often a lot more useful), there's no easy way to make it really integrate into a forum / messageboard (which is more permanent, and searchable), or del.ico.us (which helps with organizing and tagging resources that are shared with others), or a hybrid short url / spidering / social tagging site like my ittyurl.net, or a blog post with comments, or email notification of something I am following and on which I need up - to - date information when new "stuff" appears on the subject.

Peter Bromberg's UnBlog: The Social API we really need.

I also think that Phone software needs a major overhaul to support this type of communications.  I am fairly happy with my BlackBerry 8830, I dislike the KB... I am pretty sure I will replace it in the fall, but not until I am resolved hat the next Phone I get will do everything I need it to.  The frontrunner is the iPhone for me, but I would prefer a tactile keyboard.

My phone is my main communication device, it should do what I need it to do without a lot of hassle, I sure wish MS could get their act together on Mobile Services with Visual Studio.  I also wish there was a common platform that ALL phones worked with, this is currently 10x worse than the Win/Linux/Apple platform problem.  No resolution in sight, Silverlight could be the magic bullet if MS can convince Apple and RIM to support it.

I do think that Twitter and the other "social services" should become an RSS redirector that consumes my "social feed" and redirects it to my "followers" in semi-realtime.  A few seconds of lag is fine if his means a decentralized posting center.  If I could post to a self-controlled (read hosted under my control) feed that all the social networks could consume and broadcast to my "friends" then we would have a more sensible service, providing better scalability and less loss of MY posts.

I have had too many posts lost to Twitter that could be there on my own RSS "social feed" that could be picked up my pownce, jaiku, friendfeed, facebook, twitter and all the others instead of making me cross-post.

We could designate a Category in the RSS for Pulling feeds, or we could use the lesser-known Cloud tag to link in to our chosen social platforms.  Comments and solutions welcome.

posted @ 12:25 PM | Feedback (1)

Tuesday, May 20, 2008 #

Visual Designers that Don't Scale

Yesterday Scott at OdeToCode talked about some good insights about the visualizers in VS08.

Visual Designers Don’t Scale
K. Scott Allen - 5/19/2008 9:32 PM PST

Visual tools that fall into the second category have to cover a wide range of scenarios, and they need to scale. I stumbled across an 8-year-old technical report today entitled "Visual Scalability". The report defines visual scalability as the "capability of visualization tools to display large data sets". Although this report has demographics data in mind, you can also think of large data sets as databases with a large number of tables, or libraries with a large number of classes - these are the datasets that Visual Studio works with, and as the datasets grow, the tools fall down.

Maybe they can add some of DeepZoom's technology here but I am not sure how that could be accomplished easily, Breaking up the Image is the most likely way to accomplish it, create related sections of your Schema in different diagrams, at least that is how I have been working around it in even my smaller applications.  But this of course doesn't really help when you are looking at the BIG picture :-)

posted @ 5:35 PM | Feedback (0)

EntityDB: The next great Microsoft tool (if they would just make it)

Reading in the Industry blogs, official samples and documentation provided with MS SQL Server 2005+, Visual Studio 2008 and Linq to Sql and the Entity Framework, you will get the impression that we have a tremendous ability to efficiently decipher how to interact with a Database.  Additionally, Industry leaders have led us down a path of Code Generators, Designers and the separation of UI Design from functional Object code; read "Astoria" and/or "MVC" here...

Didn't CASE do this sort of thing for us years ago?  Didn't it also fail?  There is huge amount of traffic about the topic of "Falling down when you hit a threshold" and insistence that all things should be built ultra-scalable.  OK, that's great if you love to write plumbing.  I for one, don't. What if that could be done for you, with the most efficient options always at your disposal; of course with the opportunity to tweak and extend to meet a specific need.

While there are many great arguments to be had over what is exactly ultra-efficient and those who think they have a better method must be able to override and extend the selected generation of code that is offered by not only being able to write that code, but also to inject it into the Generated Code (or at the least allowed to edit the templates) produced by Visual Studio.

If you don't already know why this is so important, we need to first look at the massive shift in Business Software Development and where we are going to be running most business applications.  We used to run all our apps on our own hardware, inside our own network and everything was under our tight control.  While this model still applies to much corporate development, I believe it will become less and less used as a cost effective alternative to a HOSTED solution.  Pricing of hosted solutions have plummeted in recent years, in fact I am almost willing to bet that the cost of electricity alone using hardware just a few years old would cover the cost of a hosted solution.  And what happens when I DO need to scale, How do I add 20 servers to the Web Farm overnight?  Staffing requirements and maintenance of hardware start to become totally offset when we look at this model. I CANNOT BUILD A SERVER CHEAPER THAN I CAN HOST ONE!  That is the real bottom line.

I would wager that MOST applications would run just fine on a hosted solution with one machine doing all the work, at least in the beginning, or at least with a hoster that gives you Web on one machine and your DB on another.  Are we talking about every solution here?  No, but I think we are talking about a gigantic sector of the market that is currently all but ignored by the provided tools we have at our disposal.

Don't get me wrong here, we have GREAT tools available and more coming, do they target what is really needed?

First lets look at the three new primary tools given to us by Microsoft.  WCF, Linq to Sql and the Entity Framework.  WCF provides a great pipeline to pass data between our UI, Business Objects and Database, but it just plumbing.  Linq to Sql and EF provide a great way to interact with a Database IF and ONLY If you have a proper database in place first.

What does this mean to most data-driven development projects?  It means they either need a DBA, or they need to hire one for the portion of the application that defines the database.  This is one reason Migrations for Ruby on Rails has gained so much popularity, it hides this chore.  Most of us don't care about the DB, it's just a place that holds data.  Some of you can go on and on all day about the subtleties of databases but that is completely outside the scope of what I am talking about here. Not only will Migrations create a DB and Schema around what your App needs, it will also keep it up to date with changes made by any developer that can be easily stored in Version Control software like SVN or TFS.

This is what the Designers for Linq to Sql and/or Entity Framework need to do for us.  I really don't mind changing my Linq to SQL Apps over to Entity Framework if it will allow us to focus on one great technology.  It's great that they can operate against a currently created database, but they should also create one (IN AN OPTIMIZED WAY) when one does not exist.  It should create Stored Procedures if I tell it to... Even if we are migrating a legacy application, I would still like to see what a tool spits out for me.  I just might use the new techniques.  There are tons of ways to move data from one schema to another, again, outside the scope of this article.  So back to the scope...  EF Does a great job of creating an interaction between Database and Business Objects, but it doesn't help us rapidly create a NEW model without an existing database and I think this is important in two ways, first and foremost, I don't want to write any plumbing code to do this.  The tools are smart enough already to do almost all the work for us, it can go just a little bit further and create the expected interaction that solves most of the interaction of the database work for us.  I can create a Model with the EF Designer by adding Properties and Associations, but it won't go and create a database around that model.

I should not have to know about how the interaction happens, just that it does and that it does so in a fairly efficient manner.  If I lose a certain percentage of performance due to layers, then so be it if I can create my application 10 times faster.  If the tool developers choose to implement change tracking in a DataContext or Object Context that is great, do so in a way that makes sense for the CODE developers to use, not require me to go hire Database professionals to argue about the proper plumbing or storage techniques.  Linq ALREADY knows how to create efficient SQL, if it did so in code generation vs. dynamically at runtime who cares?

We can host a solution out in the cloud so should we need to be worried about the optimization of how our application persists its data?  Certainly there is is need to cover legacy applications and all the DBAs running around out there, that is well covered right now.  What we seem to be missing is the ability for competent application developers to create Rich Internet Applications (read Silverlight and Ajax) and have the data persisted without a bunch of plumbing and tweaking.

What is NOT covered is the ability to rapidly envision, design, develop and deploy solutions destined to live on a Hosted Solution -- even if it is "hosted" internally.  This solution will most likely have a distinct separation between UI, Business Objects and Database, but do I really need to see those distinctions in my code?  Not really.  Do I really need to spend the time to wire up all the Databinding when the MetaData already knows what I need to do?  No Way, a tool can create that for us.  It can already look into our metadata and see what we need to do to hook up a DataGridView to a table.

I would venture to say that the tools are already here, they just don't work the way we need them to so we can build these applications quickly.  I spend MOST of my time Creating a Database, then working on plumbing and interactions between the Database and the UI, I should not have to do this any more.  Microsoft did a fabulous job of giving us a database that can scale with us as our application grows.  We have SQL CE, SQL Server Express and SQL Server Enterprise to grow with us, we can use SQL CE for Mobile Apps and offline stuff, wouldn't it be wonderful if I did not have to architect that portion of the solution any more?  I am talking about the people who do not have the luxury of a full time DBA.

Of course, the solution is there, staring us right in the face, the answer is the Designer for Entity Framework.  If this Designer could be used to build out the Database, and track the Schema changes, then it would take down part of the battle, just a little more work and it could completely remove the NEED (we should always have the option to extend and modify though) for us to write anything between the Business Objects and the Database.

We should not need to write Serializers for Silverlight, WCF or anything else, the tools already KNOW how to do that, they just don't.  The MetaData is there, let's use it.  Rob Conery's Subsonic and ActiveRecord shows there is interest in such a tool, but I say this tool needs to come from Microsoft and it needs to be built into the current generation of tools we are using or are being pushed to use (aka Linq).  With Rob and Phil working AT Microsoft why can't they contribute some of that knowledge over to the ADO team and get this into the EF Tools we need.  Pablo, Mike, Dinesh and the rest of the ADO Team are doing a great job so far, but they are only touching on what we really need.  The newest version of EF finally gets a way to do disconnected graphs which is a step towards the goal thanks to Danny Simmons.

These tools need to work seamlessly with Linq and allow me as a developer to write applications with little or no concern for how my data is persisting.  I want to create Controls that I can offer to my UI which work seamlessly with Ajax or Silverlight and not require me to write a ton of plumbing just to move things back and forth from one layer to another.

This is the challenge for the new world of development.  We have already moved to a hosted world and our tools need to move there with us. But what do I know, I am a VB developer first and foremost... This is what I know, my customers are asking me to create these applications and to create them really fast.  I can choose to use the tools I know best or I can branch out and find something new.  The problem here is that I have already invested years of time to learn the tools I am using and they are simply not doing what I need them to do to make my job truly easier. 

My Invoice Object doesn't really need to know what DataContext my Customer Object lives in and I as a developer should not have to be concerned about that in the slightest.  I should be able to freely take a Customer I loaded from Invoice "A" and assign it to be used for Invoice "B" without worrying what context it came from, Invoice "B" just needs to know its a valid Customer or that it is a new one I just created without me forcing something into the plumbing to test it.  It should know how to roll itself back when I cancel changes, etc.

With Generics and XML Literals, VB is a Top Notch Code Generator.  Kathleen has proven that here and Karl talks about Metadata and what we can do with it over here... We don't need Yet Another Code Generator.  We need something that works with the existing modelers and designers and just makes our life as developers easier.  It needs to be INSIDE Visual Studio and we need to be able to work with the templates.  I should not need LLBLGen or MyGeneration or CodeSmith or SubSonic to do something Visual Studio pretty much already knows HOW to do, it just doesn't.  I don't need another designer that works with an existing database, I need the CURRENT Designers to Make the Database AND the plumbing.

I personally think this should be the direction for the next revision of Visual Basic.  VB IS the glue that puts the framework together, sure you could also do it in C# (if they added XML Literals...) but VB is already geared for it so why not enhance it's productivity even further by giving us a way to be far more productive than we are today.  This does not require any great shift in the tools we already have, it just requires Microsoft to use them smarter and provide us the keys we need to open the door.

posted @ 3:38 PM | Feedback (2)

Monday, May 12, 2008 #

It's Time for more Fun with Betas that are out of sync...

I am working extensively with Linq as well as Silverlight.  Unfortunately they are not in the same release cycle :(

So for now, I am back to running my development machine with 2 Hard Drives. (because VMs suck on my laptop...)

Further info here: Error installing Visual Studio 2008 SP1 Beta and Silverlight Tools Beta 1

 

[total tangent department]

Maybe I can get a new Laptop soon with a 17" screen, Hyper-V and 64Bit OS... and Tablet functionality... not holding my breath... they don't exist.  I just might have to build one, but I am not feeling that adventurous this month.  Maybe I'll just dedicate a small notebook to notes, but that defeats the purpose for me in most cases.

[/total tangent department]

posted @ 3:57 PM | Feedback (0)

Thursday, May 08, 2008 #

Introducing LINQ To Regex

Roy gives us 2 great things here:   An easier to understand Regex for people who don't care to learn the ins and outs of regex AND more importantly an example of how to build a Linq Provider.  I may tap into this idea for producing a couple Linq Providers I am thinking about, such as Linq to RSS and Linq to NNTP, alas, I really don't want to be a plumber this month so I am hoping someone beats me to the idea for Linq to NNTP which I could really use :-)

Introducing LINQ To Regex

When I first saw Josh Flanagan's Readable Fluent Regex Api, I loved it at first sight. Now I'm working on a demo for the upcoming DevTeach in Toronto, where I'll present how to build custom LINQ providers to various things.

I thought it would be interesting to see if using the fluent Regex API Josh created along with a LINQ query syntax would "work" for me, so I set out to create LINQ to Regex.

Introducing LINQ To Regex on Roy Osherove's Blog

posted @ 10:59 AM | Feedback (0)

Utility for building Linq Queries

Visual LINQ Query Builder is an add-in to Visual Studio 2008 Designer that helps you visually build LINQ to SQL queries. Functionally it provides the same experience as, for instance the Microsoft Access Query Builder, but in the LINQ domain. The entire UI of this add-in uses Windows Presentation Foundation. The goal of this tool is to help users become more familiar with the LINQ syntax. The tool may also demonstrate to users how to create their own Visual Studio 2008 add-in using Windows Presentation Foundation.

This is very helpful in letting you see the big picture when you have particularly complex queries.  I'd really like to see this integrated with something like LinqPad so we could get a better look at how we can structure Linq Queries.  I'd also like to see this not need to add something to your Project just to use it, that is a real turn off for me, but you can always delete it when you are done.  This is a good effort though on helping to simplify understanding new technologies.  I'd also like to see it brach out to support more than Linq to Sql.

On the positive side, this does have a pretty good visual appearance in VS08 and I like how it is put together, building queries is pretty easy to do with the leveraging of intellisense.  Some big missing items re Grouping and Aggregates, those tend to be the more difficult queries to visualize and where this tool would be most useful.

I would place this in the beginner category though because it will tend to get in the way of a seasoned Linq developer.

posted @ 10:35 AM | Feedback (0)

Blogroll Me!

Blog Search Engine

Copyright © 2003-2004 H. Steele Price, IV -
All opinions are my own, not necessarily those of my employer, your mother, or any government agency.