<rss version="2.0"
xmlns:media="http://search.yahoo.com/mrss/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">
    <channel>
        <title>DMC, Inc.</title> 
        <link>http://www.dmcinfo.com</link> 
        <description>RSS feeds for DMC, Inc.</description> 
        <ttl>60</ttl> <item>
    <comments>http://www.dmcinfo.com/Blog/articleType/ArticleView/articleId/4936/Employee-Spotlight-Ryan-Taylor.aspx#Comments</comments> 
    <slash:comments>0</slash:comments> 
    <wfw:commentRss>http://www.dmcinfo.com/DesktopModules/DnnForge%20-%20NewsArticles/RssComments.aspx?TabID=61&amp;ModuleID=471&amp;ArticleID=4936</wfw:commentRss> 
    <trackback:ping>http://www.dmcinfo.com/DesktopModules/DnnForge%20-%20NewsArticles/Tracking/Trackback.aspx?ArticleID=4936&amp;PortalID=0&amp;TabID=61</trackback:ping> 
    <title>Employee Spotlight: Ryan Taylor</title> 
    <link>http://www.dmcinfo.com/Blog/articleType/ArticleView/articleId/4936/Employee-Spotlight-Ryan-Taylor.aspx</link> 
    <description>Ryan Taylor, Systems Engineer
What do you like best about working at DMC?

I like that I come in and do interesting work that is always different. Working at DMC gives you a diverse experience base to draw from. 

The lunch conversations at DMC are always fun and they never end up where they start from. Robots are usually involved and many of the Quote Board comments originate at the lunch table.

Do you have any engineering hobbies?

Right now, I’m working on an automatic bartending device. It will have gravity-fed reservoirs controlled by solenoids and a touch input LCD screen to select a drink type. I’m only at the software level right now, but eventually it will be able to dispense recipes with just a few ingredients.

What cocktails are you looking forward to having automatically made?

Gin &amp; tonic or anything with tequila.

You held your DMC welcome party at Medieval Times. Can you tell us about your real-life medieval adventure?

The trip to Medieval Times was motivated by watching the movie The Cable Guy over and over growing up. Medieval Times is featured in a fight scene, but I didn’t realize it was a real place until after high school. When I found out there was one just north of Chicago, it was a no-brainer to hold my welcome party there.

During the spring break of my junior year of high school, I had no travel plans, and there wasn’t much to do in my hometown (Lafayette, IN) when all of my friends were in tropical destinations. So, my brother, a friend, and I decided to build a trebuchet, which is a medieval siege weapon, in my yard.&#160;It took us about three or four days to build the trebuchet using no power tools and about $100 of lumber. When we were done, it stood about 8 feet tall and was surprisingly effective. We could launch a tennis ball about 50 feet with some luck. The original sling (which holds the projectile) was made out of an old tennis racket bag. I decided to go full tilt into the medieval theme and started working on a sling made of chain mail. I spent&#160;an afternoon researching chain mail patterns, and I sourced steel rings from someone named “The Ring Lord” in Canada… which proves that there is something for everyone on the internet. It took me about eight hours to link the 6”x6” chain mail together, but it made a noticeable improvement to the firing capability of the treb.

At the end of that school year, I held a party at my house. Naturally, we started setting things on fire and launching them. It was pretty entertaining until the trebuchet itself caught fire. The remains of the trebuchet can still be found in my parents’ yard and I’d say it was one of my more successful engineering projects to-date.
The trebuchet before and after adding the counterweight.&#160;
Ryan at 17, about to launch the treb.&#160;A firing pin/trigger was added later.


What else do you like to do for fun?

I’m really into music, and though you wouldn’t guess it by looking at me, I’m a huge fan of metal. I first started listening to it jokingly, but eventually I realized there is a lot going on technically that people don’t initially hear. By far the best example of this is the progressive metal genre, but you’ll find something interesting no matter where you look. I’m pretty convinced that anyone with an open mind and enough time can learn to enjoy metal. Actually, despite the stereotypes of what a metalhead is, a lot of us are actually huge nerds. The&#160;fan base is very diverse...the right-brain, scientific crowd feeds off of the technical aspects of the music and the creative types can appreciate how intricate and unique some of the sounds and structures are.

Progressive rock has been key in the development of my musical appreciation because it expanded my idea of what the standard 4-piece rock band could do, technically and creatively. Pink Floyd and Devin Townsend are two of my all-time favorite musical acts. I’m also interested in other genres like indie rock, trance, house, swing, big band, and funk and fusion genres.

I really enjoy starting and participating in email threads that share or discuss music. I like to think of myself as a kind of “personal music consultant.” There are a lot of great music podcasts out there (NPR’s All Song’s Considered is one of my favorites) but I’ve been working to create my own for this purpose. I have a few pieces of episodes already made that I’m tweaking and improving; one is a beginner’s guide to metal. Another showcases only Australian bands.

Would you ever play in a band?

Absolutely. If anyone is looking for a bass player of moderate skill, let me know. If I started a band, I think I would enjoy being in a post-rock or post-metal band the most.

As a music consultant, can you recommend three songs for the Employee Spotlight readers?

1. &quot;Mystical Potato Head Groove Thing&quot; - Joe Satriani&#160;Satch has some of the quickest hands in the business.
2. &quot;The Sixth&#160;Extinction&quot; - Ayreon&#160;One of the best tracks from the Arjen Lucassen rock opera 01011001.
3. &quot;How to be a Werewolf&quot; - Mogwai&#160;One of my favorite post-rock groups. This song is perfect driving music.

What are your favorite places in Chicago?

Well, I spend a lot of time at the gym or running on the Lake Front Trail around Belmont Harbor. I recently took a swing dancing class as well and was better than I expected! Even though I’m a sports agnostic, I enjoy stopping by Will’s Northwoods Inn which is a Wisconsin sports&#160;bar. The Wisconsin theme of taxidermy on the walls reminds me of the house I grew up in.

I also love photography and have fun finding weird places in the city to take pictures. Recently, I took a photo of an in-uniform cop relaxing behind a hospital and got in a little trouble with hospital security. FYI it is legal to take photos from public sidewalks without the use of any special equipment. Any interested parties can find my photos here.
What’s your favorite programming language?

I’ve had a little experience with iOS (Objective-C) and Android (Java) in the past, but recently encountered C++ for the first time. Really digging into an object-oriented language has been an enlightening experience, and it’s been fun discovering the powerful things it can do.&#160;
&#160;</description>
    <media:content url="http://www.dmcinfo.com/Portals/0/RyanTaylorSpotlight.jpg" />
    <dc:creator>Jessica Mlinaric</dc:creator> 
    <pubDate>Thu, 10 May 2012 19:00:00 GMT</pubDate> 
    <guid isPermaLink="false">f1397696-738c-4295-afcd-943feb885714:4936</guid> 
    
</item>
<item>
    <comments>http://www.dmcinfo.com/Blog/articleType/ArticleView/articleId/4939/Geek-Challenge-Sombrero-Stumper.aspx#Comments</comments> 
    <slash:comments>0</slash:comments> 
    <wfw:commentRss>http://www.dmcinfo.com/DesktopModules/DnnForge%20-%20NewsArticles/RssComments.aspx?TabID=61&amp;ModuleID=471&amp;ArticleID=4939</wfw:commentRss> 
    <trackback:ping>http://www.dmcinfo.com/DesktopModules/DnnForge%20-%20NewsArticles/Tracking/Trackback.aspx?ArticleID=4939&amp;PortalID=0&amp;TabID=61</trackback:ping> 
    <title>Geek Challenge: Sombrero Stumper</title> 
    <link>http://www.dmcinfo.com/Blog/articleType/ArticleView/articleId/4939/Geek-Challenge-Sombrero-Stumper.aspx</link> 
    <description>This month’s Geek Challenge is in honor of Cinco de Mayo.&#160;The traditional Mexican sombrero has an elegant symmetrical shape, and is fun to express mathematically.&#160;&#160;

&#160;
Your challenge is to match&#160;three sombrero graphs with their corresponding functions in cylindrical coordinates. &#160;Each graph is plotted from 0&lt;r&lt;2.&#160;
Graph A
&#160;
Graph B
&#160;
Graph C

&#160;
Is the correct paring?&#160;
A: 1→A 2→C 3→B
B: 1→C 2→B 3→A
C: 1→A 2→B 3→C
D: 1→B 2→A 3→C
&#160;

Extra Credit: &#160;Create your own Sombrero Function. &#160;Send a photo of its inspiration.&#160;Best matching sombrero wins!
&#160;
Note to my cousin Curtis: &#160;Drawing a sombrero in CAD is cheating.&#160;
&#160;


Submit your responses to geekchallenge@dmcinfo.com.</description>
    <media:content url="http://www.dmcinfo.com/Portals/0/sombrero5.jpg" />
    <dc:creator>Ken Brey</dc:creator> 
    <pubDate>Thu, 10 May 2012 15:00:00 GMT</pubDate> 
    <guid isPermaLink="false">f1397696-738c-4295-afcd-943feb885714:4939</guid> 
    
</item>
<item>
    <comments>http://www.dmcinfo.com/Blog/articleType/ArticleView/articleId/4937/Geek-Challenge-Results-March-Madness-Part-II.aspx#Comments</comments> 
    <slash:comments>0</slash:comments> 
    <wfw:commentRss>http://www.dmcinfo.com/DesktopModules/DnnForge%20-%20NewsArticles/RssComments.aspx?TabID=61&amp;ModuleID=471&amp;ArticleID=4937</wfw:commentRss> 
    <trackback:ping>http://www.dmcinfo.com/DesktopModules/DnnForge%20-%20NewsArticles/Tracking/Trackback.aspx?ArticleID=4937&amp;PortalID=0&amp;TabID=61</trackback:ping> 
    <title>Geek Challenge Results: March Madness Part II</title> 
    <link>http://www.dmcinfo.com/Blog/articleType/ArticleView/articleId/4937/Geek-Challenge-Results-March-Madness-Part-II.aspx</link> 
    <description>A big question that lingered after looking at the results of the geek challenge was how much luck played into the outcome against how strong any specific entry was over any other.&#160; Most entries relied heavily on seeding and used other factors to tweak the effect of the overall seeding. Only Dan Freve chose a different approach, weighting strength of schedule heavily and actually using a negative coefficient on the tournament seed. His formula is reasonable, somewhat mimicking the RPI rating used by the NCAA’s selection committee.

First, we looked at how much randomness gave optimum results. To normalize the analysis, we looked at it as a ratio of the randomness coefficient K divided by the maximum coefficient for rating.

There was a wide variation in K values, ranging from the low of Ken (0.35 times his max coefficient) to a high of Kevin (3 times his max coefficient).&#160; We found a near optimum K given the actual tournament results and random number sets for each entry by simple brute force, subject to using a resolution of 1/20th the maximum coefficient value for that entry.&#160; The optimal K seemed to lie roughly around the maximum coefficient for most entries. Bruce was noticeable exception, as his random numbers did not favor a Kentucky team that his coefficients favored and that won the tournament. Choosing a low randomness in his case allowed his entry to minimize the impact of his unlucky random numbers. More on just how unlucky Bruce’s brackets were is discussed below.
&#160;

    
        
            &#160;
            Actual
            Score
            Maximum
            Score
            Actual/
            Maximum
            Best&#160;K
            Actual K
            Best K/
            Max (W,X,Y,Z)
        
        
            Dean
            2348
            2417
            97%
            1.10
            1.50
            1.10
        
        
            Dan
            2259
            2262
            100%
            7.25
            7.00
            1.45
        
        
            Ken
            2081
            2149
            97%
            0.60
            0.35
            0.60
        
        
            David
            1938
            2017
            96%
            3.40
            8.00
            0.85
        
        
            Kevin
            1900
            2232
            85%
            4.00
            12.00
            1.00
        
        
            Alex
            1895
            2305
            82%
            3.00
            6.00
            1.00
        
        
            Bruce
            1685
            2070
            81%
            0.25
            8.00
            0.05
        
    

&#160;
Alex, Bruce, and Kevin did themselves damage by choosing high K’s, while the rest of the field obtained better than 95% of their points with their chosen randomness factor. In David’s case, choosing a relatively high K had little impact on his score.

