News and views on software development by Dart employees.
January 07, 2010
Mike Baldwin
Project 'Seven'
posted @ 01:42:47 PM by Mike Baldwin     (0 comments)

This is Dart’s internal name for a product re-design that was started in 2009 and will be completed in 2010. The goals of this project are as follows:

  1. Re-design each .NET product to expose the power of multi-threading in ways that are simple, elegant and powerful.
  2. Target the Compact Framework as a supported environment.
  3. Integrate SSL security as a core feature.
  4. Add Mono support.

As of this posting, “PowerTCP Telnet for .NET”, “PowerTCP Emulation for .NET” and “PowerSNMP for .NET” are released and the CF versions are being tested.

Background

Communications is essentially a “background” task that should not interfere with the user interface experience.

Under 16-bit Windows (yes, we have been around awhile!) this was accomplished using custom messages that allowed us to interleave communications with UI processing. With 32-bit Windows and the introduction of worker threads the job was made easier by executing synchronous code on a worker thread and informing a method on the UI thread when the job was done. Even so, it was up to Dart to decide what functionality should execute on a worker thread, which could limit our customer’s design.

With .NET 2.0, however, we are seeing more customers working directly on worker threads (ASP.NET, services, or scripting environments), and Microsoft even added a new BackgroundWorker component to help users manage background tasks more conveniently.

New Design

Consequently, Dart’s new design assumes our customer will be invoking methods while executing on a worker thread and provides support for marshaling data or state information back to the UI thread for display purposes. A simple “Start” method is provided that executes a method on a worker thread. Our implementation and sample applications have proven the validity of this new design pattern:

  1. Reduced design complexity: asynchronous versions of methods and corresponding completion events are no longer necessary and have been removed.
  2. Improved user design flexibility: user decides what synchronous methods are to be “batched” for synchronous execution on a worker thread.
  3. Improved efficiency: user decides what data or state information is to be marshaled to the UI thread (if any).

The following code snippit illustrates the new design:

    private void Form1_Load(object sender, EventArgs e)
    {
        // start the Worker method on a worker thread
        telnet1.Start(Worker, null);
    }

    void Worker(Telnet telnet, object notUsed)
    {
        // this executes on a worker thread, protecting the UI thread
        telnet.Connect("myServer");
        telnet.Login("username", "password", "$");
        telnet.Write(Encoding.Default.GetBytes("ls -l\r\n"));
        // marshal the listing back to the UI thread
        telnet.Marshal(telnet.Read(new buffer[10000]));
        telnet.Close();
    }

    private void telnet1_Data(object sender, DataEventArgs e)
    {
        // now on the UI thread, we can put the listing into the textBox
        textBox1.Text = e.Data.ToString();
    }

Positive customer feedback has confirmed the validity of this new approach for our product designs, and we are working diligently on our new products designs for 2010.

Share this post:     Del.icio.us     Digg     Technorati
September 02, 2009
Ken Drake
Dart Game Review: Steam (Basic Game)
posted @ 12:25:00 PM by Ken Drake     (0 comments)

Every so often we have a "Game Night" at Dart, where some of the employees will stay a few hours after work to play fun board and card games.  This is a review of Steam (the Basic Game).

Steam is a strategy board game for 3-5 players designed by Martin Wallace and published by Mayfair Games.  This may be the "heaviest" game we have played on a Dart game night.  There were three of us playing and it lasted several hours.

In Steam, players take on the roles of railroad executives, upgrading their locomotives and building track over hexagon-spaced terrain in order to deliver goods between cities.  The game employs what is often referred to as a "pick up and deliver" mechanic, where in-demand goods are delivered from one location to another in order to score points.  Each link of track used to deliver a good scores a point for its owner.  The key to the game is to build a widespread network so that goods are delivered over many links and therefore score many points.

Steam is part of a family of train games by designer Martin Wallace.  Other similar games include Volldampf, Age of Steam and Railroad Tycoon (with Glen Drover).  Steam compares favorably to these titles, especially for players new to the genre.  Play is streamlined in Steam, as it lacks the auctions in Age of Steam, and the open-ended action choices in Railroad Tycoon.  Instead, there are a set number of rounds of three distinct phases:  an action tile selection phase (providing some benefit for the round, such as the ability to build 4 tracks instead of 3), a build track/urbanize phase, and a deliver goods/upgrade locomotive phase.  Players can therefore concentrate on how to maximize their actions, rather than figuring out what actions to take.

