Dev

Better error messages – Part 3 (Aeshen)

In the final part of my error message series, I try to distill my thoughts into three lessons and put forth four potential solutions.  Obviously your mileage may vary as every type of application is different and users have different expectations.  Hopefully this diatribe is useful to someone! Link: http://aeshen.com/wordpress/2010/03/better-error-messages-part-3

Better error messages – Part 2 (Aeshen)

My second part is live on the Aeshen blog.  More insight about how to handle errors in an application to make the least impact on your users.  The focus on this part is how/when to handle dialog boxes for error conditions. Link: http://aeshen.com/wordpress/2010/03/better-error-messages-part-2

I love Codeplex!

Apparently the last time I was on Codeplex I didn’t even realize it, but as of February 28th, I’ve been a member of Codeplex for two great years.  Since then I’ve posted enough projects to be in the top 20 of the entire site!  I’ve had a few talks with Codeplex folks and really respect what they’re doing.  Being able to host code and make it available to the world is an amazing thing.  I used Sourceforge a few years ago, but I never felt that it was a good enough fit for Windows projects.  I switched over to Codeplex...

Better error messages – Part 1 (Aeshen)

I’ve just posted an article about writing better error messages.  I ended up writing over 2,000 words so I split it into three parts.  It’s got some insights and ideas for managing errors in an application better.  I hope you like it! Link: http://aeshen.com/wordpress/2010/03/better-error-messages-part-1/

Web Form Designer Lockup in Visual Studio 2008

After a number of recent problems lately with the ASP.NET form designer locking up in Visual Studio 2008, I finally decided to look into it.  As it turns out, it’s due to problems with the Office 2010 releases messing up the Visual Web Developer components.  Since I’ve been using VS2010 for the past few months I didn’t notice this until now. The solution was simple for me.  Just run the setup for the Web components again and choose the Repair action.  No reboot and I was good to go! C:\Program Files (x86)\Common Files\microsoft shared\OFFICE12\Office Setup Controller\Setup.exe If...

Multithreading for the future (Aeshen)

On the Aeshen blog, I just posted an article about multithreading and parallel coding.  There’s lots of discussion about new frameworks to make work easier, but there are many things you can do without terrible effort with today’s languages and tools. Link: http://aeshen.com/wordpress/2010/02/multithreading-for-the-future/

ASP.NET Lessons

I’ve just finished up my largest ASP.NET effort to date.  It’s nothing huge, but I tried to use standard ASP.NET patterns and practices throughout.  I learned a number of lessons! We turned off ViewState in order to save bandwidth.  This introduced some problems that I didn’t expect.  For one thing, the IsPostback property can’t be used for deciding whether or not to databind – always databind!  Since the web is stateless, the values involved in a bind are usually stored in ViewState so you only need to bind once.  Clearly you need to do that manually without it. ...

LINQ to SQL with Stored Procedures (Part 2)

In a recent large web site that I worked on, we used LINQ for the data access/model.  This definitely caused some pain in places.  What I discovered is just how well-suited LINQ is to scenarios where ad-hoc queries are allowed.  In fact, if you need to call stored procedures for updates, but can use queries for read-only operations, then you are in good shape.  I’ve discussed this in a previous post, but I had hoped that I would come up with some workarounds.  One problem that lingers is that if you get an entity back, say a Person object, then...

Passionate programmers (Aeshen blog)

I’ve just posted an article on my thoughts about passionate programmers.  Am I crazy or did I hit the nail on the head? Link: http://aeshen.com/wordpress/2010/02/passionate-programmers/

Silverlight for Developers (Part III)

In the Last Post Previously, I’ve spoken about about Visual Studio and Expression Blend, styles and templates, and some of the important foundations of XAML-based databinding.  In this post, learn about customizing your applications by writing reusable code components that can be linked in declaratively. Making It Do Your Bidding To really make your Silverlight application look good, you’re going to need to resort to custom code sometimes.  The instinctive thing to do is to wire up event handlers to run at various times to create objects, adjust bounded values, or to start animations.  As much as...

Silverlight for Developers (Part II)

In Case You’ve Just Tuned In… In my previous post, I talked about Visual Studio vs. Expression Blend, styles, and templates.  In this post I’ll talk about databinding. The Ties That Bind As with WPF, databinding is an incredibly powerful feature of Silverlight.  The ability to declare a relationship between properties of an element and the properties of an object is amazing.  You can bind the properties of Silverlight controls to any CLR object’s public properties, but it will be a one-time binding only.  Ideally, you’d probably like it if a Label would update when its associated...

Silverlight for Developers (Part I)

I recently gave a talk for the Corvallis .NET User’s Group (CDNUG) about using Silverlight as a developer.  Silverlight is pitched as a Flash-replacer, a video streaming enabler, and a designer’s dream, but it doesn’t get much love for business applications or more general use.  This isn’t actually fair, as Silverlight has amazing databinding and custom presentation features just like it’s older brother WPF. Tooling Around The first challenge to developers with Silverlight is the tooling.  We devs are used to our environment being a certain way.  Visual Studio, SQL Server Management Studio, and other similar applications use...

LINQ to SQL with Stored Procedures

I’m in the middle of a fairly large sized project right now and as a team we’ve elected to use LINQ to SQL across the board.  LINQ to SQL (L2S) is great to work with.  The class generation using the DBML file is easy to use and creates objects that are pretty much identical to what I’d create myself for business objects.  I can change properties of an object, or create a new object attached to a table collection, and then when I submit the changes it magically gets sent to the database.  It’s really great to work with.  At...

Coding 4 Fun Article – Windows 7 Jump Lists

My latest Coding 4 Fun article has been published.  I have a simple application that demonstrates how to create a jump list in your Windows 7 application.  It shows how to create a setup utility that registers a file extension, and shows how to pass arguments to a running instance of your application (necessary to invoke actions on yourself from jump list commands).  Enjoy! Link: http://blogs.msdn.com/coding4fun/archive/2009/12/09/9933039.aspx

CodePlex is cool

I’m up to 13 projects on CodePlex!  Most of them are Coding 4 Fun projects, but I have a few of my own too.  I have a few more to post and hopefully I’ll get to them soon. If you haven’t used CodePlex for your own code yet, you should.  Even if you aren’t thinking of it as some big project, you get some great benefits.  First of all, it’s backup.  You don’t need to be so worried if your system goes south.  It’s backed up.  Furthermore, it’s in source control so you can go back and see previous...

What MEF Needs…

OK.  So this is going to be a cross between a rant and constructive criticism.  I’m sure that Microsoft has great reasons that they created MEF (Managed Extensibility Framework) the way that they did, but it’s just tantalizingly close to perfection, so I’m going to complain about it anyway! For two of my recent articles, I’ve been working with MEF to enable an addins platform for a utility runner.  MEF does some nice things: It makes it easy to designate classes as extensions (define an addin) It makes it easy to...

Extension Methods

One of the cool features introduced in .NET 3.0 was the concept of extension methods.  Subclassing is one way to add new methods and properties to an class, but it’s not available if the class is sealed.  It also doesn’t provide the new members unless you create objects of the subclass. Extension methods let you add new members to a class without actually extending it.  You don’t get access to private or internal methods, but you add a convenient way to access related methods. Most of the convenient LINQ features are implemented by means of extension methods on...

Visual Studio Debugging Tip

