| |
Articles from
March 2008

Curious about the status of the ISO vote on Open XML? Check out the unofficial ISO Vote website. At the time of this post, things aren't looking so good, but most of the votes aren't in yet. The current assumption is that the votes won't change from the previous vote. I feel like this won't be the case, but we'll just have to wait and see. If you want something more up-to-date or just with more detail, check out Open Malaysia's Last Lap post.
Permanecer Hasta la Fecha con Open XML
En Español
¿Curioso sobre el estado del voto de la ISO en Open XML? Mira el website no oficial del voto de la ISO. Ahora, no pasará, pero no tienen los todos votos todavía. La asunción actual es que los votos no cambiarán del voto anterior. No pienso que éste será el caso, pero apenas tendremos que esperar y ver. Si quiere más información, mira un poste sobre el voto del Open Malaysia.

One trend I've noticed growing more and more is the use of rule engines within applications. More often than not, the rule engine is tied to a workflow engine, like WF or Biztalk. This makes a lot of sense because workflows are, by nature, rule-oriented. But why are workflow engines so special? Truth is, they aren't. For this reason, I'd like to see a managed rule engine built into .NET. This would allow everyday apps to take advantage of a standard, enterprise-scale rule engine with quality tools for developers and technical business analysts to manage rules without significant releases. I'm talking about something that's the equivalent of changing a column in the database, but with more structure and better performance. I envision rule libraries compiled into assemblies, which can be individually deployed. I like this because it's built on existing techniques and doesn't use reflection. I'm just throwing some ideas out, tho. There's obviously more thought that would need to go into this, but I'd be interested in seeing something to solve this pain for developers and the companies they work for. Too many people are building rules directly into the app, which requires a lot of overhead to tweak, test, and deploy rule changes. Having something a bit more dynamic that takes the developer out of the loop would be awesome.

I've always been interested in the idea of using a server OS as my desktop OS. This is mainly because of the fact that I'm a developer and do a lot of developer work. I have a desktop on Windows Server 2003 and have noticed a number of issues when using it for personal things. For instance, the latest version of Windows Media Player isn't supported on Server 2003. Now that the desktop and server OS's are running the same code-base, things may be much easier. Vijayshinva Karnure posted a list of steps he had to perform to run Windows Server 2008 as a client OS. I'm not convinced, based on the number of tasks he had to do, but I might take a look at it for a machine I need to do some cleanup on. I still plan on holding off for my laptops, tho.

This parody came out a while ago, but it's too funny to pass up. I haven't seen it linked to much, so maybe you haven't seen it. It's the story of a day in the life of what a Microsoft marketeer must have been like as a school boy.
Muchacho de Microsoft
En Español
Este parodiar fue fijado hace un rato, pero es demasiado divertido sin mencionar. No he visto a demasiada gente el hablar de él, usted no lo he visto tan quizá. Es la historia de un día en la vida de un vendedor de Microsoft como muchacho de escuela.

I'm excited about Surface, that's for sure. Powered by WPF, it's a great platform for some very cool apps. Despite the fact that other vendors are looking to dig into the space, nothing has really happened since Surface was initially announced. Things may be changing, tho. There's been a huge demand from the field and apparently Microsoft is looking to release Surface to consumers sooner than the 5 year estimate initially estimated. I can't say I'm surprised, but what that will really mean isn't very clear. If I had to guess, I'd say the first consumer version of Surface would arrive in 2010. The biggest blocker to getting it out sooner is the cost of hardware necessary to produce the large-scale graphics and touch capabilities.
Surface en la Casa
En Español
Me excitan sobre Surface. Accionado por WPF, es una gran plataforma para algunos aplicaciones muy buenos. A pesar de que se busquen otros proveedores para cavar en el espacio, en realidad nada ha ocurrido desde que se anunció Surface inicialmente. Cosas pueden estar cambiando. Hay una gran demanda y aparentemente Microsoft puede publicar Surface a consumidores antes que la estimación de 5 años. Estoy no se sorprenda, pero el mensaje no es muy claro. Si tuvieran que adivinar, diría que la primera versión de consumidor de superficie llegarán en 2010. El Bloqueador de elementos más importante para conseguir fuera antes es el costo del hardware necesario para generar los gráficos a gran escala y tocar las capacidades.

