Archive for the ‘Review’ Category

June 8th, 2009

Sneak Peek at ASP.NET MVC 1.0 Website Programming: Problem - Design - Solution

You can now use the Amazon Look Inside feature to view many parts my book that is going to be released June 22, 2009.  So if you are interested use the links below to go to different parts of the book or search for specific things.

Tags:

Posted in News, Personal, Portfolio, Review | kick it on DotNetKicks.com | Bookmark | View blog reactions | 4 Comments »

May 3rd, 2009

Windows 7 Blame Feature

Over this past weekend I installed Windows 7 (64-bit), and I have to say that it is a great upgrade from Windows Vista that nobody should be disappointed with. Even as a release candidate it is rock stable and has been able to cope and recover from many of the failing drivers I tried this weekend, with out the need for a single reboot. This is impressive, because I remember when I first tried Windows Vista as a beta almost 3 years ago, that I received blue screens left and right from faulty drivers that didn’t yet support Windows Vista. Blue screens have always really bothered me, because as a avid Windows supporter, I have heard all too often the mantra of the uneducated.

It’s Microsofts fault that Windows blue screens every time I try to play a game on my graphics card.

What this uneducated user doesn’t understand is that Microsoft isn’t really at fault, it is the fault of the hardware manufacurer that poorly developed the drivers.  But up until Windows 7 a poorly programmed driver would result in a blue screen and Windows would have no way of letting the user know what was going on until the operating system had been restarted.  Now in Windows 7 bad programming by hardware manufactures are caught in real time with out rebooting.  Windows 7 gracefully handles the error, and displays a “blame message” line the one listed below.

windows-7-blame

Windows 7 shows a small dialog explaining that something has happened and that it was able to recover from the error without effecting the user.  It even displays the name of the device that caused the error, so that users can better understand what has happened to their system.  I love this feature because it provides transparency to the user, so that they can blame the correct party for the failure of their computer.

Tags: , ,

Posted in Review | kick it on DotNetKicks.com | Bookmark | View blog reactions | No Comments »

April 16th, 2009

Recession Proof Your Programming Skills

In this economy you have to do everything to keep your skills fresh and current so that employers find you a desirable hire.  I really though the tips provided in 8 Ways to Recession-Proof Your Programming Career where spot on when this article came out last year.  And now that the TechRepublic has released 10 kills developers will need in the next 5 years.  I have decided to give you some of my favorite Wrox books that align very well to this TechRepublic article.

Learn C#

Learn ASP.NET

Learn ASP.NET MVC

Final Cover Photo

didn’t think I would leave my book out, did you? ;)

Learn Java

Learn PHP

Learn RIA & Web 2.0

I beleive all these books are a nessisty in helping you improve your career.  You don’t have to understand or know all of this technology, but you should at least have one of these books on your shelf.

Tags: ,

Posted in ASP.NET, C#, JavaScript, News, Personal, Programming, Review | kick it on DotNetKicks.com | Bookmark | View blog reactions | 1 Comment »

March 3rd, 2009

ASP.NET MVC 1.0 Release Candidate 2

Final Cover PhotoPhil Haack has announced the availability of ASP.NET MVC 1.0 Release Candidate 2.

You can download the new version from Microsoft. Source code and samples are also available on the ASP.NET CodePlex workspace.

Overall, this new version doesn’t have many changes in the area of development and tooling, but there has been improvement for deploying ASP.NET MVC applications.  The setup process now requires .NET 3.5 SP1 to be installed, where in the past it was optional because the additional assemblies where included with the install.

Don’t worry though /bin deployment is still supported, they are not taking a runtime dependency on SP1 other than our existing dependency on System.Web.Routing.dll and System.Web.Abstractions.dll. Thus you can still bin deploy your application to a hosting provider who has .NET 3.5 installed without SP1 by following these instructions.

They are also adding an option to the installer that enables installing on a server that does not have Visual Studio at all on the machine, which is useful for production servers and hosting providers.  To do a server install you just need to run the following command to install MVC on your server.

msiexec /i AspNetMvc-setup.msi /q /l*v .\mvc.log MVC_SERVER_INSTALL="YES"

Also because of the latest breaking changes from Beta to RC 1 & 2, we are taking the time between now and the final release of the MVC Framework to work on the book and make sure all the loose ends are tied up.

I also got noticed today that our final cover design is done.  So we are in the final stretch of this book.  The cover hasn’t been uploaded to Amazon yet, but if you are interested in pre-ordering a copy just click on the cover image to your right and it will take you to the Amazon page where you can place your order.

Tags: , ,