Have you ever been plagued with an exception that didn’t show you any details?  One example would be in a WPF application with XAML markup.  If you are declaring resources, and said resources through an exception upon creation, you’ll probably crash when the application starts up, but there won’t be any detailed exception information to see: You can always click View Detail  and go to the InnerException property, but that’s not always so helpful either: If you really want to see the cause of the error, you’ll need to see the exception at...

Windows 7 Sensor Reference Board Available

The boards given away at WinHEC and PDC for Windows 7 sensor development are now available for sale from Freescale: http://www.freescale.com/webapp/sps/site/prod_summary.jsp?code=JMBADGE&tab=Buy_Parametric_Tab&fromSearch=false These are a great way to experiment with the new sensors such as light, gyroscope, and accelerometer.  The price is pretty fair, and it’s a nice compact board.  Even better, the Windows API Code Pack support it nicely in managed code. Have fun!

Using Dates in Entity Framework

So how do you query in the text-based Where clause of an LINQ to Entity query?  This question drove me up the wall!  I’m used to the CONVERT function, or just passing a string, or with a full-on LINQ query, using a DateTime object.  With an EntityDataSource, though, you specify the where clause using the Where property which is a string. First, I couldn’t even figure out how to refer to a column.  “IsCancelled” (my column name) didn’t work.  The Visual Studio expression editor did not help one bit.  Finally, I came across some samples.  You need to prefix...

OpenGiving

So far, my volunteer registration system for non-profits has been coming along well, but I’d love some help!  I’m hosting the project at CodePlex.  You need to be able to view upcoming volunteer events, register as a member, and then volunteer for specific events.  Administrators can create events, manage the list of volunteers in an event, and define related entities (neighborhoods and organizations).  Most of this is working, but there’s very little error-checking, the design is very ugly, and some of the smaller features aren’t in place (filtering for active, future events for instance).  Anyone interested in working on an...

More GoDaddy woes

Well, upper level support has confirmed that they are indeed running .NET 3.5 SP1 on their shared hosting servers.  This seems unlikely since the Entity assemblies are missing. I’ve replied yet again so we’ll see what happens this time.  I hope it ends up being a simple fix.

Talks on Windows 7

I should have blogged on this beforehand… but on Saturday I gave a talk about Windows 7 for developers at the Iowa Code Camp, and last night I gave another similar talk to the Cedar Rapids INETA group.  There are lots of neat new features to take advantage of.  The taskbar alone offers peeks and previews, custom buttons on preview, alerts/progress, even icon overlays (something that would have really come in handy with Notification Icons!).  The intent is to move away from the notification area now and they’ve really provided some good tools for it. I always have fun...

VSTO Data Caching

I spent more hours than I’d like figuring out why data caching didn’t work for me in a Word-based VSTO solution.  I did what I needed to implement a cached property: Public property Marked with Cached attribute Type to be cached marked as Serializable I saved the document on closing (after writing to the cached field), yet no luck.  After messing around for some time, I finally decided to test out serializing the type.  Since it’s specifically XML serialization that must succeed I used the XmlSerializer object, wrote...

Language Features: Variable Arguments

In a recent project I decided to use variable arguments to a function – the first time I’ve needed to.  If you haven’t worked with them before, you probably don’t know the point of them.  They’re easy to use though. Every so often you may need to pass a number of arguments to a function, but it may be hard to predict how many.  An example is the String.Format() method: String.Format("{0:d} - {1} ({2})", DateTime.Now, msg, severity); You could pass more or less arguments depending on what you are formatting.  If you’ve ever given it a thought, though, you’d...

Take advantage of new C# 3.0 features (Part 2)

This is part two in my series about taking advantage of newer C# features.  These have been widely available since Visual Studio 2008, but you may not be using them yet.  In this post I’ll discuss object initialization. This feature is a time-saver.  Just a language enhancement.  It’s cool though.  Anything that makes the language more expressive is a good thing.  Typically, you create objects, then set the properties. Person p = new Person(); p.FirstName = “Arian”; p.LastName = “Kulp”; Now you can do it in just a single-line.  With the default constructor, you don’t even use parenthesis.  Just use curly...

Take advantage of new C# 3.0 features (Part 1)

I’ve decided to start a series of C# 3.0+ features that every dev should know about.  Probably I’m preaching to the choir (and I’m certainly not the only person mentioning these), but it’s easy to get used to features from   Automatic properties This is such a simple feature, but a nice one to know about.  Good object-oriented design demands that you never expose class fields directly.  Why not?  It’s all a matter of control!  Who wants to take a chance that other code might invalidate your values?  A name field set to null, or an...

Set as Startup Project in Visual Studio

I was struggling with trying to figure out why a certain solution of mine wasn’t starting right.  It was in VB with four projects.  Upon initial open it would set a certain project with a DLL output as startup.  If I set the EXE as startup project, it was fine, but when I distribute code I always clean it by removing *.suo and *.user files, and bin/obj folders.  Upon opening the “cleaned” version, it would always revert to the DLL project and fail to F5 nicely.  The fix turned out to be simple, though I’m curious as to why I...

Subversion integration with Office ribbon

I've been thinking about a project I might start working on.  I haven't done any VSTO (Office coding) for some time now, and I'd like to get back into the swing of things.  As an avid Subversion user, it's pretty common for me to be checking Office docs in and out of Subversion repositories.  It should be fairly straight-forward to create a new ribbon to add the Subversion commands to any document. I am envisioning Revert, Commit, and Update being the most common.  Clicking Revert would close the current document, invoke Update, then re-open it.  Update would act similarly,...

Very cool news

I got an email yesterday from Microsoft letting me know that I’ve been awarded MVP status for Visual C#!  I was nominated, but honestly I didn’t hold out much hope that I would get it.  There are many people much more active in the community than I am.  I’ve done some fun things, but not enough to expect this.  So I’m very happy!  There are some cool perks, but the best part is being a part of the greater MVP community.  These are people who have done some very great things and to be part of that group is the...

Got any ideas?

From time to time I get emails from people looking for ideas for projects.  Often they are from students needing a project, but other times it’s just someone looking to try their hand at coding and want something to start with.  Sorry to say this, but good ideas don’t just grow on trees!  You wouldn’t email Stephen King and ask for a story idea would you?  Obviously it’s not exactly the same, but coming up with ideas is a big deal. Most great projects don’t come out of someone sitting around brainstorming about something to write!  There’s a need...

Restarting WPF Applications

How can this be so difficult?  In Windows Forms applications, you just call Application.Restart() and your app goes away and restarts.  What could be easier!  In WPF, not only is the Restart method removed from the Application object, apparently the feature is just completely unsupported.  Forum responses from Microsoft suggest disassembling the BCL code to see how the Application implements it, but the poster points out that it's non-trivial, and even at that it's not correct.  Not that I ever noticed before, but the command line arguments don't get passed into the restarted process.  How wild is that!  Another message...

June 2008 CTP - Parallel Extensions to the .NET FX

Dividing up work to run in separate threads can be really challenging.  Proper division of labor, synchronization, scheduling, and all that is just a tough job.  I've gotten pretty well-versed in Windows concurrency using the standard Windows.Threading classes (many of them wrapping the Win32 entities).  Understanding semaphores, mutexes, locks, wait queues and other related concepts takes some real work and head stretching.  Once you understand them though, you may still struggle with actually fitting them into your code properly.  In many cases, you just need to run some code in parallel with your UI.  Much of this doesn't even apply...

AJAX Widgets