Each entry was given a unique set of 630 random numbers to pick the 63 games in each of 10 brackets. So it is possible that our winner, Dean, either had great skill in choosing coefficients, or was lucky in the random number draw, or some combination of the two. In order to figure out how much of Dean’s victory was luck and how much was choosing a good entry, we ran the random numbers to find the results for 10 different outcomes using this year’s brackets to estimate the mean score and standard deviation for each entry. Using those statistics, we determined which entries were relatively lucky, and what the win probability for each entry was. We then re-ran the analysis using last year’s bracket to see how robust the results are year to year.&#160;

    
        
            Name
            2012 
            Actual Score
            2012 
            Mean
            2012
            Std. Dev.
            2012
            Deviation
            2012
            Probability
            Win %
            2011
            Probability
            Win %
        
        
            Dean Schmitz
            2348
            2256
            205
            0.4
            50%
            25%
        
        
            Bruce Polson
            1685
            2171
            128
            -3.8
            20%
            30%
        
        
            Alex Krejcie
            1895
            2167
            112
            -2.4
            8%
            14%
        
        
            Dan Freve
            2259
            2115
            155
            &#160;0.9
            14%
            0%
        
        
            David Gosse
            1938
            2072
            130
            -1.0
            7%
            24%
        
        
            Ken Brey
            2081
            2061
            &#160;76
            &#160;0.3
            1%
            2%
        
        
            Kevin Ferrigno
            1900
            1935
            &#160;83
            -0.4
            0%
            5%
        
    

The mean is an indication of how good an entry is for the specific teams and outcome of this year’s tournament. The deviation is how much luck someone had, with positive numbers being good luck and negative numbers bad luck. So Dan had the most luck, but it wasn’t enough to overcome Dean’s high mean and modest luck.

Dean’s entry dominated this year’s tournament and he had an estimated 50% chance of winning. He would have been in the mix last year as well. Bruce’s entry also stood a fair chance to win in both years. David and Alex stood a better chance last year, while Dan’s entry was much better for this year’s tournament. Ken and Kevin not only stood at the bottom of the heap in terms of average, but with low standard deviations, our brackets had little chance of making a significant impact. 

Bruce and Alex led the unlucky crowd. I was surprised by just how unlucky Bruce was, as in a normal distribution only 1 in 14000 entries would be worse than Bruce’s. I had to double check his entry and that our score distribution was in fact close to normal over the range of data we produced. We ran the other 6 entries on Bruce’s random numbers and it produced similarly bad outcomes (-2.7 to -4.8 deviations) for every entry except Kevin’s—where it performed really well. (+1.0 deviation) (Note: Had I just used Bruce’s set of random numbers for every entry, I would’ve won by a landslide.)&#160; The conclusion reached is that while our distribution is close to normal within about 2 standard deviations of the mean, larger outliers can occur more often than would be expected. This is because in some situations, the results obtained can be very dependent on one or two random numbers if they affect the bracket that results in your maximum score. In Bruce’s case, his random numbers were very unfavorable to Kentucky. Even though he rated them highly, they did not wind up winning a single one of his brackets--costing him 320 points on his best bracket and total score.

Finally, we asked the question of what were the best values possible. To answer this question, we used the same methodology above and ran the 10 entries over a broad range of parameters to narrow in on what appeared to be an optimal region. Our initial run varied all parameters from -16 to +16 using increments of powers of 2. We found that the strategy of weighting heavily on seed and tweaking the other parameters was in fact a good strategy. We set this value to 8 and varied the other parameters around 0 to try and find a near to optimal solution.

Based on the results we refined the optimum parameters down to:
W = 0 to 1
&#160;X = -3 to -2
&#160;Y = 2 to 3
&#160;Z = 8
&#160;K = 6 to 8
The combinations that produced the top mean scores are shown below. As the results show, we were able to make improvements on Dean’s entry. Since these results are very dependent on the specific outcome of this year’s tournament, there is no guarantee that they will be the best choices for next year’s tournament.

    
        
            W
            X
            Y
            Z
            K
            Mean
            Std.
            Dev.
        
        
            0
            -2
            2
            8
            6
            2385
            114
        
        
            0
            -3
            3
            8
            6
            2383
            145
        
        
            0
            -3
            2
            8
            6
            2382
            157
        
        
            0
            -2
            3
            8
            6
            2381
            142
        
    

&#160;
Thanks to everyone who entered. We’re already thinking ahead to next year, where you may be asked to pick the winning formula of geography, mascot, and school colors to predict the tournament’s winner.
&#160;</description>
    <media:content url="http://www.dmcinfo.com/Portals/0/basketball.jpg" />
    <dc:creator>Kevin Ferrigno</dc:creator> 
    <pubDate>Thu, 10 May 2012 00:00:00 GMT</pubDate> 
    <guid isPermaLink="false">f1397696-738c-4295-afcd-943feb885714:4937</guid> 
    
</item>
<item>
    <comments>http://www.dmcinfo.com/Blog/articleType/ArticleView/articleId/4933/DMCs-Brassband-Debut.aspx#Comments</comments> 
    <slash:comments>0</slash:comments> 
    <wfw:commentRss>http://www.dmcinfo.com/DesktopModules/DnnForge%20-%20NewsArticles/RssComments.aspx?TabID=61&amp;ModuleID=471&amp;ArticleID=4933</wfw:commentRss> 
    <trackback:ping>http://www.dmcinfo.com/DesktopModules/DnnForge%20-%20NewsArticles/Tracking/Trackback.aspx?ArticleID=4933&amp;PortalID=0&amp;TabID=61</trackback:ping> 
    <title>DMC's Brassband Debut</title> 
    <link>http://www.dmcinfo.com/Blog/articleType/ArticleView/articleId/4933/DMCs-Brassband-Debut.aspx</link> 
    <description>If you attended the recent Tres de Mayo party at&#160;DMC's office, you hopefully walked out with tunes like “Basin Street Blues” or “Muskrat Ramble” stuck in your head.&#160; As one of the founding members of the DMC brassband, I’m proud to announce that our first “gig” was a hit! We played a set of six songs during the peak of the party and filled the southern half of the office with swingin’ traditional Dixieland and brassband music. 

Credit for founding the DMC band goes to our tuba player, Ashley Enderlin.&#160; Shortly after I started at DMC, she found out that I play the trombone and was excited about the prospect of starting a band.&#160; We had bounced the idea around a few times, but hadn’t taken any steps to actually do it.&#160; Leading up to DMC’s Oktoberfest party last year, Ashley and our Technical Director, Ken Brey, had planned on playing some polka duets together on tuba.&#160; Unfortunately, Ken had to be onsite with a client at the last minute, so I agreed to play the part on trombone.&#160; We only played three short songs, but the reaction was very positive.&#160; Frank encouraged us to play at any and all DMC functions in the future and gave us his blessing to use DMC’s space on the first floor of our building as a rehearsal space.&#160; Well, since we had a potentially limitless supply of gigs lined up in the future, we figured we had to make a real band. 

Polka music was fun for the Oktoberfest theme, but there are only so many times you can hear “Beer Barrel Polka” in your life.&#160; Ashley practically eats and breathes funky music from New Orleans brassbands like “Rebirth Brassband,” “Dirty Dozen Brassband,” and “Youngblood Brassband,” so we decided that we wanted our band to strive for a sound similar to these great bands. Now it was time to find some great musicians. 

Ashley asked around the office, and discovered that Deborah’s husband, Sean Brennan, plays the drums, and that he and his high school friend, Tom Oleszczuk, were interested in playing the snare and bass drums with our band.&#160; Great,&#160;we had&#160;rhythm and bass, but we needed to fill out the horns section.&#160; Taking a page out of Frank’s book, we turned to Craigslist.&#160; We eventually found saxophone extraordinaire Cyrille Laurens and we have been lucky that he is such a great fit for our group.&#160; After more ads on Craigslist, we found two trumpets – Kimberly Mershon and Chris Piskule – and we finally had a full band!&#160; Now, all we need is a name… Please make suggestions in the comments!

If you missed our performance at the Tres de Mayo party, you can see a video of one of our songs here:




At our weekly rehearsals we practice old time arrangements of traditional Dixieland music and Ashley has arranged a couple of songs based on her favorite recordings.&#160; Busy work and travel schedules sometimes make it tough for the whole band to assemble, but we try our best to groove together.&#160; The band is still looking to grow, so if you play an instrument typically found in a Dixieland or brassband, and you’re interested in sitting in with us at our office sometime, just let us know!&#160; We’re particularly looking for banjo/guitar, clarinet, or another trumpet/trombone.&#160; 

Finally, as a shameless self-promotion, if you liked what you heard at Tres de Mayo and you’re interested in having a brassband rock out at your next event, drop me or Ashley a line. We’re cheap, as Frank can attest.



</description>
    <media:content url="http://www.dmcinfo.com/Portals/0/DMCBrassband.jpg" />
    <dc:creator>Eric West</dc:creator> 
    <pubDate>Tue, 08 May 2012 19:00:00 GMT</pubDate> 
    <guid isPermaLink="false">f1397696-738c-4295-afcd-943feb885714:4933</guid> 
    
</item>
<item>
    <comments>http://www.dmcinfo.com/Blog/articleType/ArticleView/articleId/4811/Office-Autonomous-Robot-Part-2.aspx#Comments</comments> 
    <slash:comments>2</slash:comments> 
    <wfw:commentRss>http://www.dmcinfo.com/DesktopModules/DnnForge%20-%20NewsArticles/RssComments.aspx?TabID=61&amp;ModuleID=471&amp;ArticleID=4811</wfw:commentRss> 
    <trackback:ping>http://www.dmcinfo.com/DesktopModules/DnnForge%20-%20NewsArticles/Tracking/Trackback.aspx?ArticleID=4811&amp;PortalID=0&amp;TabID=61</trackback:ping> 
    <title>Office Autonomous Robot: Part 2</title> 
    <link>http://www.dmcinfo.com/Blog/articleType/ArticleView/articleId/4811/Office-Autonomous-Robot-Part-2.aspx</link> 
    <description>To continue the ongoing plan to conquer the world via our autonomous robot, several enhancements were made to the robotic platform and a new path finding algorithm was tested.
Hardware Changes
After deploying the robot around the office, it became clear that the Bluetooth wireless module used for communication would not provide sufficient range and coverage to give the robot full mobility about DMC’s office.&#160; With this in mind a new wireless communication method was sought.&#160; After researching several possibilities DMC decided on the use of a&#160;Wi-Fi enabled USB hub
Wireless USB Hub
The IO Gear Wireless 4-Port USB Sharing Station is a USB hub that attaches to your local Wireless-G network and allows any computer on the network to connect to one of the USB devices on the hub as if it were directly connected to the computer.&#160; By using this device, the host computer is now able to send commands to the IRobot Create using the standard USB to Serial adapter from anywhere in the office that has&#160;Wi-Fi coverage.&#160; Likewise, the robot&#160;is now be able to venture anywhere in the office without losing connection to its host.
Additionally, since the hub supports up to 4 USB devices it allows future expansion of the platform to accommodate additional hardware (did I hear someone say USB nerf launcher?)
Power Brick
In order to incorporate the hub onto the IRobot Create it was necessary to acquire a 12 V regulated power source.&#160; Since the IRobot only has unregulated battery voltage (Up to 14.5V) and low current 5V outputs it was necessary to assemble a power block to run the USB station.&#160; It was also decided to incorporate a 5V power supply for the wireless camera into the same brick.
A 5V 3A regulator was purchased&#160;from Pololu along with a 12V regulator and project box from Battery Space.&#160; Once assembled, the power brick provides outputs to both the USB hub and camera as well as a removable power connection to the Create.
&#160;
(The power brick has an input plug for unregulated battery voltage and two output cables with 5V and 12V)
Automated Programs
Along with the hardware changes, a new automated path recognition program was tested on the robot.&#160; This is an addition to the basic line following algorithm originally implemented.&#160; Both provide separate ways for the robot to navigate around the office as be detailed below.
Line Following
The first automated program implemented on DMC’s robot was a simple line following algorithm.&#160; This algorithm uses several image algorithms in succession to isolate a dark line in the robot's view and command the robot to follow it.&#160; 
Grayscale
This algorithm simply converts the color image to grayscale in order to more easily filter the image and isolate the dark line.
Adaptive Threshold
After converting the image to grayscale the adaptive threshold module converts all the pixels to either black or white depending on their contrast with respect to their neighboring pixels.&#160; This helps isolate the black line from the rest of the image even if there are shadows or uneven lighting conditions.
Erode
Once the high contrast parts of the image are isolated, an erode function is performed which essentially reduces the size of the black parts of the image.&#160; This helps to reduce any noise, small high contrast parts of the image, and any small connections between large sections of black.
Blob Filter
Once we have obtained our isolated blobs we filter them out to find the one corresponding to our line.&#160; This filtering removes blobs that are smaller than a size of 1000, and favors blobs that are closer to the center horizontally and the bottom of the image.
Once we have obtained our line through the above algorithms we can control our robot based on the location of the line in our camera image.&#160; If the center of the line is to the left or right we can turn our robot and continue moving further.&#160; If we no longer can see a line we will turn the robot in the circle until it finds the line again.&#160; The resulting behavior is that the robot will follow a line until it reaches the end and then turn around 180 degrees and start following the line again.
&#160;
(The red dot in the image on the right indicates the center weight of the line which is the target of the robot)
Obstacle Detection
In addition to line following, an attempt was made at obstacle detection and automated path detection.&#160; This was done by applying image algorithms in an attempt to identify obstacles in the robot's path and command the robot to travel towards the farthest away location with no obstacles.&#160; The obstacle detection used a combination of several algorithms to identify obstacles.&#160; It then applied a mask on the image blocking any paths behind the identified obstacles resulting in a location farthest from the robot to approach.
Below is an example image from the obstacle detection along with the computed end location.&#160; 

