Thoughts from Dan Miser RSS 2.0
 Thursday, November 30, 2006
After countless messages from Steve Trefethen and my new co-worker Geoff Lane harassing me about updating my web site, I finally started to do it last night. Here's what I did:

  • I've been running Google Analytics on my web site for a while now. I was finally able to add it to the blog portion of my web site. I edited PageTemplate.ascx in the appropriate skins folder of .Text to add the scripting code.
  • I added Google AdSense throughout the site. I don't imagine I'll retire off the income, but hopefully it can help defer hosting costs.
  • Tons of small improvements and bug fixes to get a more common look and feel, including moving to ASP pages instead of static HTML pages. I imagine I'll template the main look and feel soon.
  • I updated content throughout the site to reflect things that I've been doing the past couple of years.

I came across a bunch of other things that I'll be doing to the main web site over the next couple of weeks, too (e.g. upgrade to support at least 800x600; upgrade to dasBlog so I can finally get off of .Text 0.95 and get features like searching, etc. The big problem is finding a way to convert my existing blog without losing comments or URLs; upgrade the look and feel.). I guess web sites can have code decay the same way that real code can. :-)

Thursday, November 30, 2006 10:06:00 AM (Central Standard Time, UTC-06:00)  #    Comments [2] -

 Sunday, November 19, 2006
Here's an annoying fact: Dell ships a severely limited version of Roxio tools that can't even burn an ISO image to CD. I didn't really appreciate being pushed forcefully towards a $69.99 upgrade of a tool that issues an AV every time I try to register, so I went looking for a trustworthy alternative.

I chose the XP Support Tools option at the bottom of the page, and it works like a champ. Simply type the following to burn the ISO:


cdburn e: MyDisc.iso

Another option would be to mount the ISO via MS Virtual CD Control Panel.

Sunday, November 19, 2006 11:14:00 AM (Central Standard Time, UTC-06:00)  #    Comments [3] -

 Tuesday, November 14, 2006
I've been doing a lot more .NET lately, and while doing that, I've been evaluating a lot of different architectures and patterns. During my career, I've done mainly Delphi and Java, with some side jaunts into less travelled paths (e.g. MUMPS, Intermec, etc.). One thing that I have definitely learned is that the more exposure one has to other environments and languages, the better that person becomes overall. It provides a way to map new ideas into existing languages, and vice-versa.

A while back, I came across Martin Fowler's, et al. term POJO, which itself is a continuation of other "Plain Old" terms in computer science. The reason it became a mainstream acronym is that there were many frameworks in Java that were adding complexity to objects, and Fowler wanted to get developers to at least question whether architectures with simple objects were viable under certain conditions.

Therefore, my contribution to the computer science lexicon is PONO, or Plain Old (dot)Net Object. As frameworks continue to emerge on the .NET side, the problems that caused POJO to gain ground in the Java camp will become more prevalent in the .NET camp.

Tuesday, November 14, 2006 11:40:00 AM (Central Standard Time, UTC-06:00)  #    Comments [3] -
Delphi
 Monday, October 23, 2006
David Riggs, the Editor of the Delphi Informant, has given me permission to publish my old articles and editorials. He was even kind enough to provide the type-set copies as Word documents. We'll see how good the conversion from Word to HTML works.

The articles can be found - strangely enough - on the Articles page of my web site. For some reason, we don't have the original TIniSource article, but that just gives you an excuse to purchase the Delphi Informant CD archive. :-)

Obviously, these are older articles, and some of the information may be dated, but hopefully, there will still be something worthwhile to take away. Let me know if you find anything glaring that needs correction.

Monday, October 23, 2006 3:27:00 PM (Central Standard Time, UTC-06:00)  #    Comments [5] -
Delphi
 Friday, October 13, 2006
I've developed a series of sayings that have evolved over time. I thought I'd share them here. I think it's safe to just post them without explanation, as they are meant to promote thought.

  1. Everything is easy when all you're doing is drawing circles and squares.
  2. It takes 3 times to perfect something.
  3. Anybody can look good on paper.
  4. When playing safe, be sure it's safe.
  5. If you don't know the shot, don't take the shot.
  6. Good enough to work isn't "Good Enough".
  7. If you want to act like a primadona, produce like a primadona.
  8. You can't stand on priniciple when you have none.
  9. Being busy is no excuse for a short-cut.
  10. A bug is no reason to lose sight of logic.
  11. Nothing in life is a failure if you learn from it.
  12. Think Less. Know More.
  13. The last thing you want to give me more than a big taste of success is a small taste of failure.
  14. Greatness comes from action, not those that critique it.
  15. Souce code is the source of all truth.
  16. Never empty all your chambers at the first thing that goes bump in the dark.