Posted in ASP.NET, News, Personal, Portfolio, Review, SQL | kick it on DotNetKicks.com | Bookmark | View blog reactions | 2 Comments »

December 14th, 2008

Introducing the ASP.NET MVC (Part 1) - The Model-View-Controller Pattern

About a month and a half ago I announced that I am writing a book, I was really overwhelmed by the amount of support that I received from this announcement.  Both myself and Al are really looking forward to the day when this book ships, and we start receiving real feedback on all our hard work.  However, both of us would like to start receiving feedback as soon as possible, so…

In an effort to write the book and keep blogging, I decided to write/blog the last chapter, Chapter 2.  I am doing this so I can receive feedback on this chapter as early as possible.  Because this chapter, in my opinion, is probably the most critical of the book, it defines the context around ASP.NET MVC and how it differs from ASP.NET Web Forms, as well as giving a historical perspective of the MVC pattern.

In the next several posts we will cover the following parts of Chapter 2 from the book:

by Nick Berardi

New: $31.49
This item has not yet been released. You may order it now and we will ship it to you when it arrives.

The Model-View-Controller Pattern

The Model-View-Controller architectural pattern has been around since 1978 and was first described by Trygve Reenskaug while working on a programming language called Smalltalk at Xerox PARC.  The implementation was first described in his now famous paper on the subject, titled Applications Programming in Smalltalk-80: How to use Model-View-Controller, published on December 1979, and has been popping its head up in many different ways and forms since the original paper was published.  Reenskaug maintains a page that explains MVC in his own words (http://heim.ifi.uio.no/~trygver/themes/mvc/mvc-index.html), and contains his publications on the subject; it is well worth the read and is only two pages long.

The MVC pattern has been implemented in most every programming language that is in use today, including ColdFusion, Java, JavaScript, Perl, PHP, Python, Ruby, Smalltalk, XML, and of course .NET.  In fact in November, 2002 the W3C, the main international standards body for the World Wide Web, voted to make the MVC pattern part of their XForms specification, which will be integrated directly into the XHTML 2.0 standard.

Reenskaug explains on this site that “The essential purpose of MVC is to bridge the gap between the human user’s mental model and the digital model that exists in the computer.”  As illustrated in Figure 2-1.

Figure 2-1

Figure 2-1

He goes on to explain that “The ideal MVC solution supports the user illusion of seeing and manipulating the domain information directly.  The structure is useful if the user needs to see the same model element simultaneously in different contexts and/or from different viewpoints.”  This is important because it puts the emphasis not on the application, but how the user perceives the data, the controller and view is only a means to the end of allowing the user to visualize the model in other words.

Reenskaug defines the Model-View-Controller in the following way.

  • Model: Represents knowledge.  A model can be in the simplest case a single object in your application, or in a complex case combination of objects.  It should represent the world as seen by the developer for the application that is being developed, in other words your database or domain.
  • View: Visual representation of the Model.  It should highlight the certain aspects of the model while minimizing the others where possible.  According to Reenskaug it should act as a presentation filter.  What he describes as a presentation filter is the notation of a contract created between the Model and the View that will provide the parts of the model requested for the presentation by the View.
  • Controller: A controller provides a link between the user and the system.  It provides the user with actions that can be taken against the Model, which in other words creates a set of inputs that can be acted upon and represented to the user in one or more ways through a View.

Bringing MVC Down To Earth

The concepts and ideas behind MVC were honestly a little abstract for me when I was first getting started, it took me a while to understand how the Model, View, and Controller where suppose to work together to create an application.  Unfortunately at the time I didn’t have a great example that clearly defined the lines between the different parts of the Model, View, and Controller, so I had to learn the hard way.  Lucky for us Jeff Atwood, of codinghorror.com fame, provided an example that really struck a chord with me.  Figure 2-2 is a visual representation of his example.

Figure 2-2

Figure 2-2

This example almost perfectly represents MVC in a way that any web developer with only basic knowledge of HTML and CSS can understand.

  • Model: The HTML is the “skeleton” or definition of the data to be displayed to the user.
  • View: The CSS is the “skin” that gives the HTML a visual presentation.  The CSS can be swapped out to view the original content in a different manor, without altering the underlying Model.  They are relatively, but not completely, independent of each other.
  • Controller: The browser is responsible for combining the CSS and HTML, into a final representation that is rendered out to the screen in the form of pixels.  It gathers input from users, but it is restricted to the input defined by the HTML in the form of input, select, textarea, and button DOM objects.

I find this to be an awesome acknowledgement to the success of the Model-View-Controller, because the browser is a natural interface for a computer user that wants to visualize the World Wide Web.  It successfully maps the Mental Model, from Figure 2-1, that a designer envisioned as an interface for the user to the Computer Model, which a developer coded for use on the World Wide Web.  So I hope this helped you visualize MVC in a way that helps you break out and understand the concepts behind the Model, View, and Controller.  If you would like to read Jeff’s full article it is available at http://www.codinghorror.com/blog/archives/001112.html.

For the purpose of this book we are going to define MVC as the following:

  • Model: The classes which are used to store and manipulate the state of the database, through our domain objects, combined with some business logic.
  • View: The user interface parts, coded in HTML, necessary for rendering the Model to the user.  It may also render the Model as XML or JSON if needed programmatically by JavaScript.
  • Controller: The application layer that will accept the input and save that information to the database through our Model.  It will also contain a small amount of business logic necessary for controlling and validating the inputs.  The controller will also decide which view to render, the HTML, XML, or JSON depending on the form that was requested by the browser.

The above definition of MVC for our application, The Beer House, is an almost exact representation of MVC as defined by the ASP.NET MVC team.

This post is licensed under a different license than the rest of my site. Copyright © Wiley Publishing Inc 2009

Tags: , , , , ,

Posted in ASP.NET, C#, News, Personal, Review, SEO | kick it on DotNetKicks.com | Bookmark | View blog reactions | 7 Comments »

August 27th, 2008

So I received an iPhone last week…

I have to preface what I am about to say with a couple of things:

  • I have a first generation iPhone
  • I do not have AT&T or any other GSM network
  • I am using this iPhone as a phone mostly as an iPod
  • I use Verizon Wireless as my cell phone provider

I have to say I am pretty impressed with the iPhone interface.  Alot of work has been done with the user interface and making the applications very useable.  But I have noticed the following problems, that wouldn’t nessisary keep me away from this as a phone, but would make me think twice about how usable it is from my point of view:

  • Microsoft Exchange support has been severely dumbed down, and forced in to the limited Apple model surround Mail, Calendar, and Contacts.
    • There are no categories for the Mail, Calendar, or Contacts.
    • There is no way to retrieve my tasks.
    • I use color coded calendar events for separation between Personal, IdeaPipe, and my Employer Voveo.  I have not been able to figure out the color coding that Apple seems to indicate on their Enterprise site.
  • No way to store and access files on the file system.  Which I use when I need a quick thumb drive in a pinch or to carry around presentations.
  • No Copy and Paste
  • Safari crashes under large downloads.  Especially on large pages that are not loaded via AJAX.  So it seems like buffering or rendering of complex web pages seems to be a problem.
  • No Flash or Java support on the “real web.”
  • Unable to make quick edits to Word, Excel, or PowerPoint documents, like I can do on a Windows Mobile device.
  • It is very hard to develop a native application for the iPhone if you don’t have a Mac.  (sort of expected this one though)
  • No voice command software to read calendar events, dial phone numbers, or call somebody out of your contact list.  (not that I need the last two in my current situation)
  • No supported way to tether the iPhone to your computer to use it as a modem.
  • As well as the numerous 3G problems that seem to occur because of an immature 3G network.
  • Security is a second thought behind neat usability features.

The iPhone is a wonderful device, but in my oppinion it is still on the level of a toy, because it is generations behind Windows Mobile and Black Berry with features that are needed and wanted as an average business user. And at least Window Mobile and Black Berry keeps their devices locked and passcode protected, which is another reason Enterprises were probably wise to wait on rolling the iPhone out. Apple’s Exchange integration also seems sort of half assed, and they should have probably spent more time on providing some of the more basic features such as categories and tasks instead of creating a horribly buggy semi-quazi competitor with their MobileMe service.

All in all there is no complelling reason to move away from Verizon Wireless at this time for me.

Tags: , ,

Posted in Review | kick it on DotNetKicks.com | Bookmark | View blog reactions | No Comments »

August 14th, 2008

Is Stackoverflow.com really a Web 2.0 site?

I have been lucky enough to be one of the few and many people that have had the chance to preview the beta of stackoverflow.com. It has a very nice look and feel in my opinion and seems to work very well for an early beta. Jeff Atwood deserves major kudos. However I have had one plaguing question?

Is stackoverflow.com really a Web 2.0 site?

I started thinking about this question a couple days ago, because as many of you know I have my own project, that isn’t much different functionality wise than stack overflow. As I started cataloging everything that a Web 2.0 site is suppose to consist of, the more I asked the question what is a Web 2.0 site, and is stackoverflow.com really one?

Tim O’Reilly defines Web 2.0 as the following:

Web 2.0 is the business revolution in the computer industry caused by the move to the Internet as platform, and an attempt to understand the rules for success on that new platform.

In my opinion a platform has the following characteristics and so does a Web 2.0.  There are probably many more, but these are the top 4.

  1. It must have a fluent interface.  (this is usually implemented through AJAX)
  2. It must have an externally available API.  (because a closed platform is what Web 1.0 was all about)
  3. Users can own data and have control over who sees it.
  4. It is an obvious advancement from the previous Web 1.0 version of the software if one exisited.

http://stackoverflow.com

Just as a precursor to the following discussion, I have never heard Jeff proclaim that stack overflow is a Web 2.0 site, so this is just my ramblings.  Jeff has also done an awesome job with the site in a short period of time so everything I am saying now will probably change in the future.

Stackoverflow.com has only really done #1 of the first 3.  However what I really want to have a discussion on is if it really has advanced it self enough beyond the old forum model to really be considered 2.0 worthy or is it just a display layer on the 1.0.  For all intents and purposes we are going to use the forums on ASP.NET for comparison.

  • Allows users to create posts? (both yes)
  • Allows users to create reply to the posts? (both yes)
  • Allows users to talk to each other? (asp.net only)
  • Allows users to rank posts? (both yes, but different mechanisms)
  • Allows users to rank replies to posts? (stackoverflow.com only)
  • Allows users to get a system ranking against other users? (both yes)
  • Allows users to tag posts? (both yes)
  • Allows users to tag replies? (asp.net only)
  • Allows users to mark a reply as an answer? (both yes)
  • Allows categorization of posts? (asp.net only)
  • Users aquire badges of honor in the system? (both yes)
  • Users can have a profile of themself and their activity? (both yes)
  • Can easily follow a posting? (asp.net only)
  • Can easily follow a grouping of posts? (asp.net only)
  • Allow users to delete posts? (stackoverflow.com only)
  • Allow users to delete replies? (stackoverflow.com only)

Using the above questions it makes stackoverflow.com look like it is playing catch up to the asp.net forums, which has had a 6 year head start.  But it still begs to ask the question is the technology and application of it worth of the title 2.0 or just 1.1?  I think Jeff needs to impliment the following beyond the typical forum to really claim that 2.0 title.

  • An external API (REST seems popular)
  • Become less of a destination and more of a service:
    • Render in other platforms. (Facebook and/or Open Social)
    • Allow posting and following via SMS and IM.
  • Allow users to follow certain tags, categorizations, users, etc. through RSS, JSON, XML, etc.

I do beleive that Jeff has a long way to go before stack overflow is considered an advancement beyond the standard forum, but if anybody can make that leap it is Jeff.

Tags: , , ,

Posted in Review | kick it on DotNetKicks.com | Bookmark | View blog reactions | 1 Comment »

July 26th, 2008

X-Files: I Want To Beleive… Meh…

Last night I saw the new X-Files Movie, I Want To Believe, and as a fan of the original series and movie, I had great expectations for this movie.  In the normal series and the first movie, Mulder and Scully were assigned by the FBI to investigate the X-Files, or cases that couldn’t be explained by normal science.  Which usually involved humans with special abilities, government cover-ups of paranormal activity, and extra-terrestrials.  However this movie didn’t have anything do do with any of that, and the script seemed more politically driven, than to actually answer questions from the fans of the original series, it didn’t even seem to be a continuation of the original series.

Plus I think most of the critics just phone this one in with a score of 3.3/5.0, it deserved a 1.0/5.0 and that was probably being generous.

Lets just say I went to see X-Files: I Want To Believe, and I really wanted to believe that the produces would do the original series justice, but the movie left me wanting to leave.

Warning Spoiler Alert If You Continue Reading

Read the rest of this entry »

Tags: , ,

Posted in Review | kick it on DotNetKicks.com | Bookmark | View blog reactions | 4 Comments »

July 20th, 2008

Do your self a favor get Opera 9.5 Mobile

I just downloaded Opera 9.5 Mobile for my Windows Mobile phone. And I have one thing to say. Wow! This brings a more standard compliant browser to your phone to replace the aging Pocket Internet Explorer. Opera 9.5 Mobile event beats the iPhone version of Safari in the ACID 2 and ACID 3 tests, so it is an amazing experience to finally get the full web, as it was intended, on my mobile device.

The features of Opera Mobile 9.5 will include the following:

  • Intuitive user interface
  • Tabbed browsing
  • Improved text wrap
  • Page overview, zooming and panning
  • Landscape mode
  • Save Web page for future offline access
  • Call phone number from Web page
  • Send link as SMS/MMS
  • Send image as SMS/MMS
  • Small Screen Rendering
  • Password manager
  • Web address input auto-completion
  • History and bookmarks
  • Copy text
  • Opera Widgets

The user mhalachev in the forums had the following to say about his first impression (and issues with the beta) of Opera Mobile 9.5:

- The default keyboard is altered when I start opera. (this one was quoted a lot of times, but it’s very important for be, because I use alternate IME with cyrillic text input)

- It is not necessary to pop-out the IME automatically every time, especially on devices with qwerty keyboard.

- When I double-tap to zoom-in outside of a paragraph, it always zooms to the top-left corner of the canvas and not to the point where i’ve tapped. I don’t know how you determine the exact size of the zoom-in area, but I’ve noticed that if the element is defined only with css properties (e.g. page header with backgroud-image) it zooms to the top-left.

- It would be nice if you implement the soft keys to do something (I’m running it on Kaiser, but most wm devices have softkeys too), like in Opera Mini, where I can access the menu via soft keys)