This method proved to be unsuccessful in its current configuration due to the similarity between the floors and walls of the office.&#160; Further attempts at automated path finding are currently being tested.</description>
    <media:content url="http://www.dmcinfo.com/Portals/0/RobotUpgraded.jpg" />
    <dc:creator>Alex Krejcie</dc:creator> 
    <pubDate>Mon, 07 May 2012 15:00:00 GMT</pubDate> 
    <guid isPermaLink="false">f1397696-738c-4295-afcd-943feb885714:4811</guid> 
    
</item>
<item>
    <comments>http://www.dmcinfo.com/Blog/articleType/ArticleView/articleId/4327/Automatically-Create-a-Site-Using-SharePoint-Designer-Workflow.aspx#Comments</comments> 
    <slash:comments>1</slash:comments> 
    <wfw:commentRss>http://www.dmcinfo.com/DesktopModules/DnnForge%20-%20NewsArticles/RssComments.aspx?TabID=61&amp;ModuleID=471&amp;ArticleID=4327</wfw:commentRss> 
    <trackback:ping>http://www.dmcinfo.com/DesktopModules/DnnForge%20-%20NewsArticles/Tracking/Trackback.aspx?ArticleID=4327&amp;PortalID=0&amp;TabID=61</trackback:ping> 
    <title>Automatically Create a Site Using SharePoint Designer Workflow</title> 
    <link>http://www.dmcinfo.com/Blog/articleType/ArticleView/articleId/4327/Automatically-Create-a-Site-Using-SharePoint-Designer-Workflow.aspx</link> 
    <description>In the event that a site needs to be created when an item is added to a list, users are able to manually create the site from the out-of-the-box templates or even a customized template if one has been created.&#160; To avoid users having to perform these manual steps and chance them creating the site incorrectly, the custom &quot;Create a Site&quot; action from ILoveSharePoint which can be downloaded free is the perfect tool.

This action, along with other custom actions that are included in the package, can be used for both SharePoint 2010 and SharePoint 2007 and has been implemented successfully for a number of different scenarios including:

    Project Sites when a PO is received
    Customer Sites for a new lead
    Proposal Sites to manage the sales documents when a quote&#160; is due

Implementing the workflow can be a bit tricky and the inputs depend on which version of SharePoint you are running.&#160; However, once the workflow is complete, the time saved by your users and your time&#160;saved fielding questions are well worthwhile.
General Tips:

    Be sure that the URL does not include any spaces or special characters
    The workflow takes a few minutes to run so don’t assume that it didn’t work until you have given it at least 5 minutes
    It is possible to automatically create nested sites however careful planning for the taxonomy should be taken

SharePoint 2007 Tricks:

&#160;

    The &quot;create a site&quot; action does not actually say create a site so don’t worry if you have the right one
    The location in which the site is to be created (URL) already has the path of the current site therefore your input should only be the remainder of the desired URL.&#160; For example, if your action runs on a list that is at https://www.sharepoint.dmcinfo.com/Customers and you want your site to be located at https://www.sharepoint.dmcinfo.com/Customers/Projects/[newsite] your input is only Projects/[newsite]
    The template is the name of the template .stp so your input would be customtemplate.stp
    Inherit Permissions is backwards, if you want to inherit from the parent select NO, if you don’t want to, select Yes
    There is no way to inherit the top navigation bar from the parent

SharePoint 2010 Tricks:


*Click to enlarge code
The location in which the site is to be created (URL) should be the full path so your input should be https://www.sharepoint.dmcinfo.com/Customers/Projects/[newsite

    The template is the ID of the template and not the name.&#160; Accessing the ID is not very straight forward but here is one way that works if you are using SharePoint Server 2010

1. Navigate to the Page Layouts and Site Templates Page in Site Settings
2. Right-click on the page and click View Source

3. Hold down CTRL and F key on the keyboard
4. Type in the name of the template and click search
5.&#160;Click next until you can see a list of all the site templates and find the latest version of the Template that has been created
6. Select the ID number in between the two &quot; and copy this information
]</description>
    <media:content url="http://www.dmcinfo.com/Portals/0/SPDesignerWkflw03.png" />
    <dc:creator>Anjali Bharadwa</dc:creator> 
    <pubDate>Sun, 06 May 2012 15:00:00 GMT</pubDate> 
    <guid isPermaLink="false">f1397696-738c-4295-afcd-943feb885714:4327</guid> 
    
</item>
<item>
    <comments>http://www.dmcinfo.com/Blog/articleType/ArticleView/articleId/4935/DMC-Quote-Board--May-2012.aspx#Comments</comments> 
    <slash:comments>0</slash:comments> 
    <wfw:commentRss>http://www.dmcinfo.com/DesktopModules/DnnForge%20-%20NewsArticles/RssComments.aspx?TabID=61&amp;ModuleID=471&amp;ArticleID=4935</wfw:commentRss> 
    <trackback:ping>http://www.dmcinfo.com/DesktopModules/DnnForge%20-%20NewsArticles/Tracking/Trackback.aspx?ArticleID=4935&amp;PortalID=0&amp;TabID=61</trackback:ping> 
    <title>DMC Quote Board - May 2012</title> 
    <link>http://www.dmcinfo.com/Blog/articleType/ArticleView/articleId/4935/DMC-Quote-Board--May-2012.aspx</link> 
    <description>Those who visit DMC&#160;may notice our ever-changing &quot;Quote Board.&quot; This is where we document the most infamous utterances of the moment.
</description>
    <media:content url="" />
    <dc:creator>Jessica Mlinaric</dc:creator> 
    <pubDate>Wed, 02 May 2012 15:00:00 GMT</pubDate> 
    <guid isPermaLink="false">f1397696-738c-4295-afcd-943feb885714:4935</guid> 
    
</item>
<item>
    <comments>http://www.dmcinfo.com/Blog/articleType/ArticleView/articleId/4450/DMC-Presents-at-CSIAs-2012-Executive-Conference.aspx#Comments</comments> 
    <slash:comments>0</slash:comments> 
    <wfw:commentRss>http://www.dmcinfo.com/DesktopModules/DnnForge%20-%20NewsArticles/RssComments.aspx?TabID=61&amp;ModuleID=471&amp;ArticleID=4450</wfw:commentRss> 
    <trackback:ping>http://www.dmcinfo.com/DesktopModules/DnnForge%20-%20NewsArticles/Tracking/Trackback.aspx?ArticleID=4450&amp;PortalID=0&amp;TabID=61</trackback:ping> 
    <title>DMC Presents at CSIA's 2012 Executive Conference</title> 
    <link>http://www.dmcinfo.com/Blog/articleType/ArticleView/articleId/4450/DMC-Presents-at-CSIAs-2012-Executive-Conference.aspx</link> 
    <description>DMC's Director of Consulting Services, Rick Rietz, led an educational session&#160;on April 27 at the Control Systems Integrators Association (CSIA) Executive Conference. &quot;Capture Success&quot;&#160;was the theme of the 2012 CSIA&#160;Conference, held from April 25-28 in Scottsdale, AZ. Rick&#160;led a session entitled &quot;Take Control of your Projects with SharePoint Dashboards.&quot;
A review of this presentation was featured by Control Engineering. To view it visit the Control Engineering website or the DMC Press Room.
About the CSIA
The Control System Integrators Association (CSIA) is in its second decade of helping better system integrators become better business people. Members gain the power of the association’s broader presence and its insights into the best business and project management practices for the automation and IT domains. CSIA is committed to the development of the business capabilities of control system integration companies and their implementation of best practices in order to provide a healthy, low-risk channel for the application of automation technology to their industrial clients.
About the Presenter
Rick Rietz is Director of Consulting Services at DMC, Inc. He has over 18 years of management and technology consulting experience. Rick began his consulting career at Accenture, which laid the foundation for success in leading high-profile business and technology consulting engagements for many Fortune 500 clients, including Sears Holdings, Dollar General, AT&amp;T, Trans Union, and Bank of America. 

Since 2006, Rick has focused exclusively on delivering Microsoft Solutions for a wide-variety of small, medium, and large enterprise clients, including many CSIA members. He has led several industry-focused SharePoint events, including workshops for members of the Tooling and Manufacturing Association (TMA), Manufacturers’ Agents National Association (MANA), Hand Tools Institute (HTI), and the Alliance for Illinois Manufacturing (AIM).
&#160;
Rick holds a B.S. in Business with a concentration in Computer Information Systems from Indiana University – Bloomington. He also earned his Project Management Professional (PMP) certification from the Project Management Institute (PMI) in 2006 and is an active participant in the Chicagoland PMI chapter. Rick is a member of the Microsoft Partner Research Panel, whose purpose is to evolve and improve the Microsoft Partner Network and Microsoft's business products.</description>
    <media:content url="http://www.dmcinfo.com/Portals/0/CSIA.jpg" />
    <dc:creator>Jessica Mlinaric</dc:creator> 
    <pubDate>Thu, 26 Apr 2012 15:00:00 GMT</pubDate> 
    <guid isPermaLink="false">f1397696-738c-4295-afcd-943feb885714:4450</guid> 
    
</item>
<item>
    <comments>http://www.dmcinfo.com/Blog/articleType/ArticleView/articleId/4329/DMC-Invites-You-to-a-Tres-de-Mayo-Party-on-May-3rd.aspx#Comments</comments> 
    <slash:comments>1</slash:comments> 
    <wfw:commentRss>http://www.dmcinfo.com/DesktopModules/DnnForge%20-%20NewsArticles/RssComments.aspx?TabID=61&amp;ModuleID=471&amp;ArticleID=4329</wfw:commentRss> 
    <trackback:ping>http://www.dmcinfo.com/DesktopModules/DnnForge%20-%20NewsArticles/Tracking/Trackback.aspx?ArticleID=4329&amp;PortalID=0&amp;TabID=61</trackback:ping> 
    <title>DMC Invites You to a Tres de Mayo Party on May 3rd</title> 
    <link>http://www.dmcinfo.com/Blog/articleType/ArticleView/articleId/4329/DMC-Invites-You-to-a-Tres-de-Mayo-Party-on-May-3rd.aspx</link> 
    <description>What are you doing on May 3rd? DMC is hosting a&#160;Tres de Mayo party&#160;and we&#160;hope you are able to join us!
Tres de Mayo Party at DMC
Thursday, May 3, 2012
3:33pm - ???