Looking to add some AJAX goodness to your site?  I came across some great widgets on AjaxDaddy.com.  There are calendars, editable text boxes, fish eye effects (a la Mac OS X), chat boxes, sortable tables, slideshow tools, and more.  All free, all with demos and code examples right there on the site.  Much of it's really DHTML rather than AJAX since it's all client-side, but it's really useful stuff.  It seems to be largely based on jQuery, which is a lightweight library that takes much of the pain out of Javascript.  Before you start digging into the script yourself, it's...

Charting by Google

How on earth did I miss this?!  Charting is always a difficult thing to pull off, but here I see that Google has an API do it with almost no effort whatsoever!  It looks like it's been around since at least last December so I'm really late to the party!  Just craft a URL and you embed it like an image.  Use JavaScript or server-side code to craft the URL for chart type, colors, labels, and values.  It really couldn't be easier! More info: http://code.google.com/apis/chart/

Stupid Forms Tricks!

Wow.  I've just learned something that should be a no-brainer.  It's not like this has happened that often, but there have been a few times that I've tried to use a StatusStrip control in a UI (Dock = Bottom) with some other control filling the rest of the form (Dock=Full).  I've always given up since the Fill control always goes behind the StatusStrip (presumably any Dock=Bottom control).  My "solution" has been to eliminate the docking and size the larger control explicitly above the StatusStrip, then anchor it in all directions.  Not a great solution. Figure 1:Notice...

Javascript Image Resizing

I have an ASP.NET project where I need to resize images on the client.  Why would you need to do that?  Well, you don't always know the images you are displaying.  If you are storing the images, or want to pre-fetch them, then you can build thumbnails on the server.  On the other hand, if you just have arbitrary images (most likely user-embedded) you may want a consistent thumbnail size without knowing anything about them to begin with. I did lots of searching on this topic and never did find exactly what I needed, hence this post.  My end...

Ticked off

I was deploying some files to IIS on a Windows Server 2003 box and I ran into quite a problem.  I kept getting an error: Ticks must be between DateTime.MinValue.Ticks and DateTime.MaxValue.Ticks.  Parameter name: Ticks when I would try to hit some of the pages.  It was clearly not code related, and the stack trace indicated a problem with the compiler itself.  I found posts talking about this error when you used serialized objects between different versions of the .NET Framework (something to do with changes to the DateTime object from 1.1 to 2.0), but that clearly wasn't...

Coding 4 Fun - Startup Optimizer

After a long delay, I've published another Coding 4 Fun article.  This one is a good start toward optimizing Windows startup.  It scans your Startup folder and will start the items at boot-time instead of Windows.  The advantage is that it can insert a delay between each application, or even wait for an idle CPU before launching one.  It uses user controls, a background worker, threading, and a number of other cool features.  This will be my last XP/VS2005 article.  Everyone should be on Visual Studio 2008 now!  As for Vista, well I'll try to make things work in both...

Near-future trends in the IT field and IT employment

A few Saturdays ago I participated in an industry panel at a University of Iowa ACM IT event.  We discussed the IT field and employment in the near-future.  My big message was about software being made into discrete components, composable, and extensible.  There are all sorts of hot new technologies on the web in terms of user-facing functionality, but in terms of IT effort, these are the things that I see creating value and leading to better software. The software (online or offline) that becomes the most successful is that which is the least restrictive.  If you create a...

ODC 2008 Impressions

The Office Developer Conference has a fairly broad focus since you can do so much with the client and server products.  VSTO customizations are definitely where it's at.  VBA's role was relegated to talks on bridging it to VSTO.  Interestingly, VBA isn't going away any time soon.  There is too much of an investment in VBA technology at many companies to just abandon it.  Of course, many companies had classic VB applications that became unsupported with the advent of .NET.  I think that they will deprecate it eventually, or it will morph into a managed scripting environment (Monad? VSA?).  VSTO...

Microsoft Office Live Small Business

I just sat through a keynote by Rajesh Jha (Corp VP, Office Live) about Microsoft Office Live Small Business and I must admit to being really impressed.  They've created a platform for small businesses to get online, manage contacts, market, and offer e-commerce (and more through extensibility).  Using Lists for items, people, groups, etc. you build the site as a means to display and interact with the lists.  It's really a classic data-driven web site, except that the nitty-gritty details are abstracted away.  Really, it's what I hoped for from Google with Page Creator and Google Base.  I think that...

Office Developer Conference 2008

I'm here!  It's sunny and nice in San Jose, CA -- a welcome change from negative temperatures, windchills, and the white covering over everything back home.  If you're interested in saying "hi" to me, let me know! I just got out of Bill Gates' keynote speech.  This is the second time I've seen him up-close and personal (first time being PDC 2005).  He's a good speaker.  Very at-ease, in-control, and quite polished.  I'm sure that it helps that he lives and breathes this stuff and makes presentations to people all the time. So far, no actual sessions, but...

LINQ Presentation: Speaking at INETA

On December 3, I spoke at the Cedar Rapids INETA meeting about LINQ.  Titled, A New World of Data Access with LINQ, I had a great time sharing my enthusiasm about the newest data access technologies for .NET developers.  LINQ is fully supported in Visual Studio 2008, even Express editions.  I just love how LINQ unifies data access between databases, in-memory collections, and XML sources.  The language constructs are a bit of a departure from standard programming, yet I felt acclimated to them pretty quickly.  Of course there's a whole range of features that I haven't dug into yet.  As...

Coding 4 Fun - MultiWall (Wallpaper Tool for Multiple Monitors)

Well, I got another Coding 4 Fun article filed a few days ago.  This one makes it easy to apply separate wallpaper images to each of multiple monitors.  Just drag-and-drop an image file to a special "drop region" on each monitor.  Learn about wallpaper, image resizing, drag-and-drop, and general Windows Forms programming. Enjoy! En mi artículo mas nuevo (¡en ingles, lo siento!), escribí sobre fondos de escritorio para pantalla múltiple.  Puede aprender sobre imágenes, arrastrar y soltar, y aplicaciones Windows Forms.  ¡Disfrutarlo! Article link

New Coding4Fun : Where am I? What am I doing?

After too long of  a hiatus, I finally published a new article to the MSDN Coding 4 Fun section.  I love my GPS receivers (I have an Ambicom Bluetooth unit and a Garmin serial/USB), and I decided that it was about time to learn how to interface with them.  As an application, I decided to write a plugin for Windows Live Writer (my blog poster of choice!).  Now I can click a button to insert my current coordinates and an embedded Virtual Earth map at my location.  Not much point at home, but next time I'm traveling somewhere, it could be...

Working with IIS under VS 2008 Beta 2 and Vista

After spending too many hours trying to deploy from Visual Studio to IIS on Vista using Visual Studio 2008, I thought I'd pass along what I learned. Even if you have IIS installed (it probably isn't by default, you must also install ASP.NET and IIS 6 management tools. The IIS 6 tools allow you to do the FrontPage integration stuff that Visual Studio uses for publishing.  Follow these instructions to make these configuration changes: Windows Features In Windows Vista, open Control Panel and then click Programs and Features. ...

Cool things coming

I've been working with Visual Studio 2008 and .NET 3.5 for a few months now, and I'm really excited about the changes coming.  The WCF support is so much better with auto-generated service stubs, a built-in test client, and direct right-click access to the WCF Configuration Editor from Solution Explorer.  Add Web Reference actually creates WCF clients now with lots of great control. LINQ is everywhere.  The namespace is auto-imported for easy access, there's a LINQ Data Classes class template (DBML file).  Working with data whether from a database, XML, or object collections is just so much cooler than ever (yes, I...

