jump to navigation

Top 10 Features of IE9 September 20, 2010

Posted by Ivan Perez in General.
Tags: , , ,
add a comment
Well, I have to be honest, ever since Chrome came out with its first version, I was a fan. In every conceivable way they blew the competition out of the water.  The start up speed, the new tab speed, the way it managed downloads to the way it minimized the header crap found in most browsers.  It took the industry by surprised and gained a formidable amount of marketshare in such a short peiod of time.
And thats only the outside.  The speed of the Javascript engine alone demanded serious respect and gave “Web Applications” a serious notch up in being very much “windows like” in its performance and feel.  Chrome changed the game and made IE8 look bad.
But that didn’t last too long.  Here comes IE9 Beta 1.  When it came out I had my doubts.  Burnt from the past, I didn’t expect IE9 to “get it right”.  I’d figure, yea, sure they upgraded the Javascript engine, but its about the overall feel of the browser thats important.
My initial assumptions were completely way off.  Microsoft learned and listened.  They got it right with IE9!  Let my start by going down the list of my top 10 favorite features.


1. JavaScript Engine was rewritten from the ground up.


The new JavaScript engine has some serious engineering behind it and some serious horse power to show for it.  The new engine rewritten from the ground up was engineered for real time performance.  The compiler is like none I’ve ever heard of before.  The way the engine works is as soon as the javascript is downloaded, it uses the “slow” interpreter to start processing the javascript.  But at the same time, IE9 creates a new thread to start compiling the javascript to native code.  As soon as the compiler is done, the native code finds the current place of where the javascript was processing via the interpreter and takes over the processing from there on.  This genious of engineering means that load and start up times for javascript intensive applications will be smooth and quick.  This is that “overall feel” that I was talking about.  Its about overall performance in the end.
2. Download Tracking! 

How many of us wish they could go back in their history of downloads to re apply something, or share something.  How many times  with IE you forget where you downloaded your files.  Now this is a thing of the past.  IE9 took notes from Firefox and Chrome how to handle downloads.  To me this is such a usability feature that was long ignored by IE.  Thank you MSFT for adding this one!!
3. Fast Tabbing/Snap On/Off
One of the biggest features that sold me when Chrome came out was the ability to load up and tear down tabs very fast.  And as well as the ability to take tabs out of the current window into its own window.  This was huge.  IE8 took 10 seconds to load a new tab on my computer.  Chrome took a fraction of a second.  So when IE9 came out, this was one feature that I had doubts with.  And as soon as I open it up, I was surprised.  Then I went to try out dragging tabs in and out of the window.  SWEET!  Its just as good if not better than chrome in this aspect.
5. Minimized Clutter
6. 3rd Party Component Load Time Tracking
7. Graphical Rendering Engine
8. Standards Compliance
9. Improved Developer Tools
10. Jump Lists!!!

Windows 7 Released!! October 21, 2009

Posted by Ivan Perez in General.
Tags: , , ,
add a comment

Today is finally the day that Windows 7 is released. It’s definitely been a long time coming. 8 years late if you don’t count Vista and its reputation. I’ve had Windows 7 installed since it went RTM and I feel its time to give my 2 cents on my experience with the OS.Windows7_v_Thumb

Let me first off say that when I first used Vista I thought it was great.  Yes it did have its share of problems, but I’m a programmer and I can figure it out, right.  So I go for 2 years using Vista thinking its a great upgrade from XP.  I was tired of XP with so many years of use, I just wanted anything new.  And here comes the Apple fans bashing Vista.  I didn’t understand their angle.  I’m not a Mac user and I can’t say prove or disprove how the Mac is.  But all I knew was Vista and it worked fine for me.

Then comes Windows 7.  When I first installed and used Windows 7 it clearly opened my eyes into what was wrong with Vista.  It was as if an “ah ha” moment struck me.  Everything was so natural, everything was so easy, everything was 2-3 less clicks, everything just made sense.  And then it hit me, this is an OS that my mom can use.  Thats when it made sense to me that Vista was definitely a flop when it comes to usability, a feature that always seems to be lacking on the design of Windows applications.

I already wrote about the install experience in a previous blog post.  It was definitely the easiest windows install I’ve ever done.  And yes I upgraded from XP to Windows 7 on one of my machines. While it is a bit more effort to upgrade, its definitely worth it.  Windows 7 seems to run so much better on older machines.

