Mac OS X 10.5 (Leopard) + VMWare Fusion + Mono = Bliss

by Jon Davis 17. May 2008 15:13

I have been using my new Mac Mini for less than 24 hours and it already looks like this:

In the screenshot I have VMWare Fusion with Unity enabled so that I have the Windows Vista Start menu (I can toggle off the Start menu's visibility from VMWare itself) and Internet Explorer 7. (I also have Visual Studio 2008 installed in that virtual machine). Next to Internet Explorer on the left is Finder which is showing a bunch of the apps I have installed, including most of the stuff at http://www.opensourcemac.org/. On the right I have MonoDevelop where I can write C# or VB.NET applications for the Mac, for Linux, or for Windows. And of course, down below I have the Dock popped up because that's where my arrow actually is.

I also, obviously, have an Ubuntu VM I can fire up any time I want if I want to test something in Linux. 

Mac OS X 10.5 (Leopard) comes with native X11, not out of the box but with the installer CD, and it's the first OS X build to do so (previous versions used or required XFree86).

This point in time is a particularly intriguing milestone date for the alignment of the moons and stars for blissful cross-platform development using the Mac as a central hub of all things wonderful:

 

  • X11 on Mac OS X 10.5
  • MonoDevelop 1.0 is generally gold (released, it's very nice)
  • System.Windows.Forms in Mono is API-complete
  • VMWare Fusion's Unity feature delivers jaw-dropping, seamless windowing integration between Windows XP / Vista and Mac OS X. And to make things even more wonderful, VMWare Fusion 2, which comes with experimental DirectX 9 support, will be a free upgrade.
  • For game developers, the Unity game engine is a really nice cross-platform game engine and development toolset. I have a couple buddies I'll be joining up with to help them make cross-platform games, something I always wanted to do. This as opposed to XNA, which doesn't seem to know entirely what it's doing and comes with a community framework that's chock full of vaporware. (But then, I still greatly admire XNA and hope to tackle XNA projects soon.)
  • The hackable iPhone (which I also got this week, hacked, and SSH'd into with rediculous ease), which when supplemented with the BSD core, is an amazing piece of geek gadgetry that can enable anyone to write mobile applications using open-source tools (I'd like to see Mono running on it). The amount of quality software written for the hacked iPhone is staggering, about as impressive as the amount of open source software written for the Mac itself. Judging by the quantity of cool installable software, I had no idea how commonplace hacked iPhones were.
  • Meanwhile, for legit game development, the Unity 3D game engine now supports the iPhone and iPod Touch (so that's where XNA got the Zune support idea!) and the iPhone SDK is no longer just a bunch of CSS hacks for Safari but actually binary compile tools.

 

XNA 3.0 CTP Released

by Jon Davis 8. May 2008 14:12

For fun, I watch the XNA community, although I haven't participated as much as I wish because of time constraints (of course).

An XNA 3.0 CTP has just been released, which targets both Windows and -- yay! -- the Zune.

http://www.microsoft.com/downloads/details.aspx?FamilyId=DF4AF56A-58A7-474C-BFD0-7CF8ED3036A3&displaylang=en

I want to get me a Zune. Now they just need to tie Zune with Windows Mobile for Smart Phones so I can carry only one brick around with me instead of two...

Currently rated 1.4 by 7 people

  • Currently 1.428571/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Tags: ,

Software Development | Cool Tools | Xbox Gaming | Microsoft Windows

Lists Of Microsoft's Fame And Shame - 2008

by Jon Davis 5. April 2008 20:44

Since everyone loves to pick on Microsoft, I think we can summarize exactly what has caused such a commotion among technology enthusiasts. The areas where Microsoft has been given most reputational grief have been where the bar was raised higher by a third party, or else where a third party has made people scratch their heads and wonder, "Why am I using Microsoft's technology, anyway?" So I'd like to suggest a list of technologies that shame Microsoft.

To Microsoft's Fame

Before I get started, I want to point out the areas that Microsoft has excelled in:

  1. Microsoft Word & Microsoft Outlook
    • Word processing has become a staple of the computing world. Apart from web browsing and e-mail, the word processor is the next most important and relevant "killer app" of computing technology. Microsoft Word continues to astound us with major new features with every release. It has evolved in sophistication regularly. It is not without its quirks -- for example, there's nothing more annoying than running out of callout diagram graphics due to fixed memory allocation -- but Microsoft has consistently tried to keep Word up-to-date with the demands of its users, and no other word processor can compare with its overall user experience.
    • Microsoft Outlook might feel a little sluggish for some, and I still resent the fact that Microsoft never implemented NNTP support within Microsoft Outlook, but it is still the ultimate app for the office. Maintaining e-mails, calendaring, and task lists in one application, it is always the first app to run when I get in at work, and the last app to close, if I ever close it. And it gets the most attention every day.
      • Microsoft Outlook's greatest area for growth is project management support. Outlook would be a natural environment for managing projects. If the communications and collaboration environment that Outlook already is was consolidated with issue tracking, resource allocation (perhaps merge with MS Project), and even basic SCRUM, professionals would be flocking to the platform all over again. There's always Sharepoint for team collaboration, but Outlook being a desktop application with tuned responsiveness, it blows any AJAX web application out of the water (and please don't even think Silverlight, with its lack of OLE integration, limited [or no] drag-and-drop, limited contextual menu support, and no windowing support). I think Microsoft has regularly missed opportunities to make Outlook the ultimate "portal" for all things related to collaboration.
  2. Visual Studio, .NET, and C# - http://msdn.microsoft.com/
    • A few years ago I sent a big gripe e-mail to one of Apple's feedback e-mail addresses. It said something along the lines of, "You guys just don't get it. There's a really good reason why more apps are written for Windows rather than for the Mac, and it isn't because Windows is superior. It's because Microsoft pours boatloads of its money into developer support. The MSDN program is probably more important for Microsoft than Windows itself. The return on investment that Microsoft gets with all of its investments with development tools is a no-brainer. If you guys would establish a 'developer network', provide refined developer tools, and make being a Mac developer one of the most exciting and rewarding things about your technology, people would be flocking to your platform." I still believe that this is true. Ironically, a few months after that e-mail there was a huge developer tools push by Apple. Heh..
    • Visual Studio and the core Microsoft SDKs blow all of the competitors, even the latest and greatest iterations of IDEs like Eclipse and NetBeans, completely out of the water. Don't get me wrong, I love what I see in focused IDEs like Aptana. But as a do-it-all toolset, Visual Studio 2008 is just insane. I actually don't think there's anything, except for easy COM object development (*sob* I still miss VB6), that Visual Studio can't do. C# (which is Microsoft's invention and part of the Visual Studio and MSDN strategies) is an incredibly elegant language, even more so than Java, and that's saying a lot because Java as a language was very nice. Using Visual Studio for web development is also very rewarding; I work with it every day.
      • Microsoft is doing something very right with CodePlex and Microsoft's open source initiatives. However, I think that Microsoft should put the plug back in on their idea that they prototyped during the VS 2005 beta of community-generated libraries directly integrated in a community browser. This is a huge feature of Eclipse and NetBeans alike, and if we could get our third party open source Visual Studio plug-ins and API libraries from a common interface it would be quite ideal for the developer community. Perhaps an open source initiative can be established for this.
    • I'm still not quite sold on WPF because of its bloat, and Silverlight 2 is still pretty painfully stripped-down, but what it does introduce is very, very exciting. Adobe Flash would have easily become a product technology to shame Microsoft, but when it comes to what Silverlight 2 and Blend 2.5 promise and are already delivering in beta form, Microsoft has taken the higher ground. Granted, Flash has the user base. But being a geek, I don't care; I firmly believe that the user base will follow the superior toolset.
      • I think that Microsoft still needs to implement a few things before Silverlight will really become a "killer app" technology platform, keeping in mind that for every Flash-based banner ad or RIA, there is a Flash game being introduced on the web:
        1. Limited windowing support. Please. I want to open a Silverlight window, without opening a web browser window with another isolated Silvelight app. Let me. 
        2. GDI+-esque bitmap manipulation support. For example, we should be able to render to a canvas, buffer to a bitmap, and reuse the bitmap as we like. Let us render pixels. I don't know what kind of installation footprint a rasterization API would introduce, but it seems like it would be pretty light.
        3. WPF-esque 3D support by befriending OpenGL. Please. Every platform supports OGL. EVERY PLATFORM!
    • DirectX is the responsible runtime API for, what, 90% of modern commercial electronic games today? At least, that is certainly accurate of PC games. Direct3D is feature-rich, setting the bar for the programmability of a video card's GPU (using a Shader Model programming API), to say nothing of supporting a complete set of interfaces for generating 2D and 3D scenes with lighting and high resolution textures. XACT offers a complete audio API and toolset, after years of one tool experiment after another for audio and music. DirectX also has networking APIs and input device APIs (flight sticks, gamepads, steering wheels, etc.). All your game engine needs are met with DirectX ... except for the game engine itself. That's where XNA comes in.
    • Direct3D is clearly superior in featureset than OpenGL.
    • DirectX as a suite of APIs specifically targeting Windows is vastly superior to SDL.
    • While I still scratch my head wondering why XNA and WPF are so completely isolated, and that there is neither XAML rendering support in XNA nor XNA features in WPF, I am very impressed with Microsoft's XNA. XNA had a warm welcome to the community in 2007, I feel. But XNA was quickly forgotten by the general developer community by the end of 2007, until XNA Game Studio Express v2.0 was released.
      • Microsoft's XNA strategy has been very thorough, with the Creators Club web site completing the big picture. But what Microsoft still needs to do with XNA to continue to gain and retain amateur game developers and establish the "YouTube For Games" community that it intends to foster is to convince developers to deploy Windows game install packages today, and to feature XNA games on Windows before the roll out XNA games on Xbox Live Marketplace. Microsoft should create a web service driven "XNA Amateur Games Browser" for Windows, now! It should be an optional Windows Update download for Windows Vista Ultimate. Microsoft has really blown it in gaining and retaining amateur game developers' attention on the Microsoft Windows platform. XNA has been a missed opportunity; the technology and toolset are solid, but XNA is till marketed, intentionally or not, as an Xbox technology that requires $99 to participate in, which is tragic. Most game developers would opt for spending that kind of money on such cross-platform technologies as Torque and Unity (http://unity3d.com/). Microsoft XNA needs an InstantAction-like community before it seeks out the Xbox Live Marketplace community.
  3. Windows Server 2008
    • In some ways, Window Server 2008 represents the culmination of all things heavily tested, refined, tuned, and applicable for both simple and complex scenarios and for executing both simple and complex computing applications. It compares quite closely with Mac OS X. Mac OS X, being built on a UNIX foundation, comes straight out of the box with the rich featureset of UNIX network and system tools, to say nothing of its extensibility to support additional UNIX apps that can run naturally and stably on it. But not only does Windows Server 2008 support all of the essentials of an operating system workstation as well as an IT server, it also has a UNIX compatibility subsystem, and on top of that it sets a MUCH higher bar in many areas of server technology that currently other platforms simply do not support. Just browsing the optional features one can install onto Windows Server straight out of the box, suddenly even the beta-quality grab bag of nifty new technologies one can choose in a modern Linux distro is not able to compare, even in features alone.
    • Not long ago, I posted a blog entry indicating that I'd prefer Windows Vista Ultimate SP1 over Windows Server 2008 as a web developer workstation. I think I may have to retract that opinion. Other people have posted performance comparisons of these two operating systems and have found that Windows Server 2008 performs significantly better than Vista SP1. This is very disappointing as I love Vista and was very much looking forward to SP1 picking up he pace to be on par with Windows Server 2008. 
      • I have three workstation-related complaints for Windows Server 2008, based on my watching my co-worker's / buddy's experiences with using it as a workstation:
        1. No sidebar even with Vista experience installed?!
        2. COD 4 BSOD's on Windows Server 2008 on an nVidia Quadro 1500 card that worked fine for me on Windows Server 2003, as well as for me on Vista x86 and on Vista x64. Sup widdat?
        3. What's with that awful addressbar/progressbar locking up Windows Explorer functionality just because the OS is (I guess) indexing system contents?? My buddy couldn't even right-click a folder and view Properties at times because of this stupid indexing lock-up. This went on for a month or so before it apparently went away on its own, we figured it finally managed to index everything, or something. But this one thing kept me from making the switch from Server 2003!! 
  4. IIS 7.0 & WCF
    • IIS is now fully programmable on all parts of a request pipeline, even at the protocol level (IIS is no longer a web server, it is a network application server).
    • Microsoft has taken their experiences of the nightmares that came about with COM/DCOM/COM+, MTS, .NET 1.x Remoting, and ASP.NET Web Services, and made a simple yet pretty complete solution for it all. As long as you code all your software around data contracts, you have WCF-handshakeable, interopable software that can cross most any boundary. Hosted on IIS 7, said software can cross any physical boundary.

To Microsoft's Shame

These things said, here's a list of technologies and third party products where I think Microsoft should be paying closer attention as they bring shame upon Microsoft.

    • When Scott Guthrie came here to Scottsdale (that's where I live) this year, Hamid Shojaee from Axosoft did a little presentation for his company's products, and he used presentation software that kept me blinking in awe. Although judging from the presentation the presentation software he used looked like it was pretty lightweight in features (I found out later it was Keynote for Mac), based on Hamid's presentation Keynote had one thing that made me realize that Microsoft is going about its PowerPoint strategy all wrong. I realized that rock-solid, eye-catching presentations are all about being flicker-free, with full 3D fly-ins and no visible pause between tween frames. I noticed this about Silverlight; when I look at http://www.quiksilver-europe.com/ and hover my mouse over the video player, I see something that Flash can't do, which is look frame-free and flicker-free because its animation engine is time-based, not frame-based. Between WPF and Silverlight, Microsoft already has the technology to support all this. If the next version of PowerPoint is not overhauled to look this smooth, Microsoft should be ashamed of themselves!
  1. Firefox and Webkit (TIE)
    • Once upon a time, Microsoft innovated in the web browser technology market. They introduced a powerful software plug-in model with ActiveX and pushed it out on Internet scale. They invented the fully programmable HTML DOM.
    • Eventually,
      • C# was introduced.
      • Firefox came on the scene.
      • George W. Bush was elected president.
      • Microsoft got complacent about their web browser strategy, and made it official that they would never innovate on the browser again.
    • The effects of Microsoft taking their genius Internet Explorer innovations staff (the Trident team) off of Internet Explorer and onto WPF and Silverlight has taken its toll. As web technology has evolved, Internet Explorer has become the uber-pimple of the computing world. It's the annoying, ugly blemish that people want to pinch and pop but not only won't go away but it's right out there for everyone to see on the face of Windows and you can't get rid of it. It has a slow release schedule, its dev team has been silent towards the community, and it is clearly not a part of Microsoft's MSDN strategy, yet at the same time it is one of the most prominent and heavily used development platforms that runs on Windows. I'm greatly looking forward to IE8, but Microsoft is still playing catch-up with the other browsers.
    • Microsoft has a lot of nerve to suggest that the different meanings of the word standards ("standard as in popularity? standard as in typical? standard as in standards-body documented standard?") are applicable to web technology. If you're going to put yourself out there on the web and interoperate with a platform-agnostic network, to the extent of those agnostic technologies (HTML, XHTML, CSS, Javascript, etc.) there is only one definition of standards, and that is the definition of standards that comes from the international standards bodies, in this case the W3C. Microsoft can do what they want with XAML, VBScript, and ActiveX, but if they're not going to submit to standards bodies on platform-agnostic technologies, they should drop IE and adopt Firefox or WebKit, or else they will risk their users doing as much which in effect would significantly lessen the necessity of Windows (the necessary host operating system of IE).
    • Mozilla, Safari, and Opera leaders are actively leading in innovating on the web standards, like HTML 5, a practice that Microsoft started in the early days of the web, and later abandoned. Microsoft is still not actively participating in these discussions.
    • XPCOM and XPI! Make it so!!
    • Earlier in this blog post I mentioned Windows Server 2008 being most like Mac OS X. But Mac OS X still sets certain standards for the Ultimate Operating System. Granted, Windows Vista and/or Windows Server 2008 is still the OS of choice for practical use because of the rich developer tools that Microsoft offers and because of the extent of third party apps that are available because of it. But Mac OS X still sets the bar for
      1. True "it just works" plug-and-play functionality. I don't know what Apple is doing to make things "just work", but all of the iterations of the Mac have always been rediculously clean and easy to use, for both hardware add-ons and software installations.
      2. Application packaging; Mac apps continue the trend today that they've always had, of getting both Apple apps and third party apps (except MS Office for Mac) all presenting themselves as a nicely packaged, self-contained file, rather than a gajillion DLLs among one or several shell-executable files. Mac users don't use a Start menu because they don't need one.
      3. Platform interopability. Virtualization is not platform interop. Microsoft's UNIX compatibility layer is a step in the right direction, but it isn't enough. Windows is still proprietary Windows; UNIX apps have to be re-compiled to work on the UNIX compatibility layer, and for that one might as well use Cygwin which is far easier and "funner" to use (which isn't saying it's fun). A more appropriate approach might be andLinux.org's.
      4. With Mac OS X's UNIX based core, the rich suite of well-established UNIX applications are at OS X's disposal, including Apache Web Server. Apache in itself is not all that astounding in contrast to IIS, but it is one little tool in a long list of applications that make any non-Windows computer user compelled to stick with the Mac.
      5. The new file browsing features in the latest version of the Mac that put Windows Vista's thumbnail and slide show views to shame are absolutely astounding.
      6. The new video conferencing features in the latest version of the Mac are also astounding. Windows doesn't have anything like that.
    • I've said it before, and I'll say it again: The Start menu on a mobile device is perhaps the suckiest, stupidest design idea ever invented and implemented in mainstream technology. To the same extent, though, the iPhone's multi-touch, naturalistic, responsive interface is perhaps the greatest interface design ever conceived and implemented in mainstream technology. The bar has been set about 3 times higher than it was; now Microsoft needs to measure up with its Windows Mobile strategy, and until they do I will never buy a Windows Mobile device, not when there is the iPhone, now with binary SDK available for 3rd party developers. (The 30% commission requirement only ups the quality requirement for the third parties.)
    • Q: What if a different, solid commercial database was built versus Microsoft SQL Server?
      • A: It might be called Oracle, which is butt-ugly and has a cuture of its own full of down-trodden people who don't smile.
    • Q: What if someone open-sourced a complete database server for production web and entrprise apps as free alternative to SQL Server?
      • A: It might be called mySQL, which is feature-incomplete, and until recently lacking in administrative tools worth touching with a ten foot pole.
      • A: It might also be called Firebird, and although it has the maturity timescale and featureset of a complete DB, it also lacks the polish, usability, documentation, and presentation that geeks of today demand. (That or maybe I just don't like their web site.)
    • Q: What if Microsoft built a tiny-scale, .NET-based version of their SQL Server product?
      • A: It would be called SQL Server Compact Edition, and it would suck (meaning, lacking of features and being generally non-innovative)
    • Q: What if someone built a tiny-scale, native database engine that could be used anywhere?
      • A: It would be called SQLite, and although it rocks, it is a half-baked solution with no associated administration tools or C# managed API hooks in its core implementation.
    • Q: So what if someone built a Microsoft SQL Server look-alike, with decent performance, deep joins, T-SQL transactions, T-SQL sprocs, triggers, and managed assembly plug-ins, all in managed code, and with elegant administration tools, and produced it into a small compiled codebase that can be deployed on anything from medium scale web or enterprise apps to tiny-scale mobile applications?
      • A: It would be called VistaDB, and Microsoft should be astounded, if not absolutely frightened.
    • Every time I see another search indexing technology show up on Windows, I moan. "Index Server". "Office Search". "Microsoft Search". "Desktop Search". "Microsoft Search Server". For goodness sake, come up with and standardize on a solid API already!!
    • Apache Lucene is a blazingly fast text indexing software library. It can be used as a super-fast alternative not only to Google but also SQL Server.
    • Apache Solr, a server implementation around the Lucene search engine, is to search technology is what, say, early iterations of mySQL might have been to SQL databases. It is a buggy but functional demonstration of a complete and rediculously powerful data indexing and querying engine that can be used with both REST and JSON queries.
    • Microsoft Search Server is just a stupid pre-fab web page, a Googlish front-end to a spidered web site, proof that Microsoft just doesn't get it. Microsoft's indexing strategy is limited to file scanning and reproduction, a la Nutch. Microsoft clearly hasn't figured out how technologies like Lucene can render database engines like SQL Server's Full-Text Indexing obsolete.
  2. jQuery and the tersed Javascript community
    • Where jQuery shames Microsoft is where it also shames some of the other Javascript libraries. jQuery is to Javascript and DOM objects what LINQ is to C# and database objects, XML, and managed objects. It trivializes querying them, collecting them, calling on them, and performing operations on a group of them in one line of execution code (without a for loop).
    • The team that jQuery shames is not the LINQ team, but rather the ASP.NET AJAX team that implemented the Javascript framework. (A nice job they did, by the way, but heck, jQuery shames everybody!) See, Javascript already has a language community and culture, like C# and Java have community and culture. The Javascript community favors terseness and shortcuts by way of minified libraries that do much with little effort. Even in the simplest sense, this might mean short, terse, lower-cased code. Microsoft favors Pascal Casing and long namespaces. They went halfway and shortened the "System" namespace in Javascript to "Sys", but it still uses long, Pascal-Cased namespaces and OO-esque coding style rather than terse functional programming coding style.
    • Part of the terseness and "easy calling" approach pursued by the Javascript community is the simplistic approach of using one-liner databinding of HTML forms to REST URIs. The same community also typically interoperates with an MVC-oriented server architecture like PHPCake or Ruby On Rails. ASP.NET AJAX's approach, meanwhile, is to maintain viewstate and pass everything including the kitchen sink in a slow, klunky ASP.NET page postback lifecycle that could, and should, be cleaned up with a RESTful WCF / MVC AJAX view lifecycle.
    • Any time a corporation makes a commercial product that sells well and is very innovative but is being purchased primarily as a workaround for a failure of Windows or other Microsoft product, it brings awful shame upon Microsoft. In this case, the shame is the failure on Microsoft's part to support unencrypted QAM on Windows Media Center.
  3. Microsoft's own Xbox Live Dashboard / Marketplace -- Hello, Windows Team??
    • No competing technology platform has trivialized the usefulness of Microsoft Windows like Microsoft's own Xbox Live Dashboard and Marketplace. This was a hugely missed opportunity that Microsoft completely overlooked, whereby the rich, consolidated, packaged user experience that is enjoyed on the Xbox 360 could be transferred to the Microsoft Windows platform.
    • Web pages (@live.com) don't cut it. Putting Microsoft Downloads on Silverlight doesn't cut it. You have a rich Presentation Foundation on Windows that could have been used to deploy rich interactive experiences, as well as even rediculous DRM functionality built into Windows Vista, why isn't all of this being featured in Windows Ultimate?!
    • Valve's Steam cuts it for the game side of things, but lacking the WPF wow and full-screen experience that Microsoft could have introduced, and lacking the media purchases and downloads, it isn't enough.
    • Windows Media Center (which, by the way, I do use several hours every single day) would have cut it, if only it natively and more seamlessly supported the same package-extensibility featureset, marketplace integration, and Games category where marketplace demos can be downloaded and played, that are enjoyed on the Xbox.
  4. SVN (added 4/19/2008)
    • Nothing makes it seem to the software community more so than SVN that Microsoft "knows" software from only the confines of their own innovations and culture. On this technology alone, it sometimes seems like they live in a box and engineer in a cave.
    • Visual Source Safe is not version control. It's change control. The difference is as much cultural as it is functional; think a bunch of productive engineers in an agile group ("update", "OK, merged"), versus a bunch of wedgie-suffering tightwads in a red tape overwhelmed corporation ("can you please check that in so I can edit some of the code?")
    • I tried and failed to install Team Foundation Server three times and never got it right. The list of steps is a full page long, and each step takes several minutes of installing stuff -- set up Windows, figuring out whether or not to set up Active Directory, set up SQL Server Std. (not any version but Standard!), set up Windows SharePoint (don't confuse it with Office SharePoint! Don't confuse the version number!), optionally configure SharePonit for Active Directory, etc., etc. In the end, I always had something up and running, but when I would go load the SharePoint intance up in a web browser it would give me some stupid IIS error. Was I not supposed to hit it with a web browser? I don't know; the Help file didn't say.
    • I don't consider mysef a genius, and I don't consider myself a moron either. I consider myself having slightly-better-than-average intelligence. I think my I.Q. was measured 115 when I was a kid, whoopty doo. But I can set up SVN server and SVN client (w/ TortoiseSVN) without a lot of effort, as well as a few free issue tracking web sites like Gemini. I don't have Visual Studio integration (but you can use Ankh or Visual SVN), but I do have version control and a tracking system.
    • This blog post is very telling of the whole cultural situation over there in Washington.

Notice that I didn't mention things like mySQL, Ruby, PHP, Apache Web Server, Flash/Flex, Java, or Ubuntu Linux as key items on the list. All of these, while in some cases being innovative and even heavily used, simply don't match up with the depth of features, usability, and/or stability of those mentioned above. mySQL is a half-baked wannabe, Rail's founder presents himself to supporters having "constructive criticism" with a big "F*** YOU" on the overhead projecter, PHP is at a technical level no more special than ASP Classic using Javascript, Apache now needs to contend with IIS 7, Flash/Flex has been ousted (for its toolset) by Silverlight, Blend, and Visual Studio, Java has been beaten by C# / .NET, Ubuntu is just another Linux distro that wants to mean something special but comes up short (yes, even with Compiz-Fusion). They're good, but not good enough to bring shame upon Microsoft, or else Microsoft has finally managed to catch up, and get a little ahead.

kick it on DotNetKicks.com

IE8: Love or Hate?

by Jon Davis 5. March 2008 23:04

Been playing with IE 8 for a few hours. Here are some initial observations.

  • Love: WebSlices. I don't like WebSlices entirely, but there's something that feels just so Web 2.0-ish and, well, evolved. If you don't know what WebSlices is yet, let me try to describe it. I'll assume anyone reading this is famiilar with either the Firefox or Internet Explorer web developer toolbar. Both toobars have the ability to hover over any DOM element and you can click on it and it will tell you all about the CSS styles and classes associated with that element, as well as perhaps give you a look into where the element is in the DOM tree. Okay, .. uh, well, that's NOT WebSlices. But that thought in mind, imagine if a web site developer marked some tags such as some div tags as "webslices". They gave them GUIDs (not literally GUIDs but, unique IDs) to make them unique. With WebSlices, forget about introspecting the element with the web dev toolbar, imagine if you could subscribe to that element, as if the element was itself a web page, or an RSS feed. Yes, you can literally put a DOM element into your Favorites. That is way cool. I am not entirely comfortable wth its implementation, though, partly in the same way I felt about IE4 channels; it's sort of a browser-centric, stuff-it-in-your-toolbar way of managng personal data, the last thing I think people want is even more junk in their Favorites menu or yet another toolbar. Microsoft got RSS subscriptions right by retaining a more modular approach, allowing for an Explorer Bar or MS Outlook integration, hopefully they'll figure something out in this respect for WebSlices.
  • Hate: Activities. It's not the technology I hate. It's the branded spam. For those unfamiliar with IE8's "Activities", it's basically the same as the Windows File Explorer's "Send To" context menu option. You can basically right-click on a selection on the web and invoke an Activity which happens to mean a URL + querystring. Will be useful, no doubt, I'm just sick of all the MS Live and MS MSN and Encarta this and Yahoo that and Wikipedia and Google Maps and, oh good grief, stop shoving it all in my face already. But I'll give it to Microsoft, they didn't do nearly as much damage as Adobe did when I installed Acrobat Professional. There are literally eight (8) (!!!) individual PDF options in my browser context menu from Adobe Acrobat. Aargh.. [~silence as I go to Options and disable ...~] I also hate the name "Activities". It sounds like calendaring or meetups.
  • Love: Inline Javascript debugger. I haven't even tried it yet, but .. OMG, Yaaay! Microsoft came through on this one! We finally get a Javascript debugger built into the browser! No more mandatory installations of Visual Studio tools, which in the script debugging department has tended to get corrupted in the integration bits more often than I've managed to debug. Mind you, this ain't Firebug. But it most certainly is an essential part of a web browser, and Microsoft is showing that they are finally starting to see the light on this one.
  • Hate: Beta 1 form fields performance in Standards mode. I'm not sure what the deal is, but on this editor page, using BlogEngine.net, I was forced to enable the Emulate IE7 mode because in Standards mode I literally had to wait about five seconds for my keyboard cursor to respond after each individual keystroke. This is just a beta glitch, though; I'll live.
  • Love: Standards mode. ACID2 passes. 'Nuff said.
  • Hate: XHTML compliance exists in parsing and rendering only. Microsoft is still using an internal IE-HTML DOM that is not XHTML-compliant, even in XHTML documents. All you have to do prove this out is, in script, alert(document.documentElement.outerHTML); and what do you see? The most obvious observation is a total disregard for XHTML 1.0 § 4.2, which reads, "Element and attribute names must be in lower case; XHTML documents must use lower case for all HTML element and attribute names. This difference is necessary because XML is case-sensitive e.g. <li> and <LI> are different tags." Why does this matter? It matters because of DHTML. It matters because there is an implemented and oft-used setter on DOM elements' innerHTML. It matters because people actually use the DOM programmatically, both in evaluating and assigning markup. It matters because the browser has a Content-Editable mode that is often used with online content editing whereby the innerHTML contents are posted to the server for viewing as content. It matters because Internet Explorer has a COM interface that can, and often is, used to parse and tidy HTML markup, or to provide a WYSIWYG rich text editor for applications. It matters because it's broken, has been all along, and has never been deemed acceptable.
  • Love: It's in my hands. Huh. That was fast, I mean it was just, what two months ago that IE8 was even named? Well, um, .. thanks, Microsoft.
kick it on DotNetKicks.com

Singularity Now Open To The Public

by Jon Davis 5. March 2008 00:49

Nifty.

Full source code and Virtual PC setup instructions available now at http://codeplex.com/singularity!

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Tags: ,

Microsoft Windows | Open Source | Software Development

Uber Workstation: Windows Vista vs. Windows Server 2008

by Jon Davis 25. February 2008 12:08

I have always been adamant that as a web developer it is far better to use Windows Server 2003 rather than Windows XP as your primary workstation. This view became necessary primarily because Windows XP had a stripped-down set of IIS services, namely it was IIS 5.0 rather than IIS 6.0, and it was constrained to not allow multiple virtual hosts on the same machine. This made XP worthless; being a web developer, having the process forced down my throat of building entire web applications as "subwebs" made things infinitely more difficult to develop against. For example, you could never have a simple hyperlink that starts with a slash ("/"). You had to build everything around the ASP/ASP.NET coding model of application root ("~/"), which required you to move all of your hyperlinks to server-side code (<asp:Hyperlink>, or <img src="<%= ResolveUrl("~/") %>images/bleah.gif">).

No more. Windows Vista has multiple web server support. Microsoft perhaps got tired of basically every web developer on the planet expressing their animosity towards the Windows team for their crippling of IIS without even so much as an alternate "IIS add-on for MSDN Universal subscribers" or something. It's full-blown IIS 7, same as in Windows Server 2008.

Now that Windows Server 2008 is released, the inevitable questions should be asked (rather than the answers assumed based on prior experience with XP / 2003): does Windows Server 2008 have any new features that Windows Vista doesn't have, that a typical ASP.NET web developer would want on his workstation, and does Windows Vista have any undesirable features that are not present in Windows Server 2008 that cannot be removed from Vista?

While the answer to both of these questions were "yes" in XP/2003, for Vista/2008 I think the general answer to both of these questions, I believe, is "no".

In Windows 2008 there are a gajillion new services that the next wave of Internet technologies will need on hand for regular development. For developers of one of these next-gen technologies, Server 2008 might be essential. But for basic ASP.NET and WCF development (in other words, for most web developers), Vista can suffice.

And 2008 doesn't really filter out anything from the Vista experience except for the fact that the Vista experience is an option rather than mandatory. That's nice; but if it's going to be used for a workstation, it makes sense to just add it. Only problem is, it's not a complete Vista experience; you don't get the sidebar, for instance, and Call of Duty 4 crashes on a co-worker / friend who agreed to be a Windows Server 2008-as-a-workstation guinea pig. And to be honest, I feel a lot more uncomfortable with all the undesirable new bells and whistles of Server 2008 being available to my workstation than with them missing from a Vista environment.

The only features I saw in Server 2008 that I didn't see in Vista that might be worth something to me were: Multipath I/O, TCP port sharing, and hypervisor (native virtualization) support (which is still in beta). Actually, Vista might have the first two of the three, I don't recall. But I already have VMWare Workstation, which I continue to prefer over that awful Virtual PC platform. Meanwhile, pretty much all of the other stuff, while some of it may be valuable, it's all so server-oriented and not development-oriented that it would make more sense to move that stuff to a VM or external environment anyway.

So my tentative conclusion is that Vista Ultimate is already the ideal environment for a web developer. With it, you have all the basics that you need to build multiple IIS solutions and to test basic WCF solutions. Meanwhile you get to keep the fluff you like (and I do like some fluff on my workstation, gimme Sidebar and stuff), while you can still kill off the fluff you don't like.

Currently rated 3.6 by 5 people

  • Currently 3.6/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Tags: , ,

Operating Systems | Microsoft Windows

Stay At Home Server

by Jon Davis 12. February 2008 16:05

I dunno how long I'm going to keep up this silly home entertainment PC line of blogging but ...

http://www.stayathomeserver.com/

Nothing you never needed nor wanted to know about computer servers... In your home. This microsite uses comedy and charm to lure people to Windows Home Server, which is kind of a mom-and-pop downgrade to the Windows Vista Ultimate based 24/7 PC.

LOL @ to the housewife, "Jealous?"

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Tags:

Computers and Internet | Microsoft Windows

Beyond Disabling UAC: Enable Networkable Admin Access

by Jon Davis 6. February 2008 12:34

Windows Vista and Windows Server 2008 both disable administrative access when accessing via a network. So all those administrative things you're used to doing, like accessing an administrative share (\\machinename\D$) have to be thrown out when you use Vista or Server 2008.

However, you can bring it back, Windows XP / 2003 style. The key is in the registry, at KHLM\Software\Microsoft\Windows\CurrentVersion\Policies\System. Add a DWORD value named LocalAccountTokenFilterPolicy with a value of 1. Reboot.

Currently rated 1.4 by 9 people

  • Currently 1.444444/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Tags: , , , ,

Microsoft Windows

Beyond Disabling UAC: Disable Virtual Store

by Jon Davis 5. February 2008 07:22

Something I like about Windows Server 2008 x64 is that it (finally) gives the user the benefit of a doubt when disabling the advanced security options in Internet Explorer. Now it automatically prompts me to install ActiveX controls, for instance, and when I download files from the Internet I no longer have to right-click the file, choose Properties, and "Unlock" before I can use them without security warnings (this being something I've been habitually doing on all file downloads since IE7 was released).

But all is not trusting. I was tinkering with the recent release of the the new OS when I noticed as I was saving stuff to my Program Files directory in a new subdirectory that the new subdirectory didn't exist. Namely, I downloaded Notepad2 and attempted to create a new directory at C:\Program Files (x86)\ called "Notepad2" where I would save the file, then open the directory up in Windows [File] Explorer to unlock and extract the .zip file. Lo and behold, my Internet Explorer "Save As..." dialogue box told me I was looking right at C:\Program Files (x86)\Notepad2, but Windows Explorer insisted that no Notepad2 directory exists in C:\Program Files (x86). Could it be a bug?

Directory virtualization, perhaps? Indeed, I've seen Microsoft do this more and more lately. I knew where to look: C:\Users\jdavis\ ... hmm that's right, Local Settings got moved to AppSettings\Local. VirtualStore? Yes! There it is! "Program Files (x86)", and in there, a "Notepad2" directory, all by itself.

I don't want this. I REALLY don't like this. Microsoft implemented this virtualization feature to work around insecure design bugs in software. Whose software, though? Theirs? Ours? Third parties?

I mean, come on, Microsoft, if you're going to virtualize the Program Files directory like this, go all the way with it and do it in Windows Explorer and the command prompt as well. Heck, do it at the kernel level so that any app running in user space sees this thing where it really is.

Or not. I don't like virtualized paths. It's an administrative nightmare. Let's disable this thing.

So, after turning off UAC from the User Accounts control panel, which I hadn't done yet to this point, I rebooted and still had this problem. Then I tried disabling Local Security Policy -> Security Settings -> Local Policies -> Security Options -> User Account Control: Virtualize file and registry write failures to per-user locations. I think this fixed it. I'll update this blog entry if I find otherwise.

I realize why Microsoft implemented this file path virtualization thing, but IMO it's a crutch and does NOT demonstrate good computing practices despite what some IT folks would proclaim. This is the kind of stuff that just makes computing all the more confusing and difficult to work with. While the intentions were valid, we don't need anymore unexpected twists and turns in our computing experiences.

UPDATE (1/17/2009): This HORRIBLE "feature" ended up in Windows 7 as well!! To fix it now you need to open "Security Configuration Management" where you'll find Local Policies -> Security Options -> "Virtualize file and registry write failures to per-user locations" and disable the thing.

Currently rated 4.6 by 24 people

  • Currently 4.583334/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Tags: , , ,

Microsoft Windows

Silverlight vs. ActiveX: Give me automation or give me death!

by Jon Davis 8. January 2008 18:49

In the wonderful IE4 days when ActiveX was the big new thing, you could create an ActiveX control -- that is, a first class COM object - in full Visual Basic. In fact, Microsoft released a free version of Visual Basic just for creating ActiveX controls. It was ridiculously easy to create COM objects in this way.

Then you could instantiate the object in the browser scripting engine and do things like:

<script>
myActiveXObject.HtmlDocument = document;go
</script>

With that one line of code, (popping knuckles) the full-blown Visual Basic programming environment had access to the Internet Explorer web browser document object. There was no wrapper, just a COM interface!!

Visual Basic:

Call Me.HtmlDocument.window.eval("alert(""Hello from full-blown Visual Basic via the browser's Javascript scripting engine"");")

Me.HtmlDocument.body.innerHTML = "<h3>Muahahaha!</h3>" & Me.HtmlDocument.body.innerHTML
Me.HtmlDocument.body.style.backgroundColor = "#00000"
Me.HtmlDocument.body.style.color = "#ffffff"

Call Me.PlayVideo()

' etc.

Likewise, the COM interfaces of the ActiveX control were directly and effortlessly exposed to the browser Javascript runtime.

<script>
myActiveXObject.PlayVideo();
</script>

This opened all kinds of doors of opportunity. Event sinks and controllers could be dropped in every which way. Flexibility of writing code was virtually limitless.

This WAS doable before Microsoft abandoned Visual COM (Visual Basic 4/5/6). The ActiveX Script runtime engine was a marvelous invention. I'll admit that it's proprietary to Internet Explorer, though, but Mozilla has traditionally supported COM in some fashion. I don't know how Mozilla's plug-in and scripting runtime integrations work.

Fast forward to today. Rich client applications are now written in Javascript and AJAX, making use of only one specialized COM object (or other automation object, depending on the browser) now known today as XMLHttpRequest. Rich client apps also make heavy use of objects-based programming.

In order to create user experiences that are outside of the capabilities of Dynamic HTML, plug-ins are still used. This is where plug-ins like Silverlight come in. But those plug-ins, especially when they have broad and powerful runtimes like Flash (ActionScript) or Silverlight (CLR), need to be able to be interopable with the browser's script runtime in order for utilization to be fully realized. In the Internet Explorer world, the answer to this was simply IUnknown / COM / ActiveX.

Browser Javascript objects and logic need to be able to interact with plug-in runtime objects and logic and vice-versa.

ActiveX componentization is now virtually deprecated. Microsoft no longer sells nor supports Visual COM (Visual Basic 4/5/6, which was the only tool Microsoft ever created to allow users to be able to effortlessly create COM objects). ActiveX controls are also a security concern, and in Internet Explorer 7, users are discouraged from installing them.

But what I'm looking for is unwrapped interop support between the Silverlight CLR and the browser's runtime. Silverlight doesn’t have access to the Javascript DOM. It has access to a limited set of objects and properties of the HTML DOM using a wrapper API.

http://silverlight.net/QuickStarts/Dom/DomAccess.aspx

The CLR in Silverlight introduces a secure but powerful runtime engine to the web environment and an extent of sophistication that previously never existed, not even with old Visual COM (Visual Basic 4/5/6). Now that Silverlight 2.0 is coming out soon with a rich programmatic runtime like Visual COM (VB) used to have, I’d like rich COM automation back. The value is more fully realized when you can pass browser Javascript objects to the CLR or pass CLR-declared objects to the browser Javascript runtime.

(I'll post better examples of what used to work versus what doesn't work later this week. But yes, full COM interop was possible between VB and ActiveX Scripting, and yes you could pass objects back and forth. It even supported dynamically generated COM interfaces. For example, you could declare and instantiate a class in VBScript in the browser, pass the instance to a method on an ActiveX control written in VB where the VB OCX property expects a Variant, and then VB OCX could call upon the functions within that class.)

Obviously, what this means is that Safari, Mozilla, and Microsoft would have to agree on an interop strategy. I thought they had already accomplished this, but it'd be surprising to me if they didn't. It would, however, further cement my frustrations with Microsoft that they allowed too many years to go by without staying involved with the browser standards communities like W3C and ECMA to work those issues out.

ActiveX componentization is not deprecated because COM is a security concern. It is deprecated because the technologies that implemented ActiveX were not sandboxed like Java applets, Flash, and Silverlight are. The Silverlight CLR is neatly sandboxed--this means that there are no longer serious security concerns that developers otherwise had with the ActiveX plug-in support--so if security is a concern, it shouldn't be.

But, practically speaking, browser Javascript objects and logic need to be able to interact with plug-in runtime objects and logic and vice-versa. Put as succinctly as I can, if I cannot declare a function in the browser script with parameters, and call on it from the CLR while passing CLR objects, I feel stuck with preferring old ActiveX over the Silverlight CLR for dynamicizing HTML. The same is true going the other way. The way things are right now, it's an all-or-nothing deal--either you completely rewrite the AJAX web application so that it no longer users the browser Javascript and uses the Silverlight CLR, or you don't use the Silverlight CLR and stick with the browser Javascript. These two options are completely unrealistic, from a business perspective.

Microsoft's position on this matter has so far been that they think the "wish is valid, but it is challenging since we are dealing with a scripting world, a native world and a managed world all in one wish."

I'm sure it is challenging. But this and true DHTML are precisely why I thought Internet Explorer v4 was the greatest invention that came out of Redmond after the Windows NT kernel. It's why Internet Explorer had been Microsoft's preferred generic COM host for SDKs and development for many years.

I don't care if it is challenging. It was Microsoft who invented COM. It was Microsoft who implemented the ActiveX Scripting engine. It was Microsoft who invented the fully programmable browser DOM. It was Microsoft who invented .NET and the Visual Basic and C# languages. I have no doubt that the most profitable corporation on the planet can figure something out in this matter.

But this is an issue I have that goes beyond Silverlight, it is about Microsoft's leadership role in the Internet client software industry. It's like they fired their automation visionaries as soon as IE4 went gold.

Perhaps that isn't fair; the CLR is certainly quite visionary. It's just that the current state of things shows abandonment of the industry necessity to keep striving to bridge the gap between the browser script runtime and the plug-in runtime; this is a problem that has been around for over a decade, and that the industry leaders aren't still pushing for a cross-browser automation solution really befuddles me.

There is one "trick" that I can think of, though, to make window.eval() happen from Silverlight that may or may not work efficiently. Perhaps you can get Silverlight to change the text value of a hidden HTML element. This HTML element is strictly used for window.eval(). Javascript would need to be notified that the value changed. A setInterval loop? An onchange event hook? Dunno. But once it sees it it can fire it off and then populate some other hidden element for the eval result. I'd prototype this but I don't think onchange will work and a setInterval loop frightens me, not to mention only being able to use text (or XML) for params and return values. The whole idea seems terribly kludgy... Yuck.

kick it on DotNetKicks.com

Currently rated 3.8 by 6 people

  • Currently 3.833333/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Tags: , , , , ,

Software Development | Microsoft Windows | Web Development


 

Powered by BlogEngine.NET 1.4.5.0
Theme by Mads Kristensen

About the author

Jon Davis (aka "stimpy77") has been a programmer, developer, and consultant for web and Windows software solutions professionally since 1997, with experience ranging from OS and hardware support to DHTML programming to IIS/ASP web apps to Java network programming to Visual Basic applications to C# desktop apps.
 
Software in all forms is also his sole hobby, whether playing PC games or tinkering with programming them. "I was playing Defender on the Commodore 64," he reminisces, "when I decided at the age of 12 or so that I want to be a computer programmer when I grow up."

Jon was previously employed as a senior .NET developer at a very well-known Internet services company whom you're more likely than not to have directly done business with. However, this blog and all of jondavis.net have no affiliation with, and are not representative of, his former employer in any way.

Contact Me 


Tag cloud

Calendar

<<  September 2014  >>
MoTuWeThFrSaSu
25262728293031
1234567
891011121314
15161718192021
22232425262728
293012345

View posts in large calendar