Launching applications with Windows

We need an API to launch applications with Windows.  You can make an app startup by making a shortcut in the Start Menu\Startup folder or through a Registry entry (Software\Microsoft\Windows\CurrentVersion\Run), but if your application is running in reduced security mode it isn't an option.  Better would be an API call that an application could use.  The user should then see an alert from Windows, "An application, XXX, is attempting to register itself to launch with Windows.  Is this OK?".  An Advanced mode would let you see the actual path it wanted to register and exactly how it was registering (current...

The Small Business Developer Center is online!

After many long hours, ten hands-on-labs and corresponding videos I created are online!  The Small Business Developer Center aims to offer ways of using Excel and Access, SQL Server Express (including Report Services), Visual Studio Express (C#, VB, and Web Developer), and Expression Web to drive small businesses.  There's a lot of ground covered, and hopefully it will be useful for small business developers trying to move things forward. Link: http://msdn2.microsoft.com/en-us/smallbusiness/default.aspx

ClickOnce Local Hosting Weirdness

I've been working on a session that includes a ClickOnce activity.  The unusual aspect of it is that I create the ClickOnce package on the same machine that I then host it, then finally install it from.  Not all that strange for dev/testing, though certainly not a typical scenario! As it turns out, the deployment URL is very picky.  I had been using my machine name, and then trying localhost, but no matter what, I was getting an error about the target machine actively refusing my connection. Well, the web site hosting the package was being run within Visual Studio,...

Theming in Visual Web Developer/Expression

So I've been frustrated that I just could not get a site's theme to show up at design time in either VWD or Expression Web.  As I looked at the Master Page and the individual pages, I couldn't see any sign of how the theme was even being applied, yet at runtime, it was clearly linked properly.  If I just added the stylesheet declaration to the Master Page all looked fine, but I didn't want to hack it. Finally I came across this post from Steve Clements that explains how to add the <pages> element to the Web.config file to...

Trying to install Orcas Beta 1 on Vista?

I hit a weird error when trying install the Orcas Beta 1 on Vista today.  After some searching, I found this entry from Aaron Stebner with a simple fix.  It turns out that there's a bug in the .NET 3.5 installer.  If your installation path includes spaces, it will fail.  The error isn't at all clear, and certainly spaces should be fine, but a lack of quotes in the installer script causes the failure.  Simple fix, but it sure wouldn't have been easy to find!  Thanks Aaron! I am very pumped about Orcas.  If this ever finishes installing it will...

File Paths in Desktop Search

In previous posts, I've been telling people to use the System.ItemDisplayPath and System.Filename to create the full filename.  I also complained about some anomalies I had come across with the file paths.  You see, there is no field that just contains the filename with path.  My guess as to why this is the case, is that WDS is not just files -- it's also email, journal entries, contacts, and more.  So the universal scheme is the URI, stored in the System.ItemUrl property.  This is fine for the Windows Shell.  I can invoke Shell.Execute on a URL and it launches perfectly...

Office Web Controls

I tried out something new and interesting today.  The Office Web Controls (OWC) let you embed interactive Office documents into HTML documents.  These are installed with Office 2000+, or can be downloaded separately if you don't have Office installed.  I had assumed that OWC just let you embed a document in Internet Explorer, something already possible since the Office tools can site in within any ActiveX container, but these are completely different. My example contained an XML schema, the XML document mapped to a workbook, a PivotTable, and a corresponding PivotChart.  Exposing the chart via interactive HTML worked great --...

Getting the filename from WDS

I've been saying to get the filename from Windows Desktop Search queries by combining the System.ItemFolderPathDisplay and System.ItemNameDisplay.  This worked fine on my system, but I didn't realize that it might not work if you hide file extensions in Explorer.  Apparently, ItemNameDisplay returns the filename minus the extension in this case (or at least I found this to be the case on Vista).  The better choice is to use System.FileName.  This returns the filename with extension regardless.  You still don't get the path though -- for that, continue to use ItemFolderPathDisplay.  So how do you combine them?  Definitely don't just...

Code Camp Complete

Well, the Code Camp in Minneapolis last Saturday went really well.  I would have been happy with a larger turnout, but those who attended were interested and there was pretty good participation.  My talk was about leveraging Windows Desktop Search in your applications.  As discussed at the session, I'm posting my sample code and PowerPoint deck here.  The code is only demo-quality!  Feel free to ask any questions. If you don't have PowerPoint 2007, remember that you can download the Microsoft Office File Converter Pack for earlier versions to open the pptx file.  It's free! Windows Desktop Search Presentation Windows...

What's up with EXIF properties in .NET? (Part 2)

I've learned a little more about the photo properties.  It seems that Windows just doesn't "play that game" and use standard EXIF tags.  I've seen lists of tag ID's, with some marked as "Windows" for the caption/description/keywords, but at some point they must have changed their minds.  As it turns out, if you set properties in images now, they actually show up in the XMP block.  Vista is good enough that if it updates an image, it will copy EXIF/IPTC data to the XMP block as well.  XMP is an XML block of data that can contain known or arbitrary...

I'm going to Twin Cities Code Camp 2007

In two weeks (4/28/2007) I'll be at the Twin Cities Code Camp Spring 2007 speaking about Windows Desktop Search from 3:45 - 5:00.  Code Camp is a free all-day event (unbeatable value!) with such speakers as Rocky Lhotka, Robert Boedigheimer, and Jason Bock. Abstract: Do you think that Windows Desktop Search (WDS) is just about finding that long-lost spreadsheet? See how to integrate search features into your own applications to provide more power to your users. Take advantage of the search index to see files and other entities in a whole new light with less effort than you might imagine....

Tweaking object serialization

If you've ever used binary serialization in .NET, you may have been frustrated with getting it to do exactly what you want it to do.  To start with, you need to mark the entire class with the Serializable attribute.  Then you can suppress a given field from the serialization stream by using the NonSerialized attribute.  This is really handy if you have a class member representing a database connection or some other object that is more than just a stream of bytes.  So if you tell it not to serialize it (which is good), how do you recreate it when...

Visual Studio Express Limitations

I never noticed some of the things missing in the Visual Studio Express editions compared to other editions.  As I've mentioned before, there's no icon editor (check out IcoFX as an even better replacement). There's also no incremental find.  This very cool feature lets you initiate a search using CTRL+I.  Then as you type, it locates matches in real-time.  Very cool, but it's not there in Express. I also just recently noticed that the Express editions don't show change tracking in the code editor.  In other editions, the left margin changes color to show where you've made changes in the...

Great error reporting

So I'm working in Visual Studio Tools for Office (2005 SE) for the first time.  I've used Visual Studio Team Suite to create VSTO add-ins before, but not the specific VSTO-branded Visual Studio.  Wow.  Talk about limiting.  I'm trying to create a UserControl to host in the Task Pane (the pane on the right which houses Clip Art and Research).  When the customization runs, I get this incredibly useful message: Yeah.  Not much for details.  I thought that I remembered getting a stack trace at this point with Team Suite.  So I think, "I know, I'll set debugging...

Coding 4 Fun: Enhanced File Open/Search Dialog

My newest article (part 1 of 2) has been posted on MSDN Coding 4 Fun.  It uses Windows Desktop Search (again) to demonstrate some interesting ways to leverage the index.  I wanted to create a replacement for the standard file open dialog using search instead of folder navigation.  You refine your search by file type, then up to three attribute/value pairs.  At this point there are still a few issues with performance, and it's not quite useful enough yet, but it's getting close.  It's pretty good at replacing the iTunes browser for the moment, and you can search for other...

Coding 4 Fun - Searching the Desktop

My most recent Coding 4 Fun article has been up for a few weeks now, but I haven't gotten around to mentioning it yet!    I wrote a neat little utility that uses the Windows Desktop Search index to provide auto-complete functionality for file names.  As you start to type, it shows files across your local hard drives (and possibly network).  The standard filesystem-based autocomplete (built-in to the TextBox) works based on matching the full paths, from left-to-right.  This one is based on solely on filename, so will find files that even contain the string in the middle of the word.  It's fairly...

Battling unhandled exceptions

As I was debugging an in-progress sample application, I was having trouble with an unhandled exception.  The application would bomb on an Invoke statement, when clearly there was no problem at that point: Image 1: An unexpected exception (click to see full-size) I had previously created a delegate pointing to a given method, and a delegate for the callback method.  From a delegate instance, you can call BeginInvoke to cause the method to be queued on a background thread.  When the operation completes, your callback method is invoked.  It's a beautiful way to dispatch low-priority programming tasks without...

Office Business Applications

Maybe you've written VBA macros for Office, or used COM interop to leverage Microsoft Office clients (Word, Excel, etc.).  When I worked at MCI (WorldCom, Verizon, whatever it is now!), we had a system to watch a database for rows to be inserted in a given table, then generate form letters with Microsoft Word based on that data.  When I first saw the application (obviously, I didn't write it!), I was amazed that such a thing could even be done.  It was like a world of opportunity opened having access to Microsoft Office features as part of your code. ...