Scott Hanselman points out a post by Tim Ferriss , How to Learn (But Not Master) Any Language in 1 Hour. As a language enthusiast, this sounds very interesting. Obviously, I'm working on my Spanish now, but I'd love to learn French, Japanese, Italian, perhaps Portuguese, and who knows what else. A skill like this would do wonders to ultimately pick up these other languages. So what's the secret? Tims suggests that 6 sentences can give you conversational insight into any language (shown here with their Spanish equivalent).
- The apple is red.
- It is John's apple.
- I give John the apple.
- We give him the apple.
- He gives it to John.
- She gives it to him.
- La manzana es roja.
- Es manzana de Juan.
- Doy a Juan la manzana.
- Le damos la manzana.
- Él lo da a Juan.
- Ella le lo da.
At first glance, I had no idea what Tim was talking about. Sure, there are some things I can easily extract, like "apple" is "manzana" and "John" is "Juan," but to be conversational in an hour? That seems to be asking a lot. Truth is, Tim isn't saying this is all you need. He's actually saying these sentances can give you a good understanding of a few of the complexities of a language. You can walk away from these sentences with an idea about how long it'll take and how easy it'll be to learn the target language. This is something that might take some getting used to, but Tim's insight is definitely spot-on. The main thing that falls short of becoming conversational is the lack of vocabulary. Like I said, this method simply gives you insight and doesn't truly make you conversational... not to belittle the method.

While not my favorite code to maintain, I still have to deal with legacy ASP once in a while. One thing I've been happy about over the past 8 years is that I can still maintain this code in the same editor I've always used, Visual Studio. In fact, it's been nice getting teams to upgrade from Visual Interdev and Visual SourceSafe to Visual Studio 2005 and TFS. Unfortunately, legacy ASP is no longer supported in the latest incarnation of the IDE. I can't say I'm surprised, I guess. Microsoft likes to drop legacy technologies after about 8 years.

I've started playing with scripts to enhance my online experience the past few weeks and, with that, have been getting more and more annoyed with the prompt to copy/paste content on websites. I like the idea of this, but hate how often it asks me. Every time you load a page and try to copy/paste text, you'll be prompted again. I'd rather it only ask once per session. To get around it, I tried adding a site to the Trusted Sites list, but that didn't work. I admit, I'm glad because a trusted site can't be in the same window as non-trusted sites. This is ridiculous, if you ask me; especially when sites in the Local Intranet zone don't. So, what'd I do? I added my personal site to the Local Intranet zone, which doesn't prompt me by default. Of course, I wouldn't do this with just any site. I'm fine with the prompt in most cases, it's really just the sites I use it constantly, like my own site and the Windows Live Translator.
By the way, the setting that disables the prompt is buried in the zone's security settings: Scripting > Allow Programmatic clipboard access. For now, I'll stick with keeping these two sites in Local Intranet. Not quite correct, but it's better than the horrid experience Trusted Sites gives me.


I just wanted to share a small script that creates a new profile and registers the ps1 file extension. For those that don't know, ps1 is the default extension for PowerShell scripts. Of course, there's a difference between ps1 and bat or cmd. If you double-click a ps1 file in Windows Explorer, it'll open in Notepad. What's up with that!? Apparently, this was done for security reasons. The idea is that, since you can't simply double-click on the file to execute it, hopefully you'll actually look at it to make sure it's not going to kill your system. PowerShell is much more dangerous than traditional batch files are, so this is probably a good thing. With that in mind, PowerShell, by default, doesn't allow you to even execute these ps1 files. To do that, you have to set the execution policy. Anyway, here's the script...
$dir = [System.IO.DirectoryInfo]$profile
New-Item -Type Directory -Path $dir.Parent.FullName
Set-ExecutionPolicy RemoteSigned
I found this online a while ago, but I don't remember where. The only other thing I want to mention, since I imagine some people might freak out by it is the New-Item cmdlet, is that there's a function that simplifies this call and gives us a familiar DOS experience: md. I always thought md was an alias, but never bothered to consider why/how the New-Item cmdlet was determining that you wanted a directory.