- It would be nice too if it’is possible to scroll and zoom with the d-pad, like in Opera Mini.

- The Kaiser has a Tab key on the sliding-out keyboard. (other devices have too) You may catch it and make Opera jump between page links, like a tab key on a “normal” PC.

- I liked the black theme on the first screenshots that you’ve posted in February. It will look good on the black htc theme. Think of making a theme, that takes it’s colors from the device’s theme.

- I have the Flash plug-in installed (Pocket IE displays flash), so I would like to see flash content in Opera. The kick-ass mobile browser will be that one, that displays flash content along with AJAX.

- Talking of AJAX, I would like to congratulate you for the support in Opera Mobile! It displays correctly various ajax-enabled sites, incl. the google reader for iphone etc. Various dom and dhtml gimmicks are rendered (almost) like on a desktop pc.

- I would also like to suggest once again to take some of the navigation and control options from Opera Mini (the softkeys and the d-pad), because they are very convenient while on the go, with one-hand operation.

So as you can see this is pretty typical beta software with the normal line up of things to do before the gamma release.  But I definitely recommend checking it out.  This is a video produced by Opera to demonstrate the features of this new release, in case you are not convinced yet.

The following are know issues with the current release, as noted by Opera:

  • ActiveX is disabled — Flash plugins and embedded video streaming do not work.
  • Custom IME’s (like HTC’s IME) will be buggy at best, not working at worst.
  • Not multilingual build — Only English is supported. Problems with other languages (and input methods) are not unexpected.
  • Installation on memory cards may cause problems.
  • Text wraps in overview mode.
  • Main testing has been done on English HTC devices (Touch Diamond, Touch Pro, Touch, Touch Dual, Touch Cruise, TyTN and Wizard) and Samsung i900.
  • We have got reports from some users that this build will disable the phones sounds/notifications.

