A lovely couple (of architecture books)

It was brought to my attention that there's no way to have a (free) look at the TOC of Microsoft .NET: Architecting Applications for the Enterprise other than holding the book in hands and flip through pages. Sorry about that, this post is to make up for the omission. There's no reason and no intention to keep it secret :) Here it is: 

  1. Architect and Architecture Today
  2. UML Essentials
  3. Design Principles and Patterns
  4. The Business Layer
  5. The Service Layer
  6. The Data Access Layer 
  7. The Presentation Layer

The book develops its content more in terms of general patterns than concrete technologies. It is, however, concretely bound to the MS platform and it is not hard to recognize products and technologies behind the scenes. At the same time, it discusses other mostly open-source alternatives that fit nicely in the .NET stack.

Mid April 2009 is also the release date of the Web counterpart of the architecture book. I'm talking about Microsoft ASP.NET and AJAX: Architecting Web Applications, always from MS Press. Below, you find the TOC. I particularly recommend chapter 3 where I generalize most common approaches to AJAX today coining two (new?) terms: AJAX Server Pages and AJAX Service Layer.

  1. Under the Umbrella of AJAX
  2. The Easy Way to AJAX
  3. AJAX Architectures
  4. A Better and Richer JavaScript
  5. JavaScript Libraries
  6. AJAX patterns
  7. Client-side Data Binding
  8. Rich Internet Applications 

Chapter 6 and chapter 7 contain concrete stuff about AJAX patterns with a lot of references to existing frameworks. Chapter 5 doesn't miss some jQuery coverage.  Finally, Chapter 8 is about programming the Silverlight 2 model. Nothing on animation and graphics but everything a .NET developer/architect needs to know.

Web Forms vs. ASP.NET MVC

Probably I'm a bit late to the party, but as I gain confidence with ASP.NET MVC I feel I have my cents to share :-) 

ASP.NET MVC is not the anti-Web Forms and Web Forms is not the anti-pattern of ASP.NET development. ASP.NET was created 10+ years ago and in the late 1990s the MS platform was VB-oriented. So it was a natural choice to design ASP.NET as a stateful framework over a stateless medium--the Web. Many of the hot features in ASP.NET (postback, viewstate, forms authentication/authorization, server controls and abstraction over HTML) were eagerly welcomed by the community because they were time-saving facilities just implementing common features that everybody would have aboard.

Over years, MS probably failed drawing Web people attention on architecture and software design. There was an interesting attempt made with the Web Client Software Factory to implement MVP and workflow-based page navigation in Web Forms pages, but that turned out to be too far complex. At least, in my opinion. So in some way instead of driving Web Forms towards a better design it seemed preferable to introduce a new framework on the wave of the success gained by RoR and MonoRail. To many people, ASP.NET MVC looks like the new way to go and the only way to achieve SoC, testability, better design.

For sure, ASP.NET MVC is a "new" ASP.NET designed ten years later looking at the current state of the industry and evolution. Comments on Web Forms vs. ASP.NET MVC are often biased and stuffed with pieces of personal experience that is elevated to the rank of absolute, objectives facts.

The table below lists my top-ten undisputable facts about ASP.NET MVC and Web Forms. These are facts--everything else, I believe, are opinions. And like all opinions they are fully respectable. At the end of the day, Web Forms and ASP.NET MVC is like car or motorcycle and ... it's up to you, your skills, your education, your attitude, and your project requirements.

  1. Web Forms is hard to test
  2. ASP.NET MVC requires you to specify every little bit of HTML
  3. ASP.NET MVC is not the only way to get SoC in ASP.NET
  4. Web Forms allows you to learn as you go
  5. Viewstate is not the evil and can be controlled/disabled
  6. Web Forms was designed to abstract the Web machinery
  7. ASP.NET MVC was designed with testability and DI in mind
  8. ASP.NET MVC takes you towards a better design of the code
  9. ASP.NET MVC is young and lacks today a component model
  10. ASP.NET MVC is not the anti-Web Forms