2222 N. Elston Ave, Suite 200
Chicago, IL 60614
[Driving Directions]
Stop by anytime throughout the evening for food, beer, and fun. There will be plenty of convenient parking available. Feel free to bring significant or insignificant others along (husbands, wives, girlfriends, old college roommates, etc.).
RSVP using the following quick links:
RSVP Yes, RSVP No, RSVP Maybe
or contact Jessica Mlinaric at 312.255.8757 or jessica.mlinaric@dmcinfo.com.</description>
    <media:content url="http://www.dmcinfo.com/Portals/0/May3Date.jpg" />
    <dc:creator>Jessica Mlinaric</dc:creator> 
    <pubDate>Tue, 24 Apr 2012 19:20:00 GMT</pubDate> 
    <guid isPermaLink="false">f1397696-738c-4295-afcd-943feb885714:4329</guid> 
    
</item>
<item>
    <comments>http://www.dmcinfo.com/Blog/articleType/ArticleView/articleId/4328/Programming-Madness--Diving-into-Round-2.aspx#Comments</comments> 
    <slash:comments>1</slash:comments> 
    <wfw:commentRss>http://www.dmcinfo.com/DesktopModules/DnnForge%20-%20NewsArticles/RssComments.aspx?TabID=61&amp;ModuleID=471&amp;ArticleID=4328</wfw:commentRss> 
    <trackback:ping>http://www.dmcinfo.com/DesktopModules/DnnForge%20-%20NewsArticles/Tracking/Trackback.aspx?ArticleID=4328&amp;PortalID=0&amp;TabID=61</trackback:ping> 
    <title>Programming Madness - Diving into Round 2</title> 
    <link>http://www.dmcinfo.com/Blog/articleType/ArticleView/articleId/4328/Programming-Madness--Diving-into-Round-2.aspx</link> 
    <description>First off, I would like to start out this post by apologizing for using significantly more than my allotted month of time for this tournament.&#160;You might have noticed I subtly dropped the “March” piece from the title, but let’s be honest, intense, compiler-versus-compiler competition is entertaining no matter what time of year it is.&#160;I could probably find a way to tie this in with the Stanley Cup playoffs, but there is no way I’m writing up 7 game series for each of the remaining matchups.&#160;Nonetheless, we’ve learned a lot about each of our competitors, and I hope that you have found a team you can root for, even if your favorite didn’t make it to round 2.
Our first round 2 matchup features the odds on favorite C# taking on scrappy newcomer Ruby On Rails.&#160;This is a classic matchup of a solid all-around language in C# versus the highly specialized language of RoR.&#160;C# shows up in countless desktop applications, embedded and mobile devices on Windows CE, websites running ASP.Net or Silverlight, 3D games written in Microsoft XNA, and countless other areas (I’m not touching Windows Phone quite yet though.)&#160;In contrast, Rails is strictly a web development tool, which means that it is really great at creating cool sites quickly, but also means that it isn’t going to help you when you’re trying to make anything that lives outside of a browser.&#160;I like to look at languages like Rails as little booster shots to the arm of application development, meaning that they introduce new ideas and help enforce good architectures.&#160;C# itself was once the new kid on the block, but it is a true testament to its solid foundation to see how prevalent, poignant, and beloved C# has become 11 years later. &#160;I would like to thank Rails for adding to the conversation, but unfortunately for RoR, C# is clearly the more complete language.
Matchup 2, between C and python is another example of how diverse different&#160;language choices can be.&#160;Good-ole’ tried-and-true C is probably one of the most basic ancestors for many of the languages on this list.&#160;In most circumstances it will be darn near impossible to beat well written C code for efficiency or speed, especially when talking about the higher level languages left in this competition.&#160;That said however, as a developer, I think that most days I would gladly trade code execution speed for code development time, which is where python comes into play.&#160;You see, to write really good code that actually takes advantage of C’s efficiency can take significantly longer, especially when you realize that you don’t have object-oriented design, garbage collection, or many of the other tools that modern programmers rely on today.&#160;If I had to sum up python in 1 sentence, it would be that it helps you painlessly create readable code.&#160;Seeing as python is able to stay diverse enough to avoid becoming pigeon-holed like a Ruby On Rails, I’m making the selfish choice and (because Dan Aukes is my role-model and namesake) python wins in an upset.
I think that is about all the time I can spare today to compare and contrast, but be sure to catch up on old episodes if you’ve missed any and stay tuned for more to come…
&lt;&#160;Return to Round 1
</description>
    <media:content url="http://www.dmcinfo.com/Portals/0/nerd-dork-fight-glasses-463.jpg" />
    <dc:creator>Danny Budzinski</dc:creator> 
    <pubDate>Tue, 24 Apr 2012 19:17:00 GMT</pubDate> 
    <guid isPermaLink="false">f1397696-738c-4295-afcd-943feb885714:4328</guid> 
    
</item>
<item>
    <comments>http://www.dmcinfo.com/Blog/articleType/ArticleView/articleId/3978/Geek-Challenge-Results-March-Madness-Part-I.aspx#Comments</comments> 
    <slash:comments>1</slash:comments> 
    <wfw:commentRss>http://www.dmcinfo.com/DesktopModules/DnnForge%20-%20NewsArticles/RssComments.aspx?TabID=61&amp;ModuleID=471&amp;ArticleID=3978</wfw:commentRss> 
    <trackback:ping>http://www.dmcinfo.com/DesktopModules/DnnForge%20-%20NewsArticles/Tracking/Trackback.aspx?ArticleID=3978&amp;PortalID=0&amp;TabID=61</trackback:ping> 
    <title>Geek Challenge Results: March Madness Part I</title> 
    <link>http://www.dmcinfo.com/Blog/articleType/ArticleView/articleId/3978/Geek-Challenge-Results-March-Madness-Part-I.aspx</link> 
    <description>Congratulations to Dean Schmitz, who earned victory in the March Madness Geek Challenge thanks to Kentucky’s win over Kansas in the final. He used his superior average bracket score to best Dan Freve, who turned in the tournament's highest individual bracket.
Six of our seven entrants centered their choices primarily around tournament seed, while DMC employee Dan Freve chose to highlight a combination of Win-Loss percentage and strength of schedule. Both methods proved effective as Dan, Dean, and Alex Krejcie were all still in contention heading into the last weekend of the tournament. It came down to the championship game, and had Kansas prevailed, Alex would have catapulted to the top of the standings and been the winner. The final standings:

    
        
            &#160;
            W
            X
            Y
            Z
            K
            Current 
            Best
            Current 
            Average
            Total
        
        
            Dean Schmitz
            0.2
            0.1
            0.3
            1
            1.5
            1360
            988
            2348
        
        
            Dan Freve
            3
            5
            0.5
            -1
            7
            1370
            889
            2259
        
        
            Ken Brey
            -0.1
            -0.1
            0.2
            1
            0.35
            1230
            851
            2081
        
        
            David Gosse
            1
            2
            0.2
            4
            8
            1120
            818
            1938
        
        
            Kevin Ferrigno
            2
            -1
            0
            4
            12
            1200
            700
            1900
        
        
            Alex Krejcie
            0.5
            1
            0.5
            3
            6
            1120
            775
            1895
        
        
            Bruce Polson
            1
            1
            1
            5
            8
            950
            735
            1685
        
    

&#160;
One interesting note, about 35% of ESPN.com brackets picked Kentucky as the overall winner, while 17 of the 70 brackets (24%) created for the Geek Challenge picked Kentucky. It is no surprise that in a contest that encouraged some randomness to the results, that we picked the overall favorite less than the public at large. Six of seven entrants had Kentucky to win at least one of their 10 brackets. And the&#160;best 3 brackets would have finished somewhere in the top 90-95% of the over 6 million ESPN.com entries. This resulted in our brackets significantly underperforming the field as a whole, since picking the overall winner is so important to obtaining a high scoring bracket.
Picking higher seeds this year, including picking Kentucky to win as the overall number 1 seed, resulted in bracket score of 1200. Brackets over 1200 finished in the top 20%, and of the 70 brackets created for the Geek Challenge, 8 of them (11%) scored 1200 or better.
Stay tuned for Part II&#160;of the results where we will look at how much performance in the contest was based on skill vs. luck.
Please submit your&#160;comments to: geekchallenge@dmcinfo.com&#160;</description>
    <media:content url="http://www.dmcinfo.com/Portals/0/march-madness.gif" />
    <dc:creator>Kevin Ferrigno</dc:creator> 
    <pubDate>Wed, 11 Apr 2012 22:10:00 GMT</pubDate> 
    <guid isPermaLink="false">f1397696-738c-4295-afcd-943feb885714:3978</guid> 
    
</item>
<item>
    <comments>http://www.dmcinfo.com/Blog/articleType/ArticleView/articleId/3976/Second-Annual-DMC-Ski-Trip.aspx#Comments</comments> 
    <slash:comments>1</slash:comments> 
    <wfw:commentRss>http://www.dmcinfo.com/DesktopModules/DnnForge%20-%20NewsArticles/RssComments.aspx?TabID=61&amp;ModuleID=471&amp;ArticleID=3976</wfw:commentRss> 
    <trackback:ping>http://www.dmcinfo.com/DesktopModules/DnnForge%20-%20NewsArticles/Tracking/Trackback.aspx?ArticleID=3976&amp;PortalID=0&amp;TabID=61</trackback:ping> 
    <title>Second Annual DMC Ski Trip</title> 
    <link>http://www.dmcinfo.com/Blog/articleType/ArticleView/articleId/3976/Second-Annual-DMC-Ski-Trip.aspx</link> 
    <description>After a great time on last year's DMC ski trip to Breckenridge, nine DMC&#160;employees and friends decided to continue the tradition. Last month, we&#160;headed west to hit the slopes in Vail, CO.
Enjoy the photos below and live vicariously through our ski trip limericks!


&#160;
Leftovers –or- Pound Some Fruit
Bananas, eggs, granola and cheese
Two&#160;whole carts we needed to seize
Don’t be mistaken
There was 4 lbs of bacon
Next time eat before shopping, pretty please
Bad Things on the Mountain
Heavy snow, freezing winds, oh good lord
Fifteen feet is all we could afford
No need to curse
Things could always be worse
At lease I’m not dragging a snowboard
Over/Under –or- Vacation with DMC
All boarded and comfy in our seats
On the intercom the captain then speaks
Faced with a delay
In Denver we might stay
Suddenly wished we’d filled out our timesheets
&#160;</description>
    <media:content url="http://www.dmcinfo.com/Portals/0/DMCSkiTrip2012_02.jpg" />
    <dc:creator>Ashley Enderlin</dc:creator> 
    <pubDate>Wed, 11 Apr 2012 15:51:00 GMT</pubDate> 
    <guid isPermaLink="false">f1397696-738c-4295-afcd-943feb885714:3976</guid> 
    
</item>
<item>
    <comments>http://www.dmcinfo.com/Blog/articleType/ArticleView/articleId/3977/DMC-Quote-Board--April-2012.aspx#Comments</comments> 
    <slash:comments>0</slash:comments> 
    <wfw:commentRss>http://www.dmcinfo.com/DesktopModules/DnnForge%20-%20NewsArticles/RssComments.aspx?TabID=61&amp;ModuleID=471&amp;ArticleID=3977</wfw:commentRss> 
    <trackback:ping>http://www.dmcinfo.com/DesktopModules/DnnForge%20-%20NewsArticles/Tracking/Trackback.aspx?ArticleID=3977&amp;PortalID=0&amp;TabID=61</trackback:ping> 
    <title>DMC Quote Board - April 2012</title> 
    <link>http://www.dmcinfo.com/Blog/articleType/ArticleView/articleId/3977/DMC-Quote-Board--April-2012.aspx</link> 
    <description>Those who visit DMC may notice our ever-changing &quot;Quote Board.&quot; This is where we document the most infamous utterances of the moment.
</description>
    <media:content url="" />
    <dc:creator>Jessica Mlinaric</dc:creator> 
    <pubDate>Tue, 10 Apr 2012 19:01:00 GMT</pubDate> 
    <guid isPermaLink="false">f1397696-738c-4295-afcd-943feb885714:3977</guid> 
    