Give it a try I know you will thank me.

Download: Windows Mobile 5/6 Pocket PC, version 9.51b1(Touchscreen-based devices only)

Tags: , , ,

Posted in News, Review | kick it on DotNetKicks.com | Bookmark | View blog reactions | No Comments »

July 16th, 2008

Review of NDepend

When I was asked to review NDepend I didn’t want to do just another review.  Because there are plenty of great reviews and I would just be adding to the noise.  So I am going to use this time to give a personal story of how NDepend has helped me restructure some code I have been working on.

As you are probably aware I have been working on a start up, called IdeaPipe, we have been going full steam ahead since January 2008 to get IdeaPipe to the point where it is today.  Going at that break neck speed for almost 6+ months has left some raw spots in the code, that I have been putting off.  Because lets face it even though they are not optimal, they are returning the correct results.  Just like a rough draft for a book it is better to get all the way through it and get a good picture of the entire story as a whole, and go back and rework the spots that were created inorder to advance the storeline.  The same is true for software.

In large software projects you sometimes forget where these rough spots were and why you actually implimented something in a certain way.  Luckily for us we have tools like NDepend that provide base metrics telling you were you need to focus your work. 

One of the features that I loved the most in NDepend was this CQL (Code Query Lanauge) that allows you to run SQL like queries against your assemblies.  So if you wanted to find all the private variables that didn’t follow the rule of starting with “_” that is as easy as running a SELECT query in the command window.  The CQL is by far the coolest software feature that I have seen in a while.

Overall I give NDepend a thumbs up.  I do have one request for the good folks at NDepend and that is to intigrate all the windows in to Visual Studio to provide a seemless experience for us developers.

Tags: , ,

Posted in Programming, Review | kick it on DotNetKicks.com | Bookmark | View blog reactions | 2 Comments »