On this topic, an article on MSDN Magazine is coming out in the July 2009 issue. A Web architecture book is being published these days and I'll start soon on the MS Press big book guide on ASP.NET MVC to be available towards end of the year.

 

iBrii is gaining ground

IBrii is a Web application that I've been working on in the past weeks. It's not my baby, and I'm not one of parents, but I can definitely be called as an hooked-on uncle of the baby :-)

So I'm even more proud of the work we did when I read what's on in the Wired How-to Wiki. IBrii is recommended as the best tool to replace and extend the just retired Google Notebook. IBrii is even more, tough. 

It is a virtual notepad through which you to write your personal notes, organize and share them with your friends. Your personal notes can contain just everything you can find in the Web. And you can clip-and-share as you browse the net. IBrii is still a beta but is going to support documents (PDF, Office documents) and RSS feeds meaning that you can publish your notes of choice to your blog.

First read this, then rush to get your account today! You'll love it.

 

PS: Technically speaking, IBrii is a relatively simple ASP.NET application with a lot of jQuery to shape up the UI and calling into an AJAX Service Layer for server-side logic.

Native, Immigrant, or Practitioner?

Marc Prensky coined the term digital native to refer to persons who have grown up with digital technology including computers, Internet sites, and applications. In particular, Marc said that today's "students are no longer little versions of us, as they may have been in the past. In fact, they are so different from us that we can no longer use either our 20th century knowledge or our training as a guide to what is best for them educationally."

Admittedly, terms digital natives and digital immigrants shocked me when I first heard of them.Last night I caught my son (11) in his room doing "some urgent work" and precisely:

  • Chatting over latest Messenger with a friend about the day and the tennis lesson they just had.
  • Imparting instructions on how to configure the Windows desktop over Skype.
  • Using iBrii to do his homework in collaboration with another couple of friends. 

And my 11-years old son just self-installed Windows 7 and is actively using it and learning most of available configuration aspects. Which is definitely a good statement about Windows 7. The end of Windows hell? In some way, I glimpse similarities between Windows 7 and the first OS I really enjoyed so many years ago--the mythical Windows 95.

When I mentioned all of this with my wife, she said "How do you call yourself? Are you a native too or are you an immigrant?" Well, I believe that, all in all, I'm just a practitioner :-)

There’s a lot of Software in Our Future

It’s quite a bit of time that Juval Lowy—a Microsoft software legend—talks about energy and its relation to software and calls this the next bubble prefiguring the next boom for developers. To paraphrase John Lennon, he may be a dreamer, but he’s not the only one.

Weeks ago, having heard me a bit concerned about our future, my kids (11 and 8) started their own conversation about a world without computers and programs. How could do school homework without Word to help us put down writings? How could we search for details without Google? How could we get in touch without email? And how could we chat without Messenger?

And I also wondered what else I could do in a world without computers? If nothing happens, if the drift is unremitting, is the Western society destined to collapse?

It’s certainly possible. Never set limits to the human stupidity.

But, beyond temporary depression J, the software is the key to the future. Not a remote future, but the future that begins tomorrow morning.

A lot is being said about alternative energy, but I feel that real point is optimizing the demand/response pattern through which we get energy for our everyday life. I totally buy Juval’s statements in the DevConnections Spring 2009 keynote “The Energynet: the next boom in software”. We need smart power grid as opposed to today’s dumb grids. It is impossible to imagine a physical replacement of the grids all over the world. But we can make the grid smart. In just one way—the software.

It seems like we are witnessing an era of epochal changes—for our generation, the second big change after Internet. We’re not there yet. But we’ll get there. And the key of everything is – and will remain – the software.

Thanks God, kids, dad is in the right business J

The Future of Software Conferences is … Software

I had a geek dinner last night and a slice of a conversation kind of got persisted in my mind. So when I resumed my OS this morning, it was automatically deserialized. It was a chunk of the conversation I had with Carl Franklin and it was about the future of conferences. Carl voiced his convincement that the future is online. People stay home or in their offices—Carl said—pay a fair amount of money, and get the content they expect.