</item>
<item>
    <comments>http://www.dmcinfo.com/Blog/articleType/ArticleView/articleId/3629/Shamrock-Shuffle-2012.aspx#Comments</comments> 
    <slash:comments>1</slash:comments> 
    <wfw:commentRss>http://www.dmcinfo.com/DesktopModules/DnnForge%20-%20NewsArticles/RssComments.aspx?TabID=61&amp;ModuleID=471&amp;ArticleID=3629</wfw:commentRss> 
    <trackback:ping>http://www.dmcinfo.com/DesktopModules/DnnForge%20-%20NewsArticles/Tracking/Trackback.aspx?ArticleID=3629&amp;PortalID=0&amp;TabID=61</trackback:ping> 
    <title>Shamrock Shuffle 2012</title> 
    <link>http://www.dmcinfo.com/Blog/articleType/ArticleView/articleId/3629/Shamrock-Shuffle-2012.aspx</link> 
    <description>On March 25, 2012, for the 7th year in a row, DMC&#160;competed in the Shamrock Shuffle, an 8K (4.98 miles) race through downtown Chicago.
It was a great day for the race and we had more than respectable results.

Of special note is race newcomer Dan Lawler who looks like he might be able to give Sully a run for his money.
Check out posts from some of our previous races here:

    Hustle up the Hancock 2011
    Shamrock Shuffle 2011
    Chase Corporate Challenge 2011
    Hustle up the Hancock 2010
    Shamrock Shuffle 2010
    Bastille Day 2010
    Shamrock Shuffle 2009
    Go Go Green 2009

Race times:&#160;

    
        
            Name
            Sex
            Chip Time
            Overall
            SexPl
            DivPl
        
        
            Jonathan Sullivan
            &#160;M
            33:02:00
            805
            711
            89
        
        
            Daniel Lawler
            &#160;M
            &#160;33:28:00
            927&#160;
            814&#160;
            99
        
        
            Jody Koplo
            &#160;M
            &#160;33:58:00
            1072
            943
            270
        
        
            Alex Krejcie
            &#160;M
            &#160;35:43:00
            1722&#160;
            1490
            413
        
        
            Jesse Batsche
            &#160;M
            &#160;37:03:00
            2440&#160;
            2057
            553
        
        
            Cesar Pena
            &#160;M
            &#160;38:44:00
            3664&#160;
            2933
            493
        
        
            Robert Lindemann
            &#160;M
            &#160;39:32:00
            4361&#160;
            3403
            580
        
        
            Sam Weber
            &#160;M
            &#160;39:40:00
            4485
            3483&#160;
            294
        
        
            Eric West
            &#160;M
            &#160;40:04:00
            4860
            3742
            310
        
        
            Frank Riordan
            &#160;M
            
            &#160;40:30:00
            
            5288
            4043
            449
        
        
            Gary Michalek
            &#160;M
            &#160;40:30:00
            5275
            4034&#160;
            143
        
        
            Daniel Budzinski
            &#160;M
            &#160;40:42:00
            5495
            4190&#160;
            1028
        
        
            Tim Jager
            &#160;M
            &#160;41:17:00
            6118
            4566
            1081
        
        
            Ryan Taylor
            &#160;M
            &#160;41:19:00
            6157
            588
            363
        
        
            Kristine Shea
            &#160;F
            &#160;41:56:00
            6865
            857
            607
        
        
            Nicholas Shea
            &#160;M
            &#160;41:57:00
            6882
            5015
            1175
        
        
            Amanda Sinclair
            &#160;F
            44:57:00
            10969
            3771
            861
        
        
            Jessica Mlinaric
            &#160;F
            &#160;45:17:00
            11438
            4005
            1249
        
        
            James Condon
            &#160;M
            &#160;47:10:00
            14298
            8728
            665
        
        
            Mark Locascio
            &#160;M
            &#160;48:34:00
            16520
            9639
            2208
        
        
            Emily Oakley
            &#160;F
            &#160;53:19:00
            23252
            11302
            1415
        
    

&#160;</description>
    <media:content url="http://www.dmcinfo.com/Portals/0/ShamrockShuffle2012.jpg" />
    <dc:creator>Frank Riordan</dc:creator> 
    <pubDate>Mon, 09 Apr 2012 22:09:00 GMT</pubDate> 
    <guid isPermaLink="false">f1397696-738c-4295-afcd-943feb885714:3629</guid> 
    
</item>
<item>
    <comments>http://www.dmcinfo.com/Blog/articleType/ArticleView/articleId/3404/DMC-Achieves-Microsoft-Partner-Gold-Status-in-Software-Development-and-Portals-and-Collaboration.aspx#Comments</comments> 
    <slash:comments>0</slash:comments> 
    <wfw:commentRss>http://www.dmcinfo.com/DesktopModules/DnnForge%20-%20NewsArticles/RssComments.aspx?TabID=61&amp;ModuleID=471&amp;ArticleID=3404</wfw:commentRss> 
    <trackback:ping>http://www.dmcinfo.com/DesktopModules/DnnForge%20-%20NewsArticles/Tracking/Trackback.aspx?ArticleID=3404&amp;PortalID=0&amp;TabID=61</trackback:ping> 
    <title>DMC Achieves Microsoft Partner Gold Status in Software Development and Portals and Collaboration</title> 
    <link>http://www.dmcinfo.com/Blog/articleType/ArticleView/articleId/3404/DMC-Achieves-Microsoft-Partner-Gold-Status-in-Software-Development-and-Portals-and-Collaboration.aspx</link> 
    <description>DMC is proud to announce its continued achievement of Gold Partner status within the Microsoft Partner Network. In obtaining this highest level of competency for both Software Development and SharePoint Portals and Collaboration DMC enters its eighth consecutive year of Gold Partnership with Microsoft.

Gold Partner status&#160;distinguishes DMC&#160;among the elite 1% of more than 64,000 Microsoft partners worldwide. To earn a Microsoft&#160;gold competency, partners must successfully demonstrate expertise through rigorous exams, culminating in Microsoft certifications. Microsoft requires customer references for successful implementation and customer satisfaction, ensuring the highest quality of services.
“The Microsoft Gold Software Development and SharePoint Portals and Collaboration competencies showcase our expertise in and commitment to today’s technology market and demonstrate our deep knowledge of Microsoft and its products,” says DMC&#160;Director of Consulting Services, Rick Rietz. “We plan to accelerate our customers’ success by serving as technology advisors for their business demands.”

“By achieving a gold competency, partners have demonstrated the highest, most consistent capability and commitment to the latest Microsoft technology,” said Jon Roskill, corporate Vice President, Worldwide Partner Group at Microsoft Corp. “These partners have a deep expertise that puts them in the top&#160;1% of our partner ecosystem, and their proficiency will help customers drive innovative solutions on the latest Microsoft technology.”&#160;
Achieving the Gold status in&#160;the Software Development and SharePoint Portals and Collaboration competencies are another way of highlighting DMC's level of dedication to success and technical expertise.</description>
    <media:content url="http://www.dmcinfo.com/Portals/0/MicrosoftGoldPartner2012.gif" />
    <dc:creator>Jessica Mlinaric</dc:creator> 
    <pubDate>Fri, 06 Apr 2012 15:00:00 GMT</pubDate> 
    <guid isPermaLink="false">f1397696-738c-4295-afcd-943feb885714:3404</guid> 
    
</item>
<item>
    <comments>http://www.dmcinfo.com/Blog/articleType/ArticleView/articleId/3631/Upgrading-SharePoint-from-MOSS-2007-to-Standard-2010.aspx#Comments</comments> 
    <slash:comments>0</slash:comments> 
    <wfw:commentRss>http://www.dmcinfo.com/DesktopModules/DnnForge%20-%20NewsArticles/RssComments.aspx?TabID=61&amp;ModuleID=471&amp;ArticleID=3631</wfw:commentRss> 
    <trackback:ping>http://www.dmcinfo.com/DesktopModules/DnnForge%20-%20NewsArticles/Tracking/Trackback.aspx?ArticleID=3631&amp;PortalID=0&amp;TabID=61</trackback:ping> 
    <title>Upgrading SharePoint from MOSS 2007 to Standard 2010</title> 
    <link>http://www.dmcinfo.com/Blog/articleType/ArticleView/articleId/3631/Upgrading-SharePoint-from-MOSS-2007-to-Standard-2010.aspx</link> 
    <description>A client of our Consulting Services team recently decided to take the plunge and upgrade their SharePoint farm from Microsoft Office SharePoint Services 2007 (a.k.a. MOSS 2007) to SharePoint 2010 Standard Edition. They also decided to add a separate SQL server to their farm, which up until then had been a single-server farm. This wrinkle presented both opportunities and challenges for our upgrade strategy. I'll describe that strategy in this blog post.
SharePoint offers two broad strategies for upgrading from 2007 to 2010: in-place and database attach. An in-place upgrade is probably what most people think of as an upgrade: the farm is temporarily brought down and upgraded in its current location. This process can be launched from Central Administration, and once the upgrade begins it is not possible to revert to the original instance.
Database attach upgrades can be used to upgrade content databases without bringing the original farm down, and are reversible in that a failed database attach upgrade can simply be discarded while the original farm stays intact. However to perform this upgrade without bringing down the original farm you must install a separate 2010 farm on another server. This new farm is used to perform the content database upgrade on a copy of the content databases of the original farm. The database attach upgrade strategy has one major shortcoming, in that it cannot be used to upgrade configuration databases associated with the original farm. To complete the upgrade, you must customize the new farm created to upgrade the content databases to match the original farm's configuration.
There is however, a hybrid approach which combines the best features of both strategies.
We pursued this hybrid approach with our client with good success, and I would recommend it for any farm that has at least two servers in it. It begins with the database attach approach.
A fresh SharePoint 2010 Standard instance was created on a new server built to act as the SQL server for the farm. To do this we used a great PowerShell script called AutoSPInstaller which can be found at http://autospinstaller.codeplex.com/. This script automated the installation of SharePoint as much as possible and taught us a great deal about ideal SharePoint configurations. After installing the new farm, we set the content databases of the old farm to be read-only in SQL Server and made backups of the content databases to a file share that was accessible to both farms. We then restored these backups to the new instance of SQL Server on the new server and attached them to SQL Server. After the databases were available to SharePoint, we executed a PowerShell command to attach the database to the new farm. This performs the upgrade, which is why this is called the &quot;database attach&quot; method.
The advantages of upgrading your content databases this way is that the production farm never experiences downtime and any upgrade failures can be addressed until the upgrade succeeds. It was doubly useful for our client since they had to migrate their content databases to a new SQL Server instance anyway.
After the content databases were upgraded we started an in-place upgrade of the configuration databases. Before beginning however, we detached the content databases from SharePoint so that they would not be upgraded along with the configuration databases and the in-place upgrade would proceed faster. The in-place upgrade was begun and finished a couple hours later. There were some complaints about sites that had been provisioned in site collections that had been detached, but these would prove to not be issues as the configuration databases were successfully upgraded.
Next we backed up and restored the configuration databases to the new SQL Server instance as we had done earlier for the content databases. When moving databases be sure to keep the names of the databases the same between SQL Server instances. Once this was complete we stopped all SharePoint services and brought the original farm down. In order to use the configuration databases on the new SQL Server instance we had to create a SQL server alias on the server hosting the original SharePoint instance redirecting to the new SQL server. For those who are curious this is done through SQL Server Management Studio and is stored in the registry, so any alias created will persist even if SQL Server is uninstalled from the server the alias was set up on.
We then restarted SharePoint services successfully. As a final moment of truth, we stopped SQL Server on the original server and the farm continued to function. We then detached the content databases from teh temporary SharePoint instance and re-attached them to the newly-upgraded farm. (The database attach PowerShell command must be executed on the server where the web application they will be attached to is hosted.) Success!
Cleanup involved disabling the temporary SharePoint instance used to perform the database attach upgrades and to disable SQL Server on the original server.
All told this process was surprisingly painless and took about 24 hours. The duration of the upgrade process depends mostly upon the amount of content that must be upgraded. Hopefully this post will give others direction and allay any doubts about what is a sometimes&#160;stressful upgrade process.
Contact us if you want help upgrading your SharePoint 2007 portal (WSS 3.0, MOSS Standard, or MOSS Enterprise) to&#160;SharePoint 2010 (Foundation, Standard, or Enterprise).</description>
    <media:content url="" />
    <dc:creator>Jack Cosgrove</dc:creator> 
    <pubDate>Thu, 05 Apr 2012 17:51:00 GMT</pubDate> 
    <guid isPermaLink="false">f1397696-738c-4295-afcd-943feb885714:3631</guid> 
    
