Top 10 Features of IE9 September 20, 2010Posted by Ivan Perez in General.
Tags: Browser, Chrome, IE, Microsoft
add a comment
Windows 7 Released!! October 21, 2009Posted by Ivan Perez in General.
Tags: Microsoft, os, windows, Windows 7
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.
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, 2009Posted by Ivan Perez in .Net, Architecture, General.
Tags: .Net, Architecture, Enum, FlagsAttribute, Framework, guidelines, rules, Usage
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.
Making your Objects Serializable – Part 1 (Overview) July 21, 2009Posted by Ivan Perez in .Net, Architecture, ASP.Net, WCF.
Tags: .Net, .Net 3.5, ASP.Net, Binary, BinarySerializer, DataContract, DataContractSerializer, ISerializable, Programming, Serialization, WCF, Webservices, XML, XmlSerializer
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
Public Class MyOjbect
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, 2009Posted by Ivan Perez in .Net, ASP.Net.
add a comment
<span style="color:#DEDEDE;background-color:#FFEEDD" onclick="load()" >Label</span>
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" style="color:#DEDEDE;background-color:#FFEEDD" onclick="load();" />
Below is the actual HTML that has been rendered.
MEF Now Supports Silverlight! July 14, 2009Posted by Ivan Perez in .Net, Architecture, Development, Silverlight.
Tags: MEF, Silverlight
add a comment
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 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, 2009Posted by Ivan Perez in .Net, Silverlight.
Tags: .Net, RIA Services, Silverlight
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 Get 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 Get 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, 2009Posted by Ivan Perez in General, Silverlight.
Tags: .Net, Microsoft, Silverlight
add a comment
Last week Silverlight 3 was released!
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.