But now for the user experience.  Everything that the Apple ads hit on.  I can honestly say that everything just works.  Everything is easy.  Everything is smooth and somewhat faster than before, especially on a multi-core machine.  For example, it used to take 3-4 clicks just to lower the system volume.  Now it only takes one click and system volume fader pops up; simple!  Things like networking are so much easier as it can sense the routers settings and it will ask you to connect instead of the user doing the work.  The Task bar is my favorite.  I’ve setup my programs to stay pinned to the task bar even when the program is closed.  This is kinda of like the Mac in that sense.  Let me say that this makes life so easy.  And Aero peek; say good bye to flipping through many windows of the same app to find the one you want.  Aero peek gives you enough hint to see what your looking for.

Its a no brainer that for the home this is truly the way to go.  Non technical users will find that its easy to learn and things “just work”.

But what about the business side of things?  Well, at my company we have installed Windows 7 on several machines to test out the OS in our domain.  The OS performed amazing when joining on the domain.  My work machine is actually faster now which previously had XP.  My apps are faster, start up time is faster.  I work in Visual Studio .Net and this app is significantly faster.  The multi core and memory manage improvements shine in this app.  Things that would take 30 seconds to execute now take 5-10 seconds.

There are some compatibility issues as far as Virus scanners go, but according to our IT pro, the Virus scanner software is upgrading this month to support Windows 7. And so it looks like our company will move to Windows 7 for all new machines.  I am pushing for our developers to all be on Windows 7 64bit environment.

We recently had a consultant come in and she came over to my desk to see how an internal application works.  I went screen by screen through the application, and she asked me “What OS is this?” not recognizing the Windows 7 environment.  I told her this is “Windows 7” the new OS from Microsoft.  She was amazed at the look.  I showed her some of the feature of the OS, but she was truly floored when she noticed my task bar and all the pinned apps on it.  She said “this looks just like the Mac”.  She left amazed wanting to install this on her own machine.

Without any more talks, trash talking and demos, lets open our arms to Windows 7!

.Net Enum Guidelines August 13, 2009

Posted by Ivan Perez in .Net, Architecture, General.
Tags: , , , , , , ,
add a comment

For all you developers out there. You propbably thought there wasn’t much to Enums. This article spells the ins and outs and all the gotchas that go along with Enums. Definately something to think about before working with them.  Its definitely affect our projects and how we use them.

Windows 7 First Look August 12, 2009

Posted by Ivan Perez in General, windows.
Tags: , , , , , , , , , , , ,
1 comment so far

Well, its been about 1 week and Windows 7 RTM is amazing.  Now let me get one thing straight, Vista wasn’t bad, but it was death by a thousand cuts.  Windows 7 really got things right. I mean its easy!  Wow!  Things just make sense, things just work, and things just flow so easily.  I can’t recall a windows OS that was this easy to get going.  So in this post I just wanted to share my install/setup experience to share with you dear reader why Windows 7 is a winner.

I took my 2 year old HP laptop which had Windows Vista Home Premium.  While my Vista was fine, it definately was sluggish on my laptop.  And I was definately getting annoyed by the Admin prompts every time I wanted to delete a file or make a modification.  So when Windows 7 RTM came out, I downloaded with my MSDN subscription of course.

1. Migration – First I the DVD I burned and opened up the folders to get to the migration wizard (migwiz.exe).  This analyzed my Vista laptop’s contents and allowed me to choose what to transfer.  I hit okay and bam the migration wizard copy those contents to my portable USB drive.  Easy.  The bad part was it took 1 hour for 10GBs to transfer…

2. Format/Install – I rebooted my machine with the Windows 7 disc in the drive.  I wanted to do a clean install.  The BIOS says to hit any key to boot from disc and thats what I did expectedly.  What I didn’t expect was the fancy UI in the setup process.  I was amazed at how easy it was.  I was so used to the years of the dreaded Windows install DOS prompts.  Not with Windows 7, it was all about easy UI.  So I deleted my old partition and created a new one and when on to install Windows.  The process took less than expected.  I was used to a 1 hour format process.  This was not the case.  I’m not sure what happened underneath, but it installed in about 30 minutes.  I verified that it was a clean install.  It had to  have been the easiest and quickest install I’ve ever done for Windows.  Not to mention the animation and GUI to make it intuitive and easy while being glamourous.