</item>
<item>
    <comments>http://www.dmcinfo.com/Blog/articleType/ArticleView/articleId/2207/SharePoint-Designer-Workflow-Mysteries-Why-Your-Changes-Wont-Take-Effect.aspx#Comments</comments> 
    <slash:comments>0</slash:comments> 
    <wfw:commentRss>http://www.dmcinfo.com/DesktopModules/DnnForge%20-%20NewsArticles/RssComments.aspx?TabID=61&amp;ModuleID=471&amp;ArticleID=2207</wfw:commentRss> 
    <trackback:ping>http://www.dmcinfo.com/DesktopModules/DnnForge%20-%20NewsArticles/Tracking/Trackback.aspx?ArticleID=2207&amp;PortalID=0&amp;TabID=61</trackback:ping> 
    <title>SharePoint Designer Workflow Mysteries: Why Your Changes Won't Take Effect</title> 
    <link>http://www.dmcinfo.com/Blog/articleType/ArticleView/articleId/2207/SharePoint-Designer-Workflow-Mysteries-Why-Your-Changes-Wont-Take-Effect.aspx</link> 
    <description>I recently encountered an error&#160;in&#160;SharePoint Designer without much documented information available and&#160;wanted to share&#160;my workaround&#160;with others who may&#160;be experiencing it.&#160;The bug occurs when attempting a specific action in SharePoint Designer 2007 and 2010, known as “collect data from user.”

In SharePoint Designer 2007 the options you choose will not be marked as complete when you click “Finish.” The solution is to click through the options dialogue again, clicking “Next” each time even if you do not make any settings changes. After you have clicked through all of the options the second time the changes should take effect.
In SharePoint Designer 2010, I did not select&#160;“Approve” to appear as the default selection. Every time I deselected “Approve” it did not accept my settings, and clicking through all the settings did not always work. To reach a resolution, it sometimes requires multiple attempts at clicking through the options.
</description>
    <media:content url="http://www.dmcinfo.com/Portals/0/SharePointDesignerBug.png" />
    <dc:creator>Anjali Bharadwa</dc:creator> 
    <pubDate>Thu, 29 Mar 2012 15:00:00 GMT</pubDate> 
    <guid isPermaLink="false">f1397696-738c-4295-afcd-943feb885714:2207</guid> 
    
</item>
<item>
    <comments>http://www.dmcinfo.com/Blog/articleType/ArticleView/articleId/3633/March-Programming-Madness-Round-1--Part-2.aspx#Comments</comments> 
    <slash:comments>3</slash:comments> 
    <wfw:commentRss>http://www.dmcinfo.com/DesktopModules/DnnForge%20-%20NewsArticles/RssComments.aspx?TabID=61&amp;ModuleID=471&amp;ArticleID=3633</wfw:commentRss> 
    <trackback:ping>http://www.dmcinfo.com/DesktopModules/DnnForge%20-%20NewsArticles/Tracking/Trackback.aspx?ArticleID=3633&amp;PortalID=0&amp;TabID=61</trackback:ping> 
    <title>March Programming Madness: Round 1 - Part 2</title> 
    <link>http://www.dmcinfo.com/Blog/articleType/ArticleView/articleId/3633/March-Programming-Madness-Round-1--Part-2.aspx</link> 
    <description>Although I have admittedly not been keeping pace with the rate of elimination of the other big tournaments this month, I like to think that the delay between updates is building at least some semblance of suspense.&#160; Even if most of my coworkers think I have already crowned a champion, I have legitimately been analyzing and researching each matchup with an open mind.&#160; After the first half of round one, the field is still wide open, so without further delay, let’s jump into the next four games.
Our opening game this blog pits the world renowned Java (the language, not the beverage) against the quirky underdog, Assembly Code.&#160; As with our previous 1 v. 8 matchup, there is little doubt in my mind as to who will probably move on, but for the sake of fairness, let’s weigh some strengths and weaknesses.&#160; Java, as you may or may not know, started off as a platform for the oft-failed idea of 90’s web TV.&#160; Despite the embarrassing origin, Java’s founding principles hit the right notes of object oriented, multi-threaded, platform independent code.&#160; Throw in Java’s prevalent role in the world’s most popular mobile OS, and Java is sitting pretty.&#160; Assembly language, the language of the first few weeks of Microcontrollers 101, has none of Java’s bells or whistles.&#160; Even when programming low level embedded and microcontroller devices, it’s likely that any remotely complicated program will be written in C or C++.&#160; Despite an impressive historical resume, and the ability to expose what your processor is actually doing, assembly obviously has little to no place in the modern programming language conversation.&#160; Java, book your ticket to New Orleans, you’re going to the Elite Eight.
Going in order down the bracket, we next get to LabVIEW and VB .Net.&#160; LabVIEW’s bread and butter, without a doubt, is the stellar NI hardware to which LabVIEW is inextricably tied.&#160; As such, LabVIEW is probably ‘the best’ tool for creating applications to acquire and analyze measurement data.&#160; However, the issue comes with asking it to do the same sorts of things that applications developed in ‘enterprise’ languages do.&#160; Just like you wouldn’t typically ask a PLC to play multimedia, LabVIEW isn’t great if you need inheritance, abstraction, or an extensively customized look and feel.&#160; In contrast, I often ask myself why VB .Net exists at all.&#160; I completely understand the need for readable code, but when lined up next to C#, VB just feels ridiculously verbose.&#160; I realize why VB .Net evolved, but, despite a short list of features found in VB and not in C#, I have a hard time justifying ever choosing the former over the latter.&#160; That being said, let’s just get out of this matchup and let LabVIEW roll.
In one of our more exotic matchups, Objective C tries to defend Leon’s honor in a battle against PHP. &#160;Objective C is one of those languages that started off simple but ended up becoming one of the big dogs by getting in with the right crowd, in this case becoming the basis for Apple’s Mac OS and iOS.&#160; Objective C, and the overall dev package known as Cocoa, have the benefit of Apple’s unified, streamlined approach to technology, which often leads to a robust programming experience.&#160; Objective C also supports well-loved features such as reflection and garbage collection (although this is a recent add), and it plays very nicely with standard C code, promoting reuse of existing tools.&#160; However, missing features like namespaces and the ability to overload methods show Objective C’s age.&#160; In contrast to Objective C, PHP is another example of a niche language, existing primarily as a web scripting tool.&#160; PHP’s differentiator is in being a server side tool, allowing dynamic content generation closer to the many data sources, such as MySQL databases.&#160; This matchup is a tough one for me to judge, but in all, I think that Objective C is a broader brush with which to paint, giving it the go ahead to round 2.
Last but not least this week, we have C++ and Fortran, two languages that have polarizing supporters.&#160; I have always viewed C++ as one of those familiar, comfortable languages, not straying far from good ole’ C, but providing the flexibility of object oriented classes, exception handling, and the like.&#160; C++’s biggest negative could be that it is sort of a middle child, stuck between older low level languages and the flexible, dynamic languages of present day.&#160; This means that it becomes easy to write inefficient code, but it also gives you the freedom to create really effective code without the overhead of higher level languages.&#160; This is likely the reason that so many drivers and OS’s (including Windows) are written in C++.&#160; Fortran, like LabVIEW or Matlab, might best be described as an academia language.&#160; To some extent, we are all indebted to Fortran for popularizing the idea of a compiler that optimizes programs into machine code from high level, human readable syntax.&#160; Because it is so well optimized and geared for number crunching, Fortran can be a great tool for the type of intensive calculations often encountered by engineering and science researchers (which is probably why so many in academia still swear by it).&#160; Unless you’re working on your PHD though, the shortcomings of Fortran probably mean there is a better language to do what you want, but at least we don’t have to write its name in screaming caps anymore.&#160; Begging the forgiveness of anyone over the age of 35, I’m sending Fortran home and C++ on to the next round.
As much as I hate having all the higher seeds move on, that’s the way it works out sometimes.&#160; Stay tuned for round 2!
&lt;&#160;Return to Round 1, Part 1&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; Continue to Round 2 &gt;
</description>
    <media:content url="http://www.dmcinfo.com/Portals/0/MarchMadness.gif" />
    <dc:creator>Danny Budzinski</dc:creator> 
    <pubDate>Sun, 25 Mar 2012 21:34:00 GMT</pubDate> 
    <guid isPermaLink="false">f1397696-738c-4295-afcd-943feb885714:3633</guid> 
    
</item>
<item>
    <comments>http://www.dmcinfo.com/Blog/articleType/ArticleView/articleId/3403/The-Basics-of-Siemens-S7-PLC-IO-Addressing.aspx#Comments</comments> 
    <slash:comments>0</slash:comments> 
    <wfw:commentRss>http://www.dmcinfo.com/DesktopModules/DnnForge%20-%20NewsArticles/RssComments.aspx?TabID=61&amp;ModuleID=471&amp;ArticleID=3403</wfw:commentRss> 
    <trackback:ping>http://www.dmcinfo.com/DesktopModules/DnnForge%20-%20NewsArticles/Tracking/Trackback.aspx?ArticleID=3403&amp;PortalID=0&amp;TabID=61</trackback:ping> 
    <title>The Basics of Siemens S7 PLC I/O Addressing</title> 
    <link>http://www.dmcinfo.com/Blog/articleType/ArticleView/articleId/3403/The-Basics-of-Siemens-S7-PLC-IO-Addressing.aspx</link> 
    <description>Are you a new user of Siemens PLCs and wondering what terms like &quot;process image&quot; and &quot;peripheral address&quot; mean?&#160; What does the &quot;P&quot; in &quot;PIW&quot; stand for?&#160; Are you an experienced user and are too embarrassed to ask?&#160; Or, maybe you are like me and just need refresher every once in a while?

Fortunately, the Siemens support website has a great article that explains these different ways to access I/O for Siemens S7-300 and 400 PLCs.&#160; Here are some summary thoughts and highlights that I've picked out.

Here are the basics:

    Process Image
    
        The only way to access I/O bits
        Values are &quot;buffered&quot; in between scans
        Limited address space for some CPU models
        Notation:
        
            Bool&#160; &quot;I 0.0&quot;, &quot;Q 0.0&quot;
            Byte &quot;IB 10&quot;, &quot;QB 10&quot;
            Word &quot;IW 16&quot;, &quot;QW 16&quot;
            Double Word&#160; &quot;ID 24&quot;, &quot;QD 24&quot;
        
        
    
    
    Peripheral Address
    
        All addresses outside of the process image
        Cannot access I/O bits this way
        The actual values are immediately read and written to physical I/O from user program
        Notation:
        
            Byte &quot;PIB 10&quot;, &quot;PQB 10&quot;
            Word &quot;PIW 16&quot;, &quot;PQW 16&quot;
            Double Word&#160; &quot;PID 24&quot;, &quot;PQD 24&quot;
        
        
    
    

As a general rule, I use the process image for all my bit logic and the peripheral addresses for my analog values.
For more information, check out the article.
&#160;</description>
    <media:content url="" />
    <dc:creator>Nick Shea</dc:creator> 
    <pubDate>Thu, 22 Mar 2012 15:45:00 GMT</pubDate> 
    <guid isPermaLink="false">f1397696-738c-4295-afcd-943feb885714:3403</guid> 
    
</item>
<item>
    <comments>http://www.dmcinfo.com/Blog/articleType/ArticleView/articleId/3402/March-Programming-Madness--Let-the-Nerdament-Begin.aspx#Comments</comments> 
    <slash:comments>1</slash:comments> 
    <wfw:commentRss>http://www.dmcinfo.com/DesktopModules/DnnForge%20-%20NewsArticles/RssComments.aspx?TabID=61&amp;ModuleID=471&amp;ArticleID=3402</wfw:commentRss> 
    <trackback:ping>http://www.dmcinfo.com/DesktopModules/DnnForge%20-%20NewsArticles/Tracking/Trackback.aspx?ArticleID=3402&amp;PortalID=0&amp;TabID=61</trackback:ping> 
    <title>March Programming Madness - Let the Nerdament Begin</title> 
    <link>http://www.dmcinfo.com/Blog/articleType/ArticleView/articleId/3402/March-Programming-Madness--Let-the-Nerdament-Begin.aspx</link> 
    <description>With the first few rounds of the tournament in the books, I figured it was time to dive into the first round of our programming language tournament (or Nerdament as I like to call it.)&#160;For a run-down of the competitors, you can check out the opening bracket or you can also review some of the snubs.&#160;Once you are caught up, I hope that you are as excited for some fast-paced compiler vs. IDE action as I am.
