<?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>Barr Code &#187; Uncategorized</title>
	<atom:link href="http://embeddedgurus.com/barr-code/category/uncategorized/feed/" rel="self" type="application/rss+xml" />
	<link>http://embeddedgurus.com/barr-code</link>
	<description>A Blog by Michael Barr</description>
	<lastBuildDate>Wed, 25 Jan 2012 09:45:49 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Beer and Boards at ESC Silicon Valley</title>
		<link>http://embeddedgurus.com/barr-code/2011/04/beer-and-boards-at-esc-silicon-valley/</link>
		<comments>http://embeddedgurus.com/barr-code/2011/04/beer-and-boards-at-esc-silicon-valley/#comments</comments>
		<pubDate>Thu, 07 Apr 2011 00:52:05 +0000</pubDate>
		<dc:creator>Michael Barr</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[education]]></category>
		<category><![CDATA[embedded]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[realtime]]></category>
		<category><![CDATA[trends]]></category>

		<guid isPermaLink="false">http://embeddedgurus.com/barr-code/?p=609</guid>
		<description><![CDATA[It really looks like I&#8217;ve picked the wrong year to miss ESC Silicon Valley (due to a schedule conflict). (The last time I wasn&#8217;t at ESC, it was 1997 and White Zombie was still together. The first thing I&#8217;d really liked to have seen is Steve Wozniak&#8216;s keynote speech. The second thing I&#8217;m really sad [...]]]></description>
			<content:encoded><![CDATA[<p>It really looks like I&#8217;ve picked the wrong year to miss <a href="http://esc.eetimes.com/siliconvalley/">ESC Silicon Valley</a> (due to a schedule conflict). (The last time I wasn&#8217;t at ESC, it was 1997 and <a href="http://en.wikipedia.org/wiki/White_Zombie_(band)">White Zombie</a> was still together.  The first thing I&#8217;d really liked to have seen is <a href="http://en.wikipedia.org/wiki/Steve_Wozniak">Steve Wozniak</a>&#8216;s keynote speech. The second thing I&#8217;m really sad to miss is the just announced &#8220;Beer and Boards&#8221; party/giveaway.</p>
<p><a href="http://esc.eetimes.com/siliconvalley/boards_beer">Beer and Boards</a> sounds really fun. Here&#8217;s how it works: Every &#8220;All Access&#8221; attendee will get to choose one of three free development kits to take home:</p>
<ul>
<li><a href="http://focus.ti.com/lit/ug/swru270a/swru270a.pdf">TI CC2540DK-MINI Bluetooth Low Energy Kit</a></li>
<li><a href="http://www.element14.com/community/groups/xl-star">XL_STAR MMA8451 Accelerometer Kit</a></li>
<li><a href="http://www.em.avnet.com/ctf_shared/evk/df2df2usa/xlx-s6-lx9-microboard-pb020411.pdf">Xilinx Spartan-6 FPGA LX9 MicroBoard Kit</a></li>
</ul>
<p>Once you select your preferred kit you will receive information on the time and place for the relevant Beer and Boards party, at which you will get to drink free beer at a special meet-and-greet with one of your kit&#8217;s designers to talk about your new kit and its capabilities. Three boards spread out over three days.</p>
<p>Nerds drinking beer! I love it. What will they think of next?</p>
<p>Before you register for this year&#8217;s ESC, be sure to check out my earlier post <a href="http://embeddedgurus.com/barr-code/2011/03/save-big-on-embedded-systems-conference-registration/">Save Big on Embedded Systems Conference Registration</a>. Also, remember to use the promo code BARR20 to save an additional 20% off registration and be entered to win a free seat at a future <a href="http://netrino.com/Boot-Camp">Embedded Software Boot Camp</a> or one of 20 free copies of the <a href="http://netrino.com/Coding-Standard">Embedded C Coding Standard</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://embeddedgurus.com/barr-code/2011/04/beer-and-boards-at-esc-silicon-valley/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Save Big on Embedded Systems Conference Registration</title>
		<link>http://embeddedgurus.com/barr-code/2011/03/save-big-on-embedded-systems-conference-registration/</link>
		<comments>http://embeddedgurus.com/barr-code/2011/03/save-big-on-embedded-systems-conference-registration/#comments</comments>
		<pubDate>Mon, 21 Mar 2011 15:55:35 +0000</pubDate>
		<dc:creator>Michael Barr</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[education]]></category>
		<category><![CDATA[embedded]]></category>
		<category><![CDATA[trends]]></category>

		<guid isPermaLink="false">http://embeddedgurus.com/barr-code/?p=596</guid>
		<description><![CDATA[The big Embedded Systems Conference 2011 Silicon Valley show opens six weeks from today. This should have been my fourteenth consecutive year as a speaker, but I have an unfortunate calendar conflict that first week of May. Judging from the speaker and course lineups, it looks like it&#8217;s going to be a really great ESC [...]]]></description>
			<content:encoded><![CDATA[<p>The big <a href="http://esc.eetimes.com/siliconvalley/">Embedded Systems Conference 2011 Silicon Valley</a> show opens six weeks from today. This should have been my fourteenth consecutive year as a speaker, but I have an unfortunate calendar conflict that first week of May.</p>
<p>Judging from the speaker and course lineups, it looks like it&#8217;s going to be a really great ESC conference again this year. I strongly encourage you to go if you can. Here are five great reasons to <a href="https://esc.embedded.com/sv/2011">register</a> ASAP:</p>
<p>#1: IT&#8217;S CHEAPER THIS WEEK! &#8211; The current early registration pricing expires this Friday, March 25. Registering now will save you $400 off the onsite price of the All Access, 4-Day, and 3-Day Conference Passes or $200 off a 1-Day Pass. (Note there are also <a href="http://esc.eetimes.com/siliconvalley/group_discounts">group discounts</a> available.)</p>
<p>#2: USE PROMO CODE &#8220;BARR20&#8243; TO SAVE AN ADDITIONAL 20%! &#8211; During the registration process there is a place to enter a &#8220;Promo Code&#8221;. No matter what conference package you select, you will receive an additional 20% off the price if you use my special code &#8220;BARR20&#8243;. For the All Access Conference Pass that&#8217;s an additional $479 discount on top of the $400 above. Wow!</p>
<p>#3: GRAND PRIZE: FREE SEAT AT EMBEDDED SOFTWARE BOOT CAMP &#8211; Many people have told me that their company only has a set amount of budget for training and conferences per year and that the Embedded Systems Conference and Embedded Software Boot Camp have to compete for those funds. Well, now you can have your cake and eat it to. One lucky ESC conference attendee will be selected at random to also attend the <a href="http://netrino.com/Boot-Camp">Embedded Software Boot Camp</a> for free (minimum $2,995 value). (To be entered to win, you must use the &#8220;BARR20&#8243; promo code when you register.)</p>
<p>#4: 20 RUNNER-UP PRIZES: EMBEDDED C CODING STANDARD BOOK &#8211; Twenty lucky ESC conference attendees will be selected at random to receive a print copy of the <a href="http://netrino.com/Coding-Standard">Embedded C Coding Standard </a>book. (To be entered to win, you must use the &#8220;BARR20&#8243; promo code when you register.)</p>
<p>#5: THE CONFERENCE CONTENT &#8211; Use the <a href="http://schedule.esc-sv09.techinsightsevents.com/">ESC Schedule Builder</a> to choose from hundreds of training sessions by dozens of expert speakers spread across 25 technical tracks. To this depth and breadth of topics this year are added the <a href="http://www.multicore-expo.com/">6th Annual Multicore Expo</a> and <a href="http://esc.eetimes.com/siliconvalley/ti_tech_days">Texas Instrument&#8217;s Technology Day 2011</a> programs. Wow!</p>
]]></content:encoded>
			<wfw:commentRss>http://embeddedgurus.com/barr-code/2011/03/save-big-on-embedded-systems-conference-registration/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>What is Arduino?</title>
		<link>http://embeddedgurus.com/barr-code/2011/02/what-is-arduino/</link>
		<comments>http://embeddedgurus.com/barr-code/2011/02/what-is-arduino/#comments</comments>
		<pubDate>Fri, 18 Feb 2011 20:40:41 +0000</pubDate>
		<dc:creator>Michael Barr</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[embedded]]></category>
		<category><![CDATA[firmware]]></category>
		<category><![CDATA[trends]]></category>

		<guid isPermaLink="false">http://embeddedgurus.com/barr-code/?p=513</guid>
		<description><![CDATA[Believe it or not, artists, hobbyists, and other &#8220;makers&#8221; have discovered embedded computing. Increasingly, they&#8217;re turning to an open source hardware platform called Arduino to put firmware inside their creations. Over 100,000 of these inexpensive embedded systems have apparently been sold for use in prototyping and in a range of low-volume &#8220;products.&#8221; What is Arduino? [...]]]></description>
			<content:encoded><![CDATA[<p>Believe it or not, artists, hobbyists, and other &#8220;<a href="http://makerfaire.com/">makers</a>&#8221; have discovered embedded computing.  Increasingly, they&#8217;re turning to an open source hardware platform called <a href="http://en.wikipedia.org/wiki/Arduino">Arduino</a> to put firmware inside their creations. Over 100,000 of these inexpensive embedded systems have apparently been sold for use in prototyping and in a range of low-volume &#8220;products.&#8221;</p>
<p><strong>What is Arduino?</strong></p>
<p>Arduino is the name of a family of related circuit boards, which includes the Arduino One shown in the photo below.  The official website of the Arduino project is <a href="http://www.arduino.cc">http://www.arduino.cc</a>. </p>
<p><img src="http://arduino.cc/en/uploads/Main/ArduinoUnoFront.jpg" alt="Arduino Uno Circuit Board" /></p>
<p>Like many open source projects, there appears to be a lot of branching from the original design. So what follows is a generalization. Arduino is based on the Atmel AVR microcontrollers, such as the <a href="http://www.atmel.com/dyn/resources/prod_documents/doc8161.pdf">ATmega328</a>. The ATmega328 is an 8-bit MCU with on-chip memory in the form of 32K flash, 2K SRAM, and 1K EEPROM. In the Arduino designs, the processor is generally clocked at 16MHz.</p>
<p>There are also a whole host of pin-compatible extension boards, containing displays, buttons, sensors, actuators, network interfaces and/or wire-wrap prototyping areas.</p>
<p>The Arduino IDE is an open source cross-platform tool (i.e., written in Java) that is based on the avr-gcc compiler (a variant of the GNU compiler for 8-bit AVRs).  Though you can program in the &#8220;Arduino language,&#8221; this is really just a set of function calls that gets translated into C&#8211;so you can also program in C or C++ if you prefer. </p>
<p>An open source bootloader (0.5K) makes downloading your programs to the Arduino board easy.</p>
<p><strong>Should you care about Arduino?</strong></p>
<p>As a professional embedded software developer, I don&#8217;t have much use for a prototyping board like the Arduino.  I&#8217;m generally handed a custom board by a hardware designer on my team.  And many of you design both the hardware and the software for your projects.  So why should we care about Arduino?</p>
<p>I don&#8217;t think I know the answer to this question yet.  But it is very interesting to find embedded software being used by such a diverse group of artists, hobbyists, and entrepreneurs.  What do you think?</p>
]]></content:encoded>
			<wfw:commentRss>http://embeddedgurus.com/barr-code/2011/02/what-is-arduino/feed/</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
		<item>
		<title>Embedded Software Community Survey Findings</title>
		<link>http://embeddedgurus.com/barr-code/2011/02/embedded-software-community-survey-findings/</link>
		<comments>http://embeddedgurus.com/barr-code/2011/02/embedded-software-community-survey-findings/#comments</comments>
		<pubDate>Mon, 14 Feb 2011 16:13:04 +0000</pubDate>
		<dc:creator>Michael Barr</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[embedded]]></category>
		<category><![CDATA[firmware]]></category>
		<category><![CDATA[trends]]></category>

		<guid isPermaLink="false">http://embeddedgurus.com/barr-code/?p=499</guid>
		<description><![CDATA[In addition to blogging here and tweeting (there), I also write a monthly e-mail newsletter about embedded software that is called Firmware Update. More than 15,000 embedded software developers are currently subscribed to this newsletter. Here&#8217;s what I learned in a recent survey of those newsletter readers, in which 452 individuals participated. Geography Embedded software [...]]]></description>
			<content:encoded><![CDATA[<p>In addition to blogging here and tweeting (<a href="http://twitter.com/netrinomike">there</a>), I also write a monthly e-mail newsletter about embedded software that is called <a href="http://firmwareupdate.net">Firmware Update</a>. More than 15,000 embedded software developers are currently subscribed to this newsletter. Here&#8217;s what I learned in a recent survey of those newsletter readers, in which 452 individuals participated.</p>
<p><strong>Geography</strong></p>
<p>Embedded software engineers are spread all over the world.  Of the survey respondents, only 40% are located in the United States; California houses about 1/4 of those.  Two other well represented countries are India (9%) and Canada (7%).  The remainder of respondents are spread across some 43 other countries, from Argentina to South Africa. Every continent but Antarctica is on the list. It&#8217;s amazing how quickly the world is shrinking because of the Internet, isn&#8217;t it?</p>
<p><strong>Age</strong></p>
<p>According to this survey, the average age of an embedded software engineer is approximately 37 years. Overall, approximately 55% are between 20 and 39 years of age and 45% are between 40 and 69. Just one respondent is 70 or over and none are under 20.</p>
<p><strong>Education</strong></p>
<p>Here I&#8217;ll admit to being a bit shocked: we are as a group far more educated than I thought going into the survey. Approximately 49% of respondents hold a graduate degree.  These are mostly Master of Science degrees, of course. But almost 1 out of 20 of us holds a PhD. On the flipside, just 5% of respondents said they are practicing embedded software with only a high-school diploma or 2-year degree.</p>
<p>As I expected, we&#8217;ve mostly been educated as Electrical Engineers. Over 55% of all the undergraduate and graduate degrees held by respondents were EE degrees. Interestingly, Computer Engineering was slightly more popular than Computer Science among the rest. Though I offered a free-form &#8220;Other&#8221; textbox and quite a few folks entered something there, there were no large percentage of other degrees. Only Mechanical Engineering, Math, and Physics stood out as at least occasionally repeated answers. (Winner for most surprising answer: Psychology.)</p>
<p><strong>Employment and Team Size</strong></p>
<p>The number of unemployed respondents was about 3%.  The vast majority of the rest are paid as full-time salaried employees. But approximately 15% of us are consultants (&#8220;on a per project basis; at times multiple clients simultaneously&#8221;) or contractors (&#8220;by contract to one large company for a set length of time&#8221;). And some of the consultants also have a full-time job or a contractor position.</p>
<p>The total number of embedded software engineers employed at the same company varies widely, from 1 to over 1,000.  But the single most common choice was 2-4.  In my mission to improve the quality of embedded software across industries, I&#8217;ve seen first hand that one of the reasons for poor quality is that a small team of firmware engineers working at a company that specializes in other types of engineering or product design tends not to be connected into the latest best practices.</p>
<p>The number of embedded software engineers on respondents&#8217; current projects is smaller, of course, and ranged from 1 to over 200.  Not surprisingly, project teams with more than 20 firmware engineers are quite rare (just 5%). On the flip side, teams with just a single firmware engineer are quite common (almost 25%).  The average team size seems to be around 1.5-2.</p>
<p><strong>Experience</strong></p>
<p>As I planned the survey, I hoped to distinguish three types of experience: electronics design, embedded programming, and other programming.  So I asked three distinct questions, each with the same answer choices.</p>
<p>Here&#8217;s my interpretation of the answers:</p>
<ul>
<li>Over 60% of embedded software developers also design hardware&#8211;at least from time to time&#8211;or came to programming after first working as a hardware designer.  That&#8217;s a big number. Shockingly, it&#8217;s an even bigger number than the percentage holding an EE degree cited above. The average number of years of hardware design experience is around 8.5</li>
<li>The average amount of embedded programming experience is approximately 12 years.</li>
<li>The average number of years of other programming experience is about 7.5.</li>
</ul>
<p>In other words, embedded software developers are jacks of all trades. Many of us weave back and forth in our careers, and even sometimes within a single project, between electronics or chip design, writing low-level embedded software, and writing software for PCs, websites, and other platforms.</p>
]]></content:encoded>
			<wfw:commentRss>http://embeddedgurus.com/barr-code/2011/02/embedded-software-community-survey-findings/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Baltimore, Technology, and Startups</title>
		<link>http://embeddedgurus.com/barr-code/2011/02/baltimore-technology-and-startups/</link>
		<comments>http://embeddedgurus.com/barr-code/2011/02/baltimore-technology-and-startups/#comments</comments>
		<pubDate>Tue, 08 Feb 2011 00:34:57 +0000</pubDate>
		<dc:creator>Michael Barr</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[baltimore]]></category>
		<category><![CDATA[netrino]]></category>
		<category><![CDATA[startups]]></category>
		<category><![CDATA[trends]]></category>

		<guid isPermaLink="false">http://embeddedgurus.com/barr-code/?p=487</guid>
		<description><![CDATA[In the coming weeks and months, I&#8217;ll be expanding the range of subjects that I blog&#8211;and tweet&#8211;about. For the last five years I have been focusing my writing in these venues almost exclusively on the development of embedded software. Although embedded systems is my first and foremost passion, I maintain several other interests worthy of [...]]]></description>
			<content:encoded><![CDATA[<p>In the coming weeks and months, I&#8217;ll be expanding the range of subjects that I blog&#8211;and <a href="http://twitter.com/netrinomike">tweet</a>&#8211;about.  For the last five years I have been focusing my writing in these venues almost exclusively on the development of embedded software.  Although embedded systems is my first and foremost passion, I maintain several other interests worthy of attention.  Three of these subjects are Baltimore, technology, and startups.  For me, these subjects are intertwined with embedded.</p>
<p><strong>Baltimore</strong></p>
<p>I was born and raised in <a href="http://en.wikipedia.org/wiki/Baltimore">Charm City</a> and have lived and worked within about 35 miles of downtown Baltimore in all of the years since; I&#8217;m writing this from about 10 miles out.  I&#8217;m thus a proud <a href="http://www.urbandictionary.com/define.php?term=Baltimoron">Baltimoron</a> (er, Baltimorean?).  Though the whole Old Bay seasoning/Maryland crab cakes thing never caught on with me (I&#8217;m a vegetarian, <a href="http://en.wikipedia.org/wiki/Culture_of_Baltimore#Hons">hon</a>) I maintain many ties to The City That Reads and, as a result, struggle to this day with the proper pronunciation of words like museum, wash, and sink.</p>
<p>Now, Baltimore is not particularly known for its embedded software jobs.  Yet <a href="http://www.ganssle.com">Jack Ganssle</a> and <a href="/stack-overflow/">Nigel Jones</a> as well as many top-notch embedded system designers are located right here.  Unfortunately, most of the local embedded developers would have to kill you if they told you what kinds of systems they design.  (Suffice it to say that the folks over at nearby <a href="http://www.nsa.gov">NSA</a> and their many subcontractors make a heck of a lot more receivers than they do transmitters.)</p>
<p>You&#8217;ll be hearing more from me about what&#8217;s going on locally here in Baltimore, because that&#8217;s my community.  <a href="http://www.huffingtonpost.com/marian-salzman/why-local-is-the-new-glob_b_450351.html">Local is the new global</a>, after all.</p>
<p><strong>Technology</strong></p>
<p>As much as I truly love working in the field of embedded systems, I recognize that what we do is typically everything but state of the art.  At a very high level, our specialty is putting decades old processor technology and trusted reliable software languages and libraries into previously unthinkable applications&#8211;in a diverse set of domains, from medical devices to automobiles.  That&#8217;s <a href="/barr-code/2009/08/real-men-program-in-c/">why we mostly still use the C programming language</a>.</p>
<p>However, like most good technologists, I maintain an active interest in what&#8217;s going on in the state of the art in my field.  On the software side, what seems to be hottest right now is <a href="http://kellicker.wordpress.com/2010/05/11/tim-oreilly-cloud-computing-keynote/">cloud computing</a>, <a href="http://radar.oreilly.com/2010/11/the-expanding-influence-of-app.html">smartphone apps</a>, and <a href="http://radar.oreilly.com/2009/03/big-data-technologies-report.html">big data</a>.</p>
<p>I read and think a lot about all of this.  And from now on I&#8217;ll be passing along bits and pieces that I hope you&#8217;ll find interesting too.</p>
<p><strong>Startups</strong></p>
<p>Finally, though I am principally an engineer, I also have an MBA.  And for over 12 years I have run a successful small business (i.e., <a href="http://www.netrino.com">Netrino</a>).  I&#8217;ve also been involved in a few technology startups that didn&#8217;t go so far.  And I really enjoy interacting with other entrepreneurs, helping them refine their ideas, and sharing what I&#8217;ve learned as a businessman.  (Over the years, Netrino has also helped a number of startups develop prototype embedded systems.)</p>
<p>This year all of this stuff seems to be coming together in my world.  That&#8217;s partly because <a href="http://startupbaltimore.org/">Baltimore has a rapidly expanding technology startup community</a>.  The heart of this community is at the <a href="http://www.etcbaltimore.com/">Emerging Technology Center in downtown Baltimore</a>, where I&#8217;ll be increasingly making time to get involved.  There&#8217;s also the wonderful <a href="http://baltimorenode.org/">Baltimore Node Hackerspace</a>, where Baltimore, technology, and startups actually intersect with embedded systems design.</p>
<p>I think these additions to the topics covered here and in <a href="http://twitter.com/netrinomike">my twitter feed</a> will make for an even more interesting read.  I hope you agree and would love to hear your thoughts in the comments below.</p>
]]></content:encoded>
			<wfw:commentRss>http://embeddedgurus.com/barr-code/2011/02/baltimore-technology-and-startups/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Social Networking for Engineers</title>
		<link>http://embeddedgurus.com/barr-code/2011/02/social-networking-for-engineers/</link>
		<comments>http://embeddedgurus.com/barr-code/2011/02/social-networking-for-engineers/#comments</comments>
		<pubDate>Fri, 04 Feb 2011 17:37:01 +0000</pubDate>
		<dc:creator>Michael Barr</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[engineering]]></category>
		<category><![CDATA[trends]]></category>

		<guid isPermaLink="false">http://embeddedgurus.com/barr-code/?p=469</guid>
		<description><![CDATA[Would your best friend describe you as a particularly &#8220;social&#8221; person? Do you like to &#8220;network&#8221; and meet new people? If you&#8217;re an engineer, your answer is probably something like, &#8220;Um, no and no. Now can I slink back to my cube, Mr. Nosy McSales Guy?&#8221; The growth of &#8220;social networking&#8221; in its many forms [...]]]></description>
			<content:encoded><![CDATA[<p>Would your best friend describe you as a particularly &#8220;social&#8221; person?  Do you like to &#8220;network&#8221; and meet new people?  If you&#8217;re an engineer, your answer is probably something like, </p>
<blockquote><p>
&#8220;Um, no and no.  Now can I slink back to my cube, Mr. Nosy McSales Guy?&#8221; </p></blockquote>
<p>The growth of &#8220;social networking&#8221; in its many forms is a remarkable phenomenon that&#8217;s proving powerful enough to reshape the economic landscape and trouble despotic regimes.  For example, if (6 year old!) <a href="http://www.techxav.com/2010/03/19/if-facebook-were-a-country/">Facebook were a country</a> it would already be the world&#8217;s 3rd most populous.</p>
<p>That we the engineers&#8211;who ultimately make stuff like this possible&#8211;are mostly a loose band of individuals self-selected for our lack of people skills (a key trait that allows us to sit in cubes all day focusing deep-deep-deep on new technology) may explain why so many of us are luddites when it comes to using this &#8220;social&#8221; technology.  </p>
<p>Some of us rationalize that we don&#8217;t like connecting with people offline, so why would we do that online.  Others that reading status updates from other people will take valuable time away from more important stuff.  <a href="http://www.youtube.com/watch?v=59GSiHfG1EM">This fun video</a> sums it all up,</p>
<blockquote><p>&#8220;Until recently, wasting time on computers was the domain of engineers alone.  Now even my Nana wants to keep me up to date on the status of her cats!&#8221;</p></blockquote>
<p>But there&#8217;s a lot of value in social networking for engineers.  Here&#8217;s how I use three social networking websites and why you should join them too.</p>
<p><strong>LinkedIn</strong> &#8212; <em>my cloud-based self-updating address book</em></p>
<p>Every user on <a href="http://linkedin.com">LinkedIn</a> creates a &#8220;public profile page&#8221;, which is something like a resume.  Your profile gives your current job title, the name of your employer, and the nearest big city.  If you want, your public profile also has space for you to expand on what you do in your current job or in your career generally.  You can also list where you went to University, what you majored in, and your past employment history&#8211;complete with praise quotes from former colleagues and managers.</p>
<p>When you &#8220;connect&#8221; to another LinkedIn user, they get to see your private information too.  This includes (by default) your e-mail address and phone number, as well as the names of your other connections.  The majority of LinkedIn users seem to have on the order of 100 connections once they get setup.  Your &#8220;in&#8221; list consists mostly of current and past colleagues, perhaps some classmates or other chums, etc. </p>
<p>Although it is not specifically advertised this way and has many other valuable features, I think of LinkedIn as primarily my cloud-based self-updating address book.  It&#8217;s an address book in that I can easily search for your phone number or e-mail address once we connect.  If I can&#8217;t remember or spell your last name, I can search by first name and anything else I can remember about you, like the name of an employer.  And, as long as you take the few minutes to update your profile page and contact info each time you change jobs, we&#8217;ll never lose touch with each other.  Wow!</p>
<p>I&#8217;ve used LinkedIn to easily reconnect with old friends as well as to stay connected to colleagues, friends, and pretty much anyone who hands me their business card.  Although I also have an offline address book, that&#8217;s now much smaller than it used to be&#8211;and just for tracking those phone numbers and e-mail addresses that I use on a weekly or monthly basis.</p>
<p>There are smartphone apps for LinkedIn and I have one on my iPhone, but I rarely use it.  I don&#8217;t visit LinkedIn every day or even every week.  Instead I visit the LinkedIn website in little bursts&#8211;such as just after a conference&#8211;or when I want to find someone&#8217;s phone number.  I&#8217;ve also turned off most of their automatic e-mails at this point, though those can be useful prompts when you&#8217;re just getting started.</p>
<p>You can view my public profile at <a href="http://linkedin.com/in/netrinomike">http://linkedin.com/in/netrinomike</a>.  If we&#8217;ve met somewhere (online or off), feel free to send me an invitation.</p>
<p><strong>Twitter</strong> &#8212; <em>my own private specialized news service</em></p>
<p><a href="http://twitter.com">Twitter</a> is something completely different.  In fact, it is hard to describe what twitter is.  That&#8217;s partly because it is many different things to many different people.  For example, I often hear people say they don&#8217;t use twitter because they don&#8217;t want to know what their friend Joe had for lunch.  But I&#8217;ve been using Twitter almost two years and have never learned what anyone had for lunch there.</p>
<p>Thus rather than try to describe Twitter or its capabilities, I&#8217;ll just tell you how I use it as an engineer.  I currently &#8220;follow&#8221; 276 twitter users.  Just a handful of these are &#8220;friends&#8221;, though a larger set are &#8220;acquaintances&#8221;; most I&#8217;ve never met.  When one of the users that I follow writes something (in the lingo, &#8220;tweets&#8221;), I see it in a timeline of recent posts.  All of the posts are short text (maximum 140 characters).  I usually check in on this timeline 1 or 2 times a day, at which point I scan them for interesting bits of information; except for sometimes following links to longer articles, this activity takes on the order of 15 minutes a day tops.</p>
<p>I DON&#8217;T follow users who tweet a lot&#8211;say more than ten times per day (a quick look suggests they collectively average less than one per day)&#8211;for long.  And I DON&#8217;T follow users that tweet what they ate for lunch.  In fact, I ONLY follow users that typically include a link in every tweet.  That is, what they are doing is feeding me a headline of possible interest; if it is of interest and I have time, then I follow the link to read more.</p>
<p>The vast majority of the users I follow are in the embedded systems design community.  Some are engineers.  Some are marketers.  Some sell tools that I use.  Some are just in software or engineering more broadly.  A few cover hobby interests of mine.  The best tweeters always stay on topic, in their area of expertise&#8211;just as I try to do by posting from a narrower topic area than I read.</p>
<p>From reading these streams of short headlines I stay vastly more up to date on the technologies and products and subjects of most interest to me than was ever possible before.  I&#8217;ve basically stopped reading newspaper websites and some blogs and read twitter instead.  (But just like printed newspapers, when you don&#8217;t have time to keep up, the old stuff just drifts to the bottom of the stack where you may never get to it.)</p>
<p>By the way, I read and post Twitter messages almost exclusively from an app (<a href="http://twitterrific.com/iphone">Twitterific</a>) on my iPhone.  I hardly ever visit the Twitter website directly.  I prefer the user experience of the app and can easily find spare minutes to read from my phone while away from my desk.</p>
<p>You can view a timeline of my tweets at <a href="http://twitter.com/netrinomike">http://twitter.com/netrinomike</a>.  If you find the kinds of links I post there interesting, feel free to &#8220;follow&#8221; me.  Unlike most other social networking services, you can follow anyone on Twitter just for knowing their handle.</p>
<p><strong>Delicious</strong> &#8212; <em>my Internet memory book</em></p>
<p><a href="http://www.delicious.com/">Delicious</a> is an Internet bookmarking service that can be social if you want it to be.  By bookmarking service I mean that it&#8217;s an alternative to the long list of bookmarks you&#8217;ve probably been keeping in your browser.  </p>
<p>Rather, as I come across interesting web pages during Internet research, I save those I think I may want to come back to sometime later in delicious.  There are a number of advantages of keeping bookmarks in this way:</p>
<ul>
<li>you can add notes to each bookmark
<li>you can categorize (&#8220;tag&#8221;) each bookmark in as many ways as you want  (e.g., &#8220;embedded&#8221; + &#8220;bloggers&#8221;)
<li>you can search for a previous bookmark by keyword or tag
<li>your bookmarks are not tied to a specific browser on a specific computer
</ul>
<p>After using Delicious for more than five years, I now keep just 12 bookmarks in my web browser.  These are links that I use daily or weekly.  One of those is a shortcut to add the page I&#8217;m on to delicious; another to my delicious history.</p>
<p>Delicious can be social in that you can easily share links with friends and see what&#8217;s popular across all users and things like that.  I never use any of those features.  (For one thing, what&#8217;s popular on the whole site never includes the stuff about embedded software that I&#8217;m most passionate about.)  But though I don&#8217;t connect to other delicious users much I do make the majority of my bookmarks public&#8211;so you can browse or search them too.</p>
<p>You can see my public bookmarks at <a href="http://delicious.com/frappucino">http://www.delicious.com/frappucino</a>.</p>
<p>Please share your experiences with social networking and suggestions for other useful services in the comments below.  (I do use Facebook, by the way, but not for professional purposes.)</p>
]]></content:encoded>
			<wfw:commentRss>http://embeddedgurus.com/barr-code/2011/02/social-networking-for-engineers/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Is a Smartphone an Embedded System?</title>
		<link>http://embeddedgurus.com/barr-code/2011/01/is-an-iphone-an-embedded-system/</link>
		<comments>http://embeddedgurus.com/barr-code/2011/01/is-an-iphone-an-embedded-system/#comments</comments>
		<pubDate>Thu, 27 Jan 2011 20:28:40 +0000</pubDate>
		<dc:creator>Michael Barr</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[embedded]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[trends]]></category>

		<guid isPermaLink="false">http://embeddedgurus.com/barr-code/?p=462</guid>
		<description><![CDATA[When I wrote my first book about embedded programming, back in the late 1990&#8242;s, I carefully defined the term embedded system as follows: An embedded system is a combination of computer hardware and software, and perhaps additional mechanical or other parts, designed to perform a dedicated function. In some cases, embedded systems are part of [...]]]></description>
			<content:encoded><![CDATA[<p>When I wrote <a href="http://www.amazon.com/dp/1565923545/netrino">my first book about embedded programming</a>, back in the late 1990&#8242;s, I carefully defined the term <em>embedded system</em> as follows:</p>
<blockquote><p>An embedded system is a combination of computer hardware and software, and perhaps additional mechanical or other parts, designed to perform a dedicated function.   In some cases, embedded systems are part of a larger system or product, as is the case of an anti-lock braking system in a car. Contrast with general-purpose computer.</p></blockquote>
<p>I think this language still does a good job of capturing the difference between embedded and general-purpose computers.  (In a sign of the times that is simultaneously uplifting and depressing to me, this exact language has been literally copied all over the Internet, mostly without any citation whatsoever.)  But there have always been gray areas in the middle and the consumer electronics market is moving toward even greater blur.</p>
<p>Smartphones and tablet computers&#8211;like the Apple (<a href="http://finance.yahoo.com/q?d=t&amp;s=AAPL">Nasdaq:AAPL</a>) <a href="http://www.apple.com/iphone">iPhone</a> and <a href="http://www.apple.com/ipad">iPad</a>, as well as the many Android-powered devices&#8211;clearly lie somewhere between embedded system and general purpose computer.  Indeed, it has been helpful to me at times to think of Apple as a company that has profited by moving away from designing configurable and openable general purpose computers and toward designing more restricted and clearly physically closed embedded systems faster than its competitors.</p>
<p>So far this year, I&#8217;ve been finding time to play around with iPhone programming.  (My first app has nothing to do with embedded systems, so won&#8217;t rate a mention in this blog even after it releases.)  And I&#8217;m happy to report that in several ways the experience of writing iOS applications is similar to embedded programming.  You program mostly in C (wrapped in a layer of <a href="http://en.wikipedia.org/wiki/Objective-C">Objective-C</a>).  And you must worry about writing code that uses the processor and memory efficiently.  I feel right at home!</p>
<p>However, programming for iOS is also like programming for big general-purpose computers in that there are vast API libraries available to separate you from the hardware and low-level driver details.  And there&#8217;s more memory and CPU available than in the vast majority of embedded systems.</p>
<p>Smartphones and tablet computers truly are at the crossroads between embedded systems and general purpose computers.  If you are coming to them from the perspective of a firmware developer, you can think of them as merely very high end embedded systems.  Or if you are coming from the world of general-purpose computing, you can think of them as resource-constrained computers reminiscent of an earlier era.  Either way, you&#8217;re bound to find some things you like about these new programming platforms and others that you don&#8217;t.</p>
<p>P.S.  I&#8217;ll have lots more to say about Objective-C in a later post.</p>
]]></content:encoded>
			<wfw:commentRss>http://embeddedgurus.com/barr-code/2011/01/is-an-iphone-an-embedded-system/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Subscribing to this Blog&#8217;s Comments</title>
		<link>http://embeddedgurus.com/barr-code/2010/11/subscribing-to-this-blogs-comments/</link>
		<comments>http://embeddedgurus.com/barr-code/2010/11/subscribing-to-this-blogs-comments/#comments</comments>
		<pubDate>Tue, 16 Nov 2010 13:55:20 +0000</pubDate>
		<dc:creator>Michael Barr</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://embeddedgurus.com/barr-code/?p=432</guid>
		<description><![CDATA[I recently learned it’s possible to easily subscribe to all the comments posted on this blog. Given the quality of the comments that are posted here, I thought others may be interested too. The URL is feed://embeddedgurus.com/barr-code/comments/feed/.]]></description>
			<content:encoded><![CDATA[<p>I recently learned it’s possible to easily subscribe to all the comments posted on this blog.  Given the quality of the comments that are posted here, I thought others may be interested too.  The URL is <a href="feed://embeddedgurus.com/barr-code/comments/feed/">feed://embeddedgurus.com/barr-code/comments/feed/</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://embeddedgurus.com/barr-code/2010/11/subscribing-to-this-blogs-comments/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tools to Detect Software Copyright Infringement</title>
		<link>http://embeddedgurus.com/barr-code/2010/09/tools-to-detect-software-copyright-infringement/</link>
		<comments>http://embeddedgurus.com/barr-code/2010/09/tools-to-detect-software-copyright-infringement/#comments</comments>
		<pubDate>Thu, 23 Sep 2010 10:33:54 +0000</pubDate>
		<dc:creator>Michael Barr</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[copyright]]></category>
		<category><![CDATA[firmware]]></category>
		<category><![CDATA[opensource]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[trends]]></category>

		<guid isPermaLink="false">http://embeddedgurus.com/barr-code/?p=392</guid>
		<description><![CDATA[An emerging class of tools makes it easy to automatically detect copying of copyrighted software source code, even if it came from one of the hundreds of thousands of open source packages. I am presently providing litigation support in a case of alleged software copyright infringement.  In a nutshell, the plaintiff brought suit against the [...]]]></description>
			<content:encoded><![CDATA[<p><em>An emerging class of tools makes it easy to automatically detect copying of copyrighted software source code, even if it came from one of the hundreds of thousands of open source packages.</em></p>
<p>I am presently providing litigation support in a case of alleged software copyright infringement.  In a nutshell, the plaintiff brought suit against the defendant for allegedly continuing to use plaintiff’s copyrighted software source code in defendant’s products after termination of a license agreement between the parties.  Fortunately, automated tools are making it easier than ever to quickly and inexpensively detect copying of software source code.</p>
<p>Some of the most powerful tools for doing direct comparisons between a pair of source code sets are from <a href="http://www.safe-corp.biz" target="_blank">S.A.F.E.</a> Their CodeMatch tool works by comparing each file of source code in the first set with every file of code in the second set.  Results are presented in a table that is sorted by the relative amount of matching code in the files.  And CodeMatch is clever enough to detect copying in which variable and function names and other details were subsequently changed; CodeMatch can even detect code that was copied from one programming language into another.  The only weakness of CodeMatch is that you have to have the source code for each product, which is not always possible early in litigation.</p>
<p>Other tools from S.A.F.E. provide additional help.  For example, BitMatch can compare a pair of executable binary programs or one party’s source code against another’s executable code.  It works by matching strings that appear in both programs.  Meanwhile, SourceDetective helps rule out that the two programs are only similar because they both borrowed from some third program—by automatically searching the Internet for hundreds or thousands of matching phrases.  CodeMatch, BitMatch, and SourceDetective are part of a suite of related tools called CodeSuite.  CodeSuite is a free download that runs on Microsoft Windows, with license keys sold based on the amount of code to be compared.</p>
<p>Of course, sometimes code may be copied from open source software.  Open source software is subject to so-called copyleft licenses, which are a special type of copyright that makes the source code open to the public.  Copyleft language is drafted to ensure that the source code for certain categories of derived work are also open to the public.  This creates problems for companies that wish to keep their source code private but also rely upon open source software.</p>
<p>Fortunately, there are also tools to detect the presence of part of all of an open source software package within a proprietary program.  I have used such tools from <a href="http://www.blackducksoftware.com" target="_blank">Black Duck Software</a> and <a href="http://www.protecode.com" target="_blank">Protecode</a>.  Both work similarly: each company maintains a database of hundreds of thousands of known open source packages against which the source code you provide is tested. Results are presented as a list of open source packages from which code may have been copied. This testing can be done entirely on a personal computer running Microsoft Windows, so that proprietary source code need not be sent outside a trusted network.  Both tools are generally licensed for an expected level of use on an annual basis.</p>
<p>Unfortunately, the precision of CodeMatch is lost in trying to cast such a broad net for potential copying.  The tools from BlackDuck and Protecode don’t actually compare your code against each and every of the millions of source code files in their database.  Instead, they reduce each file of your source code to a simpler representation of its structure and then compute a unique mathematical signature for that new file.  This signature is subsequently compared to a similar representation of the files in their database.  In plain English, this means that you get lots of false positives.  Some open source packages that weren’t actually copied usually turn up in the results list.</p>
<p>When searching for potential copying of open source code, I recommend searching the database from BlackDuck or Protecode first.  Then, to eliminate the false positives, a more thorough analysis should be performed by obtaining the listed open source packages and using CodeMatch to compare the proprietary code against them file-by-file.</p>
<p>With the help of tools like those mentioned here, it is possible to quickly ascertain whether source code copying has taken place.  Prior to the appearance of these tools, it was necessary for an expert in software development to manual perform dozens of searching and comparison steps.  This strategy can be used early in litigation with the benefit of dramatically reducing the cost of such analysis.  The same tools can also be employed proactively by companies seeking to reduce their risks of copyright infringement litigation.</p>
]]></content:encoded>
			<wfw:commentRss>http://embeddedgurus.com/barr-code/2010/09/tools-to-detect-software-copyright-infringement/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Design for the Worst Case</title>
		<link>http://embeddedgurus.com/barr-code/2010/08/design-for-the-worst-case/</link>
		<comments>http://embeddedgurus.com/barr-code/2010/08/design-for-the-worst-case/#comments</comments>
		<pubDate>Wed, 11 Aug 2010 13:02:00 +0000</pubDate>
		<dc:creator>Michael Barr</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://embeddedgurus.com/barr-code/?p=376</guid>
		<description><![CDATA[In real-time systems, as in life, anything that can go wrong will! A nurse could be using a GUI task to change system parameters on a ventilator just as the attached patient’s lungs demand the most help from another task. Or an interrupt signal could start acting funny, generating a stream of unexpected ISR invocations. [...]]]></description>
			<content:encoded><![CDATA[<p>In real-time systems, as in life, anything that can go wrong will!  A nurse could be using a GUI task to change system parameters on a ventilator just as the attached patient’s lungs demand the most help from another task.  Or an interrupt signal could start acting funny, generating a stream of unexpected ISR invocations.  Or all of those at once.  And something else.</p>
<p>The designers of hard real-time systems must design for such a worst-case.  They must ensure that sufficient CPU and memory bandwidth are present to handle the worst-case demands that could be placed on the software—simultaneously.  In simple terms, we must size the processor bandwidth to the worst-case scenario.</p>
<p>Safety for the users of our products emerges as a side effect of buying a faster (read &#8220;higher priced&#8221;) CPU.  Rate Monotonic Analysis helps ensure we’ve specified the right processor clock rate, so the users are safe.  RMA is also the optimal fixed-priority scheduling algorithm, which prevents us from over-paying for clock rate.  If a set of tasks cannot be scheduled using RMA, it can’t be scheduled using any fixed-priority algorithm.</p>
<p>The basics of RMA are well covered in many places, including my article <a href="http://www.netrino.com/Embedded-Systems/How-To/RMA-Rate-Monotonic-Algorithm" target="_blank">Introduction to Rate Monotonic Scheduling</a>. In summary, Rate Monotonic Analysis gives us mathematics to prove all deadlines are always met when you’ve followed the Rate Monotonic Algorithm to assign priorities.</p>
<p>Rate Monotonic Algorithm is a procedure for assigning fixed priorities to tasks and ISRs to maximize their schedulability.  A particular set of tasks and ISRs is considered schedulable if all deadlines will be met even in the worst-case scenario.  The algorithm is simple:  “Assign the priority of each task and ISR according to its worst-case period, so that the shorter the period the higher the priority.”  For example if Task 1 and Task 2 have periods of 50 ms and 100 ms, respectively, then Task 1 is given higher priority.  This ensures that a long Task 2 job can’t prevent Task 1 from missing its more frequent deadline.</p>
<p>Too many of today&#8217;s real-time systems built with an RTOS are working by luck. Excess processing power may be masking design and analysis sins or the worst-case simply hasn’t happened—yet.  Bottom line: You’re playing with fire if you don’t use RMA to assign priorities to safety-critical tasks; it might be just a matter of time before your product’s users get burned.  Perhaps your failure to use RMA to prioritize tasks and prove they’ll meet deadlines explains one or more of those “glitches” your customers have been complaining about?</p>
]]></content:encoded>
			<wfw:commentRss>http://embeddedgurus.com/barr-code/2010/08/design-for-the-worst-case/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