3. Drivers – So now my Windows 7 is up and running.  As I first start up for the first time I’m contemplating going to the HP site to download all my drivers that were needed.  The funny thing was when I opened up the device manager, all my drivers were already there.  Nothing to install.  It found everything.  And everything worked!  This was

definately a first.  Drivers were always a hastle for any Windows installation.  Not anymore.

4. Printer Setup –  My home printer is a networked printer.  And sure enough Windows 7 had the drivers.  Must of took 2 minutes to get my printer going.  That being said, a few days later I take my laptop to my church which has a Cannon ImageRunner copier as a network printer.  I search for the printer and try to get it installed.  Windows 7 does not find the drivers.  But a button was there to check Windows Update.  Well what do you know, it found it with ease.  Problem solved.

5. Task Bar! –  Can I say that this must be the biggest and brightest change.  I know longer pin my apps to the startmenu.  Why?  I’d rather pin them to my task bar.  They are always there.  1 less click!  Not to mention Aero peek.  Another improvement on the task bar was the services icons that show up on the right by the clock.  I used to hate having a long list, especially the ones that hide.  Now there is 1 icon for all in its own window.  Its so easy and intiutive.

6. Search –  Vista’s search was great.  But Windows 7 is on another level.  You can literrally search for anything, ANYTHING!  And it will show up, even things in the Control Panel or Troubleshooting.  Its all there.  The expanded indexing really makes windows easy.

7.  Desktop Themes – Can I say that the themes are awesome.  I love the rotating backgrounds.

8.  New Calculator! – This has been a LONG OVERDUE make over!!!!!  Now we just need a graphing calculator like Apple’s:)

9.  PowerShell is standard

10. .Net 3.5 SP1 is standard

11. HomeGroups – home networking simplfied!!!

12. Wireless Networking is simplified!!! What a big time saver.  Its just so intuitive, less mouse clicks, all on the task bar.  It just works.  While Vista was a step up from XP in setting up Wireless connections, it was not a task for my mother to do.  Windows 7 makes it easy.

I could go on and on.  Windows 7 is simply AWESOME!

What are your thoughts on Windows 7?

Making your Objects Serializable – Part 1 (Overview) July 21, 2009

Posted by Ivan Perez in .Net, Architecture, ASP.Net, WCF.
Tags: , , , , , , , , , , , , ,
add a comment

Before I get ahead of myself, lets start by defining what serialization is.  In a nutshell its basically a way to convert your object into another form such as XML or binary.   There is also the opposite notion of DeSerialization which is the act of taking your object that is in XML or binary form into an actual .Net object.  Here is wikipedia’s definition of Serializatoin/DeSerialization.

The point of serialization is to store or transfer your objects in or through another medium.  Examples of this are taking your objects and turn it into XML format to be transfered over the internet through a WCF service.  Or another example is to store your object in binary format to be stored in a database or over a local network via network packets.  As it stands there is no way to tranfer your objects and maintain its form outside the .Net CLR.  And so Serialization is here to help with the mission.

Now you might be asking yourself, whats the big deal.  Its easy to Serialize my objects, isn’t it?  Well, for most purposes, all you have to do is stick a the Serializable or DataContract attribute over your class.

Public Class MyOjbect

End Class

Public Class MyOjbect

End Class
But the one thing about Serialization is that it only converts properties. Your functions, constructors, events, calculated properties, etc. will not get converted. And when you recieve one of your serialized objects on the other end of the wire, its much less functional than where it was initially created. Of course this is assuming you proxy your objects (WCF, Webservices, etc…). It is possible to deserialize to the actual objects assuming you have access to the code. Most of the time this isn’t the case.

So now that you understand what serialization is about, there are different ways that you can serialize your objects. The .Net library has a bunch of ways to do it, but the most common ways are XML Serialization, Binary Serialization & DataContract Serialization. The XML & DataContract serialization methods are very similar. One is strictly for adhering to the XML standard, the other does still convert your object to XML, but has more smarts behind it for transferring your objects over WCF and recalling those objects on the client retaining your class hierarchy such as any base classes. In fact, its smart enough to know your base class hierarchy and maintain this hierarchy via a proxy class. Binary serialization turns your object into 1’s and 0’s and maintains a perfect replica of your object in that form. Its great for storage and for high speed transactions. Storage in a database, file system, or even transferring over the network to enable a low bandwidth is where its strength lies.