Internet Explorer

I've been working on a project lately that involves me reading a large amount of Internet Explorer resources.  I've been primarily using Firefox for over a year now.  My first motivator was the tab support, but the open code base and wide variety of extensions was the deal maker.  As I peruse the MSDN pages, I'm amazed at how much is available.  It really covers a lot of information.  Unfortunately, it's not geared for .NET development.  There's also a relatively high barrier to entry to write many of the extensions due to the COM interfaces.  I don't have a COM...

Alternate identity!

I've started contributing to the Aeshen blog recently, talking about multithreading and multicores.  I've posted twice so far, and will post more every so often.  Mostly essays about how things are today with processors and code that exploits parallelism.  I think it's interesting stuff, and something not explored enough.  Take a look if you have a chance!

Windows Desktop Search (WDS) Properties

If you've been trying to work with Windows Desktop Search 3.0 on XP or Vista and have been frustrated about which properties actually work, I've compiled two list.  Starting with the complete list of Shell API properties from MSDN, I ran them through a quick query app to see which error'd out.  The list of good properties is here: http://www.ariankulp.com/downloads/WindowsShellOLEProperties.txt For the list of shell API properties missing from the OLE DB interface, look here:  http://www.ariankulp.com/downloads/WindowsShellOLE-MissingProperties.txt There are a good number of working ones.  I have no idea why the others don't work.  I have also learned that for the search index, you don't...

Windows Desktop Search on Vista RC2

It's been too long since I blogged about Windows Desktop Search (WDS) 3.0 in Windows Vista.  This post is current with RC2 (build 5744).  Since I last posted, WDS 3.0 is now also available for XP and 2003.  This is awesome since you can develop great search-enabled applications to run on any modern desktop or server. There is a COM interface for search.  More information is in the Windows SDK Help file (User Interface | Windows Shell | Windows Desktop Search (WDS) 3.0).  You don't need to use the search API though.  The good news, in my opinion, is that you can just...

WCF PeerChannel on Windows Vista

I've been working with WCF (Windows Communication Foundation) and the new P2P-based PeerChannel lately.  I've learned a few things... Listening on a port in Vista requires Administrator permissions.  For the PeerChannel this isn't necessary, but for net.tcp or http bindings you will need to have the elevated permissions.  Remember that in Vista it isn't enough to sign in with the Administrator account (unless you disable UAC).  You can explicitly Run as administrator by right-clicking on the EXE.  You can also modify the manifest to state higher requested privileges: <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3"><security><requestedPrivileges><requestedExecutionLevellevel="asInvoker|highestAvailable|requireAdministrator"uiAccess="true|false"/></requestedPrivileges></security></trustInfo> This will automatically request elevation when the application is...

Using the Clipboard

Who knew how easy it could be?!  With .NET 2.0, just use the [System.Windows.Forms.]Clipboard class to get and set clipboard data.  Check for data using the Contains methods: ContainsText() ContainsAudio() ContainsFileDropList() -- Drag-and-drop file names... ContainsImage() ContainsData() -- Check for arbitrary data types specified using DataFormats values Next, call the corresponding Get method: GetText() GetAudioStream() GetData() GetDataObject() -- Nice for interchange within applications GetFileDropList() GetImage() You can also call Set methods...

Google does code search

Well it's about time!  After they started hosting source code and projects, I expected to see it happen.  After Krugle came on the scene and did an awesome job of source code search, I expected to see it happen.  I guess it just seems like a no-brainer for company like Google.  They certainly took their time, but the work looks good so far. They have advanced options to enter search criteria as a regular expression, choice of language, license, packages, filename matching, and case-sensitivity.  It works pretty well.  I don't think that the results are on par with Krugle yet,...

Working with dates and times

Here's a simple tip for the day.  If you've ever wanted to make it easy for a user to select a date and time in a UI, you've probably realized that you need two DateTimePicker controls.  The way the controls are rendered, you can edit both the date and the time in one control, but it's a little neater with the separation.  There is a trick or two though, and it would actually be a good candidate for combining into a single UserControl. First of all, each control needs its Format set.  Keep in mind that each control contains a...

MIIS 2003 Extensions

So I was helping out on a project involving MIIS 2003.  I needed to write a password extension to propagate password changes from Active Directory to a legacy SQL application.  It was obviously not working, but I couldn't tell why.  The Event Log would indicate the Password Change Notification Service (PCNS) sending out the change, then MIIS would attempt to send it to the appropriate management agent (using the password extension), but then it would show this error:An unexpected error has occured during a password set operation.  "BAIL: MMS(3240): passwordext.cpp(306): 0x80131509 BAIL: MMS(3240): passwordext.cpp(735): 0x80131509 BAIL: MMS(3240): export.cpp(5959): 0x80131509 BAIL:...

Device development gotcha

So I got the error: "The process cannot access the file because it is being used by another process."  This has got to be one of the most hated errors in Visual Studio 2005 since it's often so ambiguous!  No file was mentioned, just the message above.  This was deploying to a Windows Mobile device (well, emulator anyway).  I double-checked the file, restarted Visual Studio, no dice.  Finally I got the bright idea to simulate a soft reset on the device itself.  The was actually on the device itself, not on the dev machine.  This makes sense.  I had left...

Wallpaper Cycler

Every so often, someone asks about a precompiled version of an application from my article series.  I should have done this in sync with the columns, but oh well.  I'm going to try to get each one published via ClickOnce now.  Here's the link to my Wallpaper Cycler.  It's a relatively simple application to scan a folder, and optionally its subfolders, in order to select an image to show on the desktop.  You can specify a command-line argument of "-autoclose" in order to have it change the background and exit.  This might be useful on system startup.  I should probably...