How much money? It doesn’t have to be necessarily little money; it doesn’t have, at the same time, a lot of money. Just the right amount money measured mostly against the quality and added value of the content they get.

I’m not saying that in some sort of near or remote future technical content should be paid as you like. I’m not certainly thinking of a donation model. I’m just wondering how much a typical conference fee is burdened with “extra” costs such as infrastructure, wireless, hotels, food, travel.

I did quite a few small tiny events myself and we constantly managed to keep costs as low as possible: no food, no CD, no bag, no accommodation, just great content. And small margins, enough to pay the day of the (very) few people involved. Clearly, it is a too extreme scenario to be replicated on a larger scale. A lot cost airline may propose you pay for the toilet, food, newspapers, drinks, water, but they can certainly not ask you pay an extra for the pilot J.

Are online conferences a concrete, starting-up business today? No.

The technology is not ready yet. As Carl pointed out, this is going to happen in a future maybe only a couple of years away. LiveMeeting and similar technologies are today totally insufficient and obsolete. We need stunningly beautiful and realistic graphics, bandwidth, ad-hoc software. But it can happen. And probably it will. Look at Xbox games; look at HD video technology; look at VOIP progress. It seems like we have all the pieces as single entities; someone will certainly merge them together quite soon.

Awaiting for that, don’t forget to stay tuned on next “traditional” conferences. As far as I’m concerned, DevConnections in Las Vegas, and BASTA in Frankfurt, Germany. But the first of all, is Microsoft DevDays in Sofia, Bulgaria, 16-17 April.

 

My 2009: less writing, more code

I'm back to blogging after a year or so. I'm not particularly original by saying that a lot has changed around us in this time. For me, it means less writing and more code.

I will still be writing books and articles as long as there's a publisher with some concrete interest :) But I'm more active in the consulting arena and following two key projects.

One is IntelliMaker from AppAround.com. It is essentially an application to cover the last mile between sources of data and end users. The concept of a data source is quite wide here as it includes Office documents, SharePoint catalogs, anything under OLE DB and ODBC, Web services. Mapped to an IntelliMaker data set, any data source can be exposed as an object including a subset of the native properties and creating any sort of relationships, joins, and groupings. The final data set is then available to feed forms and workflows to model business processes. It is an ideal tool for the consultant engaged in system integration projects and for companies who can't afford developing ad hoc front-ends for their data and processes. Massively RAD, IntelliMaker is an ASP.NET 2.0 application and will go to the cloud quite soon. If this sounds interesting to you, go ahead and pay a visit to AppAround.com. In particular, have a look at Office Extensions

The other cool project I'm working on is a new social networking application entirely done in ASP.NET and jQuery. It is named iBrii and is the electronic and cloud version of the old faithful yellow sticky notes. You have unlimited space to create notes that include videos, links, and images and can publish them to a permanent link and share them with other users. You can also simply send them out via classic emails. Your notes remain up in the cloud and if shared with other users they can receive changes instantaneously. The primary reason that convinced me to use iBrii is the possibility of storing in a single place all the content of otherwise long emails threads, especially when the thread goes on for a few minutes, contains valuable information, but you won't be using it soon and want to save it for further reference. Sharing data with groups of people and publishing it is the driving force of iBrii. Not just as Twitter; not just as Facebook, not just as Google Documents. If this sounds somewhat interesting to you, and you want to give it a try, register today here and let me know. It is still a beta and works great with FF3, IE7 and IE8. My account there is despos. Send me your notes then!

 

The "Driving Force" pattern--part 1 of N

Recession is perhaps affecting the economy, but it couldn't be farther from the dazzling world of (Microsoft) software. CTPs are coming out every day and some of them are amazingly morphing into Betas. Which is anyway good. But when a technology turns of age becoming a Beta, you--the developer|architect|software engineer--are no longer authorized to ignore it with the abused excuse that it is only a CTP.