I’ll be posting more on Serialization and where things can get hairy.  Look for more in the coming weeks!

ASP.Net Tip – CSS Styles applied on Server Controls July 20, 2009

Posted by Ivan Perez in .Net, ASP.Net.
Tags: , , ,
add a comment

In this decade of web development, there is beauty in the design and simplicity of CSS styles applied on HTML elements.  The ability to apply simple keywords over any element and change its graphical/textual properties is powerful and easy.  The code below gives an example of how CSS & Javascript events are so simple to apply

<span style="color:#DEDEDE;background-color:#FFEEDD"
onclick="load()" >Label</span>

At first glance, the ASP.Net controls that ship out of the box may seem a bit limiting when compared to normal HTML elements in a style/javascript context.  While typing in the properties of any control, you might notice there are no “style” properties or “onclick” properties to apply javascript to.  But rather there is a style collection that can only be used at code behind and not declaratively.  There is an Click event, but its for button clicks that post back to the server and not to be used for client side javascript.  So at first glance, it may seem that ASP.Net server controls are not up to the task so easily.

Whats really is misleading in ASP.Net is Visual Studio’s intellisense.  Intellisense does not show that any elements declared as properties in the server control be rendered to HTML.  In fact, any attributes that the server control does not recognize will get propagated to the HTML.  So its actually perfectly legal to do the following.

<asp:Label id="Label1" runat="server" text="label"
 onclick="load();" />

Below is the actual HTML that has been rendered.
As you can see, all of the CSS style attributes and the javascript onclick event all pass through to the HTML, even though the Visual Studio intellisense does not show it as an option.  And this beats doing the above example in the Page_Load event in code behind.

MEF Now Supports Silverlight! July 14, 2009

Posted by Ivan Perez in .Net, Architecture, Development, Silverlight.
Tags: ,
add a comment

Managed Extensibility Framework (MEF)MEF or the Managed Extensibility Framework has come out with Preview 6 and now supports the Silverlight platform.  This will allow some killer apps to take advantage of MEF capabilities.

If you’ve been in the closet lately, MEF simplifies plug-in architecture for .Net applications.  And so imagine adding 3rd party extensions to your enterprise Silverlight application.  This takes Silverlight to a whole new level.  Try doing that with Flash…

For more information on the new MEF preview see Brad Abram’s blog

For those of you are who are new to MEF and want to learn more check out this PDC conference video on the subject.

RIA Services CTP Gripes July 13, 2009

Posted by Ivan Perez in .Net, Silverlight.
Tags: , ,
add a comment

The latest RIA Services CTP came out in July to support the Silverlight 3 RTW.  Now before I start, let me say that I think the problem that RIA Services is trying to solve and the way its doing it is great.  Silverlight won’t be seriously considered for alot of business projects without RIA Services.  Namely the ability to easily communicate between server and client very easily.

The root problem in this space is the fact that you have to do double work to get a Silverlight app up properly.  You have to create your business objects and DAL on the server side.  Then you have to recreate the entities and business objects that are on the server, in Silverlight.  This is the case because many times you may have the need to use calculated properties or initialization functions or validation, etc.

This is where RIA shines.  It enables developers to reuse the code they already developed on the server and use it on the client.  It automates the communication so that creating WCF services is a thing of the past.  But this is also where RIA’s problems begin and where I start to gripe.

For many simple applications, RIA will serve its purpose, but for truly complex enterprise applications RIA is lacking in one main area that WCF shines.  The Inheritance Hierarchy.  RIA Services severly lacks in maintaining the Inhertiance Hierarchy on the Silverlight client.  WCF maintains this hierarchy.

Let me explain.  Lets say we have a collection of contacts.

Dim contacts as List(Of Contacts)

And lets define contacts as so.

Public MustInherit Class Contacts

  Public Sub New()
  End Sub

  Public Property ID As Integer
  Public MustOverride Property FullName As String
  Public Property PrimaryPhone As String
  Public Property Address As String
End Class

Now lets say that we have different types of contacts.  Business contacts and personal contacts.  Each has different properties and functionality, but both  inherit from the base class Contact.

Public Class BusinessContact
  Public Sub New()
  End Sub
  Public Property BusinessName As String
  Public Property EmployeeContactName As String
  Public Property CompanyWebSite As String
  Public Overrides ReadOnly Property FullName
      Return Me.EmployeeContactName + " (" + Me.BusinessName + ")"
    End Get
  End Property
