<?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, 18 Apr 2012 19:33:32 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Trends in Embedded Software Design</title>
		<link>http://embeddedgurus.com/barr-code/2012/04/trends-in-embedded-software-design/</link>
		<comments>http://embeddedgurus.com/barr-code/2012/04/trends-in-embedded-software-design/#comments</comments>
		<pubDate>Wed, 18 Apr 2012 19:27:41 +0000</pubDate>
		<dc:creator>Michael Barr</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[embedded]]></category>
		<category><![CDATA[firmware]]></category>
		<category><![CDATA[opensource]]></category>
		<category><![CDATA[outsourcing]]></category>
		<category><![CDATA[processors]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[realtime]]></category>
		<category><![CDATA[rtos]]></category>
		<category><![CDATA[security]]></category>
		<category><![CDATA[standards]]></category>
		<category><![CDATA[trends]]></category>

		<guid isPermaLink="false">http://embeddedgurus.com/barr-code/?p=732</guid>
		<description><![CDATA[In many ways, the story of my career as an embedded software developer is intertwined with the history of the magazine Embedded Systems Design. When it was launched in 1988, under the original title Embedded Systems Programming (ESP), I was finishing high school. Like the vast majority of people at that time, I had never [...]]]></description>
			<content:encoded><![CDATA[<p>In many ways, the story of my career as an embedded software developer is intertwined with the history of the magazine <a href="http://www.eetimes.com/electronics-blogs/4216468/Embedded-Systems-Design-magazine-archive?Ecosystem=embedded" title="Embedded Systems Design Magazine" target="_blank">Embedded Systems Design</a>.  When it was <a href="http://www.ganssle.com/misc/firstesp.pdf" title="First Issue of Embedded Systems Programming" target="_blank">launched in 1988</a>, under the original title Embedded Systems Programming (ESP), I was finishing high school.  Like the vast majority of people at that time, I had never heard the term &#8220;embedded system&#8221; or thought much about the computers hidden away inside other kinds of products.  Six years later I was a degreed electrical engineer who, like many EEs by that time in the mid-90&#8242;s, had a job designing embedded software rather than hardware.  Shortly thereafter I discovered the magazine on a colleague&#8217;s desk, and became a subscriber and devotee.</p>
<p><strong>The Early Days</strong></p>
<p>In the early 1990s, as now, the specialized knowledge needed to write reliable embedded software was mostly not taught in universities.  The only class I&#8217;d had in programming was in FORTRAN; I&#8217;d taught myself to program in assembly and C through a pair of hands-on labs that were, in hindsight, my only formal education in writing embedded software.  It was on the job and from the pages of the magazine, then, that I first learned the practical skills of writing device drivers, porting and using operating systems, meeting real-time deadlines, implementing finite state machines, the pros and cons of languages other than C and assembly, remote debugging and JTAG, and so much more.</p>
<p>In that era, my work as a firmware developer involved daily interactions with Intel hex files, device programmers, tubes of EPROMs with mangled pins, UV erasers, mere kilobytes of memory, 8- and 16-bit processors, in-circuit emulators, and ROM monitors.  Databooks were actual books; collectively, they took up whole bookshelves.  I wrote and compiled my firmware programs on an HP-UX workstation on my desk, but then had to go downstairs to a lab to burn the chips, insert them into the prototype board, and test and debug via an attached ICE.  I remember that on one especially daunting project eight miles separated my compiler and device programmer from the only instance of the target hardware; a single red LED and a dusty oscilloscope were the extent of my debugging toolbox.</p>
<p>Like you I had the Internet at my desk in the mid-90s, but it did not yet provide much useful or relevant information to my work other than via certain FTP sites (does anyone else remember FTPing into <a target="_blank" href="http://en.wikipedia.org/wiki/Ibiblio">sunsite.unc.edu</a>? or Gopher?).  The rest was mostly blinking headlines and dancing hamster; and Amazon was merely the world&#8217;s biggest river.  There was not yet an <a href="http://embedded.com" target="_blank">Embedded.com</a> or <a href="http://eetimes.com" target="_blank">EETimes.com</a>.  To learn about software and hardware best practices, I pursued an MSEE and CS classes at night and traveled to the Embedded Systems Conferences.</p>
<p>At the time, I wasn&#8217;t aware of any books about embedded programming.  And every book that I had found on C started with &#8220;Hello, World&#8221;, only went up in abstraction from there, and ended without ever once addressing peripheral control, interrupt service routines, interfacing to assembly language routines, and operating systems (real-time or other).  For reasons I couldn&#8217;t explain years later when Jack Ganssle asked me, I had the gumption to think I could write that missing book for embedded C programmers, got a contract from O&#8217;Reilly, and did&#8211;ending, rather than starting, mine with &#8220;Hello, World&#8221; (via an RS-232 port).</p>
<p>In 1998, a series of at least three twists of fate spanning four years found me taking a seat next to an empty chair at the speaker&#8217;s lunch at an Embedded Systems Conference.  The chair&#8217;s occupant turned out to be Lindsey Vereen, who was then well into his term as the second editor-in-chief of the magazine.  In addition to the book, I&#8217;d written an article or two for ESP by that time and Lindsey had been impressed with my ability to explain technical nuances.  When he told me that he was looking for someone to serve as a technical editor, I didn&#8217;t realize it was the first step towards my role in that position.  </p>
<p><strong>Future Trends</strong></p>
<p>Becoming and then staying involved with the magazine, first as technical editor and later as editor-in-chief and contributing editor, has been a highlight of my professional life.  I had been a huge fan of ESP and of its many great columnists and other contributors in its first decade.  And now, looking back, I believe my work helped make it an even more valuable forum for the exchange of key design ideas, best practices, and industry learning in its second decade.  And, though I understand the move away from print towards online publishing and advertising, I am nonetheless saddened to see the magazine come to an end.</p>
<p>Reflecting back on these days long past reminds me that a lot truly has changed about embedded software design.  Assembly language is used far less frequently today; C and C++ much more.  EPROMs with their device programmers and UV erasers have been supplanted by flash memory and bootloaders.  Bus widths and memory sizes have increased dramatically.  Expensive in-circuit emulators and ROM monitors have morphed into inexpensive JTAG debug ports.  ROM-DOS has been replaced with whatever Microsoft is branding embedded Windows this year.  And open-source Linux has done so well that it has limited the growth of the RTOS industry as a whole&#8211;and become a piece of technology we all want to master if only for our resumes.</p>
<p>So what does the future hold?  What will the everyday experiences of embedded programmers be like in 2020, 2030, or 2040?  I see three big trends that will affect us all over those timeframes, each of which has already begun to unfold.</p>
<p><strong>Trend 1: Volumes Finally Shift to 32-bit CPUs</strong></p>
<p>My first prediction is that inexpensive, low-power, highly-integrated microcontrollers&#8211;as best exemplified by today&#8217;s <a href="http://en.wikipedia.org/wiki/ARM_Cortex-M" title="ARM Cortex M" target="_blank">ARM Cortex-M</a> family&#8211;will bring 32-bit CPUs into even the highest volume application domains.  The volumes of 8- and 16-bit CPUs will finally decline as these parts become truly obsolete.</p>
<p>Though you may be programming for a 32-bit processor already, it&#8217;s still true that 8- and 16-bit processors still drive CPU chip sales volumes.  I&#8217;m referring, of course, to microcontrollers such as those based on 8051, PIC, and other instruction set architectures dating back 30-40 years.  These older architectures remain popular today only because certain low-margin, high-volume applications of embedded processing demand squeezing every penny out of BOM cost.  </p>
<p>The limitations of 8- and 16-bit architectures impact the embedded programmers in a number of ways.  First, there are the awkward memory limitations resulting from limited address bus widths&#8211;and the memory banks, segmenting techniques, and other workarounds to going beyond those limitations.  Second, these CPUs are much better at decision making than mathematics&#8211;they lack the ability to manipulate large integers efficiently and have no floating-point capability.  Finally, these older processors frequently lack modern development tools, are unable to run larger Internet-enabled operating systems, such as Linux, and don&#8217;t feature the security and reliabiltiy protections afforded by an MMU.</p>
<p>There will, of course, always be many applications that are extremely cost-conscious, so my prediction is not that they will disappear completely, but that the overall price (including BOM cost as well as power consumption) of 32-bit micro controllers, with their improved instruction set architectures and transistor geometries, will win on price.  That will put the necessary amount of computing power into the hands of some designers and make our work easier for all of us.  It also helps programmers accomplish more in less time.</p>
<p><strong>Trend 2: Complexity Forces Programmers Beyond C</strong></p>
<p>My second prediction is that the days of the C programming language&#8217;s dominance in embedded systems are numbered.</p>
<p>Don&#8217;t get me wrong, C is a language I know and love.  But, as you may know firsthand, C is simply not up to the task of building systems requiring over a million lines of code.  Nonetheless, the demanded complexity of embedded software has been driving our systems towards more than a million lines of code. At this level of complexity, something has to give.</p>
<p>Additionally, our industry is facing a crisis: the average age of an embedded developer is rapidly increasing and C is generally not taught in universities anymore.  Thus, even as the demand for embedded intelligence in every industry continues to increase, the population of skilled and experienced C programmers is on the decline.  Something has to give on this front too.</p>
<p>But what alternative language can be used to build real-time software, manipulate hardware directly, and be quickly ported to numerous instruction set architectures?  It&#8217;s not going to be C++ or Ada or Java, for sure&#8211;as those have already been tried and found lacking.  A new programming language is probably not the answer either, across so many CPU families and with so many other languages already tried.</p>
<p>Thus I predict that tools that are able to reliably generate those millions of lines of C code automatically for us, based on system specifications, will ultimately take over.  As an example of a current tool of this sort that could be part of the trend, I direct your attention to Miro Samek&#8217;s dandy open source <a href="http://state-machine.com/qp/index.php" title="State Machine Frameworks for Embedded Systems" target="_blank">Quantum Platform (QP) framework for event-driven programs</a> and his (optional) free <a href="http://state-machine.com/qm/index.php" title="UML Modeling Tool" target="_blank">Quantum Modeler (QM) graphical modeling tool</a>.  You may not like the idea of auto-generated code today, but I guarantee that once you push a button to generate consistent and correct code from an already expressive statechart diagram, you will see the benefits of the overall structure and be ready to move up a level in programming efficiency.</p>
<p>I view C as a reasonable common output language for such tools (given that C can manipulate hardware registers directly and that every processor ever invented has a C compiler).  Note that I do expect there to be continued demand for those of us with the skills and interest to fine tune the performance of the generated code or write device drivers to integrate it more closely to the hardware. </p>
<p><strong>Trend 3: Connectivity Drives Importance of Security</strong></p>
<p>We&#8217;re increasingly connecting embedded systems&#8211;to each other and to the Internet.  You&#8217;ve heard the hype (e.g., &#8220;Internet of things&#8221; and &#8220;ubiquitous computing&#8221;) and you&#8217;ve probably already also put TCP/IP into one or more of your designs.  But connectivity has a lot of implications that we are only starting to come to terms with.  The most obvious of these is security.</p>
<p>A connected device cannot hide for long behind &#8220;security through obscurity&#8221; and, so, we must design security into our connected devices from the start.  In my travels around our industry I&#8217;ve observed that the majority of embedded designers are largely unfamiliar with security.  Sure some of you have read about encryption algorithms and know the names of a few.  But mostly the embedded community is shooting in the dark as security designers, within organizations that aren&#8217;t of much help.  And security is only as strong as the weakest link in the chain.</p>
<p>This situation must change.  Just as Flash memory has supplanted UV-erasable EPROM, so too will over-the-net patches and upgrades take center stage as a download mechanism in coming years and decades.  We must architect our systems first to be secure and then to accepted trusted downloads so that our products can keep up in the inevitable arms race against hackers and attackers.</p>
<p><strong>And That&#8217;s a Wrap</strong></p>
<p>Whatever the future holds, I am certain that embedded software development will remain an engaging and challenging career.  And you&#8217;ll still find me writing about the field at http://embeddedgurus.com/barr-code and http://twitter.com/embeddedbarr.</p>
]]></content:encoded>
			<wfw:commentRss>http://embeddedgurus.com/barr-code/2012/04/trends-in-embedded-software-design/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Building Reliable and Secure Embedded Systems</title>
		<link>http://embeddedgurus.com/barr-code/2012/03/building-reliable-and-secure-embedded-systems/</link>
		<comments>http://embeddedgurus.com/barr-code/2012/03/building-reliable-and-secure-embedded-systems/#comments</comments>
		<pubDate>Tue, 13 Mar 2012 10:49:45 +0000</pubDate>
		<dc:creator>Michael Barr</dc:creator>
				<category><![CDATA[Firmware Bugs]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[architecture]]></category>
		<category><![CDATA[bugs]]></category>
		<category><![CDATA[embedded]]></category>
		<category><![CDATA[ethics]]></category>
		<category><![CDATA[firmware]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[realtime]]></category>
		<category><![CDATA[safety]]></category>
		<category><![CDATA[security]]></category>
		<category><![CDATA[standards]]></category>
		<category><![CDATA[trends]]></category>

		<guid isPermaLink="false">http://embeddedgurus.com/barr-code/?p=710</guid>
		<description><![CDATA[In this era of 140 characters or less, it has been well and concisely stated that, &#8220;RELIABILITY concerns ACCIDENTAL errors causing failures, whereas SECURITY concerns INTENTIONAL errors causing failures.&#8221; In this column I expand on this statement, especially as regards the design of embedded systems and their place in our network-connected and safety-concious modern world. [...]]]></description>
			<content:encoded><![CDATA[<p><em>In this era of 140 characters or less, it has been well and concisely stated that, &#8220;RELIABILITY concerns ACCIDENTAL errors causing failures, whereas SECURITY concerns INTENTIONAL errors causing failures.&#8221;  In this column I expand on this statement, especially as regards the design of embedded systems and their place in our network-connected and safety-concious modern world.</em></p>
<p>As the designers of embedded systems, the first thing we must accomplish on any project is to make the hardware and software work.  That is to say we need to make the system behave as it was designed to.  The first iteration of this is often flaky; certain uses or perturbations of the system by testers can easily dislodge the system into a non-working state.  In common parlance, &#8220;expect bugs.&#8221;  </p>
<p>Given time, tightening cycles of debug and test can get us past the bugs and through to a shippable product.  But is a debugged system good enough?  Neither reliability nor security can be tested into a product.  Each must be designed in from the start.  So let&#8217;s take a closer look at these two important design aspects for modern embedded systems and then I&#8217;ll bring them back together at the end.</p>
<p><strong>Reliable Embedded Systems</strong></p>
<p>A product can be stable yet lack reliability.  Consider, for example, an anti-lock braking computer installed in a car.  The software in the anti-lock brakes may be bug-free, but how does it function if a critical input sensor fails?</p>
<p>Reliable systems are robust in the face of adverse run-time environments.  Reliable systems are able to work around errors encountered as they occur to the system in the field&#8211;so that the number and impact of failures are minimized.  One key strategy for building reliable systems is to eliminate single-points-of-failure.  For example, redundancy could be added around that critical input sensor&#8211;perhaps by adding a second sensor in parallel with the first.</p>
<p>Another aspect of reliability that is under the complete control of designers (at least when they consider it from the start) are the &#8220;fail-safe&#8221; mechanisms.  Perhaps a suitable but lower-cost alternative to a redundant sensor is detection of the failed sensor with a fall back to mechanical braking.</p>
<p><a href="http://en.wikipedia.org/wiki/Failure_mode_and_effects_analysis" title="Failure Modes and Effects Analysis" target="_blank">Failure Mode and Effect Analysis</a> (FMEA) is one of the most effective and important design processes used by engineers serious about designing reliability into their systems.  Following this process, each possible failure point is traced from the root failure outward to its effects.  In an FMEA, numerical weights can be applied to the likelihoods of each failure as well as the seriousness of consequences.  An FMEA can thus help guide you to a cost effective but higher reliability design by highlighting the most valuable places to insert the redundancy, fail-safes, or other elements that reinforce the system&#8217;s overall reliability.</p>
<p>In certain industries, reliability is a key driver of product safety.  And that is why you see these techniques and FMEA and other design for reliability processes being applied by the designers of safety-critical automotive, medical, avionics, nuclear, and industrial systems.  The same techniques can, of course, be used to make any type of embedded system more reliable.</p>
<p>Regardless of your industry, it is typically difficult or impossible to make your product as reliable via patches.  There&#8217;s no way to add hardware like that redundant sensor, so your options may reduce to a fail-safe that is helpful but less reliable overall.  Reliability cannot be patched or tested or debugged into your system.  Rather, reliability must be designed in from the start.</p>
<p><strong>Secure Embedded Systems</strong></p>
<p>A product can also be stable yet lack security.  For example, an office printer is the kind of product most of us purchase and use without giving a minute of thought to security.  The software in the printer may be bug-free, but is it able to prevent a would-be eavesdropper from capturing a remote electronic copy of everything you print, including your sensitive financial documents?</p>
<p>Secure systems are robust in the face of persistent attack.  Secure systems are able to keep hackers out by design.  One key strategy for building secure systems is to validate all inputs, especially those arriving over an open network connection.  For example, security could be added to a printer by ensuring against buffer overflows and encrypting and digitally signing firmware updates.</p>
<p>One of the unfortunate facts of designing secure embedded systems is that the hackers who want to get in only need to find and exploit a single weakness.  Adding layers of security is good, but if even any one of those layers remains fundamentally weak, a sufficiently motivated attacker will eventually find and breach that defense.  But that&#8217;s not an excuse for not trying.</p>
<p>For years, the largest printer maker in the world apparently gave little thought to the security of the firmware in its home/office printers, even as it was putting tens of millions of tempting targets out into the world.  Now <a href="http://events.ccc.de/congress/2011/Fahrplan/track/Hacking/4780.en.html" title="Print Me If You Dare" target="_blank">the security of those printers has been breached by security researchers</a> with a reasonable awareness of embedded systems design.  Said one of the lead researchers, &#8220;We can actually modify the firmware of the printer as part of a legitimate document. It renders correctly, and at the end of the job there&#8217;s a firmware update. &#8230; In a super-secure environment where there&#8217;s a firewall and no access &#8212; the government, Wall Street &#8212; you could send a résumé to print out.&#8221;</p>
<p>Security is a brave new world for many embedded systems designers.  For decades we have relied on the fact that the microcontrollers and Flash memory and real-time operating systems and other less mainstream technologies we use will protect our products from attack.  Or that we can gain enough &#8220;security by obscurity&#8221; by keeping our communications protocols and firmware upgrade processes secret.  But we no longer live in that world.  You must adapt.</p>
<p>Consider the implications of an <a href="http://ieeexplore.ieee.org/xpl/freeabs_all.jsp?arnumber=5504804" title="Experimental Security Analysis of a Modern Automobile" target="_blank">insecure design of an automotive safety system that is connected to another Internet-connected computer in the car via CAN</a>;  or the insecure design of an <a href="http://ieeexplore.ieee.org/xpl/freeabs_all.jsp?arnumber=4531149&amp;isnumber=4531132" title="Pacemakers and Implantable Cardiac Defibrillators: Software Radio Attacks and Zero-Power Defenses" target="_blank">implanted medical device</a>; or the insecure design of <em>your</em> product.</p>
<p>Too often, the ability to upgrade a product&#8217;s firmware in the field is the very vector that&#8217;s used to attack.  This can happen even when a primary purpose for including remote firmware updates is motivated by security.  For example, as I&#8217;ve learned in my work as an <a href="http://netrino.com/images/cv-barr.pdf" title="Expert Witness Resume" target="_blank">expert witness</a> in numerous cases involving reverse engineering of the techniques and technology of satellite television piracy, much of that piracy has been empowered by the same software patching mechanism that allowed the broadcasters to perform security upgrades and electronic countermeasures.  Ironically, had the security smart cards in those set-top boxes had only masked ROM images the overall system security may have been higher.  This was certainly not what the designers of the system had in mind.  But security is also an arms race.</p>
<p>Like reliability, security must be designed in from the start.  Security can&#8217;t be patched or tested or debugged in.  You simply can&#8217;t add security as effectively once the product ships.  For example, an attacker who wished to exploit a current weakness in your office printer or smart card might download his hack software into your device and write-protect his sectors of the flash today so that his code could remain resident even as you applied security patches.</p>
<p><strong>Reliable and Secure Embedded Systems</strong></p>
<p>It is important to note at this point that reliable systems are inherently more secure.  And that, vice versa, secure systems are inherently more reliable.  So, although, design for reliability and design for security will often individually yield different results&#8211;there is also an overlap between them.  </p>
<p>An investment in reliability, for example, generally pays off in security.  Why?  Well, because a more reliable system is more robust in its handling of all errors, whether they are accidental or intentional.  An anti-lock braking system with a fall back to mechanical braking for increased reliability is also more secure against an attack against that critical hardware input sensor.  Similarly, those printers wouldn&#8217;t be at risk of fuser-induced fire in the case of a security breach if they were never at risk of fire in the case of any misbehavior of the software.</p>
<p>Consider, importantly, that one of the first things a hacker intent on breaching the security of your embedded device might do is to perform a (mental, at least) <a href="http://www.fault-tree.net/papers/ericson-fta-tutorial.pdf" title="Fault Tree Analysis" target="_blank">fault tree analysis</a> of your system.  This attacker would then target her time, talents, and other resources at one or more single points of failure she considers most likely to fail in a useful way.  </p>
<p>Because a fault tree analysis starts from the general goal and works inward deductively toward the identification of one or more choke points that might produce the desired erroneous outcome, attention paid to increasing reliability such as via FMEA usually reduces choke points and makes the attacker&#8217;s job considerably more difficult.  Where security can break down even in a reliable system is where the possibility of an attacker&#8217;s intentionally induced failure is ignored in the FMEA weighting and thus possible layers of protection are omitted.</p>
<p>Similarly, an investment in security may pay off in greater reliability&#8211;even without a directed focus on reliability.  For example, if you secure your firmware upgrade process to accept only encrypted and digitally signed binary images you&#8217;ll be adding a layer of protection against an inadvertently corrupted binary causing an accidental error and product failure.  Anything you do to improve the security of communications (i.e., checksums, prevention of buffer overflows, etc.) can have a similar effect on reliability.</p>
<p><strong>The Only Way Forward</strong></p>
<p>Each year it becomes increasingly important for all of us in the embedded systems design community to learn to design reliable and secure products.  If you don&#8217;t, it might be your product making the wrong kind of headlines and your source code and design documents being poured over by lawyers.  It is no longer acceptable to stick your head in the sand on these issues.</p>
]]></content:encoded>
			<wfw:commentRss>http://embeddedgurus.com/barr-code/2012/03/building-reliable-and-secure-embedded-systems/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<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>
	</channel>
</rss>