You can easily be flooded with technologies, frameworks, products, and also patterns and paradigms. This is especially true for the Web. Isn't AJAX representative of a "paradigm shift"? Paradigm shifts, though, are an extremely delicate event that occurred in the history of mankind quite a few times already. As emphatic as it may sound, the Web of today is just a special case. Search for "paradigm shift" on Wikipedia (http://en.wikipedia.org/wiki/Paradigm_shift). At some point, you'll read:

Paradigm shifts tend to be most dramatic in sciences that appear to be stable and mature, as in physics at the end of the 19th century. At that time, physics seemed to be a discipline filling in the last few details of a largely worked-out system. In 1900, Lord Kelvin famously stated, "There is nothing new to be discovered in physics now. All that remains is more and more precise measurement." Five years later, Albert Einstein published his paper on special relativity, which challenged the very simple set of rules laid down by Newtonian mechanics, which had been used to describe force and motion for over three hundred years. In this case, the new paradigm reduces the old to a special case (Newtonian mechanics is an excellent approximation for speeds that are slow compared to the speed of light).

The Web is a science that before AJAX appeared stable and mature. AJAX is comparable to Einstein's relativity. It will take years to reach again some technological stability for the Web. Read, some set of frameworks and products that are widely accepted and not put under discussion every week by new CTPs and approaches.

Five years? Well, five years may be nothing compared to the mankind lifespan, but it's a lot of time in software, and for the Web in particular. Five years in software are more or less the equivalent of million years of earth life. And even more if you limit to consider the Web, which is only 20 years old.

AJAX has been a real paradigm shift whose effects--three years after its introduction--are only now starting to become stabler. I have a lot of hopes and expectation from MS and the ASP.NET team in sight of ASP.NET 4.0. I expect it to be built with AJAX in mind from the grounds up, incorporating common Web and AJAX patterns in a brand new set of controls and components.

Oh yes, but I started this post with the concept of "driving force" in mind. How can you find orientation in a world full of CTPs? Like many of you, I can't just keep up with everything that is coming out. So I find it useful to identify the "driving force" of each new thing from Microsoft and see whether it cares me to a decent extent. Today here at DevConnections, Orlando, I finally identified the driving force of a buzzword that hit me recently.

ADO.NET Data Services (aka, Astoria)

Driving force: the need of building richly interactive Web systems.
What's that in abstract: New set of tools for building a middle-tier or, better yet, the service layer on top of a middle-tier in any sort of application, including enterprise class applications.
What's that in concrete: provides you with URLs to invoke from hyperlinks to bring data down to the client. Better for scenarios where a client needs a direct|partially filtered access to data. Not ideal for querying data from IE, but ideal for building a new generation of Web controls that breath AJAX. And just that.

I'm going to apply the "Driving force" pattern to virtually any CTP or buzzword that I happen to hear about. Next one is M-V-VM pattern for WPF (and Silverlight). And next, of course, the ASP.NET MVC FX. Stay tuned.

 

I'm agile and extreme (and I didn't know it)

Last fall, I was invited to speak at a workshop about "agile development". I had to decline because of my deep ignorance of XP (extreme) programming principles and techniques, applied patterns, test-driven development, and stuff like that. A couple of weeks ago, I couldn't resist to a small booklet, pocket guide, to Extreme Programming from O'Reilly. (BTW, excellent).

So I realized that I was agile and extreme already. It was to see that principles of extreme programming always inspired me to build software for years. But not just that. XP Programming principles can be abstracted to sort of XP Living Principles, and I'm probably agile and extreme in that context as well. (Uhm, think I have to cross-check this with my wife first...) 

I felt even more reassured when my Wintellect pal John Robbins revealed that he has similar feelings about Test-Driven Development (TDD)--the only approach he knows and ever used to develop top-quality code.

Sexy acronyms--that's what it's all about...

 

More Posts « Previous page