Our first matchup features the highly favored C# .Net taking on lowly, olde-timey conference winner Punch Cards.&#160;Obviously, even if we weren’t a Microsoft Gold Partner and I wasn’t such a huge proponent of C#, this still wouldn’t be much of a contest.&#160;However, there is some really fascinating history of the punch card system and how its impact can still be felt in programming today.&#160;Punch cards, in addition to setting the 80 column width limit on older terminal interfaces that you might still see today, also served as the launch pad for tech-giant IBM (originally International Business Machines.)&#160;For our purposes, however, without even getting into the mud-slinging of hanging or pregnant chads, we’ll go ahead and move C# as our first team into round 2.
Our second matchup, good ole’ plain C vs. VBA presents a somewhat more even pairing.&#160;For me, I can’t help but feel some affinity towards VBA, as was the medium for some of my earliest professional programming.&#160;After dabbling with some QBasic (ah the blue-grey IDE!) and HTML at a young age, as most young boys do, discovering VBA inside of Excel and Access really let me wow fellow engineers in my first few internships.&#160;When you evaluate VBA in the context of what it’s expected to do, it serves its purpose really, really well.&#160;However, this round it is up against C, whose versatility, in stark contrast to VBA, is practically unmatched.&#160;C can be thought of as the grandfather of languages like C# or C++, it can be compiled for almost any platform from microcontrollers to popular operating systems, and it is still one of the most widely used languages around.&#160;Ironically, both these languages have similar shortcomings, such as lack of object-oriented capabilities and manual memory management, meaning that C, with its huge advantage of portability, joins C# in round 2.
Matchup 3, Ruby on Rails and Matlab features 2 of the lesser known competitors coming into this tournament.&#160;Ruby on Rails is one of the newer kids on the block, having developed over only the last decade or so.&#160;Based on the Ruby language, which is widely used itself, Ruby on Rails is a language specifically geared towards web development.&#160;Its core principle of DRY (Don’t Repeat Yourself) coding is something every programmer should follow and the MVC architecture inherent to RoR is one of several great ways to structure a program.&#160;All that being said, however, RoR suffers from some early growing pains between versions and compatibility and probably has some maturing to do.&#160;Matlab on the other hand, has been around for what feels like forever, and most of us probably used it at one time or another to crunch numbers in school.&#160;If you have major numeric processing to do, LabVIEW is probably the way to go, but since graduating, I can’t say that I’ve seen Matlab pop up more than once or twice.&#160;Matlab just seems to be more of a research tool than an application development platform.&#160;From weak typing to limited GUI tools, the typical expectations of programmers just aren’t met, and accordingly, companies aren’t willing to invest in Matlab development licenses.&#160;Honestly, I’m not blown away by either of the two competitors here, but I think we’ll move Ruby on Rails through if for no other reasons than having the right idea in their mission statement.
Our fourth and final matchup of the day, Ladder vs. Python is an intriguing matchup, because the 2 platforms are such polar opposites.&#160;Ladder’s low-level, no-nonsense programming is specifically targeted for robust, real-time systems needing reliable control.&#160;Ladder logic and PLC’s have a fairly intuitive programming structure (it’s just like an electrical schematic!) but obviously can be restrictive at times.&#160;Ladder logic is another case of a language being great at what it’s meant for.&#160;It probably won’t be winning any software architecture contests, but it makes modern life possible, from automated factories and building technology to amusement parks and public transit. &#160;On the flip side, Python was created to be one of the most flexible languages around, and has a pretty impressive standard library.&#160;Coming from .Net, I wish that Python has static type checking, as having type checking in the compiler just makes me feel warm and fuzzy, but at least it is enforced at runtime.&#160;I also worry that, as an open source package, Python suffers from fragmentation, especially when it comes to getting started, choosing an IDE, compiling, and developing GUI’s.&#160;The choices can be overwhelming for a new-comer.&#160;Still, running the risk of global infrastructure spiraling out of control, I’m giving the nod to Python (in honor of Dan Aukes) for the first upset of the year.
Stay tuned for the second half of round 1 soon!

&lt; Return to Part 2 - The Snubs&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Continue to Round 1, Part 2 &gt;

</description>
    <media:content url="http://www.dmcinfo.com/Portals/0/Nerds Cheering.jpg" />
    <dc:creator>Danny Budzinski</dc:creator> 
    <pubDate>Tue, 20 Mar 2012 17:27:00 GMT</pubDate> 
    <guid isPermaLink="false">f1397696-738c-4295-afcd-943feb885714:3402</guid> 
    
