<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Java Archives | DMC, Inc.</title>
	<atom:link href="https://static.dmcinfo.com/blog/tag/java/feed/index.xml" rel="self" type="application/rss+xml" />
	<link></link>
	<description></description>
	<lastBuildDate>Wed, 26 Aug 2026 21:57:41 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.1.2</generator>

<image>
	<url>https://static.dmcinfo.com/wp-content/uploads/2025/04/site-icon-150x150.png</url>
	<title>Java Archives | DMC, Inc.</title>
	<link></link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Pool Vision Application</title>
		<link>https://static.dmcinfo.com/blog/25530/pool-vision-application/</link>
		
		<dc:creator><![CDATA[DMC]]></dc:creator>
		<pubDate>Fri, 10 Jun 2016 14:14:43 +0000</pubDate>
				<category><![CDATA[Culture]]></category>
		<category><![CDATA[Denver]]></category>
		<category><![CDATA[LabVIEW]]></category>
		<category><![CDATA[Manufacturing Automation & Intelligence]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[LabVIEW Vision]]></category>
		<category><![CDATA[Vision Inspection]]></category>
		<guid isPermaLink="false">https://static.dmcinfo.com/blog/25530/pool-vision-application/</guid>

					<description><![CDATA[<p>Every DMC office has at least one table sport at its heart. For Denver, this game is pool. So on FedEx Day 2016 Otto, Tyler, and I set out to automate our office Spencer Marston pool table. What does this look like you may ask? Our goal was to automatically detect what pool balls remain on [&#8230;]</p>
<p>The post <a href="https://static.dmcinfo.com/blog/25530/pool-vision-application/">Pool Vision Application</a> appeared first on <a href="https://static.dmcinfo.com/">DMC, Inc.</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Every DMC office has at least one table sport at its heart. For <a href="https://static.dmcinfo.com/contact/dmc-denver" target="_blank">Denver</a>, this game is pool. So on <a href="https://static.dmcinfo.com/latest-thinking/blog/id/9214/fedex-day-2016" target="_blank">FedEx Day 2016 </a>Otto, Tyler, and I set out to automate our office Spencer Marston pool table. What does this look like you may ask? Our goal was to automatically detect what pool balls remain on the table. So during our 3-way, 5-way, or even 7-way cut throat games we don&#8217;t have to worry about what balls are sunk and what balls are not.</p>



<p class="wp-block-paragraph"><br>
&nbsp;<br>
Preparation was key for this project. We selected a camera, chose a software plan of attack, mounted the camera, played some pool to &#8220;test&#8221;, and created a camera driver. The camera chosen was a basic webcam with a 90 degree field of view and 1080p resolution. This made for a wide enough image to capture the pool table felt and the rails. The chosen software was <a href="https://static.dmcinfo.com/services/test-and-measurement-automation/labview-programming" target="_blank">LabVIEW</a> as DMC has experience using <a href="https://static.dmcinfo.com/about/partners/ni-alliance-partner" target="_blank">NI&#8217;s</a> versatile VAS and VDM software libraries with an integration to our existing custom Java based pool application. Once we wrote the driver we were able to start on algorithm development on FedEx Day.</p>



<p class="wp-block-paragraph"><br>
&nbsp;<br>
The following software was developed on FedEx Day: Software Architecture/Application, Calibration Algorithms, Ball Location Algorithm, Ball Color and Pattern Algorithm, &#8220;Active Shooter&#8221; Algorithm. The architecture utilized a Producer/Consumer architecture with a single state machine to collect an image and determine the state of the pool table. Each ball was calibrated by snapping an image of the ball to get a known representation of each balls RGB value and whiteness. Each balls location was detected by HSB differences between a ball and the felt. Based on the calibration images captured for each ball, the RGB best match of each detected ball was matched to the corresponding calibrated ball. The pattern of a ball, striped vs. solid, was determined by white content of each detected ball. More white meant striped and less meant solid; lots of white meant the cue ball. To determine when to analyze the state of the pool table, an algorithm was written to detect whether a player was shooting and therefore blocking the camera&#8217;s view of all the balls.&nbsp;</p>



<figure class="wp-block-image"><img decoding="async" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/DSC_0012-RE.jpg" alt="Pool app "/></figure>



<p class="wp-block-paragraph">After a day of programming, we did it! The system correctly identified the location of the balls and what balls were left on the table. However, there were some challenges along the way. Lighting, RGB vs. HSB and the USB standard just to name a few. As always, lighting is very important in vision applications. The issue we ran into was shadowing around each ball. The shadowing ruined the RGB color measurement around the edges of the ball which could lead to incorrect ball color detection. HSB is a valuable domain to work in and was useful in distinguishing between the felt of the table and the color of the balls. As far as the USB standard issue, we used a USB webcam for the proof of concept. Although not a devastating issue, we needed to shorten our USB connection to the camera to be under 5 meters since our initial cable was longer and caused camera connection issues.</p>



<p class="wp-block-paragraph">&nbsp;</p>



<p class="wp-block-paragraph">There are a lot of fun future applications we can do now that we can detect what balls remain on the table. The next major step will be to integrate it with our existing 3/5-way cutthroat application to automatically update what balls are sunk. If you have any fun ideas let me know by posting them below!<br>
&nbsp;</p>
<p>The post <a href="https://static.dmcinfo.com/blog/25530/pool-vision-application/">Pool Vision Application</a> appeared first on <a href="https://static.dmcinfo.com/">DMC, Inc.</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>How to Make and Test Your First Android App in Android Studio, FAST!</title>
		<link>https://static.dmcinfo.com/blog/26772/how-to-make-and-test-your-first-android-app-in-android-studio-fast/</link>
		
		<dc:creator><![CDATA[Frank May]]></dc:creator>
		<pubDate>Wed, 18 Mar 2015 07:22:21 +0000</pubDate>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Software Development]]></category>
		<guid isPermaLink="false">https://static.dmcinfo.com/blog/26772/how-to-make-and-test-your-first-android-app-in-android-studio-fast/</guid>

					<description><![CDATA[<p>Android Studio is Google&apos;s free IDE for making Android apps and replaces Eclipse as the primary IDE for making Android apps.&#160; In this less than 10 minute video, I&apos;ll show you how to: Learn more about DMC&apos;s custom software and hardware development services.</p>
<p>The post <a href="https://static.dmcinfo.com/blog/26772/how-to-make-and-test-your-first-android-app-in-android-studio-fast/">How to Make and Test Your First Android App in Android Studio, FAST!</a> appeared first on <a href="https://static.dmcinfo.com/">DMC, Inc.</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p class="wp-block-paragraph">Android Studio is Google&apos;s free IDE for making Android apps and replaces Eclipse as the primary IDE for making Android apps.&nbsp;</p>

<p class="wp-block-paragraph">In this less than 10 minute video, I&apos;ll show you how to:</p>

<ul class="wp-block-list">
 <li>Install <a href="http://developer.android.com/sdk/index.html" target="_blank">Android Studio</a> (along with the&nbsp;<a href="http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html" target="_blank">Java Development Kit</a>)</li>
 <li>Design a simple &quot;Hello World&quot; app</li>
 <li>Test the app on a Virtual Device</li>
 <li>Attach a real device to your computer and test the app there</li>
 <li>Fix common installation problems</li>
</ul>

<p class="wp-block-paragraph"><iframe allowfullscreen="" frameborder="0" height="390" src="https://www.youtube.com/embed/-feVvHv-vpE" width="640"></iframe></p>

<p class="wp-block-paragraph"><a href="/services/embedded-development-and-embedded-programming">Learn more about DMC&apos;s custom software and hardware development services.</a></p>
<p>The post <a href="https://static.dmcinfo.com/blog/26772/how-to-make-and-test-your-first-android-app-in-android-studio-fast/">How to Make and Test Your First Android App in Android Studio, FAST!</a> appeared first on <a href="https://static.dmcinfo.com/">DMC, Inc.</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Android Connectivity using the Android Open Accessory Development Kit</title>
		<link>https://static.dmcinfo.com/blog/28603/android-connectivity-using-the-android-open-accessory-development-kit/</link>
		
		<dc:creator><![CDATA[DMC]]></dc:creator>
		<pubDate>Thu, 21 Feb 2013 13:37:49 +0000</pubDate>
				<category><![CDATA[Embedded Development & Programming]]></category>
		<category><![CDATA[Hardware]]></category>
		<category><![CDATA[Java]]></category>
		<guid isPermaLink="false">https://static.dmcinfo.com/blog/28603/android-connectivity-using-the-android-open-accessory-development-kit/</guid>

					<description><![CDATA[<p>With Android operating system’s market share growing rapidly, the appeal for developers to release their applications on this platform has never been higher. Android is quite developer friendly, and as it matures the variety of applications has been growing steadily. Most Android programs (and really most mobile apps), run on the target device and will [&#8230;]</p>
<p>The post <a href="https://static.dmcinfo.com/blog/28603/android-connectivity-using-the-android-open-accessory-development-kit/">Android Connectivity using the Android Open Accessory Development Kit</a> appeared first on <a href="https://static.dmcinfo.com/">DMC, Inc.</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">With Android operating system’s market share growing rapidly, the appeal for developers to release their applications on this platform has never been higher. Android is quite developer friendly, and as it matures the variety of applications has been growing steadily.</p>



<p class="wp-block-paragraph">Most Android programs (and really most mobile apps), run on the target device and will interact to the outside world over some sort of wireless network: Wi-Fi, Bluetooth, NFC, etc. However, a much less common (but equally as awesome) mode is to interface with external hardware directly using a physical connection. One of the coolest examples of this type of communication in my opinion has been credit card readers that connect to a mobile device using the 1/8” headphone/microphone jack. Another communication interface that is provided with nearly all mobile devices running Android is USB. Google supports a software development kit called the <a href="http://developer.android.com/tools/adk/index.html">Open Accessory Development Kit </a>(ADK) which is a software stack that defines methods for the Android device to communicate to a generic external device over USB. This allows for custom hardware to be easily interfaced to a device running the Android operating system. One example application of this technology would be for a navigation app to use an external GPS to obtain a more accurate location than the device itself can supply.</p>



<p class="wp-block-paragraph">At DMC, we recently created a simple “Hello World” Android application to demonstrate using the ADK to connect a Nexus 7 Android tablet to an <a href="https://www.dialindicator.com/electronic-indicators">electronic dial indicator</a>. After a few minor communication issues, we quickly prototyped a working system, and I wanted to share the result with our blog readers.</p>



<p class="wp-block-paragraph">The goal was to create a simple Android app that would display, in real-time, the current measurement on the electronic indicator. The indicator can send its current measurement interface through a RS-232 serial interface, so the first design challenge was to find a method of translating this information to USB format in a way that is compliant with the ADK protocol. Luckily, Future Technology Devices (FTDI) makes a chip that serves this exact purpose, and they also sell some simple development boards that demonstrate the various supported interfaces (General I/O, Serial, SPI, etc.). For each of the interface modes, they wrote a very basic Android application to demonstrate the functionality and released the source code for public reuse.</p>



<p class="wp-block-paragraph">For our demo, we used the FT311D board. Connecting this device to the electronic indicator was simple. RS-232 is a two-wire interface (not counting the ground connection), so we simply sliced open the vendor-supplied cable and connected the two serial pins appropriately to the FT311D headers. The development board has three pairs of pins that are jumpered together to set up the interface mode, so these were set up for RS-232 communication.</p>



<p class="wp-block-paragraph">Connection between the FT311D board and the Android tablet was very simple. The device serves as a USB host and will recognize any device running a flavor of Android that supports the ADK (this includes 3.1 and above natively, although version 2.3.4 can support the ADK with some additional libraries). One of the cool features of the ADK is the ability for the Android device to associate the attached peripheral to an installed application, and launch it automatically when the peripheral is connected. The FTDI-provided code supported this functionality out of the box, so the RS-232 application launched immediately after powering up the board.</p>



<p class="wp-block-paragraph">The electronic dial indicator’s serial command set returns the current measurement after a request command is received. Unfortunately, FTDI’s application didn’t work natively with the indicator. I spent some time trying to debug the software by checking the serial lines with a Bus Pirate (which is an immensely useful tool for anyone working with any of the generic flavors of serial communication!), but wasn’t able to pinpoint exactly why the communication wasn’t working properly. Instead, I decided to re-design the application so that it was more centric to the gauge’s command set. That is, on a fixed update interval the application sends a “Get Current Reading” message to the gauge, looks for the response, updates the display, then goes idle.</p>



<p class="wp-block-paragraph">The display of the dial indicator updates at a rate of approximately 30Hz, and I targeted the Android application to have the same refresh rate to duplicate the physical hardware’s user experience. The revised code worked just as I expected, and we were able to view the current measurement gauge measurement on the Nexus tablet. I also added a button to “Clear” the current measurement, which mimics the physical button on the front of the gauge. You can check out the final result in this video below!</p>



<p class="wp-block-paragraph"><iframe allowfullscreen="" frameborder="0" height="360" src="https://www.youtube.com/embed/qGh2MJNCSYo" width="480"></iframe></p>



<p class="wp-block-paragraph">The process of developing a simple “Hello World” application with the Android ADK was surprisingly easy, and yielded some cool results. For anyone interested in tinkering with this interface, I would highly suggest the FT311D development board from Future Technology, as it was very easy to use right out of the box, and is quite reasonably priced. Happy hacking!</p>
<p>The post <a href="https://static.dmcinfo.com/blog/28603/android-connectivity-using-the-android-open-accessory-development-kit/">Android Connectivity using the Android Open Accessory Development Kit</a> appeared first on <a href="https://static.dmcinfo.com/">DMC, Inc.</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Programming Madness National Championship</title>
		<link>https://static.dmcinfo.com/blog/28761/programming-madness-national-championship/</link>
		
		<dc:creator><![CDATA[DMC]]></dc:creator>
		<pubDate>Tue, 25 Sep 2012 13:46:55 +0000</pubDate>
				<category><![CDATA[Culture]]></category>
		<category><![CDATA[and Driver]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[MS Visual Studio/.NET]]></category>
		<category><![CDATA[PC]]></category>
		<category><![CDATA[SDK]]></category>
		<guid isPermaLink="false">https://static.dmcinfo.com/blog/28761/programming-madness-national-championship/</guid>

					<description><![CDATA[<p>Welcome to the Programming Tournament National Championship! For the sake of drama, I was going to make a Tournament Highlights blog first, but I figured that everyone was probably so overly excited that putting off the decision any longer would be inhumane. For anyone coming to the party late, I have spent the last 6 [&#8230;]</p>
<p>The post <a href="https://static.dmcinfo.com/blog/28761/programming-madness-national-championship/">Programming Madness National Championship</a> appeared first on <a href="https://static.dmcinfo.com/">DMC, Inc.</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Welcome to the Programming Tournament National Championship! For the sake of drama, I was going to make a <a href="https://static.dmcinfo.com/blog/29116/march-programming-madness-the-bracket/">Tournament Highlights</a> blog first, but I figured that everyone was probably so overly excited that putting off the decision any longer would be inhumane. For anyone coming to the party late, I have spent the last 6 months (or 3 half-lives of Antimony Sb-124) reviewing the positives and negatives of different programming languages that I’ve worked with, pitting them head to head in a <a href="https://www.ncaa.com/march-madness-live/watch" target="_blank" rel="noreferrer noopener">NCAA style tournament</a>.</p>



<p class="wp-block-paragraph">We’ve had <a href="https://static.dmcinfo.com/blog/29039/programming-madness-diving-into-round-2/">a few upsets along the way</a>, but for the most part, the favorites proved <a href="https://static.dmcinfo.com/blog/28859/programming-madness-conference-finals/">why they earned the high seeds</a>. After a last minute video review overturned what looked initially like a C++ victory in the semi-finals, this inaugural championship is between <a href="https://www.microsoft.com/en-us/" target="_blank" rel="noreferrer noopener">Microsoft’s</a> <a href="https://learn.microsoft.com/en-us/dotnet/csharp/fundamentals/program-structure/" target="_blank" rel="noreferrer noopener">C# .Net</a> and review beneficiary,&nbsp;<a href="http://en.wikipedia.org/wiki/Sun_Microsystems" target="_blank">Sun Microsystems’</a> / <a href="https://www.oracle.com/" target="_blank" rel="noreferrer noopener">Oracle</a> / <a href="http://arstechnica.com/information-technology/2010/08/oracles-java-lawsuit-undermines-its-open-source-credibility/" target="_blank">Open-Source-Independent</a>, <a href="http://www.java.com/en/download/index.jsp" target="_blank">Java</a>.</p>



<p class="wp-block-paragraph">Amazingly, put perhaps not surprisingly, the architectures and syntax of these 2 platforms is remarkably similar. For a complete look at the similarities, there are a number of <a href="http://www.25hoursaday.com/CsharpVsJava.html" target="_blank">great sites</a> exposed by a simple Google search. Some of these differences are significant, while some are cosmetic, but diving into all of them is well beyond the scope of a simple blog post.</p>



<p class="wp-block-paragraph">Now, admittedly, I have done much more work on C# projects than I have with Java, and my Java experience is strictly from what I’ve done working with Android Development and anything I could learn from the <a href="https://www.amazon.com/Java-1-1-Unleashed-Michael-Morrison/dp/1575212986/ref=sr_1_5?crid=264F73CE94ECB&amp;dib=eyJ2IjoiMSJ9.rUTY5j2BCIEwpwXo8clArVL3uWNjlidpwyzxwzk0UpdYUCbW9lVWZielk1U4zcWlHModp9p4QOlHZLzdp-aNtj0FzzEKDwh7dLn5J_KPXvX_9YRxifDJm98vigJrK-B1qCsi_X3rQyQjIByVF8cROeiDgKlRrSKykwaCciEHjtemT9Pdu1XAtdic6Q_E3aYeJPusFQiYQw6jHCrYy7OvJkGJliopy3XabglvdSRk7QI.XfFDyeOMYWbJUllncjBwJSIqwmrqO6JxKxGXep1q4DM&amp;dib_tag=se&amp;keywords=java+unleashed&amp;qid=1751297743&amp;sprefix=java+unleashed%2Caps%2C91&amp;sr=8-5" target="_blank" rel="noreferrer noopener">Java Unleashed</a> book I bought back in 1997 (you know, when I was in seventh grade and they had to give you a CD-ROM with the SDK and examples, since AOL dialup was still too slow to download anything real from the new-fangled “Internet” thing.)</p>



<p class="wp-block-paragraph">Jumping from C# into Java, I’ve been perfectly able to make basic Android apps, and all else being equal, I honestly would lean towards Java for the simple reason that it is inherently cross-platform. Like other <a href="https://static.dmcinfo.com/blog/28904/programming-madness-last-of-the-quarter-finals/">cross-platform languages</a>, this means that code I write on my Windows computer can be compiled and run on a Mac without worry. This advantage means that we don’t have to build the same application 3 times to run on Windows, Mac, and Linux devices, a huge business case for commercial software companies. The <a href="http://en.wikipedia.org/wiki/Java_virtual_machine" target="_blank">Java VM mechanism</a> used to achieve this is pretty neat too, even if it does mean that we are constantly getting <a href="http://www.quickmeme.com/meme/3q4z9c/" target="_blank">barraged by Java update requests at startup</a>. C# is making progress here with the <a href="http://www.mono-project.com/Main_Page" target="_blank">Mono Project</a>, but there is still a long way to go to get the same foothold that Java has.</p>



<p class="wp-block-paragraph">So the winner is Java, right? Well, not so fast. C# gets a chance for a rebuttal, and rebut it does. By most accounts, <a href="http://www.25hoursaday.com/CsharpVsJava.html#different" target="_blank">C#</a> is slightly ahead of <a href="http://www.25hoursaday.com/CsharpVsJava.html#wishlist" target="_blank">Java</a> when it comes to features, although both, it seems, have been doing a flip-flop where one adds a useful feature and then the other copies it. The biggest area where I think C# stands out is the integrated usage and implementation of types and classes for each. It might just be because it’s what I’m used to, but the system in C# makes a lot more sense to me than does Java.</p>



<p class="wp-block-paragraph">For example, Java lacks static classes, doesn’t have a tool like LINQ, won’t allow named and optional method inputs, can’t pass inputs as references, doesn’t integrate arrays and collections, and has only watered down support for Generics. Project file management also seems better in C#, with conditional compilation flags and a level of abstraction between assemblies and files and between files and classes. Now, I know that each of these are subjective features, and you can probably even argue that some features are intentionally left out of Java, but I personally have become accustomed to the C# programming style and think that it makes sense.</p>



<p class="wp-block-paragraph">The bottom line is that both C# and Java are excellent, high level languages, with many similarities and a few individual strong points. I think that environment has a strong impact on which you prefer, but for me, being in a strongly <a href="/about/partners">Microsoft-centric workplace</a>, C# is my go to language. Therefore, strongly weighing my own opinion of my own opinion, in a wild game, with a controversial play, at the very last second, on a strongly contested Hail Mary, C# wins in what will safely go down as an Instant Classic.</p>



<p class="wp-block-paragraph"><a href="https://static.dmcinfo.com/blog/28859/programming-madness-conference-finals/">Semi Final Flashback</a></p>



<p class="wp-block-paragraph"><a href="https://static.dmcinfo.com/blog/29116/march-programming-madness-the-bracket/">Relive the Excitement</a></p>



<figure class="wp-block-image"><img decoding="async" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/Nerdament-4_0.png" alt=""/></figure>
<p>The post <a href="https://static.dmcinfo.com/blog/28761/programming-madness-national-championship/">Programming Madness National Championship</a> appeared first on <a href="https://static.dmcinfo.com/">DMC, Inc.</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Programming Madness &#8211; Conference Finals</title>
		<link>https://static.dmcinfo.com/blog/28859/programming-madness-conference-finals/</link>
		
		<dc:creator><![CDATA[DMC]]></dc:creator>
		<pubDate>Tue, 24 Jul 2012 12:04:46 +0000</pubDate>
				<category><![CDATA[Culture]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[MS Visual Studio/.NET]]></category>
		<guid isPermaLink="false">https://static.dmcinfo.com/blog/28859/programming-madness-conference-finals/</guid>

					<description><![CDATA[<p>Admittedly, this process has taken me longer than the average gestation period for a hamster, a kangaroo, and an otter all put together, but the recent popular movement for tournaments has given this blog fresh life&#160;and also helped confirm my strengths as a local and national trendsetter.&#160;&#160; Now that we have reached the semi-finals, a [&#8230;]</p>
<p>The post <a href="https://static.dmcinfo.com/blog/28859/programming-madness-conference-finals/">Programming Madness &#8211; Conference Finals</a> appeared first on <a href="https://static.dmcinfo.com/">DMC, Inc.</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Admittedly, this process has taken me longer than the <a href="http://en.wikipedia.org/wiki/Gestation_period">average gestation period for a hamster, a kangaroo, and an otter</a> all put together, but the recent <a href="http://espn.go.com/college-football/story/_/id/8099187/ncaa-presidents-approve-four-team-college-football-playoff-beginning-2014">popular movement for tournaments</a> has given this blog fresh life&nbsp;and also helped confirm <a href="http://www.strengthsfinder.com/home.aspx">my strengths as a local and national trendsetter</a>.&nbsp;&nbsp;</p>



<p class="wp-block-paragraph">Now that we have reached the semi-finals, a lot has already been said about our remaining contenders: C#, Python, Java, and C++.&nbsp; All of these languages are strong, object-oriented platforms, capable of creating a wide array of applications. That being said, in true DMC / <a href="https://static.dmcinfo.com/blog/29011/employee-spotlight-ryan-taylor/">Medieval Times</a> fashion, I still insist on a battle to the death.</p>



<p class="wp-block-paragraph">I am going to name our first matchup the Battle of the Dan’s. On one side, we have <a href="https://static.dmcinfo.com/about/our-team/dan-freve/">Dan Freve’s</a> first true love, C# .Net, and on the other side, we have DMC alumnus Dan Aukes’ flavor of the week, Python.&nbsp; Both of these languages have a lot going for them, but one key area that we can differentiate is in the developer experience. Whether you love Microsoft or hate them, you can’t really argue that Visual Studio 2010 makes for quick, efficient programming in C#. Honestly, I get startled when writing code if I ever have to type more than 3 letters of each variable, property, or method that I want. This level of <a href="http://msdn.microsoft.com/en-us/library/hcw1s69b(v=vs.71).aspx">Intellisense</a>, combined with strong typing and live error checking really help developers get into “the zone” when coding.</p>



<p class="wp-block-paragraph">On the flip side, Python suffers from the fragmentation and division that so often plagues open platforms. On the Python wiki, there are well over a dozen different IDEs listed, and, although I am sure I could research or employ trial and error to find the best one, this is something I wish were done for me. Now I am sure that several of the Python IDE’s are great, and I am encouraged to see features like code completion, but the ones I’ve worked with (<a href="http://doc.aldebaran.com/1-14/software/choregraphe/choregraphe_overview.html">admittedly a small sample</a>) have forced me to manually look up method names, only check errors at compile time, and generally force you to write code like you are in a simple text editor. I’m sure a lot of this has to do with Python as a scripting language, but for application development, I’ll take our first finalist, C#, any day of the week.</p>



<p class="wp-block-paragraph">Switching over to the National League championship, we run into 2 bastions of application development, C++ and Java.&nbsp; Both of these languages have been major drivers in programming during my lifetime. C++ has been the language of choice on anything from <a href="http://www.lextrait.com/vincent/implementations.html">Windows, Office, and even Google Chrome</a> to the majority of video games across most platforms, and has even been used in <a href="http://www.atmel.com/microsite/atmel_studio6/compiler_editor.aspx">many beefier microcontrollers</a>.</p>



<p class="wp-block-paragraph">What C++ has done for applications, Java, by many regards, has done for the web. Having been explicitly targeted at the internet from birth, Java has been the backbone of countless <a href="http://www.addictinggames.com/">internet games</a>, applications, and <a href="http://en.wikipedia.org/wiki/Java_%28software_platform%29#Web_server_and_enterprise_use">services/tools</a>. When you throw in Android’s reliance on Java as well, it becomes pretty obvious that it is a force to be reckoned with. As Java has become more “open-source“, it is being used frequently on lightweight, embedded, Linux-based smart devices around our homes and workplaces. In fact, many Java tools, like <a href="https://spring.io/">Spring</a>, <a href="http://www.hibernate.org/">Hibernate</a>, and <a href="http://tomcat.apache.org/">Tomcat</a>, have become wildly popular solutions aiding rapid development, by solving common developer problems and have set the standard for cross-platform architectures. Given Java&#8217;s wide usage and numerous applications, Java wins as expected and moves to the final against C#.</p>



<p class="wp-block-paragraph"><a href="/latest-thinking/blog/id/6943/programming-madness--last-of-the-quarter-finals">View the Previous Round</a></p>



<p class="wp-block-paragraph"><a href="/latest-thinking/blog/id/8321/programming-madness-national-championship">On to the Finals!</a></p>



<figure class="wp-block-image"><img fetchpriority="high" decoding="async" alt="" height="434" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/Nerdament-3_0.png" width="800" /></figure>
<p>The post <a href="https://static.dmcinfo.com/blog/28859/programming-madness-conference-finals/">Programming Madness &#8211; Conference Finals</a> appeared first on <a href="https://static.dmcinfo.com/">DMC, Inc.</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Programming Madness &#8211; Last of the Quarter Finals</title>
		<link>https://static.dmcinfo.com/blog/28904/programming-madness-last-of-the-quarter-finals/</link>
		
		<dc:creator><![CDATA[DMC]]></dc:creator>
		<pubDate>Thu, 28 Jun 2012 10:19:55 +0000</pubDate>
				<category><![CDATA[Culture]]></category>
		<category><![CDATA[LabVIEW]]></category>
		<category><![CDATA[Java]]></category>
		<guid isPermaLink="false">https://static.dmcinfo.com/blog/28904/programming-madness-last-of-the-quarter-finals/</guid>

					<description><![CDATA[<p>Man time sure does fly. It seems like it was only a few weeks ago that I started a programming language competition in perfect synchronization with that month’s college tournament. Now that we are almost into the 3rd month after March though, I can only claim laziness, busy-ness, or an extravagant penchant for prolonging suspense [&#8230;]</p>
<p>The post <a href="https://static.dmcinfo.com/blog/28904/programming-madness-last-of-the-quarter-finals/">Programming Madness &#8211; Last of the Quarter Finals</a> appeared first on <a href="https://static.dmcinfo.com/">DMC, Inc.</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Man time sure does fly. It seems like it was only a few weeks ago that I <a href="https://static.dmcinfo.com/blog/29116/march-programming-madness-the-bracket/">started a programming language competition</a> in perfect synchronization with <a href="http://www.ncaa.com/interactive-bracket/basketball-men/d1/2012" target="_blank">that month’s college tournament</a>. Now that we are almost into the 3<sup>rd</sup> month after March though, I can only claim laziness, busy-ness, or an extravagant penchant for prolonging suspense as excuses for dragging this series out so long. For my own sake, I think I’ll take the last option. Regardless, we have seen a lot of shattered dreams and at least one magical Cinderella run (congratulation for <a href="https://static.dmcinfo.com/blog/29084/march-programming-madness-let-the-nerdament-begin/">strong nerd support</a> and <a href="https://static.dmcinfo.com/blog/29039/programming-madness-diving-into-round-2/">favorable matchups</a>, Python.)</p>



<p class="wp-block-paragraph">The tail end of round 2 graces us with the matchups between Java and LaVIEW and Objective C and C++. As we have seen before, Java is a widely used, extremely flexible, and free programming platform. Despite <a href="http://www.latimes.com/news/opinion/editorials/la-ed-google-java-api-copyrights-20120529,0,7652718.story" target="_blank">ongoing disputes between Google and Oracle</a>, Java is an integral part of the Android platform, which has only made Java more of a rockstar. The many high level functions that Java automatically performs “under the hood” allow developers to focus on writing great applications, rather than get lost in memory allocation issues or tied up in painful debugging or code maintenance. Java has been <a href="http://java-source.net/" target="_blank">embraced by open source communities</a> (again, free!) meaning that there are numerous reusable libraries you can drop in when needed. On the flip side, LabVIEW is a language that is closely managed by its owner, National Instruments. In ways this can be a very good thing, since it avoids fragmentation that can occur when too many cooks are in the kitchen. However, it has also meant that <a href="http://lavag.org/forum/37-labview-feature-suggestions/" target="_blank">popular new features may be slow to surface</a>. LabVIEW is also the only <a href="http://en.wikipedia.org/wiki/Dataflow_programming" target="_blank">Dataflow based programming language</a> on our list, meaning that it takes a different mindset than do the traditional C-like languages. This definitely has its uses, but it also can lead to silly mistakes and is prone to <a href="http://en.wikipedia.org/wiki/Race_condition" target="_blank">race conditions</a>, and it just <a href="http://prog21.dadgum.com/3.html" target="_blank">isn’t what programmers are generally used to</a>. As such, for the purposes of this competition, <a href="http://www.ni.com/services/certified_labview_architects.htm?location=IL" target="_blank">despite being a Certified LabVIEW Architect myself</a>, I think that I will have to give Java the edge. If the competition had more to do with <a href="http://www.ni.com/labview/whatis/hardware-integration/" target="_blank">hardware and data measurements</a>, though, it would definitely be another story.</p>



<p class="wp-block-paragraph">Objective C and C++ is a much less differentiated matchup. Both languages were <a href="http://en.wikipedia.org/wiki/Objective-C" target="_blank">created</a> or <a href="http://en.wikipedia.org/wiki/C%2B%2B" target="_blank">popularized</a> in the 80’s as beefed up alternatives to C, specifically adding classes and object oriented design. However, they go about achieving this goal in entirely different ways. C++ uses what is called “<a href="http://en.wikipedia.org/wiki/Simula" target="_blank">Simula</a>” style, meaning that methods called on classes are all resolved at compile time. Objective C instead uses a messaging paradigm that is derived from its predecessor, Smalltalk. In this design pattern callers just blast messages out to classes who then resolve what to do on their side. This reminds me a lot of UDP versus TCP where the sender just broadcasts something and the receiver does what it wants, but there isn’t really any handshake between the two, so if the method doesn’t exist on the receiving side, the call just quietly dissolves into the ether. To me, this sounds prone to difficult debugging, and I am a huge proponent of <a href="http://whatis.techtarget.com/definition/strongly-typed" target="_blank">strongly typed</a> enforcement. Without diving more deeply into Objective C, I am going to call it here and send Objective C home, and C++ on to the semi-finals.</p>



<p class="wp-block-paragraph">Well, that’s it for today, but we are getting closer and closer to crowning a champion. Honestly, I have to say that I would be happy to code all day in any of the languages we have left, but, in true DMC competitive fashion, one must be crowned the best!</p>



<p class="wp-block-paragraph"><a href="https://static.dmcinfo.com/blog/29039/programming-madness-diving-into-round-2/">See the Other Quarter Final Games</a></p>



<p class="wp-block-paragraph"><a href="https://static.dmcinfo.com/blog/28859/programming-madness-conference-finals/">Check out the Conference Finals</a></p>



<figure class="wp-block-image size-full"><img decoding="async" width="1024" height="555" src="https://static.dmcinfo.com/wp-content/uploads/2012/06/Nerdament-2_5.png.webp" alt="programming chart" class="wp-image-36504" srcset="https://static.dmcinfo.com/wp-content/uploads/2012/06/Nerdament-2_5.png.webp 1024w, https://static.dmcinfo.com/wp-content/uploads/2012/06/Nerdament-2_5.png-300x163.webp 300w, https://static.dmcinfo.com/wp-content/uploads/2012/06/Nerdament-2_5.png-768x416.webp 768w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>
<p>The post <a href="https://static.dmcinfo.com/blog/28904/programming-madness-last-of-the-quarter-finals/">Programming Madness &#8211; Last of the Quarter Finals</a> appeared first on <a href="https://static.dmcinfo.com/">DMC, Inc.</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>March Programming Madness: Round 1 &#8211; Part 2</title>
		<link>https://static.dmcinfo.com/blog/29061/march-programming-madness-round-1-part-2/</link>
		
		<dc:creator><![CDATA[DMC]]></dc:creator>
		<pubDate>Thu, 05 Apr 2012 14:45:34 +0000</pubDate>
				<category><![CDATA[Culture]]></category>
		<category><![CDATA[LabVIEW]]></category>
		<category><![CDATA[Test and Measurement Automation]]></category>
		<category><![CDATA[ASP.NET]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[MS Visual Studio/.NET]]></category>
		<guid isPermaLink="false">https://static.dmcinfo.com/blog/29061/march-programming-madness-round-1-part-2/</guid>

					<description><![CDATA[<p>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. Even if most of my coworkers think I have already crowned a champion, I have legitimately been analyzing [&#8230;]</p>
<p>The post <a href="https://static.dmcinfo.com/blog/29061/march-programming-madness-round-1-part-2/">March Programming Madness: Round 1 &#8211; Part 2</a> appeared first on <a href="https://static.dmcinfo.com/">DMC, Inc.</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">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. Even if most of my coworkers think I have already crowned a champion, I have legitimately been analyzing and researching <a href="https://static.dmcinfo.com/blog/29116/march-programming-madness-the-bracket/">each matchup</a> with an open mind. After the first half of round one, <a href="https://static.dmcinfo.com/blog/29084/march-programming-madness-let-the-nerdament-begin/">the field is still wide open</a>, so without further delay, let’s jump into the next four games.</p>



<p class="wp-block-paragraph">Our opening game this blog pits the world renowned Java (the language, not the beverage) against the quirky underdog, Assembly Code. 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. Java, as you may or may not know, started off as a <a href="https://www.oracle.com/java/">platform for the oft-failed idea of 90’s web TV</a>. Despite the embarrassing origin, Java’s founding principles <a href="https://www.freejavaguide.com/history.html" target="_blank" rel="noreferrer noopener">hit the right notes of object oriented, multithreaded, platform independent code</a>. Throw in <a href="https://developer.android.com/courses/android-basics-compose/course" target="_blank" rel="noreferrer noopener">Java’s prevalent role</a> in the <a href="http://www.csmonitor.com/Innovation/Horizons/2011/0131/Android-now-world-s-most-popular-phone-OS">world’s most popular mobile OS</a>, and Java is sitting pretty. Assembly language, the language of the first few weeks of Microcontrollers 101, has none of Java’s bells or whistles. Even when programming low level embedded and microcontroller devices, it’s likely that any remotely complicated program will be written in C or C++. 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. Java, book your ticket to New Orleans, you’re going to the Elite Eight.</p>



<p class="wp-block-paragraph">Going in order down the bracket, we next get to LabVIEW and VB .Net. LabVIEW’s bread and butter, without a doubt, is <a href="https://www.ni.com/en/shop/labview.html" target="_blank" rel="noreferrer noopener">the stellar NI hardware to which LabVIEW is inextricably tied</a>. As such, LabVIEW is probably ‘the best’ tool for creating applications to acquire and analyze measurement data. However, the issue comes with asking it to do the same sorts of things that applications developed in ‘enterprise’ languages do. 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. In contrast, I often ask myself why VB .Net exists at all. I completely understand the need for readable code, but when lined up next to C#, VB just feels ridiculously verbose. I realize why VB .Net evolved, but, <a href="http://en.wikipedia.org/wiki/Comparison_of_C_Sharp_and_Visual_Basic_.NET#Features_of_Visual_Basic_.NET_not_found_in_C.23">despite a short list of features found in VB and not in C#</a>, I have a hard time justifying ever choosing the former over the latter. That being said, let’s just get out of this matchup and let LabVIEW roll.</p>



<p class="wp-block-paragraph">In one of our more exotic matchups, Objective C tries to <a href="https://static.dmcinfo.com/blog/29640/employee-spotlight-leon-grossman/">defend Leon’s honor</a> in a battle against PHP. 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 <a href="https://developer.apple.com/library/archive/documentation/Cocoa/Conceptual/ObjectiveC/Introduction/introObjectiveC.html" target="_blank" rel="noreferrer noopener">the basis for Apple’s Mac OS and iOS</a>. Objective C and the <a href="https://developer.apple.com/library/archive/documentation/Cocoa/Conceptual/CocoaFundamentals/WhatIsCocoa/WhatIsCocoa.html" target="_blank" rel="noreferrer noopener">overall dev package known as Cocoa</a> have the benefit of Apple’s unified, streamlined approach to technology, which often leads to a robust programming experience. </p>



<p class="wp-block-paragraph">Objective C also supports well-loved features such as reflection and garbage collection (although this is a recent addition), and it plays very nicely with standard C code, promoting reuse of existing tools. However, missing features like namespaces and the ability to overload methods show Objective C’s age.&nbsp;</p>



<p class="wp-block-paragraph">In contrast to Objective C, PHP is another example of a niche language, existing primarily as a web scripting tool. PHP’s differentiator is in being a server side tool, allowing dynamic content generation closer to the many data sources, such as MySQL databases. 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.</p>



<p class="wp-block-paragraph">Last but not least this week, we have C++ and Fortran, two languages that have polarizing supporters. 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. C++’s biggest negative could be that it is <a href="https://gamearchitect.net/Articles/WhyC++.html" target="_blank" rel="noreferrer noopener">sort of a middle child</a>, stuck between older low-level languages and the flexible, dynamic languages of the present day.&nbsp;</p>



<p class="wp-block-paragraph">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. This is likely the reason that so many drivers and OS’s (including Windows) are written in C++. Fortran, like LabVIEW or Matlab, might best be described as an academic language.&nbsp;</p>



<p class="wp-block-paragraph">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. 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). Unless you’re working on your Ph.D. 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 <a href="http://fortranwiki.org/fortran/show/FAQ#capitalization">screaming caps anymore</a>. Begging the forgiveness of anyone over the age of 35, I’m sending Fortran home and C++ on to the next round.</p>



<p class="wp-block-paragraph">As much as I hate having all the higher seeds move on, that’s the way it works out sometimes. Stay tuned for round 2!</p>



<p class="wp-block-paragraph"><a href="https://static.dmcinfo.com/blog/29084/march-programming-madness-let-the-nerdament-begin/">Return to Round 1, Part 1</a></p>



<p class="wp-block-paragraph"><a href="https://static.dmcinfo.com/blog/29039/programming-madness-diving-into-round-2/">Continue to Round 2</a></p>



<figure class="wp-block-image"><img decoding="async" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/Nerdament-1_5.png" alt=""/></figure>
<p>The post <a href="https://static.dmcinfo.com/blog/29061/march-programming-madness-round-1-part-2/">March Programming Madness: Round 1 &#8211; Part 2</a> appeared first on <a href="https://static.dmcinfo.com/">DMC, Inc.</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>March Programming Madness &#8211; Let the Nerdament Begin</title>
		<link>https://static.dmcinfo.com/blog/29084/march-programming-madness-let-the-nerdament-begin/</link>
		
		<dc:creator><![CDATA[DMC]]></dc:creator>
		<pubDate>Tue, 20 Mar 2012 10:42:09 +0000</pubDate>
				<category><![CDATA[Culture]]></category>
		<category><![CDATA[LabVIEW]]></category>
		<category><![CDATA[Manufacturing Automation & Intelligence]]></category>
		<category><![CDATA[PLC]]></category>
		<category><![CDATA[Test and Measurement Automation]]></category>
		<category><![CDATA[HTML and CSS]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[MS Visual Studio/.NET]]></category>
		<guid isPermaLink="false">https://static.dmcinfo.com/blog/29084/march-programming-madness-let-the-nerdament-begin/</guid>

					<description><![CDATA[<p>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.) For a rundown of the competitors, you can check out the opening bracket or you can also review some of [&#8230;]</p>
<p>The post <a href="https://static.dmcinfo.com/blog/29084/march-programming-madness-let-the-nerdament-begin/">March Programming Madness &#8211; Let the Nerdament Begin</a> appeared first on <a href="https://static.dmcinfo.com/">DMC, Inc.</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">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.) For a rundown of the competitors, you can check out the <a href="/latest-thinking/blog/id/2620/march-programming-madness--the-bracket">opening bracket</a> or you can also <a href="/latest-thinking/blog/id/3290/march-programming-madness--the-snubs">review some of the snubs</a>. Once you are caught up, I hope that you are as excited for some fast-paced compiler vs. IDE action as I am.</p>



<p class="wp-block-paragraph">Our first matchup features the highly favored C# .Net taking on lowly, old-timey conference winner Punch Cards. Obviously, even if we weren’t a <a href="/about/partners">Microsoft Gold Partner</a> and I wasn’t such a <a href="/latest-thinking/blog/id/218/employee-spotlight-danny-budzinski">huge proponent of C#</a>, this still wouldn’t be much of a contest. However, there is some really fascinating history of the punch card system and how its impact can still be felt in programming today. Punch cards, in addition to setting the <a href="http://en.wikipedia.org/wiki/Punch_card#IBM_80_column_punched_card_formats_and_character_codes" target="_blank">80 column width limit on older terminal interfaces</a> that you might still see today, also served as the launch pad for tech-giant IBM (originally International Business Machines.) 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.</p>



<p class="wp-block-paragraph">Our second matchup, good ole’ plain C vs. VBA presents a somewhat more even pairing. For me, I can’t help but feel some affinity towards VBA, as was the medium for some of my earliest professional programming. 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. When you evaluate VBA in the context of <a href="http://msdn.microsoft.com/en-us/library/ee814737.aspx" target="_blank">what it’s expected to do</a>, it serves its purpose really, really well. However, this round it is up against C, whose versatility, in stark contrast to VBA, is practically unmatched. 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 <a href="http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html" target="_blank">one of the most widely used languages</a> around. 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.</p>



<p class="wp-block-paragraph">Matchup 3, Ruby on Rails and Matlab features 2 of the lesser known competitors coming into this tournament. Ruby on Rails is one of the newer kids on the block, having developed over only the last decade or so. Based on the Ruby language, which is widely used itself, Ruby on Rails is a language specifically geared towards web development. Its core principle of DRY (Don’t Repeat Yourself) coding is something every programmer should follow and the <a href="http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller" target="_blank">MVC architecture</a> inherent to RoR is one of several great ways to structure a program. All that being said, however, RoR suffers from some early growing pains between versions and compatibility and probably has some maturing to do. 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. 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. Matlab just seems to be more of a research tool than an application development platform. From weak typing to <a href="http://www.mathworks.com/discovery/matlab-gui.html" target="_blank">limited GUI tools</a>, the typical expectations of programmers just aren’t met, and accordingly, companies aren’t willing to invest in Matlab development licenses. 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.</p>



<p class="wp-block-paragraph">Our fourth and final matchup of the day, Ladder vs. Python is an intriguing matchup, because the 2 platforms are such polar opposites. Ladder’s low-level, no-nonsense programming is specifically targeted for robust, real-time systems needing reliable control. 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. Ladder logic is another case of a language being great at what it’s meant for. 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. On the flip side, Python was created to be one of the most flexible languages around and has a <a href="http://docs.python.org/py3k/library/" target="_blank">pretty impressive standard library</a>. 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 <a href="http://wiki.python.org/moin/Why%20is%20Python%20a%20dynamic%20language%20and%20also%20a%20strongly%20typed%20language" target="blank">it is enforced at runtime</a>. I also worry that, as an open source package, Python suffers from fragmentation, especially when it comes to getting started, <a href="http://wiki.python.org/moin/Which%20IDE%20is%20good%20for%20Python" target="_blank">choosing an IDE</a>, compiling, and <a href="http://wiki.python.org/moin/Which%20GUI%20is%20best%20for%20python%3F" target="_blank">developing GUI’s</a>. The choices can be overwhelming for a newcomer. Still, running the risk of global infrastructure spiraling out of control, I’m giving the nod to Python (in honor of <a href="http://www.danb0b.com/" target="_blank">Dan Aukes</a>) for the first upset of the year.</p>



<p class="wp-block-paragraph">Stay tuned for the second half of round 1 soon!</p>



<p class="wp-block-paragraph"><a href="/latest-thinking/blog/id/3290/march-programming-madness--the-snubs">Return to Part 2 &#8211; The Snubs</a></p>



<p class="wp-block-paragraph"><a href="/latest-thinking/blog/id/3633/march-programming-madness-round-1--part-2">Continue to Round 1, Part 2</a></p>



<figure class="wp-block-image"><img decoding="async" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/Nerdament-1_0.png" alt=""/></figure>
<p>The post <a href="https://static.dmcinfo.com/blog/29084/march-programming-madness-let-the-nerdament-begin/">March Programming Madness &#8211; Let the Nerdament Begin</a> appeared first on <a href="https://static.dmcinfo.com/">DMC, Inc.</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>March Programming Madness &#8211; The Bracket</title>
		<link>https://static.dmcinfo.com/blog/29116/march-programming-madness-the-bracket/</link>
		
		<dc:creator><![CDATA[DMC]]></dc:creator>
		<pubDate>Thu, 01 Mar 2012 13:15:54 +0000</pubDate>
				<category><![CDATA[Culture]]></category>
		<category><![CDATA[Embedded Development & Programming]]></category>
		<category><![CDATA[LabVIEW]]></category>
		<category><![CDATA[Manufacturing Automation & Intelligence]]></category>
		<category><![CDATA[PLC]]></category>
		<category><![CDATA[Test and Measurement Automation]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[MS Visual Studio/.NET]]></category>
		<guid isPermaLink="false">https://static.dmcinfo.com/blog/29116/march-programming-madness-the-bracket/</guid>

					<description><![CDATA[<p>With the final few plays of the super bowl still fresh in mind, we enter March on the verge of another of the greatest events in sports, the March Madness of Programming Languages.&#160;This epic, world-renowned event (not to be confused with the similarly named athletic event) pits some of best programming languages head to head. [&#8230;]</p>
<p>The post <a href="https://static.dmcinfo.com/blog/29116/march-programming-madness-the-bracket/">March Programming Madness &#8211; The Bracket</a> appeared first on <a href="https://static.dmcinfo.com/">DMC, Inc.</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">With the final few plays of the super bowl still fresh in mind, we enter March on the verge of another of the greatest events in sports, the March Madness of Programming Languages.&nbsp;This epic, world-renowned event (not to be confused with the similarly named athletic event) pits some of best programming languages head to head.</p>



<p class="wp-block-paragraph">At DMC, we pride ourselves in being fluent in many, many software languages from LabVIEW and .Net to PLC’s and microcontrollers.&nbsp;A team of engineers came up with a list of the world’s best programming languages and seeded them from 1 to 16.&nbsp;If these potential matchups don’t make your heart race you might want to see a doctor, because you are probably a robot.</p>



<p class="wp-block-paragraph">Over the month of March I will be weighting input from our engineers and readers to (arbitrarily) decide who moves on and who goes home.&nbsp;Obviously this is a completely subjective exercise, but I am hoping that it exposes the strengths of the contending languages and that we all gain exposure to new architectures and programming approaches.</p>



<p class="wp-block-paragraph"><a href="https://static.dmcinfo.com/blog/29087/march-programming-madness-the-snubs/">Continue on to Part 2 &#8211; The Snubs</a></p>



<p class="wp-block-paragraph">Now without further ado, I submit the initial rankings:</p>



<ol class="wp-block-list">
<li>C# .Net</li>



<li>Java</li>



<li>C++</li>



<li>C</li>



<li>LabVIEW</li>



<li>Ruby On Rails</li>



<li>Objective C</li>



<li>Ladder</li>



<li>Python</li>



<li>PHP</li>



<li>Matlab</li>



<li>VB .Net</li>



<li>VBA</li>



<li>Fortran</li>



<li>Assembly</li>



<li>Punch Cards</li>
</ol>



<p class="wp-block-paragraph">Feel free to submit your 2 cents if you feel like your favorite was left off the list or if you are abhorred by any of the ranks.&nbsp;Otherwise, check out the bracket and get ready for a crazy, action packed March of software reviews and architecture discussions!</p>



<figure class="wp-block-image"><img decoding="async" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/Nerdament-0_0.png" alt=""/></figure>



<p class="wp-block-paragraph"><a href="https://static.dmcinfo.com/blog/29087/march-programming-madness-the-snubs/">Continue on to Part 2 &#8211; The Snubs</a></p>
<p>The post <a href="https://static.dmcinfo.com/blog/29116/march-programming-madness-the-bracket/">March Programming Madness &#8211; The Bracket</a> appeared first on <a href="https://static.dmcinfo.com/">DMC, Inc.</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Remote Machine Monitoring–Connecting to a Modbus Network with Java and Jamod</title>
		<link>https://static.dmcinfo.com/blog/30245/remote-machine-monitoring-connecting-to-a-modbus-network-with-java-and-jamod/</link>
		
		<dc:creator><![CDATA[Jon Carson]]></dc:creator>
		<pubDate>Fri, 31 Jul 2009 14:48:07 +0000</pubDate>
				<category><![CDATA[Allen Bradley PLC]]></category>
		<category><![CDATA[Manufacturing Automation & Intelligence]]></category>
		<category><![CDATA[PLC]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[PC]]></category>
		<guid isPermaLink="false">https://static.dmcinfo.com/blog/30245/remote-machine-monitoring-connecting-to-a-modbus-network-with-java-and-jamod/</guid>

					<description><![CDATA[<p>For a recent project, I had an interesting challenge. It involved a (relatively) simple control system, with an Allen Bradley MicroLogix PLC, and 30 or so inputs and outputs. The challenge was that the customer wanted to be able to access (and potentially control) live machine data from anywhere on their network, while buying as [&#8230;]</p>
<p>The post <a href="https://static.dmcinfo.com/blog/30245/remote-machine-monitoring-connecting-to-a-modbus-network-with-java-and-jamod/">Remote Machine Monitoring–Connecting to a Modbus Network with Java and Jamod</a> appeared first on <a href="https://static.dmcinfo.com/">DMC, Inc.</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">For a recent project, I had an interesting challenge. It involved a (relatively) simple control system, with an Allen Bradley MicroLogix PLC, and 30 or so inputs and outputs. The challenge was that the customer wanted to be able to access (and potentially control) <i>live</i> machine data from anywhere on their network, while buying as little hardware or software as possible. After a bit of research I came up with the following solution:</p>



<p class="wp-block-paragraph">The only entryway to the data that was available with no additional hardware was the Modbus RTU network already in place, that fed data from the PLC (master) to some intelligent analog gauges (slaves) in the field. If I tapped into that, and sent the signal through a cheap Modbus RTU to TCP/IP converter (the only hardware addition necessary), I knew I could just plug into the customer’s existing Ethernet network, and have all the data I needed available from any Modbus TCP/IP server also plugged into the network.</p>



<p class="wp-block-paragraph">That was the easy part. The hard part was finding a way to display that data in a meaningful way on a PC. After a bit of research I found two options. Two libraries, one for Visual Studio .NET offered by <a href="https://www.win-tech.com/html/devtools.htm">Win-TECH</a>, and one for Java (called jamod), that could set up both client and server Modbus TCP/IP connections from a PC. The core differences were that the .NET library was supplied by a private company and cost thousands of dollars, whereas jamod was open source, had an active online community, and was free to distribute under a modified BSD license. Even after weighing the risks of leaning on an open source solution (lack of support), the jamod solution seemed a little more enticing.</p>



<p class="wp-block-paragraph">After surprisingly little tinkering around, I had it up and running. The library simply extends the regular Java TCP/IP Connections class, and offers many of the same connectivity functions, along with all of the standard Modbus communication functions. It really opens up the possibilities for custom remote monitoring software. My customer can now log into their machine, check the status of (or modify) all of its parameters, and log the data to a local CSV file, all from any computer that can run the Java Runtime Environment. Even neater, the JRE is available on many mobile platforms, giving anyone with the right smart phone the ability to peek into the machine data.</p>



<p class="wp-block-paragraph">Jamod truly opens some exciting doors. This open source library, combined with Modbus (the most widely used protocol in the manufacturing world), makes it easier than ever to create customized remote monitoring and control applications with extremely low hardware and software costs.</p>



<p class="wp-block-paragraph"><a href="https://static.dmcinfo.com/?s=software+and+web+development">Learn more about DMC&#8217;s software and web development services.</a></p>
<p>The post <a href="https://static.dmcinfo.com/blog/30245/remote-machine-monitoring-connecting-to-a-modbus-network-with-java-and-jamod/">Remote Machine Monitoring–Connecting to a Modbus Network with Java and Jamod</a> appeared first on <a href="https://static.dmcinfo.com/">DMC, Inc.</a>.</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