I just downloaded IE8 and have to say I'm liking it so far. I was pretty concerned that it was going to be a horrid experience, but it hasn't been. Of course, the next thing I did in this self-centered world of ours was check my website. Being built on DotNetNuke, which is notorious for non-standard HTML, I was concerned. I was happy to see no problems. I'm sure there will be some, but at least I'm looking good so far. I guess all that work I did trying to keep tables out of my design was well worth it.
My only real disappointment has been the fact that web slices have to be explicitly coded into web content. For some reason, I was thinking we could simply select a portion of the age and tell IE to create a web slice from it. I guess not. Maybe I was just thinking of Dapper.

I wrote this a month ago, so it may seem a little out of date. I figured I'd go ahead and post it anyway. If you haven't been following IE8 much, it'll still seem like new 
Standards compliance has never really caught on with the vast majority of web developers. Since Firefox hit the streets, more developers have started to pay attention to the ideals behind web standards, but they still don't seem to be doing the work to achieve compliance. Admittedly, a lot of the problems were brought on by IE's acceptance of bad practices, but the root of the problem truly lies with developers. IE7 resolved a number of standards compliance issues, but unfortunately, it broke a number of sites built specifically for IE6 at the same time. IE8 tries to resolve this problem. Today, we can opt-in to standards by specifying a DOCTYPE, which indicates what version of what standard the developer intends for a page. The problem is that no browser to date implements any standard completely, so there's still a chance your page will render differently in browsers that "support" the desired standard. IE8 fixes this problem. How? By allowing developers to write pages for specific rendering engines (i.e. IE6, IE7, IE8, FF2, or FF3). I love this idea, for obvious reasons.
With IE8 and Firefox 3 both passing the Acid2 test and Acid3 on its way, I think we're in very good standing. While I don't expect huge leaps and bounds between IE8 and 9, I think we're well on our way to some form of nirvana on the web. Hopefully, IE9 will come in the Win7 time frame, which I expect to be in 2009 or 10.

While working with the developer VM I started a year ago, group policy settings were inadvertently changed, causing the network connections service to fail. I also noticed a problem where the VM thought the admin account wasn't an admin. These were both strange problems that we nailed down to bad domain group policy settings. Of course, the VM should have never been joined to the domain, but that's another story. Either way, both problems were fixed by reverting group policy settings. This wasn't hard, but I wanted to share the fix for later, in case something like this happens again.
- Reset settings: secedit /configure /db reset /cfg "c:\windows\security\templates\setup security.inf" /overwrite
- Delete policy: del c:\windows\system32\grouppolicy\machine\registry.pol
- Reboot
I ran both of these on Windows Server 2003 R2 and everything worked great. The only thing you need to do is note the changes you made to the policy before it was corrupted. One I made was to disable the reporting when you shutdown/restart the server, which is annoying on a dev build. Thanks to Jason for the blog post.
Cambiando Política de Grupo a los Ajustes Iniciales
En Español
Mientras que trabajaba en la VM para los desarrolladores, los ajustes de política de grupo fueron cambiados inadvertidamente, causando las conexiones de red mantenga para no comenzar. También noté una problema que eso hizo Windows piensa la cuenta del administrador no era administrador. Los dos problemas fueron con política de grupo de dominio. El VM debe nunca haber sido ensamblado al dominio antes de syspreping y de distribuirlo. Ambos problemas eran fijados cambiando a los ajustes iniciales de política de grupo en el VM. Esto no era duro, pero quise compartir el arreglo para más adelante, en caso de que suceda algo similar otra vez.
- Reajuste los ajustes: secedit /configure /db reset /cfg "c:\windows\security\templates\setup security.inf" /overwrite
- Política de la cancelación: del c:\windows\system32\grouppolicy\machine\registry.pol
- Reinicialización
Hice esto en el Windows Server 2003 R2 y todo trabajó grande. La única cosa que usted necesita hacer es observar los cambios usted realizó a la política antes de que fuera corrompida. Uno que hice era inhabilitar la información cuando usted parada/recomenzar el servidor, que es molesto en una estructura del revelador. Gracias a Jason por el poste del blog.
Is PowerShell the best command line environment out there? Looking at a comparison of computer shells, I'm thinking it is. I'm sure others would disagree, but the facts are there. There are about 3-5 runners up, but the one feature which puts PowerShell over the top, in my mind, is the use of .NET objects in the pipeline.
La Mejor Línea de Comando
En Español
¿Es PowerShell la mejor línea de comando? Después de mirar una comparación sobre cáscaras de las computadoras, pienso que es. La otra gente discrepará probablemente, pero los hechos están allí. Hay 3 a 5 cáscaras segundarias, pero la característica que PowerShell el mejor es el uso de objetos de .NET en la tubería.