</item>
<item>
    <comments>http://www.dmcinfo.com/Blog/articleType/ArticleView/articleId/247/Read-Command-Line-Parameters-from-VBA.aspx#Comments</comments> 
    <slash:comments>1</slash:comments> 
    <wfw:commentRss>http://www.dmcinfo.com/DesktopModules/DnnForge%20-%20NewsArticles/RssComments.aspx?TabID=61&amp;ModuleID=471&amp;ArticleID=247</wfw:commentRss> 
    <trackback:ping>http://www.dmcinfo.com/DesktopModules/DnnForge%20-%20NewsArticles/Tracking/Trackback.aspx?ArticleID=247&amp;PortalID=0&amp;TabID=61</trackback:ping> 
    <title>Read Command Line Parameters from VBA</title> 
    <link>http://www.dmcinfo.com/Blog/articleType/ArticleView/articleId/247/Read-Command-Line-Parameters-from-VBA.aspx</link> 
    <description>Recently, I needed to read a command line parameter within a VBA code (it's for&#160;an Iconics SCADA application, but I developed it with Excel VBA&#160;which is&#160;essentially the same). It doesn't sound like a big deal but there&#160;were a few not-so-obvious tricks that I thought&#160;were worth sharing.
I started with the&#160;simplest&#160;solution using a &quot;GetCommandLineA&quot; Windows API function from kernel32.dll. It&#160;was supposed to return a&#160;pointer to the command line string, so I assumed that its return type&#160;would be&#160;string (sounds logical to me).

' The return type of the GetCommandLineA is long
' But it is supposed to be a pointer to the string. 
' Assumming that all VBA strings are passed by pointers
' Just declare it's return type to be a string
Declare Function GetCommandLineA Lib &quot;Kernel32&quot; () As String
 
Sub ReadCmdLine()

   Dim strCmdLine As String ' Command line string   
   ' Read command line parameters into the string
   strCmdLine = GetCommandLineA

End Sub
Surprise - it caused exception and crashed the application. Hm, apparently VBA handles a pointer to the string differently than&#160;GetCommandLineA.&#160;Not wanting to&#160;spend time figuring out why,&#160;I decided to copy the string to VBA&#160;string using another kernel32.dll function &quot;lstrcpynA&quot;.

' Declare the return type to be a pointer (long)
Declare Function GetCommandLineA Lib &quot;Kernel32&quot; () As Long
Declare Function lstrcpynA Lib &quot;kernel32&quot; ( _ 
   ByVal pDestination As String, ByVal pSource As Long, _
   ByVal iMaxLength As Integer) As Long
 
Sub ReadCmdLine()

   Dim pCmdLine as long     ' Pointer to the string
   Dim strCmdLine As String ' Command line string     

   pCmdLine = GetCommandLineA
   ' Copy from the pointer to VBA-Style string 
   ' 300 characters for command line seems to be enough
   lstrcpynA strCmdLine , pCmdLine, 300	   

End Sub
This worked better&#160;by no longer crashing&#160;the application, but the strCmdLine&#160;was always empty. After short Google search&#160;I found this Microsoft article. Apparently lstrcpynA&#160;function (as other&#160;DLL functions returning strings) can't&#160;change the size of the VBA-style string. In order to&#160;reserve the space for that return data, we&#160;need to&#160;fill the string with a bunch of zeros (vbNullChar).

Declare Function GetCommandLineA Lib &quot;Kernel32&quot; () As Long
Declare Function lstrcpynA Lib &quot;kernel32&quot; ( _
   ByVal pDestination As String, ByVal pSource As Long, _
   ByVal iMaxLength As Integer) As Long
 
Sub ReadCmdLine()

   Dim pCmdLine as long     ' Pointer to the string
   Dim strCmdLine As String ' Command line string   

   ' Get the pointer to the command line string
   pCmdLine = GetCommandLineA

   ' Fill the string with zeros
   ' 300 characters for command line seems to be enough
   strCmdLine = String$(300, vbNullChar)

   ' Copy from the pointer to VBA-style string
   lstrcpynA strCmdLine , pCmdLine, Len(strCmdLine )

   ' At this point we got the string
   ' But rest of it filled with 0 characters.
   strCmdLine = Left(strCmdLine , InStr(1, strCmdLine , _
      vbNullChar) - 1)
   	   
End Sub
This code finally worked as&#160;expected, returning command line arguments.
Hopefully, this article is useful in saving someone 15 minutes of frustration.</description>
    <media:content url="" />
    <dc:creator>Boris Cherkasskiy</dc:creator> 
    <pubDate>Mon, 19 Mar 2012 20:22:00 GMT</pubDate> 
    <guid isPermaLink="false">f1397696-738c-4295-afcd-943feb885714:247</guid> 
    
</item>
<item>
    <comments>http://www.dmcinfo.com/Blog/articleType/ArticleView/articleId/1511/Resurrecting-the-Antique-Pressure-Gauge-to-Display-Internet-Bandwidth.aspx#Comments</comments> 
    <slash:comments>3</slash:comments> 
    <wfw:commentRss>http://www.dmcinfo.com/DesktopModules/DnnForge%20-%20NewsArticles/RssComments.aspx?TabID=61&amp;ModuleID=471&amp;ArticleID=1511</wfw:commentRss> 
    <trackback:ping>http://www.dmcinfo.com/DesktopModules/DnnForge%20-%20NewsArticles/Tracking/Trackback.aspx?ArticleID=1511&amp;PortalID=0&amp;TabID=61</trackback:ping> 
    <title>Resurrecting the Antique Pressure Gauge to Display Internet Bandwidth</title> 
    <link>http://www.dmcinfo.com/Blog/articleType/ArticleView/articleId/1511/Resurrecting-the-Antique-Pressure-Gauge-to-Display-Internet-Bandwidth.aspx</link> 
    <description>
Who doesn't like old technologies?&#160;For example,&#160;a&#160;Motorola cell phone as heavy as a brick and built to last centuries (literally)? I do like old stuff, my dear readers. That's why when one day I came across a cool looking (and rightly priced!) antique pressure gauge on eBay I bought it with very little hesitation. Presumably, gauges like this had been used on steamboats and locomotives. I had the idea to upgrade it to use this piece of ancient technology for modern purposes, specifically to measure my home internet bandwidth utilization.

This is what I got in the mail few days later.




Not cool. I&#160;was not ready to hang this at my desk, being too ugly even for me, not to mention my wife. What I really wanted to see&#160;was a brass bezel and black body instead of this rusty bezel and grey rusty-dusty body. I desperately needed some magic and I found it in the local hardware store: sandpaper, paint remover, and spray paint!
After applying my newly acquired magic the gauge started to look much more appealing.


That&#160;was&#160;better, but I still needed a different kind of magic to make it measure something more useful for me than steam pressure. I thought about creating an application (running on the PC) to calculate bandwidth utilization and somehow send this information to the gauge via USB.
But how would I make the needle move? The answer came from China in form of the miniature RC servo. RC servos are typically used by hobbyists in radio-controlled models and robotic applications.&#160;It’s a perfect fit for this project because:

    It’s small, so it fits the gauge easily
    It needs 5V power supply (since I am planning to use USB and it provides 5V)
    It’s easy to control

Here is&#160;the downside - an RC servo needs a precise PWM (Pulse Width Modulation) signal for positioning. PC/Windows was born to be almost useless for generating any precise timing/pulses, so I needed something else to generate it. I elected an Atmel AVR microcontroller for this job. Why AVR?&#160;Simply because I've used it before, know this platform reasonably well, and love it (well, sort of). Unfortunately, the smallest/simplest AVR microcontroller I&#160;had planned to use didn't support USB communication, so I had to add a USB-to-serial converter to the mix since serial protocol is easy to implement even on the tiniest microcontrollers.

Now I am ready to put it all together:

    The PC runs a .NET application which calculates bandwidth utilization and sends it to the gauge. It sends the utilization as a percentage, since the gauge is calibrated 0-100
    Inside the gauge there is a USB-to-serial converter that talks to the AVR microcontroller via asynchronous serial communication (this is just a fancy term for serial port)
    The microcontroller converts the utilization percentage to the PWM signal and sends it to the RC servo
    The RC Servo controls the needle position utilizing parts from the original mechanism

Completed gauge with scale removed.

In&#160;the picture above: RC servo (blue thing, covered with whitish mass), USB to Serial adapter (green board), and microcontroller (small 8-pins chip, to the right of the green board). 

Everything was mounted inside the gauge using my favorite method - glue gun (I am pretty sure Wikipedia knows a better term for it, but &quot;glue gun&quot; just sounds dangerous).

Now back to the .NET application. It turns out that it's very easy to read a whole bunch of the statistical data from my home wireless router because it supports a SMNP&#160;&#160;protocol. SNMP is a standard network management protocol supported by most of the network devices (computers, routers, printers, etc.). It provides access to the device's internal status/variables/parameters.

The most important variables to me were sent/received byte counters. There is one set of counters (upload/download) per each Ethernet port (my router has 5 ports), but&#160;I cared only about the Ethernet port connected to my DSL modem. By querying these counters every second it's trivial to calculate upload/download speeds.&#160;However, in order&#160;to calculate bandwidth utilization I also needed to know my maximum Internet upload/download. Speedtest.net is a hero of determination of true Internet speed.

Cool, I can calculate both the&#160;upload and download bandwidth utilization, but which one should I use for the gauge? I tried a few options and found out that I personally like a maximum between upload and download&#160;because&#160;it tells me when to expect web surfing bog-downs.

The .NET application interface is pretty simple, nothing fancy.


This is how completed gauge looks.

Thank you for reading my humble blog and have fun hacking the stuff.
Ah right, I forgot the video of the completed system, enjoy:


&#160;</description>
    <media:content url="http://www.dmcinfo.com/Portals/0/BorisGauge.jpg" />
    <dc:creator>Boris Cherkasskiy</dc:creator> 
    <pubDate>Wed, 14 Mar 2012 18:17:00 GMT</pubDate> 
    <guid isPermaLink="false">f1397696-738c-4295-afcd-943feb885714:1511</guid> 
    
</item>
<item>
    <comments>http://www.dmcinfo.com/Blog/articleType/ArticleView/articleId/3290/March-Programming-Madness--The-Snubs.aspx#Comments</comments> 
    <slash:comments>1</slash:comments> 
    <wfw:commentRss>http://www.dmcinfo.com/DesktopModules/DnnForge%20-%20NewsArticles/RssComments.aspx?TabID=61&amp;ModuleID=471&amp;ArticleID=3290</wfw:commentRss> 
    <trackback:ping>http://www.dmcinfo.com/DesktopModules/DnnForge%20-%20NewsArticles/Tracking/Trackback.aspx?ArticleID=3290&amp;PortalID=0&amp;TabID=61</trackback:ping> 
    <title>March Programming Madness - The Snubs</title> 
    <link>http://www.dmcinfo.com/Blog/articleType/ArticleView/articleId/3290/March-Programming-Madness--The-Snubs.aspx</link> 
    <description>With the first few games of the NCAA tourney coming up fast, I wanted to address some of the hard feelings from the creation of the tournament field.&#160;If you missed the selection round, you can review the picks and the seedings here.&#160;Note that despite the rabble rousing that the seedings caused, the committee does not address seeding issues.&#160;Occasionally teams will be bumped up or down a seed or two in order to accommodate regional sites and avoid regular season rematches.&#160;I mean, who wants to see LabVIEW take on PHP in a specialized-application snoozefest AGAIN?
Now, to address the snubs, let’s try to take a look at each program that was left out.&#160;Firstly, we all need to keep in mind that programs like SQL, aren’t full participants in the field of application development.&#160;I won’t argue that they make a splash in the database bowl games every year (and usually are pretty strong in volleyball and soccer), but they simply don’t have a horse in the race of standalone apps.&#160;If SQL ever finds a way to craft applications in native code we can talk, but even something like SQL reporting services isn’t going to make the field of 16.
Secondly, for the few actual competitors who did get left out, remember that this is the 2012 tournament.&#160;Although the self-modifying code found in early versions of COBOL sounds intriguingly like the key to artificial intelligence, I believe I can simply defer to Edsger Dijkstra on this one.&#160;I am sure that COBOL helped keep programming languages moving forward at the time, but shoe-horning in new features over the years and trying to patch over gaping holes isn’t going to cut it against the other great competitors out there.
In similar fashion, Pascal simply falls flat when it comes to the features that we expect from today’s languages, and this was true even back in 1981.&#160;Pascal has continued to grow over the years, but this is almost worse, as the language now suffers from severe lack of compatibility between versions and compilers.&#160;Again, I think Pascal pointed out new concepts in the evolution of computer science, but definitely suffered growing pains and shows the scars of the 80’s.
I think the best description for the snubs this year would be “You can’t polish a turd” (despite what the Mythbusters think).&#160;When your languages have major criticism sections on Wikipedia, you know that you are probably in trouble, and there were just too many newer, shinier teams to highlight.&#160;Unfortunately only 1 team from the olde-timey league could make it in this year and Punch Cards made a run in the league’s tournament to snag the auto-bid.&#160; I'm sure none of this will reduce controversy, but hopefully it will quiet at least a bit of discontent.
&lt;&#160;Return to Part 1 - The Bracket&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; Continue to Round 1 &gt;</description>
    <media:content url="http://www.dmcinfo.com/Portals/0/cry42.jpg" />
    <dc:creator>Danny Budzinski</dc:creator> 
    <pubDate>Tue, 13 Mar 2012 15:28:00 GMT</pubDate> 
    <guid isPermaLink="false">f1397696-738c-4295-afcd-943feb885714:3290</guid> 
    
</item>
<item>
    <comments>http://www.dmcinfo.com/Blog/articleType/ArticleView/articleId/2622/Geek-Challenge-March-Madness.aspx#Comments</comments> 
    <slash:comments>3</slash:comments> 
    <wfw:commentRss>http://www.dmcinfo.com/DesktopModules/DnnForge%20-%20NewsArticles/RssComments.aspx?TabID=61&amp;ModuleID=471&amp;ArticleID=2622</wfw:commentRss> 
    <trackback:ping>http://www.dmcinfo.com/DesktopModules/DnnForge%20-%20NewsArticles/Tracking/Trackback.aspx?ArticleID=2622&amp;PortalID=0&amp;TabID=61</trackback:ping> 
    <title>Geek Challenge: March Madness</title> 
    <link>http://www.dmcinfo.com/Blog/articleType/ArticleView/articleId/2622/Geek-Challenge-March-Madness.aspx</link> 
    <description>This month’s Geek Challenge was created in conjunction with&#160; Kevin Ferrigno.&#160; The challenge is to pick the winners of this year’s NCAA tournament, not by&#160;choosing&#160;teams, but by picking the winning formula.&#160; You can use this spreadsheet to practice with based on last year’s games. 

We’ve simplified the process of picking a bracket from&#160;selecting the outcome of 63 games down to selecting five numbers. 

We will create 10 randomly generated brackets based on your chosen numbers, and the winner will be the person whose brackets do the best based on this formula: 
Total Score = Highest Bracket Score + Average Bracket Score 

Our formula has 2 parts: 
1. Accurately generate a rating for each team 
2. Determine how much randomness to use&#160;when making picks for each game 

The factors to use in generating a rating are: 
A.&#160;Won-Loss Percentage: &#160;A team's Wins divided by Games Played.
B.&#160;Strength of Schedule: W-L record of a team’s opponents, and often the opponents of their opponents (a 20-10 team from the Big Ten or Big East Conferences is not likely equivalent to a 20-10 team from the Horizon Conference). We’ll use the readily available RPI version for our calculations. 
C.&#160;Tournament History: W-L percentage of a team in the NCAA tournament over&#160;the last 3 years. Some teams (recently Butler University) just have a knack for doing well in the tournament. This factor may allow you to give an extra nudge to teams with a history of tournament success. 
D.&#160;Tournament Seed: The historical W-L percentage of teams with a particular tournament seed.&#160; #1 seeds win 78% of the time over all rounds. #2 seeds win 70% of the time. A #16 has never won a game in the field of 64. (Historical performance of teams by Tournament&#160; Seed) 

All factors have been pre-scaled based to the mean and standard deviation of the group of 64 teams.&#160; So the challenge in this part is to determine the relative weight of the 4 statistics and express these in the coefficients W, X, Y and Z.&#160; For instance, if your strategy is that Win-Loss Percentage and Strength of Schedule matter equally, Tournament History doesn’t matter at all, and that underdogs do slightly better, you might pick the coefficients X=1, Y=1, Z=0, and W=-0.2. 

Your second challenge is to pick a coefficient representing the randomness.&#160; A randomness coefficient K=0 means no randomization, and all games are picked based on weighting.&#160; Higher coefficients offer more randomness.&#160; Since each participant will get 10 brackets calculated, and the objective is to maximize high score plus average score, it makes good sense to have some randomization. 

We've developed a practice spreadsheet using last year’s tournament.&#160; To participate in this month’s Geek Challenge, please submit your 5 coefficients before the first game is played in the round of 64.
Please submit your responses to: geekchallenge@dmcinfo.com</description>
    <media:content url="http://www.dmcinfo.com/Portals/0/MarchMadness.gif" />
    <dc:creator>Ken Brey</dc:creator> 
    <pubDate>Wed, 07 Mar 2012 21:25:00 GMT</pubDate> 
    <guid isPermaLink="false">f1397696-738c-4295-afcd-943feb885714:2622</guid> 
    
</item>
<item>
    <comments>http://www.dmcinfo.com/Blog/articleType/ArticleView/articleId/2731/DMC-Holiday-Party-Takes-to-the-Lanes.aspx#Comments</comments> 
    <slash:comments>1</slash:comments> 
    <wfw:commentRss>http://www.dmcinfo.com/DesktopModules/DnnForge%20-%20NewsArticles/RssComments.aspx?TabID=61&amp;ModuleID=471&amp;ArticleID=2731</wfw:commentRss> 
    <trackback:ping>http://www.dmcinfo.com/DesktopModules/DnnForge%20-%20NewsArticles/Tracking/Trackback.aspx?ArticleID=2731&amp;PortalID=0&amp;TabID=61</trackback:ping> 
    <title>DMC Holiday Party Takes to the Lanes</title> 
    <link>http://www.dmcinfo.com/Blog/articleType/ArticleView/articleId/2731/DMC-Holiday-Party-Takes-to-the-Lanes.aspx</link> 
    <description>Every year, DMC celebrates&#160;our holiday party sometime after the holidays and this year we took to the lanes at&#160;Lucky Strike. It was a great setting to socialize and, of course, enjoy some friendly competition. We even&#160;held a special bowling-themed Geek Challenge. Congrats&#160;to oncoming DMC&#160;employee Han Yang for claiming victory!
&#160;



</description>
    <media:content url="http://www.dmcinfo.com/Portals/0/DMCHolidayParty0059.JPG" />
    <dc:creator>Jessica Mlinaric</dc:creator> 
    <pubDate>Tue, 06 Mar 2012 15:34:00 GMT</pubDate> 
    <guid isPermaLink="false">f1397696-738c-4295-afcd-943feb885714:2731</guid> 
    
</item>

    </channel>
</rss>