End Class
Public Class PersonalContact
  Public Sub New()
  End Sub
  Public Property FirstName As String
  Public Property LastName As String
  Public Property Suffix As String
  Public Overides ReadOnly Property FullName
      Return Me.FirstName + " " + Me.LastName + " " + Me.Suffix
    End Get
  End Property
End Class

Now we have 2 specific types of contacts that have distinct functionality, but are inherited from the base type contact.  Now as I said before, we will use a List(Of Contact) to hold many different types of contacts.   Now lets say we want to use WCF to transfer these objects over the wire to Silverlight.  WCF will serialize & proxy these objects in a way that retains the inheritance hierarchy of Contact->BusinessContact and Contact->PersonalContact.  VisualStudio will create a proxy class on a Silverlight project that holds the hierarchy in place just like on the server.   If you were to code

Dim p as New BusinessContact
Dim t as Type =  p.BaseType

would result in t = Contact.

Using RIA Services, what happens in this scenario is the RIA serializer/proxy flattens the objects.  It retains all properties of all parent objects and only maintains the highest level object.  And so now, Silverlight will not know anything about a  class called “Contact”.  And so at this point you will run into problems in having one collection of different types that root from a common base type.

To many this is not a big deal, but in an enterprise level application, I see this as a major flaw.  Now there is some good news.  After some of my griping to the microsoft RIA team, they did hear our cry and we are crossing our fingers for this feature to be in version 2 of RIA services.

Before I close this, let me state that the above example is probably a lame example and you could probably come up with a better way to do a contact class.  But many enterprise applications utilize objects many levels deep and its really important to retain that hierarchy.   Heck, just look a the .Net framework see all the objects that inherit from others.  One example, GridView’s columns… BoundColumn, TemplateColumn, etc…  its all over the place.

If Microsoft’s .Net framework contains many hierarchies of base classes, shouldn’t we expect the same capability from objects on Silverlight apps?

Disclaimer:  This finding is based off the march RIA Services CTP and conversations with Microsoft reps in forums.

Silverlight 3 Released! July 13, 2009

Posted by Ivan Perez in General, Silverlight.
Tags: , ,
add a comment

Last week Silverlight 3 was released!Silverlight_H_thumb

Can I add that it seemed to have come out so much faster than with past releases.  From version 1 to version 2 it was about a 9 month difference from the time it was in beta to RTW.  This time the beta came out in March and RTW in July.  Not bad at all.  At this rate we should see a beta in the fall and RTW in the spring for ver 4.  However Microsoft’s process is being put together with Silverlight, they got it right.

Then the other smart move Microsoft did was putting a good amount of controls as open source, which allows for even faster development times and allows the community to give feedback.

But this is not about development processes, this is about Silverlight 3.  The next version of Silverlight is truly remarkable.  Allowing for not only media applications to flourish with ease, but to also allow business applications to be possible.  And this is where I want to focus this article.

Silverlight 3 really added a ton of features for business application development that was sorely lacking in version 2.  One of the big ones was navigation.  In version 2, you had to create a new “usercontrol” for each page of functionality you needed.  And then to get between each page you had handle that code manually.  And it wasn’t intuitive.  There was no page classes that did some of this for you.  Come Silverlight 3 and page navigation.  Similar to ASP.Net master pages and a combination of menu links and so forth.  Now navigating between pages is easy.  Did I mention that this feature also allows for your Silverlight Apps to be searchable via Google and Bing.  Its possible because the navigation controls places unique url strings that allows for different pages to be linked to unlike a normal flash application.  Normally when linking to a flash app or older silverlight apps, you have to start at the beginning.  This now allows you to treat pages as pages.  And so any page can have an entry point.

Another slick feature that really makes Silverlight 3 awesome is the out-of-browser feature.  This capability now allows your apps to sit on the users desktop.  This allows the user to use the app even if the computer is offline enabling some killer scenarios.  And to top it off having the app on the desktop gives the local storage up to 25 MB of space.  Think audio/video that is stored on the machine as a cache.  Sweet.

For now these are my notable list of features.  Obviously I’ve only scratched the surface.  There is more to come sucha s RIA services, controls, better media support and more.


Get every new post delivered to your Inbox.