I really enjoyed Steam.  Connecting two cities geographically a great distance apart, delivering goods over several-link chains, even just getting out of debt for the first time - all invoke a sense of rewarding accomplishment.  There is also great tension between your turns, as you hope the other players do not build track where you want to, or deliver goods that you were hoping to deliver. 

My fellow Dart employees also enjoyed the game. 

According to Jason, "It was pretty good; more of a strategy game than others we've played.  If you do not invest in a solid infrastructure in the beginning, you may jump out to an early lead, but you'll be out in the end.  It was definitely entertaining."

Ed says, "I liked the game.  It was a bit long, but it was easy to understand and I enjoyed playing it.  I also liked the fact that my hometown of Utica was on the board." 

I also liked that the map was largely from areas that I am from and am familiar with (though it is disappointing that Binghamton, my college town, is misspelled on the board as "Binghampton"!).

Overall, Steam gets high marks as a strategy game that can be played by hardcore games, as well as casual gamers who do not mind an occasional heavier game that will take a few hours to play.

Find out more about Steam at Boardgamegeek.com

 

Share this post:     Del.icio.us     Digg     Technorati
August 27, 2009
Jamie Powell
Customer Center? What's That?
posted @ 10:29:31 AM by Jamie Powell     (0 comments)

We are very excited to announce a great new resource for our customers!  Some are already familiar with the Customer Center and all its glory, but for those that may be reluctant to venture into the unknown, the following information may help to make this transition a bit less stressful and will make managing your products a little easier. Here’s what the Customer Center can do for you…

Activate Products:

Customers who have purchased a .NET product version 4.0 and greater, will use this tab to activate their license(s).  All other product versions can still be activated by visiting http://www.dart.com/register/.

Customers with an active subscription wishing to upgrade to version 4.0 or greater, will need to be issued a new Product License for that version. New Product Licenses may be retrieved by visiting the “My Products” tab in the Customer Center.

Customers wishing to activate any version prior to 4.0 do not need to acquire a new Product License.

My Products:
The “My Products” tab will provide valuable information regarding your products. You will be able to review the subscription status of each product, receive qualified updates, and manage all products owned by your company.

Clicking on any Product License number listed under the My Products tab will allow you to see the registration history of that particular product, the current subscription status, and whether or not an upgrade is available to you. Please remember that an active subscription is required to receive the most recent version available.

Managing your company products is also easy! Product License numbers are linked to the email account of either the original purchaser or the most recent registered user.  You may notice that not all of your company owned product are listed. To resolve this, simply add any number of valid email addresses to your account (See “Edit Profile”), and the products linked to those email addresses will appear in your “My Products” tab as soon as the email address is validated.

Edit Profile:

Under the “Edit Profile” tab you will be able to change your personal account information as well as link additional valid email addresses. Once an email address is added, a message will be automatically be sent to the requested address for verification. Once the link contained in the email is clicked, the email address will be confirmed in your account and you will be able to view product information associated with the new address.  You can check the status of any requested email address on the left hand side of the Edit Profile tab. It will provide a list of all email addresses added to the account and whether or not they are in a pending status. The pending status means your request has not yet been accepted from the email account holder.

I hope this article has provided some valuable information regarding the many benefits the Customer Center provides. Keep checking back for updates and new features!

Please contact sales@dart.com if you have any questions, concerns, or suggestions regarding the Customer Center.

Share this post:     Del.icio.us     Digg     Technorati
August 06, 2009
John Talarico
Should IE6 be killed?
posted @ 11:53:03 AM by John Talarico     (0 comments)

As recently reported by mainstream media outlets like CNN, there is a vocal and vigorous campaign to kill IE6.  At first, I pumped my fist and looked around for someone to high-five.  Having developed both intranet and extranet web applications for over a decade, one of the most frustrating and time-consuming aspects of my job is supporting cross-browser compatibility.  It used to be just a "simple" cross-browser problem.  But because of the differences in client script engines, DOMs, HTML rendering, and CSS behaviors, it has become much more complex.  Now I have to consider Firefox 3.0.x, Firefox 3.5.x, Safari, IE6, IE7 and IE8.  And that's just if I want to support the major players.  I'd absolutely love it if we could ignore everything except Firefox 3.5.x and IE8.  My job would be much simpler.  Right?  But if I'm honest with myself, I'd probably complain just as much about the differences between two browsers.