As I've been working with PowerShell more and more, I keep picking up small tidbits I'd like to share. Arguably, I'd have learned a lot of them much sooner if would've picked up a book or something, but I look at this as a language I'll just pick up over time and don't really want to dedicate the time to a book... at least not at this point. So, I've decided to start throwing out a few PowerShell tips. I'd like to do a tip of the day, but I don't know if I'll come up with that many. We'll see. For this first post, I guess I should give a very brief overview of what PowerShell is and a few of the basic concepts behind it.
PowerShell is Microsoft's command line replacement. If you've ever done any time on the command line -- yes, I phrase it that way on purpose -- then you know it can be a pain. Not only is it painful, like any "good" prison, it's very limiting... another prison-like attribute. Another aspect I believe PowerShell is trying to attack is Windows shell scripting with VBScript or a similar language. I've used VBScript a few times for UI automation and I have to say, it's not much better than the traditional command line. The bottom line is that PowerShell is a powerful scripting environment for Windows.
So here are the basics: cmdlets, aliases, functions, and the pipeline. Cmdlets are commands. Go figure. If you want to do something, it all comes down to the commands you have available to you. To get a list of commands, type Get-Command. From there, you can figure out what's possible. If you have any questions about how to use them, type Get-Help [cmdlet]. Aliases are exactly what they sound like, aliases for cmdlets. This is one of the great things about PowerShell because it allows people to adopt PowerShell much easier. For instance, dir and ls are both aliases for the Get-ChildItem cmdlet, which is great for DOS and Linux/Unix users, respectively. Notably, the parameters are still PowerShell parameters and not the same as what's in DOS or the *nix systems. Functions are like a gateway drug to true PowerShell productivity. Think of functions as small scripts -- once again, go figure. Lastly, the pipeline is a concept that one command, whether that be a cmdlet or function, can send its output to another command via the pipeline. This is done by using the pipe ("|") character. For instance, to sort a list of folder contents by size, you pipe the contents to one that will sort the items it receives: Get-ChildItem | Sort-Object Length. Pretty simple. The key here, and true power of PowerShell, is the fact that PowerShell acts on .NET objects. This is a first. All other command line environments are pure text and piping content from one command to another is simply sending text down the pipe. Being built on .NET, PowerShell gives us an unprecedented amount of control and flexibility in our scripting.
To give you an idea of Microsoft's dedication to PowerShell, there's an internal mandate that all system administration tools must be built on PowerShell by 2009. The latest Exchange, Active Directory, and System Center releases have already made the switch and SQL Server 2008 is well its way, too.
I'll leave the intro here. In coming posts, I'll dig a little deeper into new features that I find. I'd like this to ultimately turn out to be a developers' guide to PowerShell, but that's more lofty a goal than I'm ready to sign up for. We'll see how things progress.
I was listening to Hanselminutes show 99 with Steven Frank about Mac development and I came to a small realization: Mac users are a lot like Ruby users in that, it takes a certain mentality to "join the club," so to speak. As I understand it, any developers that buy into Ruby also have to buy into certain practices that are built into the language. Steven was explaining how Mac users are used to apps not working on new versions of the OS, yet they still upgrade shortly after new releases are out. He said that 95% of all Mac users are on the 2 most recent versions of the OS. Scott equated that to 95% of all Windows users being on Vista and Vista SP1. Yeah, right, like that'd happen. I don't even think 95% of all Windows usrs are on XP and Vista combined. I think there's a big difference, tho. The primary problem is that Windows has such a huge market share and any developer knows you have to deal with the lowest common denominator. Mac users are typically a little more tech savvy than the average Windows user. I still think a Mac developer's life is a horrible one. There are some interesting concepts in the Mac, but I don't think I could ever make the switch. The hardware is one thing, but the OS is another.

The following consists of the English DVD updates released under the MSDN Premium (Team Suite) subscription level for March 2008.
Developer Tools
- Disc 3918.1 / Part X14-58049
- Microsoft Exchange Server 2007 with Service Pack 1 Enterprise Edition (x64) (English, French, German, Italian, Japanese, Portuguese-Brazil, Spanish)
For more information, see the MSDN Subscriptions Index.
|
|
|