Searching the File System in VIsta

Wow, I can't believe howe much trouble I've had getting search to work in Windows Vista!  Based on a quote from MSDN: "You can use new Windows Vista APIs to query items in the Windows Search Engine. Your application can use the OLEDB/ADO from managed or unmanaged code to issue queries using a SQL-like syntax. In return, your application receives an OLEDB Recordset where the columns correspond to properties in the Windows Metadata System, for example, System.Photo.FNumber." -- http://msdn.microsoft.com/windowsvista/prodinfo/what/discoverable/default.aspx I cannot find documentation on this feature anywhere!  I have a sample from the December CTP that uses a weird OLE DB provider...

ASP.NET Database Copier

In case anyone is interested, as part of updating my blog, I had a need to copy my Access database to SQL Server.  Since GoDaddy doesn't allow remote access using Enterprise Manager (well, at all...) I had to perform all operations from their own web-based interface or from code.  Their interface supported queries, but didn't support linked servers or OPENROWSET so I was forced to resort to code.  My simple solution was to create a table data copier.  Specify the host and destination datasource (using OLE DB connection strings), the table name, and optionally, a sort by column name (probably...

Compact Framework Mobility

Am I missing something?!  Is it possible that the .NET Compact Framework 2.0 (CF) has fewer mobility features than the full-size framework?!  I wrote a two-part article on mobility for Coding 4 Fun (check my links along the side) and really enjoyed playing with the network and power features added from 1.1 to 2.0.  Now I'm working on Pocket PC development for a project and it looks like you still need to use P/Invoke in order to determine this information.  Think about it -- someone needs to go through the BCL list and decide which classes are worth porting to...

Programming Ideas

As I write my articles, there is often this struggle just to come up with a good idea. There are two things going on. First, I want some great concept to show off. In the past I've discussed data-enabling, mobility-awareness, file notifications, and various Windows forms coolness. Second, I need a vehicle to show off the concept. You don't write code in isolation. You can, of course, but it's so dry that no one wants to read it! The intent is to choose an application that is simplistic enough to fit within the time constraints of the article, integrated with...

WCF (Indigo) Tracing/Logging

AARRGGHH!! Well after hours and hours I've finally figure out how to trace messages in the February CTP of WinFX/WCF/Indigo. The Windows Communication Foundation is great stuff with lots of power, but these breaking changes between releases have been killing me. It will be nice when it's finally gold! The bottom line is you need to declare your source name as "System.ServiceModel.MessageLogging" or nothing will log. No errors, WCF just doesn't think that anyone's listening. Awww. That sounds sad! <configuration>    <system.diagnostics>       <sources>          <source name="System.ServiceModel.MessageLogging" switchValue="Verbose">             <listeners>                <add name="messages" type="System.Diagnostics.XmlWriterTraceListener" initializeData="C:\logs\messages.e2e" />   ...

Time Tracker Enhancements

I got an email the other day from Adam Marciniec letting me know that he has made some enhancements to the Time Tracker application to support Excel export. What a great idea! Then today I get an email from someone else asking about adding Excel support. For anyone else interested, you can read more about the enhancement, and download the code directly from Adam's great blog. It's always nice to see someone enjoying my code! On another note, I also have updated my code. It would be nice to merge the Excel changes into my code...

CORRECTION: Working with Application Settings

My recent article with the wallpaper cycler made use of application settings to retain the location of the pictures folder, whether to recurse into subfolders, and other options. You can run the application and immediately change the wallpaper using the system tray notification icon. As it turns out, I had a bug in my implementation. I used the Properties pane to associate my user interface fields with application settings. In my code then, I assume that all data transfer is two ways throughout. While this is true in the general case, it turns out that...

Mutexes and garbage collection

Michael H. sent me a comment yesterday stating that my "Tricking Out Your Applications" code had a bad flaw. Recall that I show the use of a System.Threading.Mutex object in the Main method in order to prevent more than one instance of the application from running. Michael noticed that, while this works in Debug mode, it does not work in Release mode. Weird, I thought. I tried it myself, it worked fine, and I let him know there must be something else at fault (like any American, my first instinct is self-preservation -- it's not my...

Exporting a project template (Visual Studio 2005)

I spent way too many hours exporting some projects in Visual Studio over the past few days.  By default, in the File menu, you click Export Template to start the process of exporting your current project, or an item in the project, as a redistributable template.  As it turns out, in Visual Studio Team System, this menu option isn't there.  I thought maybe it hadn't made it in the final RTM build, but then after doing some Googling I found the obvious solution -- customize the menus!  Here are the easy-to-follow steps that I should have thought of on my...

Remote Debugging with Visual Studio 2005

I do a lot of development on VMWare and Virtual PC.  I don't even have Visual Studio installed on my primary machines.  When I write code that I want to run on my primary machine (like my time tracker), everything is usually fine, but sometimes I want to debug it.  Restarting the app on the virtual machine may not reproduce a given problem.  I've noticed before that the Debug | Attach to Process menu command seems to allow you to connect to proceses on other machines.  I never realized what that entailed though. It turns out that (unless you are on...

Databinding: The unsung hero of .NET

Lately, I've been trying to work more with databinding in my projects.  I'm accustomed to thinking of it as a means of associating user interface controls with a database, but in fact it's much more than that!  The fact is, you can databind to a variety of types of data, without any need for DataSets.  The coolest thing I've come across recently has been databinding to application settings.  Settings are new to Visual Studio 2005 and allow you to define user and application settings that are managed by the application framework.  You name a property like “AvatarFilename,” set it a...

Awesome Looking Windows Forms Apps

If you've ever looked at some of the cool Microsoft applications (or the operating itself) and wished you could make apps just as slick, you can.  Mike Dobler has created an exceptional set of visual components (controls) to create tasks (like in Movie Maker and Windows Explorer), login controls, better lists, and much more.  These run on .NET 1.1 or 2.0, play nicely in the Visual Studio Toolbox, and can really give a polished look to your applications.  The best part, is they are free!  When you see how nice they can look, you'll wish you'd been using them longer!  They've...

Getting started with Visual Studio Express

Did you know that there is a great resource right on Microsoft's web site for new .NET developers?  Access 10 hours of video content for either C# or VB to learn about topics such as user interface, events, variables, objects, data, XML, and more.  If you are moving from classic VB to .NET, or just looking to get started with programming, this is a great way to get a jumpstart.  With the Express Editions being free for a year, there's really no barrier to writing cool code! Catch the VB version at http://msdn.microsoft.com/vstudio/express/vb/learning/default.aspx, and the C# at http://msdn.microsoft.com/vstudio/express/visualcsharp/learning/default.aspx. 

Cool gradient effect in C#

Ever wanted a cool gradient for the background of your Windows form application?  Whether you want to cover the entire form, or just a single panel, it's actually pretty easy to do.  I found an article (http://www.knowdotnet.com/articles/lineargradient.html) and added it to my own app and it worked out pretty slick.  In this example, it's at the form level, but you can apply to any object in the Paint event and the Resize event.  Handling the Paint event allows you to paint anything you want on your Graphics surface.  The Resize event is important, since otherwise, any resizing of the form...

Charting in .NET

So I was looking for an open source chart solution for .NET.  I don't even care if it's open source actually, just free to use!  Google was little help at first because all I got was hits for commercial products.  <rant>I hate how when you search for “free” in conjunction with a type of product, what you end up getting is lots of products with evaluation versions.  EVALUATION IS NOT THE SAME AS FREE.</rant>  Finally, I came across this page highlighting several viable options.  I ended up using NChart which is an exellent product, and fully available for any use. ...

Updated Time Tracker Application

Once I released my Time Tracker application article, I decided that I liked the base code enough to modify it for my own use.  Of course, I figured that I would release it for others to use too.  I have set it up to install as a ClickOnce solution (click a URL, click Install, then let it auto-install, and even auto-updates over time).  I also have the source code available as a Zip file. For those who haven't worked with ClickOnce yet, it's great.  Use the Publish wizard in the Project Properties, sign the manifest and the code (just use the...

Wrong download link on Coding 4 Fun article

On my latest article, “Keeping Track of Time,” the code download link for VB is incorrect.  Both links were erroneously pointing at the C# version.  To download the VB version, just substitute VB for CS.  In the meantime, here are the links for convenience: C#: http://download.microsoft.com/download/d/4/5/d4556729-81f9-4578-936a-111721b27e49/TrackingTime-CS.msi VB: http://download.microsoft.com/download/d/4/5/d4556729-81f9-4578-936a-111721b27e49/TrackingTime-VB.msi Sorry about that!  Thanks Tony D'Ambra for being the first one to point this out!  Hopefully it will be corrected soon. -Arian

New Coding for Fun article - Keeping Track of Time

I noticed that my most recent article was posted two days ago.  I wrote a system tray utility for keeping track of time spent on projects.  With all of the work I do on various concurrent projects, I felt that this would make a lot of sense.  It's a bit simplistic to start with, but already lets you add a list of projects, track hours, and view a breakdown of your time.  I am adding some enhancements to it myself, and will be posting an updated version (C# only) directly on my web site soon.  Most are ease-of-use enhancements that...

Another Coding 4 Fun article

In all of the hubbub over the release of Visual Studio 2005, I neglected to announce the release of another Coding 4 Fun article on MSDN.  This one interacts with Windows Media Player 10.  It extends a sample application from the Media Player SDK to allow you to skip and/or mute sections of media clips as they play.  The time codes get saved as XML files alongside the original files so they are non-destructive.  The name is “Non-Destructive Media Edits.“  Not really edits, I suppose, but the same effect.  Nice to screen/censor material for family viewing. I'd really like to extend it...

Another project complete!

Well my latest Microsoft project has hit the download site and it's definitely been the fastest yet!  It's also a slightly different direction then the normal fare.  Usually my work is intended for demonstration.  Some code, a script, and sometimes hands-on-lab sessions.  This time it was 95% code, along with a ReadMe file.  Along with another guy, I co-wrote a mobile starter kit application for mobile development, specifically targeting Windows XP Tablet Edition called the Mobile Ink To-Do Starter Kit. The premise is a todo-style list where you use the tablet pen to write your items, then you can save them...

My new favorite Visual Studio 2005 feature

If you are a coder, then you probably spend a fair amount of time debugging code (otherwise, I'd love to hear from you!).  The “old“ way is to add lots of console print statements to display what the application is doing at a given time.  Of course this requires changes to code, and if you decide to change what information prints out you may need to restart the app (though this works much better in VS 2005 to begin with).  At the end, all of the print statements need to be removed (hope you didn't miss any!). Instead of simple print...

Newest article posted

My newest article has been posted on MSDN Coding 4 Fun!  I wrote a little utility to watch a specified folder for new files.  When files appear, you can have them automatically moved to a different folder based on extension.  This would let you setup an incoming folder, perhaps for an HTTP file uploader, then have all images moved to one folder, all Microsoft Word documents moved to another folder, etc.  It's a neat little thing that runs in the system tray.  I think it offers some good opportunities to add onto it (it's admittedly pretty basic now...), but it...

Great ad from Microsoft

OK, so this is probably old, but I just came across it: Escape from Yesterworld It's an ad for SQL Server and Visual Studio 2005, but it's got to be one of the more creative efforts I've seen from MS. Bonus points for ripping on Microsoft Bob! Enjoy!

WinFS Correction

Well, if you read my previous WinFS post (http://ariankulp.com/archive/2005/09/20/561.aspx ), I've made some corrections to it.  I made a bad assumption about the WinFSData object which I've corrected.  Bottom line, treat it like a database connection.  Create/Destroy it as used and a connection pool will deal with keeping it efficient. Gotta read that documentation more!

WinFS Coding Fun

So I've been playing with WinFS here and there since the PDC.  It's a neat model, with lots left for me to explore.  I took the WinFSThumbnailer app (C:\Program Files\Microsoft SDKs\WinFS\Samples\WinFSThumbnailer) and added some enhancements. First of all, I added a thumbnail viewer in the app.  Seeing the filename in a listbox isn't all that useful if the names came straight from the camera (DSCN0923.JPG, anyone?).  Now as you change focus, I display a thumbnail below the list. Second, I added support for the EXIF Orientation tag.  This little-used/little-known tag allows you to specify the orientation of the image.  It's actually a way...

Coding 4 Fun article is live!

Well today I noticed that my MSDN Coding 4 Fun article went live!  It's a short article on how to create an alarm clock in the system tray.  It's a neat way of showcasing some of the easy-to-use features in Visual Studio 2005.  I should have another article showing up at least once a month and plan to write lots of neat little utilities (hopefully providing actual usefulness!).  I'd be glad to take a suggestion if anyone has one, or at least take an idea into account.  Otherwise I'll come up with ideas that make sense to me.  In general,...

PDC Wrapup

Well, my plan was to blog on the sessions through the week but it didn't really happen that way.  For one thing, I was just really busy!  I was running, running all the time.  I don't know how many miles I put in.  I always wondered that with JavaOne too.  It would be interesting to count the miles.  Beyond the time constraint, I thought I could just blog from the sessions, but for whatever reason I couldn't always get a connection in the session rooms (though they seemed to always be available based on other attendees), and of course I...

Bill Gates and Napoleon Dynamite

The keynote this morning was something else!  I've never seen Bill Gates up close before (though 30 rows back isn't that close either!), and watching him talk was pretty exciting.  He had so much to say about Vista (formerly Longhorn), and given my interest in future technologies, I couldn't get enough. Later today I'll pick up my "goodies" bag which will contain a never release build than the Beta 1 build. I already have B1 installed, but I'm always glad to update. The search features are much needed, and the general UI eye-candy is a nice catchup with OS x too....

Bound for the PDC!

Today I'm off for the Microsoft PDC '05.  I plan on attending as many sessions as I can, and perhaps blogging about the goings on when I can.  As a veteran JavaOne attendee (five times anyway), it will be interesting to compare and contrast the two.  I have a feeling that this will be bigger.  I am really looking forward to sessions on Vista (Longhorn), including WinFS, XAML, presentation (Avalon), and messaging (Indigo).  I will also try to attend sessions on LINQ (something I already know a few things about...), and whatever else I can find time for. As a Coding...

Fun with blogs

It's just unbelievable to me how much feedback spam I get. I know that this blog is far, far from high-traffic, yet I get 10-12 gambling-related feedback spams each day. I thought I'd jump on the CAPTCHA bandwagon and make it a bit harder to post feedback, but two things went wrong. First of all, the control I tried to pop in there just didn't work all that well. When I tested it, I could post comments without entering anything -- it only validated if something was entered. I was told though, that some people...

AJAX and .NET

So Microsoft isn't releasing out-of-the-box AJAX functionality with ASP.NET 2.0. It's a little disappointing, though it sounds like they recognize the importance of the feature and will work to add it in a future release. In the meantime though, I came across an awesome implementation written by a Michael Schwarz. Not only is it full-featured, but he's got a great online demo to put it through its paces. It looks like the API is pretty simple, though I haven't written an app yet. With all of the focus AJAX is getting these days with Google,...

Busy, busy, busy!

Wow this has been a busy past few weeks! Everyone always talks about being busy, and I'm no exception, but it's been my heaviest work load in awhile, culminating in a some really long days last week. I'm happy to say that rush is over for now! In the meantime, I've gotten my digital camera (Nikon Coolpix 5700) fixed at Advanced Photo Service in Illinois. Not cheap, but well done. Everything cleaned inside and out including LCD, lenses, CCD, and EVF. I had decided not to get it fixed based on the price, but due to...

Rounded corners without images!

I read a great article written by Alessandro Fulciniti, linked by this MSDN blog this morning. The technique uses a combination of CSS and JavaScript of all things to create the effect, so it's not enough to just declare a given element. You'll need to name the elements, then call the new JavaScript functions to round out those elements. All in all it adds little overhead, and best of all you save the hassle of all of those rounded images in different colors! The function lets you specify which element to round, whether you want...

Spelling Quiz Program (with speech)

Well I wanted to help my son with his spelling list at school each work so I developed a spelling quiz program for him. It uses the built-in Windows Speech feature and requires the .NET Framework to run. When you launch it, you can either go to the word list or generate a quiz. Words can be entered with a phrase to make it easier to tell what word it is. This is pretty standard in oral tests, but pretty important with synthesized speech since it isn't really clear enough to understand a word in isolation. After entering the...

Looking for .Text Skins?

I got bored with the included skins and decided to see what else was out there. It turns out that there's a great collection of skins here. If you are ready to make your blog more interesting, it's worth checking out! I haven't applied any yet but I think I will soon. UPDATE: I have switched to the LuxInteriorLight skin from Jaxon Rice. It's a great looking skin that just dropped in place pretty nicely. The link to get it is actually on the bottom of each page, but here's an inline link to save some...

New XML Template for Picasa

As mentioned in the previous post, I created a simplified XML template for Picasa web export. This makes a smaller XML file (about half) and removes the undefined and unncessary tags. I liked it personally, and anyone else is welcome to it! It's not required for the bulk image uploader. Click here to get more details and to download it.

Bulk image uploader update

I fixed the issue that affects blogs without an image gallery already setup. It was a dumb mistake as the uploader doesn't care if galleries exist or not anyway. I still need to include the source for anyone that cares, but I haven't gone through it clean it up. I'm not trying to make it perfect (don't get your expectations up!), just trying to make sure that it's clear. Tomorrow I'm planning on posting a new XML export template for Picasa that strips out unnecessary tags. The bundled template has more than most people would need. ...

Microsoft Development

I've been playing with Visual Studio 2005 (formerly Whidbey) in their Beta 1, and Nov and Dec CTP builds and I must say they are impressing me more and more. I've been a pretty hard-core Java developer for a number of years and I've always loved the framework, but as I look at Java 1.5 and the .NET Framework 2.0 I see a pretty close convergence in many ways. Web development is the best it's ever been with ASP.NET and Struts/JavaServer Faces. Generics, iterators, and attributes make for very expressive code, which I consider a critical feature...

Great controls collection

Doing some research today regarding Visual Studio I came across an incredible looking collection of controls (and free to boot!). They are simply called XP Common Controls (XPCC), written by Michael Dobler and distributed on his website. This may be old news to Windows Forms developers, but as a relative newcomer I hadn't heard of them before. They do a wonderful job of recreating the look of Windows XP as seen in the task views of Windows Explorer and Movie Maker, as well as much of the pizazz of MS Office. For all of this to...

Image Uploader - Beta Release

The code is ready to try out!  Download the file, unzip it, and open the readme.txt file for details.  The quick instructions are: Copy the aspx file to your “admin“ folder Copy the files in the “bin“ folder to your “bin“ folder Then you can hit the aspx file directly with: http://{server}/{application}/admin/BulkImageImporter.aspx.  From there, you'll need a Zip archive of either a Picasa web export (XML format), or a Zip archive of folders containing pictures (for the Generic option).  Many more details in the readme.  Sorry it's not easier to make sense of.  I should probably provide some sample archives to make it...

Whidbey

I've been playing with Visual Studio 2005 (Whidbey) over the past few days and it's just so great!  I've been using it on and off since last May and it's going to be a great release.  The addition of Edit-and-Continue for C# will really cement it as a world-class environment.  I worked for quite awhile in Java with no such feature in sight.  Back in my VB 5.0 days that was almost the top attraction (the RAD UI development versus Java was probably the top).  Coupling that with Generics (very excited about that), greatly improved iteration (which really opens up...

Image Uploader

Well, here's the first look at the UI.  Pretty minimal!  Select type of gallery archive, browse to the file, and upload.  Once it's done it states how many files were processed and the new gallery appears in your list.  The beta code (probably no source yet) should be up tonight or tomorrow.  I'm just pleased as punch to have it this far!  

Getting Picasa Online

Well it look like I'm not the first to realize the need to get Picasa albums online!  In this post, Ben asks why Picasa won't work better with blog software.  Not that my photo importer is hot stuff yet, but it does address the fundamental need to take Picasa pictures and get them onto a blog easily, with captions and albums preserved.  Since is uses the Save as Web Page (XML format) feature it only works for one album at a time, but I'm very pleased with how it's coming along so far.  As a matter of fact, I'm not...

Bulk Image Import

Well the code is almost ready to beta test.  It's coming along great!  I have a generic importer that takes any ZIP file.  It looks for directories with images.  The directory names become .Text gallery names, and the images get sucked right in.  There is also a Picasa2 importer.  This takes the index.xml file and the images directory (ZIP'd up), creates a gallery, and imports the images with captions when present.  Code needs some cleanup but it's just about ready for beta!  Fototime would be another option to add for import format, but not at this point...

.Text without SQL Server

Need .Text without SQL Server? If you can use MS Access this is the ticket!

Unzip in .NET

I'm working on a plugin for .Text and I decided it made the most sense to work with ZIP files.  The problem is, no built-in support for Zip (without resorting to J#).  Well, after much searching I found Sharp Zip (http://wiki.sharpdevelop.net/default.aspx/SharpZipLib.SharpZipLib).  Cool!  It looks like it will fit the bill nicely though -- based on the Java Zip libraries.  I searched GotDotNet workspaces, Sourceforge, and general Google without finding any free options.  Finally this entry by Andrew Stopford pointed the way.  You just need to be tenacious!

First entry

Hi.  My name is Arian Kulp.  I've been a Java developer for about six years, then for the past year (since around April 2004) I've been full-bore .NET.  I've worked with Visual Studio 2003, 2005 (Whidbey), C# and VB.NET, Active Directory Application Mode (ADAM), Authorization Manager (AzMan), Mappoint Location Server (MLS), Visual Studio Tools for Office (VSTO) and many other Microsoft acronyms.  I am very interested in enterprise development, high-performance web applications, and anything that leads to powerful, easy-to-maintain, user-friendly software.