Then I start thinking about WHY people are still using IE6.  Perhaps I'm wrong, but maybe it just works for them.  There are many environments out there with several hundreds (or thousands) of machines that need to be monitored and managed.  Having configured these machines to function properly against stable intranet applications, there's no pressing need to upgrade.  From an IT management perspective, why should a functional infrastructure be destabilized so that the browser can render an external e-commerce site?  How about the individual (forgive the stereotype) grandmother who doesn't obsessively update her machine?  She just wants to enjoy browsing the web and interacting online.  Should she disrupt a comfortable setup so we web developers can add more features with less work? 

What happened to "the customer is always right"?  Look at the statistics.  According to CNN's article, 15% to 25% of all online users are still running IE6.  When was the last time anyone could afford to disregard or denigrate 25% of their customers?  I suspect that the organizations paying attention to "legacy" browser users will reap benefits, but each will need to decide if the added maintenance and development costs are justified.  And against my initial reaction to the push to kill IE6, I'm going to disagree.  Let it live as long as it can.  Just don't ask me to promote it.

Share this post:     Del.icio.us     Digg     Technorati
July 14, 2009
Jamie Powell
Newsletter for July 2009
posted @ 05:30:51 PM by Jamie Powell     (0 comments)

PowerTCP SSH and SFTP for .NET Released!

We are pleased to announce a new addition to the PowerTCP product line. PowerTCP SSH and SFTP for .NET fills the gap in the .NET Framework, providing developers with SSH-2 online session and file transfer capabilities in c# and VB.NET.

This powerful product is ideal for any distributed application that needs to communicate or transfer files to or from a UNIX server. Some key features of this new product include the ability to replace non-secure Telnet communication with SSH sessions, automate file transfers to and from any SFTP server using Windows scheduler and to upload data file to Unix servers, execute tasks to crunch the data, download and parse the results into a SQL database.

PowerTCP SSH and SFTP for .NET supports development on .NET Framework versions 1.1, 2.0 and 3.5 with all versions of Visual Studio.NET.

Product Updates

PowerTCP Telnet for .NET v4.1.1.0 Released! (2009-03-09)

PowerSNMP for .NET v4.1.0.1 Released! (2009-06-25)

The new updates bringing our current PowerTCP for .NET products to v4.x are not incremental improvements to the product, they are a ground-up redesign that leverages both Dart's extensive communications component experience as well as feedback from hundreds of customers. With PowerTCP 4, developers will get the benefits of:

  • Improved and Simplified Asynchronous Operations
  • Improved Support for Framework 2.0+ Features
  • Integrated Security

See Release History for additional details on this release of PowerTCP Telnet for .NET and PowerSNMP for .NET

Coming Soon!

The next PowerTCP for .NET product to receive a version 4 makeover will be PowerTCP Emulation for .NET scheduled to release in  the summer of 2009.

PowerWEB Zoom for ASP.NET will also be getting a "makeover" as we add frequently requested features.

(Send an email to sales@dart.com if you are interested in receiving updates on either of these products.)

Dart Consulting Services and Custom Development

Focus on what you do best: In today's world, software developers are routinely asked to produce solutions using unfamiliar technologies, with little time allowed for research. Dart Communications offers a highly skilled development staff with broad experience in Internet communications, security protocols, interface components, and web-based applications.

Leverage expert staff: Dart offers custom development services that give you access to programmers with years of experience to assist with writing and implementing your low level requirements. Your projects will benefit from decreased time-to-market, improved performance, and dependable quality.

More information can be found at http://www.dart.com/support_beyond.aspx.

Contact us at beyondsupport@dart.com to discuss your development needs.

PowerSNMP Free Manager - Free SNMP Client Application

A freeware, full featured SNMP Manager application built using PowerSNMP for .NET. Discover network hosts, browse MIB trees, and analyze network requests. Perfect for lightweight to moderate management tasks. Click here for details.

 

 

Share this post:     Del.icio.us     Digg     Technorati