CodeBetter.Com
CodeBetter.Com
RSS 2.0 via Feedburner
           Do you Twitter? Follow us @CodeBetter

Steve Hebert's Development Blog

Steve's Blog - From .Net to dotMath and everything in between.

May 2004 - Posts

  • All .Math Code and Documentation now online...

    After a long, rainy weekend, I've managed to get all the code documentation along with usage scenarios and function references on the web. You can view the code documentation by downloading the library or source code at http://workspaces.gotdotnet.com/math and you can get the scenario and reference documentation at http://hebertsoft.com/dotMath.  All code documentation is XML based and the new version also includes standardization of exception messages on function implementations.  I pushed the parameter checking into the framework where it's available to internal as well as external function definitions - no need to create your own parameter checking and format your own error messages.

    Getting this online has been a learning experience.  It was nice taking this library online before I put up others - the scope is fairly simple even though the implementation is somewhat more complex than most. I will have to put together an article describing the process of making this code available - decisions made, lessons learned, etc..

    I think the next step that might be interesting would be throwing NUnit-based testing code online.  Anytime adjustments are made to the compiler, it's extremely useful to run through the full suite of tests.  I just wonder if this code might be beneficial to anyone who is looking to go the TDD route?  It might be a nice, open implementation to showcase a TDD setup. 

  • Nice TDD article - first in a series

    Steve Eichert has posted the first article in a series on his TDD experiences.  There's some nice material here on working with database applications. It's a good read, nice work Steve. I'm looking forward to the followup articles.

     

  • .Math is off and running!

    .Math is now available for download and use! 

    The source code is available at http://workspaces.gotdotnet.com/math.  You can even try out a working web page that uses the library at http://www.hebertsoft.com/dotMath/sample.  The demo allows for a maximum of 10 variables (an arbitrary number - the library's upper limit is memory dependent).  Go ahead and try it out and let me know what you think.  Try out an expression like:

    (sin(x) * cos(y)) / (z + 5)

    Pretty simple, you get the idea...

    I am busy working on code documentation, function descriptions (i.e. what's available in addition to sin, cos, etc.) and a history of the project and where I see it going.  I hope people find it useful and want to contribute. The more people we get testing this thing the better!

    In order to get this demo functionality, I moved my website from a Linux farm in Massachusetts to a .NET host in Los Angeles.  The web is a great place!  The rest of my website is not configured yet, but the sample is running.  I was waiting for the dns registration to process before releasing the code. I settled on GotDotNet when saw that Scott Watermasysk put the .Text project out there.   <correction>Dave Donaldson pointed out that .Text is no longer posted at gotdotnet.com, it is now hosted at vaultpub.sourcegear.com.  Thanks Dave.</correction>

  • Nice C# Reference URL

    I came across a nice C# reference page when I was trying to remember how to perform a conversion.  I knew how to do it in C++/MFC, but couldn't remember the C# syntax. This one gets added to my favorites.

    The page is titled “C# for MFC Programmers - Quick Equivalents Map“.  The page was apparently put together by Joseph Newcomer.

     

  • Digging into MSMQ again.

    I'm sitting in a meeting digging through details of connecting supply chain pieces.  Since we have a requirement for guaranteed message delivery without some sort of ACK, MSMQ fits in nicely here.

    MS has put together an MSMQ Best Practices document that is pretty handy - outlining some key areas to use and others to avoid.  This should be a fun infrastructure project given the fluidity of the situations.

  • dotMath Expression Compiler project opening on SourceForge

    The dotMath project now has a space on SourceForge at https://sourceforge.net/projects/dotmath/

    I applied for the space and now it is apparently ready to roll.  I have just placed a posting on the message board to get things started.  Next step is to finalize which license to use and put the code and assembly out there.

    My ideal situation is to use SourceForge for distribution and my own site for project control and communication - following the model the guys at icsharpcode.net  use.  My thinking is to get a .Text hosted blog and register a URL to point at it.  I think this simplifies the code distribution and error reporting and makes for a nice communication and simpler tool use.  Finding a site to do that is priority #2 right now. 

  • Interview of classic game developer Howard Scott Warshaw

    GameInformer magazine ran an interview of Howard Scott Shaw (creator of Yar's Revenge, Raiders of the Lost Ark and E.T.).  It's a fascinating article and I hope they post it on their site.

    I thought the best out-take from the article was “I always have the 80/20 theory of programmers. Eighty percent of programmers go into technology to avoid people. If these people were not programmers they would be accountants and actuaries.  The other 20 percent are artistic types who view computers as a vehicle for expression.  These are people that, if they weren't doing programming, would be musicians, painters or sculptors.”

    When this gets posted to the web, I'll place a link under articles to this one.  I think game development gives some of the best pictures of software development - where they're developing software that models a world instead of the other way around. 

  • dotMath project hosting

    I went out to register.com to grab the dotMath.net name, but someone in the Seattle area has registered it already.  I would need to find a site to host it, but I want to get a name down anyway. I'm a little disappointed because it wasn't taken a couple months ago. 

    I really like what the guys at ICSharpCode have done with their site - they make the SharpZipLib product I blogged about earlier.  It appears they use blogging server software to drive their site and I think it works very nicely for them.  I also notice they have their project on SourceForge.net.  I'm a little concerned with dropping the project on SourceForge, simply because they have so many projects it may get lost.  But perhaps thats a good reason for setting up another site that references it.

    I emailed them asking some input on creating their own site a couple days ago and again today - trying not to be too pesky but it looks like they are going about it the right way and hopefully I'll be able to pick their brains a bit.

     

     

  • Introducing dotMath...

    I've created a math compiler written entirely in C# called dotMath.  I'm thinking about releasing it under GPL, I'm in the process of seeing how to release it and the associated pro's and con's.  I'd love to find someone who has done or is doing this and blogging the experience. 

    The library is a two-pass compiler.  Once the compilation phase is complete, parsing is no longer needed to evaluate the expression.  The library offers roughly 100-fold speed improvement over parsing-based evaluators.

    The library can be used with variables and the API allows for full discovery/setting of the variables.  Here's sample code that uses the library:

    dotMath.CFuncCompiler oComp = new dotMath.CFuncCompiler( "(3*sin(x))/5");
    oComp.Compile();  // normally set try..catch to trap syntax/expression errors

    double dXValue = 10;
    double dYValue = 0;
    for( int i = 0; i < 100; i++)
    {
       oComp.SetValue("x", dXValue++ );
       dYvalue = oComp.Evaluate();

       // do something with y-value here
    }

    In addition,  users may create and register their own functions with the class thereby increasing the capabilities of the compiler without dealing with the parsing and compilation details.

    I'll keep blogging the experience of taking this public.... stay tuned!  :)

     

  • Improving .NET Speed and Scalability article now available

    I've spent a chunk of my weekend reading the Improving .NET Speed and Scalability article.  There's quite a bit of useful info here,  I originally read about at the MSDN .NET Framework Developer Center's RSS feed.  I saw this morning that Don Box decided he needed to spend a bunch of time with this article on his blog site.  I guess if Don is reading it, it might be worth considering...

     

     

  • HttpHandlers - giving credit where credit is due

    The first time I hit HttpHandlers, I really learned how to use them in Walther's Book - ASP.NET Unleashed.  I definitely consider this book a must-have for any ASP.NET developer...
  • SharpZipLib and HttpHandlers

    I've been working with the GPL licensed SharpZipLib on a home project and I love working with the library. I previously used a commercial zip tool in C++ and this thing is much nicer to work with.

    Similar to the last post where we're serving up a .png, we have another situation where we serve up an XML document that forces IE to host Excel to view the data.  Since we're launching a separate window, I can't dump the document directly from the aspx page - that's where a handler comes in.  Problem is that the document can be rather large - especially being stored as xml, but now I'm thinking I'll compress it using SharpZip and store it in the database and decompress it on the way out of the httphandler.

     

  • GDI+ and HTTPHandlers

    I came across a decent article in MSDN by Dino Esposito on using HTTPHandlers that I'm reconsidering for one part of our application. 

    In our app, I create a graphic depiction of products flowing through a plant using GDI+ and I apply an HTML Map overlay for linking and tooltips.  When I first created the implementation, my first thought was to place the image in the database and use a handler to provide it on request from the client page.  At that time, my concern was two-fold:  (1) how big would the average image get in production and (2) how would the storage of binary data affect our application performance.  I handled this problem by writing the graphic out to the file system on the server and linking to that picture on the <img> tag.  Now I'm thinking I want to pull this into the app and store the images in the database because the .png images are typically less than 100k.  I wonder if there are any good performance numbers or recommendations on how to physically implement this in SQL Server.  Is my concern even legitimate?

    It'll be nice to see the dynamic image control in ASP.NET 2, this is pretty simply stuff that should be relegated to the framework.

  • Test Driven Development Article - Applying to a model

    I've been playing around with TDD on our project and it works on some simplistic pieces, but I'm having a difficult time applying it beyond simple smoke tests due to our app. I came across a decent article in MSDN Magazine by Will Stott and James Newkirk last month, but I think the real world application is a little simplistic. I like the concept and the areas where I apply it are useful, but I'm struggling with some more complex situations.

    A large part of our application business objects produce output based on the existing state of the running plant.  What I submit on time(x) is very different than what is applied on time(y).  There is a big value in keeping a known state and testing from that point, however running a series of tests modify the state of that plant.  Therefore the test results aren't predictable due to the tests that ran before.  I'm really limited to doing smoke tests and testing the structure of the data than testing the data itself (i.e. using XSL to determine structural validity). 

    I'm curious if anyone has run into these situations or seen any articles dealing with this type of environment.  All the TDD articles assume, to some degree, a given knowable state that's easy to get back to over the course of testing. 

  • And here we go...

    Here goes the first post...  My name is Steve Hebert, the Lead Software Architect for Synchrono, Inc..  We provide software that drives plant operations in manufacturing planning and execution.  To really simplify it, the software plans the flow of production to produce items on-time.

    I've been making software since 1990 and I've worked in full time positions as well as contract positions. I am currently looking into publishing a math library for .net under GPL - called dotMath.  I'll be blogging that in the near future.

    The main reason I'm blogging is I've always found software architecture is done best when it's a collaborative effort.  I've been fortunate in my career to work with some very talented individuals - people that make you look at the problems in software from many different angles and consider every approach. 

    I hope to get feedback on the things I post and even on programming/architecture topics I don't post.  Bottom line - I'm looking forward to all that dialog! 

    Enough for now...
    -Steve

     

More Posts

Our Sponsors

Free Tech Publications