Friday, October 13, 2006 8:51:00 AM (Central Standard Time, UTC-06:00)  #    Comments [3] -

 Friday, September 29, 2006
After reading Joel's article on Airset, I thought I'd give it a try. Normally, I am not a fan of web applications. However, this web application is incredibly well done. The GUI is rather impressive, with wizards, dialogs, menus, drop downs, and the like. It still feels nothing like the responsiveness of a desktop application, but the features are so good that I may have to overlook this.

This online calendar application has almost all of the features that I need. Things like: group calendars, integration with Outlook, SMS notifications, good permissions, and search. It also has features that I like that weren't necessarily part of my requirements, like blog content, shared contacts, lists, and links, and tight integration with most cell phone providers to provide an application that runs on most cell phones.

I looked at Office Calendar by Lookout Software, and I liked the concept very much, but the price tag seemed a bit steep. All in all, I am quite pleased with the features of Airset, and the price of free is hard to beat.

Friday, September 29, 2006 12:17:00 PM (Central Standard Time, UTC-06:00)  #    Comments [0] -

 Monday, September 25, 2006
I've spent a lot of time here at my current place advocating refactoring. The concept of "code smell" is one that continually comes up. My esteemed colleague, Rich Werning, just came up with "Rich's ultimate code smell test". One simple question: if the project you are working on was to be released as open source, and thus available to the scrutiny and review of hundreds or thousands of other developers, would you want your name and professional repuation associated with the source code? If not, your code stinks.

100% agreed, and brilliantly stated.

Monday, September 25, 2006 2:21:00 PM (Central Standard Time, UTC-06:00)  #    Comments [0] -

 Thursday, September 14, 2006
As a follow up from my post yesterday, I have some work-arounds to get me past the problem. I still don't have the ultimate answer for why Math.Log(0.0) throws an exception only when called from COM interop, but I can at least move forward again.

I started out by changing the actual code in Lucene to simply avoid the Math.Log(0.0) statement. However, I started to worry about forking the code. I don't want that kind of maintenance headache as new versions of Lucene continue to come out. I was able to work things out so that I could descend a couple of classes, override some methods, and plug these into my API layer, and everything worked fine.

The one problem left was the arithmetic overflow that I got later on in the Lucene code. I was talking with Chris Bensen, and he recalled running into something similar before and sent this link to MSDN on _controlfp documentation. I implemented the following code in .NET in the constructor of my API layer, and the overflow error went away, but of course, I end up getting NaN results due to the new FPU masking behavior. I'll have to test thoroughly to make sure that this doesn't impact calculations further down the line.


    [DllImport("msvcrt.dll")] private static extern int _controlfp(int IN_New, int IN_Mask); // this imports the call 
    private const int _MCW_EM = 0x0008001f; 
    private const int _EM_INVALID = 0x00000010; 
    
    public LuceneAPI()
    {
      // Add this code to squelch arithmetic overflow/underflow exceptions spawned from the FPU.
      // See comments in the FixedDefaultSimilarity class for more information.
      _controlfp(_MCW_EM, _EM_INVALID);
    }

I still would like to find out the technical details for why I need to do any of this, but at least I have things running.

Thursday, September 14, 2006 9:58:00 AM (Central Standard Time, UTC-06:00)  #    Comments [2] -
.NET
Navigation
Archive
<November 2006>
SunMonTueWedThuFriSat
2930311234
567891011
12131415161718
19202122232425
262728293012
3456789
About the author/Disclaimer

Disclaimer
The opinions expressed herein are my own personal opinions and do not represent my employer's view in any way.

© Copyright 2008
Dan Miser
Sign In
Statistics
Total Posts: 306
This Year: 21
This Month: 0
This Week: 0
Comments: 604
All Content © 2008, Dan Miser
DasBlog theme 'Business' created by Christoph De Baene (delarou)