|
|
|
|
| You have arrived at www.michaelbraude.com - otherwise known as the garbage dump of my mind. Here you will find fun tidbits about my life, software projects that I spend my free time on, a brief history of my life, my impressive resume and lastly, nerdy tidbits from my daily happenings as a software engineer. |
|
|
|
|
A few weeks ago, I got an email from a reader who was interested in getting my spell checker project to work with a WPF application. Since I wrote that project before I really had done much with the WPF, I hadn't really thought about updating it to make it work with the new .NET API. Also, for my own applications, I have been using the built-in WPF spell checker, which works pretty well in my opinion. But apparently, there are still cases where using the Microsoft Word spell checker is preferable to using the built-in WPF dictionary. For instance, using the word dictionary allows you to use user-added words in your spell checking and have them appear in both Word and whatever application you are writing. I can see how this might be a nice to have feature.
Anyways, thanks to hard work of Nathaniel, I now have a WPF version of the spell checker project available on the website. So, if you're interested, feel free to download it and check it out. Thanks again to Nathaniel for his help!
By the way, in case you haven't read my blog lately, you should go read the latest entry to catch yourself up with some crazy news. |
|
|
|
|
I recently spent some time at the office researching the impact of the garbage collector on managed code, uncovering some very interesting results. We're developing a new X-Ray machine that has some very steep performance requirements, and there's been a big concern about the impact of the collector on real-time systems. If the collector is going to suspend all CLR threads, scan the heap, and then relocate objects, how large of a hiccup will that cause? What's the worst-case scenario? Will it impact our bottom-line frame rate requirements?
While, ultimately, we have decided to keep the two universes separate, the results from my research were very useful. Now at least there are some numbers behind all this theoretical overhead - and numbers are one thing I've had a lot of difficulty finding on the internet. I've certainly learned a lot about the collection process, and have some ideas about how to do performance-sensitive code in the managed space while reducing the collectors overhead. I think, after reading the article, you will too. |
|
|
|
|
Since I started my technical blog a few months ago, I realized that I would really like to turn some of those posts into something more permanent. Since I don't really have time to do a nice and fancy archiving system, I decided to just copy things that I want to store into a new section. Thus, the articles section was born. This is where I will essentially archive old blog posts for the future. The size of the tech blog has become a bit of a problem, not really because its slow, but because it's hard to find things on there that you are specifically looking for. The whole point of tech blogs is to relay small bits of interesting tidbits that I come across so that other people can find them. It is important that other people can find things in an easy manner; shoving everything into one giant page makes it tough to find specific things that are interesting. So over the next few days, I will start copying some of my more interesting blog posts into that section so that they can live there in peace and quiet.
Anyways, besides being an archive of old blog posts, the articles section is meant to contain....articles. Basically these are extended rants and opinionated thoughts that I feel the need to express on the website. My first rant is all about code organization in C# projects, aptly titled my C# manifesto. My apologies if that reading offends you, but I have come to believe very strongly in well-organized source code. There's very little that frustrates me more than searching around giant code bases for hours because you can't find what you're looking for. Apparently, many people in this world disagree with me. Take what you want from it, but I felt to express myself somewhere - and why not do it on my website, where I can offend millions of people at the same time? |
|
|
|
|
In my copious amounts of spare time, I have been adding new features to my wonderful content editor, which I have illustrated several times in the past. Now I can add a new content-editor-related project to my repertoire: how to add an auto-complete suggestion box to a WPF TextBox. I recently spent some time adding this feature to my editor, and I realized it would be a good topic to write a project about. Mostly, I think the useful content in there revolves around the use of RoutedUICommands, which I have become quite an evangelist on. Commands make your life easy, and allow for much more flexibility than simple RoutedEvent handlers.
But anyways, I have added a link to the auto-complete project in the projects page. Or, you can find it here. |
|
|
|
|
| Although it's been a few weeks since I added the link, I recently added a technical blog to this site. The purpose of the technical blog is to blog about code related issues and things that I discover during my various project activities. It has a different 'flavor' than my regular blog, which is supposed to be more about my personal life. I'm trying to post things onto my tech blog as I'm running into them at work or at school. Actually, with some of the recent additions I've made to my content editor, these updates are extremely easy to do. Hopefully, I'll do a good job of updating it as time goes on. |
|
|
|
|
I finally got around to putting the next project up on the site. If you've managed to view this page on Internet Explorer 7 on Windows Vista (or an XP machine with the .NET 3.0 framework installed), then you may have seen the 'XAML Version' link on the left-hand side. While it's not perfect, I was able to successfully write an XSLT transformation that generates loose XAML pages that can render this website on compatible browsers (see the previous post). I decided to publish a project on how this works. The project contains a number of XAML and XSLT samples, along with a few PHP samples that demonstrate how to handle some miscellaneous issues with content-types and XSLT arguments. Hopefully it will be useful to somebody out there.
You can find the new project here. |
|
|
|
|
I took some time over the last few days to do some fun things with XAML, so I thought I would do something exciting and create a XAML version of this web site. It was fun to see how the page could be re-done using XAML instead of HTML; ultimately, I decided to leave the layout more or less similar to the current layout, for now. In the coming weeks I hope to put some more jazz into it; but for now, I'm content just knowing that this was possible. I am definitely going to spend some time writing a tutorial on how this works, because I imagine some people would be curious to know how to do it themselves.
Because the content in this website is stored in an XML file repository on the server, creating a new layout for the same content is pretty trivial. All you have to do is design the page and then write an XSLT transformation that will generate the target layout for you. In this case, there was one additional step which was to set the content type of the returned document into "application/xaml+xml". Without the content-type explicitly set in the response header of the HTTP packet, the web browser thinks that it's a plain old HTML document. In any case, that was the easy part. The time-consuming part was just figuring out how to write a XAML document that looked like the HTML version of the web page.
I'm very excited to see how Silverlite changes the internet. Personally, I think this will be extremely revolutionary and I hope to be involved with it as soon as it's released. While the XAML version of this website is cool, it would be far more entertaining if there was some AJAX and Javascript embedded in the page that allowed me to do event handlers, especially with the powerful data binding features of .NET 3.0.
In any case, the XAML version of this website can be found here. Note that to view this web page, you will either need to have the .NET 3.0 runtime installed on your machine, or you can be running on Windows Vista. |
|
|
|
|
| I got a little bored while sitting in class today and decided to add RSS support to the website. You should be able to browse to any page within this site and subscribe to a feed for that page, which I think is very, very cool. The fun thing about working with an XML content database is that all I had to do to add RSS support was write a new transformation that generated RSS XML from my content XML, and then link everything together by generating the link tag and the appropriate URLs. All and all it wasn't more than 30 minutes worth of work, which makes it all the more satisfying. Now you can sit back and get notified whenever I actually make a change the the content on this page. I have yet to test the feed with FireFox, but my guess is that it will work. |
|
|
|
|
| I know it seems as though I haven't touched the site in a while. There is some truth to that. I've recently moved, work has been busy, I just finished up some classes and started a new one, and there are a few new distractions in my apartment that are keeping me from working on the website. Recently, however, I have finally found the time to do some work on my content editor (you can see a screenshot of the initial version on the spell checker project). If you follow that link, you'll see that the application is a perfect candidate for a XAML makeover. Data binding makes a program like that ten times easier to write and maintain. After a few months of experimentation of procrastination, I have finally gotten around to rewriting that application in .NET 3.0 with XAML - and the results are pretty cool. For a screenshot of what the new UI looks like, complete with all sorts of fun animations and data bindings, check out this link. |
|
|
|
|
| I finally got around to uploading a downloading version of the spell checker project. You can find it here. Eventually, I'll get around to adding a sample for the MSMQ project, but probably not for at least a few weeks. |
|
|
|
|
It took a bit longer than I was hoping, but I finally managed to get the second project up onto the site. If you've ever done any MSMQ programming with rules and triggers, hopefully this article will help outline some ways to automate your installation process. I know personally that finding this information on the internet was difficult (it appears to be a relatively obscure topic), so be sure to let me know if it saves you any time.
You can check out the MSMQ Triggers and Rules Installer project here. |
|
|
|
|
At last, as promised, the Spell Checker project is online!
Yes, it did take me upwards of 2 months to get this three page article online. Sorry about that! As much as I wish I could make excuses, the truth is that I've been lazy. The last two months were obviously filled with holidays, which only leaves so much extra time for article-writing. But now, school is back in session and I am back to work.
Anyway, the point is that the article is that it's here, so why don't you go check it out? |
|
|
|
|
|