<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
 
 <title>Bradford Embedded</title>
 <link href="http://www.bradfordembedded.com/atom.xml" rel="self"/>
 <link href="http://www.bradfordembedded.com/"/>
 <updated>2013-04-17T18:31:33-07:00</updated>
 <id>http://www.bradfordembedded.com/</id>
 <author>
   <name>Andrew Bradford</name>
 </author>

 
 <entry>
   <title>What I Want</title>
   <link href="http://www.bradfordembedded.com/2013/04/what-i-want"/>
   <updated>2013-04-17T00:00:00-07:00</updated>
   <id>hhttp://www.bradfordembedded.com/2013/04/what-i-want</id>
   <content type="html">&lt;p&gt;I still don't really know what I want in terms of a job, a company, or
coworkers.  But I'm starting to get some good ideas (all of which are apt to
change).&lt;/p&gt;

&lt;p&gt;I like working on a team.  Not a team where there's 10 people and each one of
them does some unique thing, but a team where it's me and one or more others
that all work together solving the same problem.  I've recently started working
closely with another engineer at work on some microcontroller code and it's
awesome to be able to troubleshoot, plan, implement, and code, together.  We
both have some similar skills, yet we both also have different skills.  Putting
us together makes us both more productive and produces better results.&lt;/p&gt;

&lt;p&gt;I like the concept of a results driven method of evaluating employees.  I've
never worked somewhere where evaluations were completely based on results alone,
but basing more than a tiny fraction of an evaluation on &quot;butt in seat time&quot; is
not conducive to getting high quality results.  It's pretty good at building
resentment, though.&lt;/p&gt;

&lt;p&gt;I want to work on embedded or server side products.  I like *nix.  These all fit
together nicely to solve problems.&lt;/p&gt;

&lt;p&gt;I want to be less risk averse, less negative, and less pessimistic.  I feel I'm
risk averse, negative, and pessimistic because I'd rather reduce risk of failure
rather than reduce other outcomes (cost, schedule, etc).  Often, I'm the one
that's going to say, &quot;Doing that is a bad idea because of risk X and risk X
means possibly encountering problem Y.&quot;  If problem Y is quite bad, it's going
to convince me that risk X isn't worth it.  The downside of how I do this today
is that I often don't have good numbers to justify why I'm being risk averse,
negative, and pessimistic.  So really, either I want to be less of these things
or simply learn how to come up with the numbers.&lt;/p&gt;

&lt;p&gt;I want to work in an office with a door.  I like being social, just not all the
time, like when I'm trying to get things done.  So far, the environments I've
worked in, having headphones on doesn't mean anything.  Closing a door does.
I've never worked somewhere with a door that closes but right now it's after 9
pm and everyone in the house is asleep.  I'm getting writing done uninterrupted
(plus I just closed a github ticket, pushed a branch, and did some email).&lt;/p&gt;

&lt;p&gt;I like older software that's well documented, even if it's slow and lacks
features.  For example, I'm hesitant about systemd and I enjoy running Debian
stable.  Yes, there's things I can't do with my older software, but the things I
can do have been around long enough that when I run into issues I can find
solutions quite quickly and get things done.&lt;/p&gt;

&lt;p&gt;I don't want to be the smartest person in the room or on the team.  Give me a
topic related to any job I've done and I can name you someone who knows more
about that topic than I do.  I want to work with those people, closely and on a
regular basis.  I want to suck up wisdom from them.  I also don't want to be the
dumbest person in the room or on the team.  Now, sometimes, I might be the
smartest and sometimes I might be the dumbest, but I don't want to be in either
camp too often.  I want a normal distribution for this, if that makes any sense.&lt;/p&gt;

&lt;p&gt;I want to learn Python and get much better at programming in C (I'm maybe 5000
of the 10000 hours needed for mastery into learning C, I'm maybe 10 hours into
Python).  I'd bet 90% of the problems out there can be solved quite well with
just Python or C.  I've learned a little Ruby and I fail to see how it's
significantly different from Python.  I've done some Java, C#, and C++ but I
fail to see how any are significantly better than a well evaluated choice
between Python or C.  Sure, Python and C both have failings, but often those
failings are small in comparison to the pros / successes.&lt;/p&gt;

&lt;p&gt;I want to be stressed less.  My job is my job, it needs to not impact my family
life.&lt;/p&gt;

&lt;p&gt;I'm not far from my goals, I'm continually moving closer to achieving them.  I
am however not yet to any of these fully.  That's why I want them.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Disappointment</title>
   <link href="http://www.bradfordembedded.com/2013/03/disappointment"/>
   <updated>2013-03-20T00:00:00-07:00</updated>
   <id>hhttp://www.bradfordembedded.com/2013/03/disappointment</id>
   <content type="html">&lt;p&gt;When something disappointing happens, there's 2 ways to deal with it that I've
seen.  One's successful in getting people motivated in solving the problem or
making it not happen again, while the other does the exact opposite.&lt;/p&gt;

&lt;p&gt;The first involves not placing blame, taking ownership of solving the problem,
and rallying.  The second involves expressing disappointment, directly or
indirectly placing blame, and not taking ownership.  If you're a leader and
you're doing the first method, good job!&lt;/p&gt;

&lt;p&gt;If you're a leader and you're doing the second method, no one's going to tell
you.  You're not going to learn that you're doing it wrong.  You're just going
to alienate your people and build dissent.&lt;/p&gt;

&lt;p&gt;Think about this in the frame of a family situation.  If something disappointing
happens in my family and I do the second method, my wife and daughter won't be
as enthusiastic in making sure the situation doesn't happen again.  They're just
going to be pissed off at me for placing blame and saying, &quot;It's not my
problem.&quot; If I do the first situation, regardless of who's to blame (the person
knows who they are, placing blame doesn't help), we all rally around finding a
solution together and build our family stronger.&lt;/p&gt;

&lt;p&gt;The second method is easy.  The first is hard.  There's a reason for that: the
second method is crap.  Things in life that are easy are generally crap.  Things
in life that take some work generally are the best ones, like raising kids,
having relationships, building a career, and helping others.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Close to the Metal</title>
   <link href="http://www.bradfordembedded.com/2012/12/close-to-the-metal"/>
   <updated>2012-12-21T00:00:00-08:00</updated>
   <id>hhttp://www.bradfordembedded.com/2012/12/close-to-the-metal</id>
   <content type="html">&lt;p&gt;I want to be close to the metal.&lt;/p&gt;

&lt;p&gt;Over the past two years and a few months, I've really gotten quite into embedded
Linux and related systems.  I got hired by a local company (my current employer)
to be their embedded Linux guy and help make a product from the ground up.
It's been a lot of fun, I've learned a lot, and done tons of new things.&lt;/p&gt;

&lt;p&gt;In the course of these past 2 years, I've grown fond of being close to the
metal.  I got my first patches into u-boot, developed a Linux SPI protocol
driver for our product, gotten the TPS65217 power button working on the
BeagleBone in Linux, and worked very closely with our hardware engineer to
define and debug the system I'm developing for.&lt;/p&gt;

&lt;p&gt;I've done other things, too (like starting to learn Ruby on Rails then dropping
that for web services using FastCGI in C, there's orders of magnitude difference
in speed between those two), but I've not enjoyed the &quot;other things&quot; as much as
I've enjoyed working on u-boot, specifying and bringing up hardware, starting to
dig into writing Linux drivers, and being a part of the BeagleBoard.org
community.&lt;/p&gt;

&lt;p&gt;Sure, making products is great.  But I've found I really enjoy simply doing the
low level engineering part of the job, taking some chips and making them work
together to allow for business goals to be achieved on top of them.  The actual
implementation of the business goals (web services, etc) isn't as fun for me.&lt;/p&gt;

&lt;p&gt;I'd love to have a job where I get to be close to the metal more.  It's possible
that my current job can transform into that, I'm hoping I can make that happen.
I'm not as concerned about what kind of close to the metal work I get to do, but
if it was open source, that'd be a big plus.&lt;/p&gt;

&lt;p&gt;If I could work on u-boot, Barebox, Linux, or dev kits as my main role, that'd
be really cool.  I want the projects I work on to be open source as there's a
huge number of very smart people out there who will critique my code and point
me in the right direction.  Learning from them, either by getting feedback or
just watching them work, is quite fun.&lt;/p&gt;

&lt;p&gt;Overall, I'm hugely thankful for the opportunity to dive into embedded the way I
have.  My company, BeagleBoard.org, the Cross Linux From Scratch project,
u-boot, Linux, and Debian have all been awesome places for me to learn and grow.&lt;/p&gt;

&lt;p&gt;I'm not sure how to end this.  So, thanks, if you've worked with me, helped me,
or simply made something that I've used to learn with.&lt;/p&gt;

&lt;p&gt;I hope everyone has a great holiday.  See you next year!&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Which *nix? (or why free/open)</title>
   <link href="http://www.bradfordembedded.com/2012/11/which-nix"/>
   <updated>2012-11-25T00:00:00-08:00</updated>
   <id>hhttp://www.bradfordembedded.com/2012/11/which-nix</id>
   <content type="html">&lt;p&gt;Yesterday I installed NetBSD in a virtual machine on my laptop.  I was
thinking to myself, &quot;If I could specialize in some *nix that isn't as
popular maybe that would give me an edge up.&quot;&lt;/p&gt;

&lt;p&gt;Well, no.  That's just a stupid thought.&lt;/p&gt;

&lt;p&gt;Useful ways to get an edge up, or somehow stand out as an engineer don't
involve being a specialist in something that basically no one is using.
Sorry BSD.  Usually there's a very good and valid reason why very few people
are using or doing something.&lt;/p&gt;

&lt;p&gt;Yes, tons of stuff on the web probably does run on BSD.  Yes, NetBSD,
FreeBSD, OpenBSD, and every other Unix-like system out there is probably
holding together huge swaths of the Internet so I can type junk like this.&lt;/p&gt;

&lt;p&gt;But upon thinking this over, I've realized that what matters is not what you
run your application on, it's what your application does... if you want to
be an implementer and not a tool builder.&lt;/p&gt;

&lt;p&gt;At this point, I'm not a tool builder.  I'm a wanna-be tool builder.  I'm
trying to get good enough such that I could contribute to tools that I and
others use.  But I have a long way to go.  However, I am an implementer.
I'm making things out of pieces and parts such that useful business goals
can be accomplished.  I'm sticking together tools that others have built in
such a way that really hasn't been done before.  I'm helping create business
value.&lt;/p&gt;

&lt;p&gt;What matters to me, and to probably 90% of other &quot;software engineers&quot; out
there, isn't what's underneath, as long as what's underneath can allow me to
piece it together with other tools.  What matters is that I can pick a
decent set of tools and utilities, stick them together, write a little bit
of glue, and make something for a customer that solves problems.&lt;/p&gt;

&lt;p&gt;Whether what's underneath is Unix, Linux, Mac, or Windows (eww) doesn't
really matter.  What matters is that the tools I need are available and can
be made to work together on a platform to accomplish something useful for a
customer.&lt;/p&gt;

&lt;p&gt;Specializing in Unix, Linux, Mac, or Windows doesn't completely help me
achieve that goal.  Knowing enough about each of those does.&lt;/p&gt;

&lt;p&gt;What I should do is become familiar with each of the tool sets out there but
not be an expert.  Not unless being an expert is what's creating value for
others.  At this point, me becoming an expert isn't going to create as much
value for my company or our customers as me being a really good generalist,
so I should work more on that.&lt;/p&gt;

&lt;p&gt;No, I'm not the best C coder that's ever lived.  I'm far from it.  But
becoming the best C coder shouldn't be my current goal.  My current goal is
to be able to see a technical problem and say, &quot;Yes, this tool would be a
good choice&quot; or &quot;No, that tool would be a bad choice&quot; and then back up
either of those statements.&lt;/p&gt;

&lt;p&gt;Here's where my dislike for Windows and the Mac start to creep in.  With
free and open software I can see the code, I can fix the bugs, and I can add
the features I (and my company) need.  I can contribute those back to the
community and get code reviews, and eventually, get the community to
maintain my code for me in the same way I will do for others in the
community.  On any of the BSDs, most all Linux distributions, and a growing
number of microcontroller platforms, I can do this.  They're open.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Windows isn't.&lt;/em&gt;  The &lt;em&gt;Mac isn't.&lt;/em&gt;  Therefore, spending my time learning
those tools and platforms is a waste because I can't really understand them,
I can't fix bugs, and I can't add features.  &lt;strong&gt;How can I be a good
implementer if I can't fix / improve / give back to the tools I use?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I can't.&lt;/p&gt;

&lt;p&gt;So what matters isn't that I pick this *nix or that *nix, be it BSD, Unix,
Linux or what have you.  What matters is that I'm picking up free and open
software, learning the tools, and giving back when I can.&lt;/p&gt;

&lt;p&gt;If you're a software developer and you're focused on a closed, locked down,
un-free platform or tool set, &lt;strong&gt;you're doing it wrong!&lt;/strong&gt;&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Where to Write?</title>
   <link href="http://www.bradfordembedded.com/2012/11/where-to-write"/>
   <updated>2012-11-09T00:00:00-08:00</updated>
   <id>hhttp://www.bradfordembedded.com/2012/11/where-to-write</id>
   <content type="html">&lt;p&gt;I haven't written in a while.  There a few reasons for that which I'd like
to share.&lt;/p&gt;

&lt;p&gt;I bought a paper journal.  I write in it almost every weekday.  It's a
great outlet for me and allows me to write different things that I would
write on my blog or other platforms.&lt;/p&gt;

&lt;p&gt;I participate more on Google+ now.  As much as I feel Google is somewhat
evil, people I enjoy interacting with are on there talking about stuff I'm
interested in.  I check Google+ every day.  I'm on Facebook once a week, at
best.&lt;/p&gt;

&lt;p&gt;I'm actually really into things at work.  I've been submitting patches to
u-boot, hacking on an evil vendor kernel (hacking is being nice to the
quality of code that's coming out of my fingers), and making things happen
for customers.&lt;/p&gt;

&lt;p&gt;My family situation has changed since July.  My wife went back to work in
late August after staying home with our daughter for a year after she was
born.  Now we have a new morning routine that's much more family oriented
which limits my morning time that I was dedicating to making things on the
web or starting blog posts.&lt;/p&gt;

&lt;p&gt;Bitching on the web isn't what most people want to read.  A decent number
of the blog posts I've written over the last year include bitching.  My
readership hasn't grown.&lt;/p&gt;

&lt;p&gt;Clearly, I'm doing it wrong.  That needs to change.  In July I wrote many
blog posts but my readership was basically flat compared to earlier months
where I wrote drastically less.  I have a small group of readers who follow
via RSS or check in on a regular basis to read what I write, but a good
chunk (over 50% last check) is Google searches.  Most of those Google
searches end up directing people to my more technical posts.  Clearly that's
where the value is.&lt;/p&gt;

&lt;p&gt;When I got the job I have now, the company was impressed with the fact that
I blogged about technical topics.  That excited them.  We recently
interviewed a guy who started his own blog about 6 months ago, that's
impressive to me, too.  But it's impressive, both of them, for their
technical content, not for the bitching.&lt;/p&gt;

&lt;p&gt;Don't be surprised if I blog at this reduced rate in the future.  If I don't
have something technical to say, I'm not going to write it.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Hire for Talent, Not Location</title>
   <link href="http://www.bradfordembedded.com/2012/09/hire-for-talent-not-location"/>
   <updated>2012-09-17T00:00:00-07:00</updated>
   <id>hhttp://www.bradfordembedded.com/2012/09/hire-for-talent-not-location</id>
   <content type="html">&lt;p&gt;When hiring, pick the candidate based on talent, capabilities, and
potential, not based on where they physically are located.&lt;/p&gt;

&lt;p&gt;Look at the Linux kernel, possibly one of the most important pieces of
engineering over the past two decades.  Linus works from home coordinating
the entire project and none of the people he works with on a daily basis
live with him.  The project leverages the Internet to get things done, at an
amazingly fast pace and with very high quality, every release.  Thousands of
engineers from all over the world work together to produce Linux.&lt;/p&gt;

&lt;p&gt;That's how your company should work, too.&lt;/p&gt;

&lt;p&gt;But, you say, &quot;We build hardware, not software!&quot;&lt;/p&gt;

&lt;p&gt;That's nice.  What's your point?&lt;/p&gt;

&lt;p&gt;Engineers working remotely or locally can get the same work done these days.
But engineers working remotely may be way better or smarter or more capable
or cheaper than the ones you can hire locally.&lt;/p&gt;

&lt;p&gt;Overnight shipping is reasonably priced, generally under $100 to ship most
things anywhere in the USA, and under $200 generally to ship anywhere in the
world.  Development tools are going down in price every year, you can now
get logic analyzers that operate at 24 MHz for about $200 and analyzers
operating at hundreds of MHz for under $500.  General purpose oscilloscopes
run $1000, at most.&lt;/p&gt;

&lt;p&gt;Even if you have to buy each engineer a scope and a logic analyzer, you're
still looking at under $2k.  Price in a computer and the other tools needed,
and you're looking at about $5k per engineer.  Figure you ship each person
something overnight every week, that's another $5.2k per year.  But the
buying of a scope and logic analyzer and computer doesn't really matter if
the engineer is local or remote, they're going to want that stuff anyway.
And the $5k you spend shipping them prototypes every week (if you've got a
lean hardware development process, which you probably don't, but that's
&lt;a href=&quot;/2012/03/iterate-hardware-like-software/&quot;&gt;another post&lt;/a&gt;) is probably cheaper than paying for 100 sq feet of office
space for a year.&lt;/p&gt;

&lt;p&gt;So why do most companies hire locally and never consider any remote
engineers?&lt;/p&gt;

&lt;p&gt;My impression is that engineering managers want to be kings.  They want to
sit in their little castles and oversee the minions doing the work inside
the castle walls.  They want to perch up in the tower and yell down at the
minions, telling them what to do and watching them scurry.&lt;/p&gt;

&lt;p&gt;So, basically the same reasons open office plans and cubicles exist,
managers also feel hiring locally is better than hiring the best.&lt;/p&gt;

&lt;p&gt;Don't do that.  Engineers don't want to work for kings, they want to work
for leaders.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Next Computer</title>
   <link href="http://www.bradfordembedded.com/2012/07/next-computer"/>
   <updated>2012-07-25T00:00:00-07:00</updated>
   <id>hhttp://www.bradfordembedded.com/2012/07/next-computer</id>
   <content type="html">&lt;p&gt;I wrote about how &lt;a href=&quot;/2012/06/laptops-arent-desktops&quot;&gt;laptops aren't desktops&lt;/a&gt; last month.  I was upset that I
use a laptop that's not very portable but not as powerful as a desktop.  It's
the worst of both worlds.  I still feel that way, but I'm changing my stance on
buying a desktop.&lt;/p&gt;

&lt;p&gt;My next computing system won't involve a desktop, per se.  It'll just be a
laptop, and a rather portable one, at that.  It'll also probably be a Mac.
Here's why:&lt;/p&gt;

&lt;p&gt;The MacBook Air 13 inch can be specified rather nicely to accomplish 80% of the
things I want to do, for a reasonable price.  The MacBook Pro with Retina
display is a bit more money, can accomplish 85% of the things I want to do, but
is still rather reasonably priced for the hardware.  Either way, I'd get the 27
inch Thunderbolt display to use as a monitor when I'm in &quot;the office.&quot;&lt;/p&gt;

&lt;p&gt;The only non-Apple laptop I'd consider buying, really, is a Lenovo Thinkpad T
series 14 inch.  And there, a well specified unit could probably accomplish 90%
of what I want to do, but I'd run Linux on it and I'd be frustrated more often.
The extra 5 to 10% improvement of doing the things I want to do may not be worth
the frustrations.&lt;/p&gt;

&lt;p&gt;But here's my big change, I wouldn't buy a desktop.  Not today.&lt;/p&gt;

&lt;p&gt;In order to get the type of desktop that I want, with the processing performance
I want (because, let's be honest, USB really is good enough for most peripheral
things now and I don't really really need a second Gigabit Ethernet interface, a
slow second Ethernet interface would be good enough), I'd need to spend $4 to
$5k.  I'm not willing to do that.  Not today.&lt;/p&gt;

&lt;p&gt;I'd rather invest that $4 to $5k into learning about Amazon EC2 and paying for
time on a &lt;a href=&quot;https://aws.amazon.com/ec2/instance-types/&quot;&gt;Quadruple Extra Large High-I/O instance&lt;/a&gt;.  It's only $3.10 per
hour for an 8 core (plus HT), 60 GB of RAM, two 1 TB solid state disks, and 10
Gigabit Ethernet machine.  Damn!&lt;/p&gt;

&lt;p&gt;I'm only going to need really high performance for a few tasks, maybe 2 hours
per day, on average.  That means my costs, per day, would only be something like
$7.  Even with 250 working days per year, my yearly cost would come out to under
$2k.  And, I bet, a decent amount of the things I'd want to do could run almost
as fast on a slightly lower priced EC2 instance.  And, Amazon probably will come
out with new instance types that are either higher performance or lower priced
that I could use, too.&lt;/p&gt;

&lt;p&gt;It's hard to connect peripherals to an EC2 instance, but that'd probably  be
OK.  I usually don't need both random peripherals and high compute power at the
same time.&lt;/p&gt;

&lt;p&gt;Nothing stops me from trying this idea out now.  Even with a huge laptop, I
could still leverage EC2 for some tasks and start my learning.  I think that's a
good idea.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Job Applications</title>
   <link href="http://www.bradfordembedded.com/2012/07/job-applications"/>
   <updated>2012-07-24T00:00:00-07:00</updated>
   <id>hhttp://www.bradfordembedded.com/2012/07/job-applications</id>
   <content type="html">&lt;p&gt;Fred Wilson wrote this morning about &lt;a href=&quot;http://www.avc.com/a_vc/2012/07/one-click-apply-.html&quot;&gt;One Click Apply&lt;/a&gt; where some online job
application sites now have &quot;one click&quot; apply buttons.  Fred thinks this is a
good thing, it means more people apply for jobs because it's really even easier
to do if all you have to push is one button.&lt;/p&gt;

&lt;p&gt;I agree that it's easier.  I don't think it's better.&lt;/p&gt;

&lt;p&gt;More job applications means that the hiring company has more to wade though.
Which means more automated screenings.  Which means more work to find the
diamond in the rough.  I'm not sure that's a good thing.&lt;/p&gt;

&lt;p&gt;Why aren't companies making it harder to apply?  Or, why are companies even
allowing people to apply?&lt;/p&gt;

&lt;p&gt;The really desirable (in Internet terms) companies to work for, like &lt;a href=&quot;https://github.com/&quot;&gt;GitHub&lt;/a&gt;
and &lt;a href=&quot;https://37signals.com/&quot;&gt;37signals&lt;/a&gt;, could make applying for a job really hard and they'd
probably still get inundated with applications for any open positions.  They
could make a requirement of applying be that you have to send them, via snail
mail, a copy of your resume on a very particular type of paper, and they'd still
get inundated with applications complying exactly with their request.
But, they'd only get inundated with applications from people who
really want to work there.&lt;/p&gt;

&lt;p&gt;37signals already mostly do this type of process.  It seems that most people who
get hired by them make amazing web sites specifically to act as their resume for
37signals.  That's really cool.  But it says a lot about the company, having so
many people wanting so badly to work for them.  They're doing something right.&lt;/p&gt;

&lt;p&gt;So instead of making it easier to apply to companies that are &quot;doing it wrong,&quot;
why not put effort behind making the company a desirable place to work?  Then
you don't have to have a job application process that gets &quot;22% more applicants&quot;
in order to feel success.  Then you can get less applications from way more
interested people, and you'll probably hire a better person, too.&lt;/p&gt;

&lt;p&gt;More is not better.  Better is better.  Trying to get more won't improve things
in the hiring process.&lt;/p&gt;

&lt;p&gt;Better is hard.  More is easy.  You get out what you put in.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>You (Probably) Don't Want an SLR</title>
   <link href="http://www.bradfordembedded.com/2012/07/you-dont-want-an-slr"/>
   <updated>2012-07-23T00:00:00-07:00</updated>
   <id>hhttp://www.bradfordembedded.com/2012/07/you-dont-want-an-slr</id>
   <content type="html">&lt;p&gt;You probably don't want to buy an &lt;a href=&quot;https://en.wikipedia.org/wiki/Single-lens_reflex_camera&quot;&gt;SLR&lt;/a&gt; camera.
What you should be buying is a pocketable high quality point-and-shoot camera.&lt;/p&gt;

&lt;p&gt;Here's why:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;SLRs are big and bulky.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;You can't take it everywhere with you and so you'll
take pictures less often with an SLR than you would with a pocketable
point-and-shoot.  There are situations where you just can't take an SLR,
especially if you have kids or are travelling with other luggage, where you can
take a pocketable point-and-shoot.  Buy a high quality point-and-shoot and
you'll take pictures in more locations of more things.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;SLRs are expensive.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The entry level SLR cameras start around $500 for a kit with a crap lens.
If you're really getting the most out of your SLR, you'll want better glass
(lenses), especially if you shoot low light, since most kit lenses are very
very slow (f-stop wise).  Good lenses cost good money, prepare to spend more on
lenses than on your camera (also, buy used, lenses don't get much better over
time and 5 year old tech is pretty much the same as today's tech except for the
image stabilization).&lt;/p&gt;

&lt;p&gt;But if you want to really shoot like a pro, don't buy the entry level SLR, you
should spend more and get an upper level consumer or low level pro model.
That'll set you back even more, expect to spend a grand for really good quality
stuff.&lt;/p&gt;

&lt;p&gt;Then, you'll need a bag, cause you can't risk damaging your expensive camera.
And with that spare lens you bought, you now have more than one thing to carry,
and it's kind of big.&lt;/p&gt;

&lt;p&gt;And now that you have a bag and a spare lens, you have to consciously pack it
along (see point 1).  You're not going to want to take it with you everywhere
you go (I'm not going to take pictures at the fancy dinner restaurant, right? I
don't &lt;em&gt;need&lt;/em&gt; to take the SLR this evening).  Now, you're going to miss shots.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;High-end point-and-shoots take really good pictures&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Until you're limited by the camera, which will require you to apply some photo
taking skills (which most people don't have and don't care to develop), an SLR
won't allow you to take better photos than a high quality point-and-shoot.  And
the high end point-and-shoots have the same sensors and (sometimes) faster
glass than the low end SLRs.  Many point-and-shoots have full (or almost full)
manual modes, do macro down to 1 inch focus, and can run &gt; 1 minute exposures.
Some even have hot-shoes for external flashes.  Many now come with f2 or faster
lenses (that's really good!).&lt;/p&gt;

&lt;p&gt;You can do a hell of a lot with a high quality point-and-shoot.  And it'll fit
in your pocket.  So, you'll take it to that fancy restaurant, and you'll take
pictures there, too.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The best camera for the job is the one you have with you!&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The iPhone has a good camera, for a phone.  But, even $200 point-and-shoots will put
it to shame.&lt;/p&gt;

&lt;p&gt;So, if you're out, and you don't have your SLR, use your iPhone.  But the low
light performance will suck, and you probably won't be able to get good 8x10
inch prints without noticeable grain.&lt;/p&gt;

&lt;p&gt;If you had your pocketable point-and-shoot, you'd get good pictures.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Conclusion&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;It really all comes down to money and taking more pictures.  Taking more
pictures, or having the opportunity to, means having a camera with you more
often.&lt;/p&gt;

&lt;p&gt;Buy the &lt;a href=&quot;http://www.amazon.com/gp/product/B005MTME3U/ref=as_li_ss_tl?ie=UTF8&amp;amp;camp=1789&amp;amp;creative=390957&amp;amp;creativeASIN=B005MTME3U&amp;amp;linkCode=as2&amp;amp;tag=bradford07-20&quot;&gt;$350 point-and-shoot&lt;/a&gt;.  Put it in your pocket when you go places.  Take
pictures.  Job done.&lt;/p&gt;

&lt;p&gt;Or, spend &gt; $1k on an SLR, buy a bag, and lug it around.  I hear those fanny
pack bags are nice...&lt;/p&gt;

&lt;p&gt;Want to read more about the Canon S100 point-and-shoot I like?  &lt;a href=&quot;http://www.dpreview.com/products/canon/compacts/canon_s100&quot;&gt;dpreview&lt;/a&gt; has good
things to say.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Addendum&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Of course, if you're a photo journalist, taking a photography course, or are
really into one or two specific types of photography (landscapes, night shots,
wildlife, sports, etc) an SLR probably is the right camera.  But if you're
doing these things, you probably already own a nice camera, a bunch of lenses,
and you're heavily invested in going on trips with your SLR for the main
purpose of taking the pictures you like to take.&lt;/p&gt;

&lt;p&gt;Most people aren't like this.&lt;/p&gt;

&lt;p&gt;I used to be (back when film was cool and Kodak made profits), but now I just
want to take pictures and not think about it...  So do 95% of people out there.
And for those people (and quite a few of the &quot;already own an SLR&quot; people), a
really nice piont-and-shoot will get the job done.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Lean and Motivation</title>
   <link href="http://www.bradfordembedded.com/2012/07/z-lean-and-motivation"/>
   <updated>2012-07-18T00:00:00-07:00</updated>
   <id>hhttp://www.bradfordembedded.com/2012/07/z-lean-and-motivation</id>
   <content type="html">&lt;p&gt;I read &lt;a href=&quot;http://www.amazon.com/gp/product/0307887898/ref=as_li_ss_tl?ie=UTF8&amp;amp;camp=1789&amp;amp;creative=390957&amp;amp;creativeASIN=0307887898&amp;amp;linkCode=as2&amp;amp;tag=bradford07-20&quot;&gt;The Lean Startup&lt;/a&gt; by Eric Ries.  It was pretty good.&lt;/p&gt;

&lt;p&gt;I thought his points on minimizing the time spent between learning something
about your business is very apt.  In manufacturing, you want to minimize rework
of goods, or downtime of your line. In information work, you want to minimize
wasted effort, or situations where customers won't be wanting to give you
money.  It's all the same, really.  And it makes sense.  Build the minimum
viable product (MVP) to see if you're on the right track, spending as little
time as you can doing the building so that you can learn if you're doing it
right.  If not, change things and try again.&lt;/p&gt;

&lt;p&gt;But one thing not really talked about is motivation of workers.&lt;/p&gt;

&lt;p&gt;At big companies, or at small ones acting like big companies, projects take a
long time to go from a concept to a product.  Sometimes years.  And during this
time, the workers on the project have varying motivation.  At the beginning,
everyone's excited! Something new! But if there's setbacks, or rumors, or
concerns about the business, that excitement wanes.  As workers can't see the
impact of the work they are doing (no customers, yet, since the product's not
done, yet), it's hard to get re-excited about the great work they've been
doing.&lt;/p&gt;

&lt;p&gt;And I think this is a travesty.  Workers who aren't excited don't work as hard.
Workers who don't work as hard don't produce as good of results.  But with
lean, those workers get to see the results of their work sooner.  And with
lean, when a learning opportunity comes along and the product has to change,
they can all get excited again, the business is moving in the right direction,
towards the product that customers want.&lt;/p&gt;

&lt;p&gt;When you slog away at something for a year, never seeing if what you're making
is what the (or any) customer wants, you get demotivated.  Lean can help!
Improve your worker motivation by adopting lean practices, by learning more
often what the customers really want to have.  Do it by iterating, fast, and in
very small steps.  Put out a product that has just 1 feature, see if customers
would pay for it.  If not, go back to finding what 1 feature they will pay for,
and iterate on that.  Quickly.  The workers will be more engaged, they'll see
the impact of the work they're doing on the customer, and you'll get better
product, faster.&lt;/p&gt;

&lt;p&gt;Now, that's the best of both worlds.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>What Are You Hiding?</title>
   <link href="http://www.bradfordembedded.com/2012/07/what-are-you-hiding"/>
   <updated>2012-07-18T00:00:00-07:00</updated>
   <id>hhttp://www.bradfordembedded.com/2012/07/what-are-you-hiding</id>
   <content type="html">&lt;p&gt;Are you the guy who has an answer to every question?  Are you the guy who always
prefaces a piece of advice with, &quot;When I was at...&quot;?  Are you the guy who will
get into a screaming match rather than look wrong?&lt;/p&gt;

&lt;p&gt;Don't be that guy.  That guy's hiding something.  That guy's afraid people will
find something out about him.  The thing people might find out, it's not really
that big of a deal, but that guy thinks it is.&lt;/p&gt;

&lt;p&gt;Also, no one likes that guy.  No one wants to work with that guy.  And especially, no
one wants to &lt;strong&gt;work for&lt;/strong&gt; that guy.&lt;/p&gt;

&lt;p&gt;If you're that guy, say &quot;I don't know.&quot;  Say &quot;I'm wrong.&quot;  Stop telling war stories 10 times a day.
Just try it, if even only for 1 day.  You'll live.  And people might like you
better.  We know you're reasonably smart, that's why you're here.
If you weren't reasonably smart, you'd
have been fired or laid off by now.  But we also know you're not &lt;strong&gt;real smart&lt;/strong&gt;,
because if you were, you wouldn't still be here on your own volition.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;So, shut up and get back to work.&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Or, go work at a big company, there's lots of &lt;strong&gt;that guy&lt;/strong&gt;s there.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Twitter Pro</title>
   <link href="http://www.bradfordembedded.com/2012/07/twitter-pro"/>
   <updated>2012-07-17T00:00:00-07:00</updated>
   <id>hhttp://www.bradfordembedded.com/2012/07/twitter-pro</id>
   <content type="html">&lt;p&gt;Seth Godin &lt;a href=&quot;http://www.avc.com/a_vc/2012/07/in-defense-of-free.html#comment-588538899&quot;&gt;commented on AVC&lt;/a&gt; in response to &lt;a href=&quot;http://www.avc.com/a_vc/2012/07/in-defense-of-free.html&quot;&gt;In Defense of Free&lt;/a&gt; mentioning
Twitter, and that if they had a Twitter Pro account for $2 / month, that it
could generate upwards of $240 million per year for 10 million subscribers.&lt;/p&gt;

&lt;p&gt;That's the idea behind the &lt;a href=&quot;http://www.avc.com/a_vc/2006/03/the_freemium_bu.html&quot;&gt;Freemium&lt;/a&gt; business model.  And it's a really
good one.  Especially for Twitter's situation.&lt;/p&gt;

&lt;p&gt;Make there be a Pro account, don't show Pro's any promoted content, allow any
and all API access, and give them other tools to curate their Twitter use.&lt;/p&gt;

&lt;p&gt;I can't see how this would be a bad thing.  I'm not sure that 10 million users
would want to sign up for it, but I'd bet tens of thousands would.  It may not
be the revenue leader for the company, but I think it would pay for itself.
And if $2 / month isn't enough, have tiers with different prices where each
tier gets certain other abilities.&lt;/p&gt;

&lt;p&gt;Then Twitter could cut off API access for everyone except &quot;official&quot; apps and
the web interface.  Free users would be forced to experience Twitter the way
Twitter wants but those that pay could experience it any way they please.
Twitter can do this, they already have an established service, they'd still be
offering a free version, and those that whine and complain about the change
could make all their own misery go away for just a few bucks per month.&lt;/p&gt;

&lt;p&gt;No downside.&lt;/p&gt;

&lt;p&gt;I wonder how many people at Twitter had even considered this before Seth said
it...&lt;/p&gt;

&lt;p&gt;It'd be just like LinkedIn and the fact that everybody in marketing, sales, and
recruiting pays for a more advanced LinkedIn account.  The free service
specifically doesn't have certain features and the paid accounts are reasonably
priced.  Bam!  Profit. (or at least revenues)&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>LAN Parties</title>
   <link href="http://www.bradfordembedded.com/2012/07/lan-parties"/>
   <updated>2012-07-17T00:00:00-07:00</updated>
   <id>hhttp://www.bradfordembedded.com/2012/07/lan-parties</id>
   <content type="html">&lt;p&gt;In high school, my friends and I held a few LAN parties.  They were quite fun.
I haven't been to one since, and I don't intend to change that, but it's fun to
reminisce and &lt;a href=&quot;http://www.kungfugrippe.com/post/169873399/clackity-noise&quot;&gt;make the clackity noise&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;I had an &lt;a href=&quot;http://www.lowendmac.com/ppc/yikes-power-mac-g4-pci.html&quot;&gt;Apple Yikes! G4&lt;/a&gt;, the 400 MHz version that launched before they
changed the low end model to be 350 MHz.  It had a decent (for the time) ATI
Rage 128 graphics card.  But my friend John had a &lt;a href=&quot;https://en.wikipedia.org/wiki/Voodoo3&quot;&gt;Voodoo3&lt;/a&gt; PCI card that I
was able to flash firmware on in order to make it work in my Mac.  (I
subsequently deleted the backup of the original firmware, thus leaving me no
way to reflash it back to work on an x86 machine, and thus forcing John to give
me an ultimatum that I'd have to buy the card from him.  Luckily I found
another friend who would, I didn't have a spare $100 in high school!)&lt;/p&gt;

&lt;p&gt;John and I bought 1000 feet of solid wire CAT5, a cheap crimper, and a bag full
of RJ-45 ends.  We built Ethernet cables (for fun at first) for all our
friends.  (And I eventually wired my parents' house by running 100 feet of it
through the attic, via holes in the ceilings of my bedroom and out by the
family computer in the living room.  Mom wasn't impressed with my ceiling
holes...)&lt;/p&gt;

&lt;p&gt;We had the LAN parties in a barn my friend Matt's dad owned.  Random Ethernet
switches and hubs strewn around, interspersed with outlet strips plugged into
outlet strips plugged into multiple hundred foot extension cords (kids: don't
do that with your power cords!).&lt;/p&gt;

&lt;p&gt;We'd play Unreal Tournament and Starcraft.  It was awesome.  (Although I have
no recollection of why we didn't play Quake, maybe it wasn't out for the Mac?)
We'd order pizza.  We'd spend all day (from 8 in the morning till 8 at night)
in the barn just playing games (well, we'd wait quite a bit, too, for things to
load over the poorly wired network, mods for UT seemed to want to be on
everyone's machine even if we weren't playing a game that needed it).&lt;/p&gt;

&lt;p&gt;Those were fun days.  Playing with computer with friends.&lt;/p&gt;

&lt;p&gt;Even though I'm not really excited by computer gaming now, I do miss playing
with computers with friends.  That's something I should do more often.
That's as good a reason as any to go to a meetup or join a hackerspace.
Timely, as my plan is to head to the &lt;a href=&quot;http://meetup.coworkingrochester.com/events/70270192/&quot;&gt;Ruby Meetup&lt;/a&gt; held at &lt;a href=&quot;http://www.coworkingrochester.com/&quot;&gt;Coworking
Rochester&lt;/a&gt; next month.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>OUYA</title>
   <link href="http://www.bradfordembedded.com/2012/07/ouya"/>
   <updated>2012-07-12T00:00:00-07:00</updated>
   <id>hhttp://www.bradfordembedded.com/2012/07/ouya</id>
   <content type="html">&lt;p&gt;&lt;a href=&quot;http://ouya.tv&quot;&gt;OUYA&lt;/a&gt; is a proposed gaming console being funded by a KickStarter campaign.
You can pledge $99 and your reward will be a console with one controller,
delivered in March 2013.&lt;/p&gt;

&lt;p&gt;OUYA is to be powered by an ARM processor and  will run Android.  As of this morning,
almost $4 million has been pledged.  It's now KickStarter's fastest funded past
$1 million project (measured in hours) and is on track to be the largest funded
project ever (if it's not already).  It sounds pretty cool.&lt;/p&gt;

&lt;p&gt;I won't be pledging.  I think it's going to fail.&lt;/p&gt;

&lt;p&gt;It's really hard to make a game console.  Getting the hardware right on the
first try is not easy.  With a gaming console, changing the hardware after
launch is almost impossible without causing incompatibilities (game designers
love to do unexpected tricks because they know the hardware is stable).
OUYA's play mostly seems to be that they will offer fixed hardware, running
Android, and a stable SDK that's really cheap (it's included with every one).
GREAT!  But it's really hard to do this right.&lt;/p&gt;

&lt;p&gt;Pricing the hardware appropriately to both make money and draw consumers is
very difficult.  Nothing is stopping Microsoft from dropping the Xbox
down to $99 just before OUYA's launch.  Microsoft has a history of losing money
on Xbox hardware sales, they seem to have no hesitation about doing it in order
to gain market share.  I don't think they'd hesitate to do it again if OUYA
is a real threat.  Which console is going to sell well at Wal-Mart?  The Xbox
at $99 with hundreds of games and Kinect, or this new thing?  It doesn't even
matter what the features of the new thing are, the Xbox is established and
kids won't be disappointed getting one.  Until OUYA is established, it's a
risky purchase for parents wanting to get their kid something, Xbox isn't.&lt;/p&gt;

&lt;p&gt;OUYA is going to miss the holiday season for 2012.  I'm not a game industry
insider, but I bet over half of the game industry's revenues come in the 4th
quarter.  Missing that will hurt them.  Launching in March is bad timing.
Launching in the first week of November would be awesome timing.  They'll
delay millions of dollars in revenues by a full year, if OUYA could pull
in their schedule by 5 months, I think they'd have a chance.  If they don't,
Microsoft, Nintendo and Sony are going to eat their lunch.&lt;/p&gt;

&lt;p&gt;Selling an SDK with the console price is stupid.  Sell the console.  Also sell
the SDK, but price it reasonably.  Apple gives away the SDK for iOS, but you
have to pony up $100 in order to sell in their store.  Fair.  If OUYA doesn't
do this same type of agreement, they're leaving $100+ per game developer on the
table.  $100 is reasonable, $1k wouldn't be unreasonable in order to get into
their store.  Giving the SDK away for free is a good idea, though, just make
sure to charge at some point in order to be a developer.&lt;/p&gt;

&lt;p&gt;OUYA won't have amazing graphics.  That will hurt.  Xbox 360 was launched in
2005!  That's 7 years ago.  New games, coming out now, probably will have equal
graphics on Xbox as they would on OUYA.  It'll take developers a year or two
to really understand what can be done with OUYA.  I can only assume Microsoft
is working on the next gen Xbox.  OUYA, if it's really a threat, may push
Microsoft's schedule up a little bit.&lt;/p&gt;

&lt;p&gt;OUYA is trying to disrupt the game industry.  They will only be successful if
one of the entrenched players doesn't try to do the same thing.  Nintendo,
Sony, and Microsoft all have great brands in gaming.  They are ripe for
disruption, and it's good that OUYA is bringing that fact to light.  But if
any one of those 3 entrenched companies realizes that they too could disrupt
the industry the same way OUYA is trying to, OUYA will fail.  I'm confident
that all 3 entrenched companies will see what's happening and try to perform
their own disruption, they can't afford not to, especially Microsoft, who's
going to need the revenue when &lt;a href=&quot;/2012/07/Windows-8/&quot;&gt;Windows 8 sucks&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;It's awesome that OUYA is trying to do this.  I think it'd be tons of fun to
work there and be a part of making their console.  But, they're going to fail.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Bad Coffee</title>
   <link href="http://www.bradfordembedded.com/2012/07/bad-coffee"/>
   <updated>2012-07-11T00:00:00-07:00</updated>
   <id>hhttp://www.bradfordembedded.com/2012/07/bad-coffee</id>
   <content type="html">&lt;p&gt;I started drinking coffee regularly about a year ago, when my daughter was
born.  I drink 1 cup each morning, when I get to the office.&lt;/p&gt;

&lt;p&gt;I always added cream and sugar, one of each when they came in standard
packet sizes. But last week, I started drinking coffee black.&lt;/p&gt;

&lt;p&gt;Oh. My. God.&lt;/p&gt;

&lt;p&gt;That cream and sugar really covers up a lot of the variation
in coffee taste.  Some coffee is downright horrible tasting, some has almost
no taste at all, and some is good tasting.  Drinking it black has helped me
realize this.&lt;/p&gt;

&lt;p&gt;Folgers sucks.  It's bitter, then has no taste.  Why is it one of the most
popular coffees?  Marco and Dan talk a little (a lot?) about coffee in
&lt;a href=&quot;http://5by5.tv/buildanalyze/10&quot;&gt;Build and Analyze #10&lt;/a&gt; and why people seem to keep buying the horrible
kinds.&lt;/p&gt;

&lt;p&gt;At work, we have a &lt;a href=&quot;http://blog.tonx.org/2011/12/your-parents-make-lousy-coffee/&quot;&gt;$200+ abomination of ridiculously chromed plastic
festooned with blue LEDs&lt;/a&gt;.  Usually we stock the &lt;a href=&quot;http://www.greenmountaincoffee.com/Coffee/K-Cup-Colombian-Fair-Trade-Select&quot;&gt;Columbian&lt;/a&gt;.
It's actually pretty decent tasting, much much better than the decaf or
Folgers stuff.  The &lt;a href=&quot;http://www.greenmountaincoffee.com/Coffee/K-Cup-Breakfast-Blend-Decaf&quot;&gt;decaf&lt;/a&gt; sucks, it just tastes like burnt.&lt;/p&gt;

&lt;p&gt;Now, I'm becoming a coffee snob.  I'm not a full-on snob, I still think that
the Keurig makes an OK cup of the Columbian, but an &lt;a href=&quot;http://www.amazon.com/gp/product/B001HBCVX0/ref=as_li_ss_tl?ie=UTF8&amp;amp;camp=1789&amp;amp;creative=390957&amp;amp;creativeASIN=B001HBCVX0&amp;amp;linkCode=as2&amp;amp;tag=bradford07-20&quot;&gt;AeroPress&lt;/a&gt; is now on
&lt;a href=&quot;http://amzn.com/w/1DQZXRJNNYGKK&quot;&gt;my Amazon Christmas wish list&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;If anyone wants to buy me a &lt;a href=&quot;https://tonx.org/offer&quot;&gt;Tonx subscription&lt;/a&gt;, I'd be more than happy
to drink all of it!&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Windows 8</title>
   <link href="http://www.bradfordembedded.com/2012/07/Windows-8"/>
   <updated>2012-07-10T00:00:00-07:00</updated>
   <id>hhttp://www.bradfordembedded.com/2012/07/Windows-8</id>
   <content type="html">&lt;p&gt;Microsoft is coming out with &lt;a href=&quot;http://www.codinghorror.com/blog/2012/07/betting-the-company-on-windows-8.html&quot;&gt;Windows 8&lt;/a&gt; soon.  They want it to compete
with both tablet and desktop / laptop offerings from other vendors (mainly
Apple, and less so, Google).&lt;/p&gt;

&lt;p&gt;Microsoft is going to lose the tablet and mobile war.  They're too far
behind, in exactly
the same way Apple got too far behind Microsoft after Windows 95 came out.&lt;/p&gt;

&lt;p&gt;Apple has the installed base of hundreds of millions of iOS devices.  Apple
has that &quot;cool factor&quot; where everyone wants an i device.  &lt;strong&gt;Apple has
developers making great apps that sell well&lt;/strong&gt;.  Apple isn't going
to slow down (heck, they're probably going to introduce a &lt;a href=&quot;/2012/07/7-inch-ipad/&quot;&gt;low cost 7 inch
iPad&lt;/a&gt;).  Apple is out in the lead and Microsoft is playing catch-up.&lt;/p&gt;

&lt;p&gt;I had an interesting conversation with a friend last night.  He thinks Apple
would be foolish to not release a 7 inch iPad to capture the lower purchase
price market that they're currently ignoring.  But he also thinks that Windows
8 will be a big hit, most likely first in the &quot;enterprise.&quot;&lt;/p&gt;

&lt;p&gt;Which seems reasonable, on desktops and laptops.  Microsoft already owns that
market, making a dent there with Windows 8 won't really change much.  It's the
tablet and phone market where I think Microsoft will fail (since they have
been failing successfully so far for years in these markets).  Apple and
Android have too much of a lead.&lt;/p&gt;

&lt;p&gt;Microsoft made a dent in the gaming industry with the Xbox by spending obscene
amounts of money (losing tons on each unit sold initially) in order to gain
market share.  But Nintendo was trying to differentiate itself from Sony and
left just Sony to compete with Microsoft when they introduced the first Xbox.
Sony screwed the pooch, it was their game to lose and they successfully lost
it.  There was a market opening and Microsoft filled it, with bags of money,
and that was good enough.&lt;/p&gt;

&lt;p&gt;Apple and Google aren't leaving any market openings.  Even bags of money can't
fill something that isn't there.&lt;/p&gt;

&lt;p&gt;Having a pretty UI, a functioning application store, integration with cloud
services, and a low purchase price won't change things.  People still will
want iPads, iPhones, and iPods.  If they can't afford those, they'll buy an
Android device, or maybe they'll consider a Microsoft device.  But the first
consumers of Microsoft devices won't be early adopters, they've already all
bought iOS and Android devices.  The first consumers of Microsoft devices
will be the general public and the general public has no idea how to use
anything but an iOS or Android device.  The general public expects their
favorite applications (not just angry birds and Word) to be available.
The general public is going to be pissed, and they're going to tell their
friends, and Consumer Reports will get angry mail, and then Microsoft will
have to come out with Windows 9 where they say (yet again) that they have
fixed everything.  It's not going to work, Microsoft.  You're going to lose.&lt;/p&gt;

&lt;p&gt;So, why play the game?  If you know you're going to lose, why not change
the game?  Why not do what Google and Amazon are doing?  Why not force the
incumbent to admit there's a market they're not serving at a price that requires
bags of money to achieve?  Why not do a Kinect, game changing (no pun intended),
thing instead of a &quot;me too!&quot; thing?&lt;/p&gt;

&lt;p&gt;I don't know.  Apparently, neither does Microsoft.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>7 inch iPad</title>
   <link href="http://www.bradfordembedded.com/2012/07/7-inch-ipad"/>
   <updated>2012-07-09T00:00:00-07:00</updated>
   <id>hhttp://www.bradfordembedded.com/2012/07/7-inch-ipad</id>
   <content type="html">&lt;p&gt;Apple made the front page of the physical USA Today paper on Saturday.  But
they didn't actually &lt;strong&gt;&lt;em&gt;DO&lt;/em&gt;&lt;/strong&gt; anything.&lt;/p&gt;

&lt;p&gt;Some guy, at some investment place, &lt;em&gt;said Apple might make a 7 inch iPad&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;A 7 inch iPad is a stupid idea for Apple.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The Google Nexus 7 is $199.  The Amazon Fire is $199.  Both are 7 inches.
The Apple iPad is $499 and 10 inches.&lt;/p&gt;

&lt;p&gt;Currently, there's no tablet market, there's an iPad market.  People don't
want &quot;tablet computers,&quot; they want iPads.  But, if Apple admits that there
might be anything other than an iPad market, by selling a low cost 7 inch iPad, that invites
competition in the form of the Nexus and Fire.&lt;/p&gt;

&lt;p&gt;I can't see why Apple would want that.  The iPad is &lt;strong&gt;the only 10 inch tablet
computer that has any significant market share&lt;/strong&gt;.  Apple owns the market.
Google and Amazon see the only way to break into the tablet market is to try
to redefine it, where there's 2 classes of tablets:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;10 inch iPads for $499&lt;/li&gt;
&lt;li&gt;7 inch tablets for $199&lt;/li&gt;
&lt;/ol&gt;


&lt;p&gt;If Apple enters the second category, they admit that there's 2 classes and
they'll have to compete on price.  This would be stupid for Apple.&lt;/p&gt;

&lt;p&gt;Customers who can't justify $499 for an iPad aren't good customers to have.
&lt;strong&gt;They won't pay&lt;/strong&gt; for apps.  &lt;strong&gt;They won't pay&lt;/strong&gt; for accessories.
But they sure as hell &lt;strong&gt;will whine&lt;/strong&gt; when things aren't perfect.  And the
whining is what will end up in the media and is what will hurt Apple in
relation to its competition.&lt;/p&gt;

&lt;p&gt;Google and Amazon don't care about the whining, they have nothing to lose.
Apple has everything to lose.  Making a 7 inch iPad has huge potential
downsides but almost no upside.  There's nothing revolutionary about making
a 7 inch iPad.&lt;/p&gt;

&lt;p&gt;I really hope they don't do it.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Procrastination</title>
   <link href="http://www.bradfordembedded.com/2012/07/procrastination"/>
   <updated>2012-07-06T00:00:00-07:00</updated>
   <id>hhttp://www.bradfordembedded.com/2012/07/procrastination</id>
   <content type="html">&lt;p&gt;Sometimes I have a hard time getting around procrastination.  I don't think
I'm alone in this.&lt;/p&gt;

&lt;p&gt;I've been listening to Merlin Mann and Dan Benjamin's podcast &lt;a href=&quot;http://5by5.tv/b2w&quot;&gt;Back to Work&lt;/a&gt;
lately and procrastination is one thing they address multiple times.
Merlin is of the opinion that procrastination partly stems from having
an item on your to-do list but not having a defined set of steps spelled out
yet (in your head, on paper, whatever) for how to accomplish the task.
You may not even know what the next thing you have to do in order to accomplish
the task is.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;So make a freaking list of actions!&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The items on the list should be actions.  Verbs.  Things like:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;em&gt;Drive&lt;/em&gt; to the mall&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Walk&lt;/em&gt; to shoe store&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Try&lt;/em&gt; on 5 pairs of running shoes in size 12&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Select&lt;/em&gt; 1 pair that fits the best&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Pay&lt;/em&gt; for shoes&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Drive&lt;/em&gt; home&lt;/li&gt;
&lt;/ol&gt;


&lt;p&gt;or&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;em&gt;Launch&lt;/em&gt; web browser&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Navigate&lt;/em&gt; to Zappos&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Locate&lt;/em&gt; 5 pairs of running shoes in size 12&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Pay&lt;/em&gt; for shoes&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Try&lt;/em&gt; on all 5 pairs&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Select&lt;/em&gt; 1 pair that fits the best&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Request&lt;/em&gt; to return other 4 to Zappos&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Pack&lt;/em&gt; 4 pairs of shoes into box&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Print&lt;/em&gt; return shipping label&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Apply&lt;/em&gt; shipping label&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Drive&lt;/em&gt; box to UPS store&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Leave&lt;/em&gt; box at UPS store&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Drive&lt;/em&gt; home&lt;/li&gt;
&lt;/ol&gt;


&lt;p&gt;All the italic words are verbs.  Now you have a list.  This makes buying shoes
brain dead simple.  Execute the list, check off each step.  Now you have
no reason for not buying shoes, unless...&lt;/p&gt;

&lt;p&gt;If buying shoes is really that important to you, execute the list.  If buying
shoes isn't that important, &lt;strong&gt;WHY THE HELL IS IT ON YOUR LIST?!?!&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Buying shoes doesn't sound like a big deal.  But I've had &quot;buy new shoes&quot; on my
to-do list for at least 2 years.  It's clearly not that important to me.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Time to either execute or remove it from my list!&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;(Yes, this also relates to &lt;a href=&quot;/2012/06/planning-specifying-and-documenting/&quot;&gt;Planning, Specifying and Documenting&lt;/a&gt; work
projects.  No one at big companies likes doing their work, that's why they
write big lists of actions that have to happen.  You should, too.)&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Job Security</title>
   <link href="http://www.bradfordembedded.com/2012/07/job-security"/>
   <updated>2012-07-06T00:00:00-07:00</updated>
   <id>hhttp://www.bradfordembedded.com/2012/07/job-security</id>
   <content type="html">&lt;blockquote&gt;&lt;p&gt;Peter Gibbons: What if we're still doin' this when we're 50?&lt;/p&gt;

&lt;p&gt;Samir: It would be nice to have that kind of job security.&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;That's the &lt;strong&gt;wrong kind of job security&lt;/strong&gt;.  If what you consider job security
is the ability to keep your current job, you're doing it wrong.&lt;/p&gt;

&lt;p&gt;Lots of people at large companies have this mentality about job security.  They
view layoffs and the potential of losing their jobs as a very big deal.  Now,
I'm not saying it's not some kind of deal, it's just not that big of a deal,
&lt;strong&gt;if&lt;/strong&gt; you've been building a career and not just working to &lt;em&gt;keep&lt;/em&gt; a job.
There's a huge difference between building a career and keeping a job.&lt;/p&gt;

&lt;p&gt;Building a career means always learning.  It means minimizing the time spent
doing things you've done before, automating them away if possible.  It means
always signing up for things that you don't feel comfortable with.  It means
doing &lt;strong&gt;a lot of reading&lt;/strong&gt;.  It means asking stupid questions of smart people,
being told that you're asking stupid questions, and getting pointed in the right
direction.  Then working your butt off.&lt;/p&gt;

&lt;p&gt;Building a career means not standing still.  It means moving with the flows of
new technology, of new practices, of new techniques.  It means always increasing
your efficiency.&lt;/p&gt;

&lt;p&gt;Working a job means doing just enough to not get fired.&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;Peter Gibbons: That's my only real motivation is not to be hassled, that and the fear of losing my job. But you know, Bob, that will only make someone work just hard enough not to get fired.&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;I love the movie &lt;a href=&quot;http://www.amazon.com/gp/product/6305508550/ref=as_li_ss_tl?ie=UTF8&amp;amp;camp=1789&amp;amp;creative=390957&amp;amp;creativeASIN=6305508550&amp;amp;linkCode=as2&amp;amp;tag=bradford07-20&quot;&gt;Office Space&lt;/a&gt;.  But I want to be building a career, not working a
job.  I'm not Peter, as much as I may have dreamed of acting like him when I
was at Xerox.&lt;/p&gt;

&lt;p&gt;In the past, I had wasted time and brain power worrying about keeping a job.
That's stupid.  Instead, I should have been building a career.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Now, I am.&lt;/strong&gt;&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Faucet Mount Water Filters</title>
   <link href="http://www.bradfordembedded.com/2012/07/faucet-mount-water-filters"/>
   <updated>2012-07-05T00:00:00-07:00</updated>
   <id>hhttp://www.bradfordembedded.com/2012/07/faucet-mount-water-filters</id>
   <content type="html">&lt;p&gt;At work, Kodak (our landlord) requires us to have a water filter in our little
kitchen area (don't ask why).  Initially we had a &lt;a href=&quot;http://www.amazon.com/gp/product/B000EOOQPW/ref=as_li_ss_tl?ie=UTF8&amp;amp;camp=1789&amp;amp;creative=390957&amp;amp;creativeASIN=B000EOOQPW&amp;amp;linkCode=as2&amp;amp;tag=bradford07-20&quot;&gt;Brita&lt;/a&gt; faucet mount filter,
but once we used up the spare filters for it, we threw it out and bought a
&lt;a href=&quot;http://www.amazon.com/gp/product/B0009CEKY6/ref=as_li_ss_tl?ie=UTF8&amp;amp;camp=1789&amp;amp;creative=390957&amp;amp;creativeASIN=B0009CEKY6&amp;amp;linkCode=as2&amp;amp;tag=bradford07-20&quot;&gt;Pur&lt;/a&gt; unit to replace it.&lt;/p&gt;

&lt;p&gt;As per many of the reviews on the Brita unit, our switch became very very difficult
to turn between the filtered and non-filtered settings.  It was so bad that
pretty much everyone simply left it on the filtered mode all the time.  Even
when running hot water through it (which you're not supposed to do).  We also
had more than one instance of someone moving the faucet (it rotates) by grabbing
the Brita filter unit and accidentally pushing the filter release button.
This isn't a huge deal when there's no water pressure, but when the faucet's on,
water goes everywhere!  Regardless of if water's running, removing the filter
will reset the timer function that tells you when to put a new filter in.
We resorted to writing the install date of each filter with a Sharpie on the
top of it (which is ugly, but effective) and replacing the filter once a month.&lt;/p&gt;

&lt;p&gt;I had seen the Pur unit at a store and commented how the lever was very easy
to switch between filtered and non-filtered, so we bought a Pur unit.  It is
indeed very easy to switch between filtered and non-filtered modes, much much
easier than the Brita.  Now, most people switch to non-filtered mode for hot
water, since switching is so easy.  The filter is a cartridge that goes inside
of a screw on cap, so there's no easy way to accidentally remove the filter
and spray yourself or reset the life counter.  Overall, the Pur is simply a
better unit than the Brita.  The Pur does seem to flow a little slower than the
Brita.&lt;/p&gt;

&lt;p&gt;Amazon reviews seem to indicate that older Pur models had some issues, but
comments from Pur people about changes they've made, plus my experiences, seem
to moot the problems.  We have no issues with our Pur popping off, leaking, or
cracking.  We don't have any special mounting system, just what came in the box.&lt;/p&gt;

&lt;p&gt;Overall, I'm happy with the Pur.  The next time I need to buy a faucet mount
filter, I'll be buying a Pur.&lt;/p&gt;

&lt;p&gt;(If you haven't read my stance on &lt;a href=&quot;/2012/06/amazon-affiliates-hate/&quot;&gt;Amazon Affiliates&lt;/a&gt;, you should.)&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Talking to Myself</title>
   <link href="http://www.bradfordembedded.com/2012/07/talk-to-myself"/>
   <updated>2012-07-03T00:00:00-07:00</updated>
   <id>hhttp://www.bradfordembedded.com/2012/07/talk-to-myself</id>
   <content type="html">&lt;p&gt;I like to talk to myself.&lt;/p&gt;

&lt;p&gt;Maybe I'm crazy.  I don't know.&lt;/p&gt;

&lt;p&gt;But I find it easier to put pieces of new concepts together when I'm able to
talk to myself out loud.  When I'm programming or conceptualizing ideas,
talking out loud makes things flow easier for me.&lt;/p&gt;

&lt;p&gt;It's hard to talk to myself, out loud, in an open office or cube farm.  Mostly
because I don't want to disturb everyone else (nor do I want them to talk
out loud and disturb me) but also because I don't want everyone to think I'm
the crazy guy who talks to himself.&lt;/p&gt;

&lt;p&gt;It feels less like I'm a crazy person when I write about the fact that I talk to myself
on the Internet rather than when I say it to someone in person.  Thanks, Internet.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Keyboards</title>
   <link href="http://www.bradfordembedded.com/2012/07/keyboards"/>
   <updated>2012-07-02T00:00:00-07:00</updated>
   <id>hhttp://www.bradfordembedded.com/2012/07/keyboards</id>
   <content type="html">&lt;p&gt;I have an &lt;a href=&quot;https://en.wikipedia.org/wiki/Model_M_keyboard&quot;&gt;IBM Model M&lt;/a&gt; (PS/2) at home and a &lt;a href=&quot;http://www.leopold.co.kr/?doc=cart/item.php&amp;amp;it_id=1301969977&quot;&gt;Leopold FC500R&lt;/a&gt; with Cherry
brown switches at work.  I like the Model M better than the Leopold, but both
are very nice keyboards.&lt;/p&gt;

&lt;p&gt;In college, my roommate Steve bought me a used Model M from Goodwill for like
$8.  It was missing a few key caps and was a bit worn, but it still worked quite
well and I loved it.  It had an AT style keyboard connector (rather than PS/2
or USB) but with a passive PS/2 converter, worked great.  I stupidly gave it
away when I sold my desktop shortly after graduation, thinking I could easily
find another keyboard I really liked and because I was mostly using an Apple
G4 PowerBook for my day-to-day computing.&lt;/p&gt;

&lt;p&gt;I wish I hadn't.&lt;/p&gt;

&lt;p&gt;Luckily, there's great resources online for keyboard aficionados (of which
I'm probably one).  &lt;a href=&quot;http://elitekeyboards.com/&quot;&gt;EliteKeyboards&lt;/a&gt; sell a few different varieties of
Cherry switch keyboards, &lt;a href=&quot;http://www.pckeyboard.com/&quot;&gt;Unicomp&lt;/a&gt; still make brand-new buckling spring keyboards
(apparently they bought the rights from IBM along with the manufacturing
equipment), and &lt;a href=&quot;http://www.clickykeyboards.com/index.cfm&quot;&gt;ClickyKeyboards&lt;/a&gt; sell new and used IBM Model Ms.&lt;/p&gt;

&lt;p&gt;My Model M that I have now I purchased new from ClickyKeyboards in 2006.  Since
then, they seem to have almost 0 new Model Ms in stock.  It seems the IBM
Model Ms are starting to run out, people who have them keep them for decades
(no joke).  So really, the only choice is to either buy a used Model M or to
buy a new one from Unicomp, if you want true buckling spring action.&lt;/p&gt;

&lt;p&gt;Personally, I enjoy the buckling spring feel more than the Cherry switch feel.
My Cherry brown Leopold is nicer than a soft dome keyboard, but the key travel
is longer than I'd like and the force over the travel doesn't change in as
nice of a way as the Model M does.  It's quieter, but the keys bottoming out
still make some noise (so it's not &quot;silent&quot; as some might suggest).&lt;/p&gt;

&lt;p&gt;If you've never tried a buckling spring or Cherry switch keyboard, you should.
They are much nicer to type on than cheap dome keyboards.  And once you've
gotten used to them (assuming you like them), going back is hard.
I've found I don't like the hand positioning on the Microsoft ergonomic
keyboards, and although the dome switches on those are rather decent, I still
prefer a Model M or Cherry switch 'board.&lt;/p&gt;

&lt;p&gt;One thing to notice when buying either a Model M or a Cherry switch 'board is
the shape of the key caps and the sculpting of the keys in relation to each other.
The Model M has a nice sculpting of the key positions relative to each other
such that from the side, the keys seem to wrap around an imaginary cylinder.
Many of the Cherry switch keyboards don't do this.  My Leopold does, and that's
why I picked it over the others.  If this is something you care about, be sure
to research the configuration of the keyboard you're interested in before buying.&lt;/p&gt;

&lt;p&gt;Regardless of which keyboard you choose, if it's a Model M or Cherry switch one,
it should last decades.  You'll pay more for it (budget around $100 or so) but
in 10 years, when it's still working, you won't have spent a cent more and
you'll still have one of the nicest keyboards available.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>A Few Debian Notes (live, wicd, and encfs)</title>
   <link href="http://www.bradfordembedded.com/2012/06/a-few-debian-notes"/>
   <updated>2012-06-28T00:00:00-07:00</updated>
   <id>hhttp://www.bradfordembedded.com/2012/06/a-few-debian-notes</id>
   <content type="html">&lt;p&gt;I installed Debian Squeeze this morning and used a few resources I hadn't
known of before.  The install went well and I'd recommend taking a look at
these:&lt;/p&gt;

&lt;p&gt;The &lt;a href=&quot;http://live.debian.net/&quot;&gt;Debian Live Project&lt;/a&gt; has rather nice live CDs for Debian. I tried
out the LXDE desktop one and found I rather like LXDE, it runs rather quick
on my really old Dell Inspiron 9300 laptop.  The ISO won't fit on a CD (boo!)
but DVD-Rs or USB flash drives are rather easy to come by.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://wiki.debian.org/WiFi/HowToUse#Wicd&quot;&gt;wicd&lt;/a&gt;, the wireless interface connection daemon, is a very nice replacement
for network-manager.  wicd will do basically the same thing as network-manager
but without needing Gnome.&lt;/p&gt;

&lt;p&gt;And lastly, &lt;a href=&quot;http://wiki.debian.org/TransparentEncryptionForHomeFolder&quot;&gt;encfs&lt;/a&gt;.  Encrypt your home directory and have it decrypt
automatically on login.  Not super hard to setup, just be sure to read the
instructions carefully.  I prefer encfs over full lvm encryption as when
installing on flash memory media (like an ssd or USB flash drive), you can
simply create normal partitions aligned to the erase block size.  Also, you
can have a setup where you only have one giant root partition but want some
directories within it to be encrypted, removing the need for lvm in order
to get encryption.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Amazon Affiliates Hate</title>
   <link href="http://www.bradfordembedded.com/2012/06/amazon-affiliates-hate"/>
   <updated>2012-06-26T00:00:00-07:00</updated>
   <id>hhttp://www.bradfordembedded.com/2012/06/amazon-affiliates-hate</id>
   <content type="html">&lt;p&gt;Yesterday there was a post to &lt;a href=&quot;https://news.ycombinator.com/item?id=4156414&quot;&gt;Hacker News&lt;/a&gt; about a blog post written by
Antonio Cangiano (the author of the Prag Prog &lt;a href=&quot;http://www.amazon.com/gp/product/1934356883?tag=bradford07-20&quot;&gt;Technical Blogging&lt;/a&gt; book)
&lt;a href=&quot;http://technicalblogging.com/6-reasons-why-the-amazon-associates-affiliate-program-is-highly-underrated/&quot;&gt;about Amazon Associates&lt;/a&gt; and how to effectively use the program to make
some money with your blog.  It drew quite a bit of derision from a few HN
commenters.&lt;/p&gt;

&lt;p&gt;Do you see what I did there? :)&lt;/p&gt;

&lt;p&gt;Here's my stance:&lt;/p&gt;

&lt;p&gt;Amazon Affiliates is awesome.  If you have a blog, you should be an affiliate.&lt;/p&gt;

&lt;p&gt;I'm an affiliate, but so far I've made a sum total of about $2.50 (not enough
for Amazon to even pay-out).&lt;/p&gt;

&lt;p&gt;People like &lt;a href=&quot;http://www.codinghorror.com/blog/&quot;&gt;Jeff Atwood&lt;/a&gt; and &lt;a href=&quot;http://www.marco.org/&quot;&gt;Marco Arment&lt;/a&gt; (I read both of their blogs)
often post Amazon Affiliate links.  Jeff gets called out quite harshly in the
HN comments about his &quot;spamming&quot; of affiliate links, but Marco's just as
guilty (although he may have a smaller readership).  But &lt;strong&gt;I like that Jeff
and Marco use affiliate links!&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Marco does reviews of sometimes rather esoteric things that can be bought on
Amazon (&lt;a href=&quot;http://www.marco.org/2012/05/06/bathroom-fan-timer-switches&quot;&gt;bathroom fan times, anyone?&lt;/a&gt;) which are entertaining to read but
also could be very useful for that time (which doesn't come very often, I'll
admit) where you just &lt;em&gt;need&lt;/em&gt; a new bathroom fan timer.  Before reading about
Marco's experience with bathroom fan timers, I would never have known that
the type he likes even existed, let alone how it works and why I should pick
the 15 or 30 minute kind.  Now I do.  &lt;strong&gt;And!&lt;/strong&gt; If I go buy one though his
affiliate link, he gets a little kickback but I pay the same price as if I
had not clicked through the link.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How is that hurting me?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I'm not Marco's friend.  I read his blog, am a subscriber to &lt;a href=&quot;https://www.instapaper.com&quot;&gt;Instapaper&lt;/a&gt;,
and listen to his podcast, but I do these things because I think he has
interesting things to say, not because I know him personally.  So it's not like
I'm over at his house and he's recommending I buy some fan timers from this
guy he knows who will give him a kickback, I'm some random guy on the Internet
reading what Marco's experience was with buying quite a few different fan
timers and trying them out.  Why shouldn't he get some money for that?&lt;/p&gt;

&lt;p&gt;In the same way, Jeff posted about &lt;a href=&quot;http://www.codinghorror.com/blog/2012/06/because-everyone-still-needs-a-router.html&quot;&gt;wifi routers&lt;/a&gt; recently.  His post has
a few affiliates links in it.  OK.  But if he actually did a bunch of research
about these routers and can condense it down to 1 article that I can read in
5 minutes to gain the same information, that's &lt;em&gt;saving me time&lt;/em&gt; and effort
the next time I'm in the market for a new wifi router.&lt;/p&gt;

&lt;p&gt;I think Amazon Affiliate links are great.  I wish I had time to review more
things I buy (or to just have more time to buy things) and provide links to
them so I can make a few dollars from my blog.&lt;/p&gt;

&lt;p&gt;Where's the harm?&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Sales Leads are Junk</title>
   <link href="http://www.bradfordembedded.com/2012/06/sales-leads-are-junk"/>
   <updated>2012-06-25T00:00:00-07:00</updated>
   <id>hhttp://www.bradfordembedded.com/2012/06/sales-leads-are-junk</id>
   <content type="html">&lt;p&gt;Sales leads are junk.  Leads aren't a valuable business metric.  They don't mean
anything.  So, don't give them any weight in decision making.&lt;/p&gt;

&lt;p&gt;I was in a car crash.  My car was so badly damaged that the insurance company
considered it a total loss.  I can't live my life (without major change)
without a car.  So, I needed to buy a new one.&lt;/p&gt;

&lt;p&gt;My family and I decided on a budget and a feature list.  We were in the market
for something like a Honda Accord or Toyota Camry.  This is a huge market
segment, literally every major auto manufacturer sells a car that's similar.&lt;/p&gt;

&lt;p&gt;What does this have to do with sales leads?&lt;/p&gt;

&lt;p&gt;I went to 9 different car dealerships shopping for a car.  I was only
intending to buy 1 car.  8 of these dealerships got a sales lead that didn't
go anywhere.  1 got a sales lead, a sale, and revenue.&lt;/p&gt;

&lt;p&gt;1 dealer got value, the other 8 got a junk metric, the &quot;lead.&quot;&lt;/p&gt;

&lt;p&gt;Sales leads are important, you need them in order to eventually make a sale.
But if you're making decisions based on the number of leads, or some perceived
quality of leads, you're doing yourself a disservice.  Leads only matter if
they can be converted into sales.  If you have a horrible conversion ratio,
adding 1 or 10 or 100 more leads doesn't really mean anything.&lt;/p&gt;

&lt;p&gt;You have a horrible conversion ratio!  You do.  Everyone does.&lt;/p&gt;

&lt;p&gt;People love to window shop.  They love to dream of buying things.  It's fun.
All these people are sales leads.  Most of them won't turn into sales, just
like I visited 8 different car dealerships and didn't buy their cars &lt;strong&gt;even
though I needed to buy a car!&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Many people visiting a car dealership may not &lt;strong&gt;need&lt;/strong&gt; to buy a car.  They'd
&lt;strong&gt;like&lt;/strong&gt; to buy a car.  These leads most likely will have even worse conversion
ratios than I was when shopping.  Most people have a car that already &quot;works&quot;
and buying a new one is a luxury.&lt;/p&gt;

&lt;p&gt;So if a business boasts about their sales lead numbers, tell them to shut up.
Tell them to show you revenues, profits, conversion ratios, or any other
metric.  Sales leads are junk.  Everybody has leads, what matters is converting
them into money.  That's where the value is.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Planning, Specifying, and Documenting</title>
   <link href="http://www.bradfordembedded.com/2012/06/planning-specifying-and-documenting"/>
   <updated>2012-06-22T00:00:00-07:00</updated>
   <id>hhttp://www.bradfordembedded.com/2012/06/planning-specifying-and-documenting</id>
   <content type="html">&lt;p&gt;Big companies are well known for putting out
complex products and completing complex projects, but they have a secret:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Planning and documentation&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Big companies love to plan.  They love to document.  They love to specify.
When you work at one, it seems like that's all they want to do: plan, document,
and specify.  But there's a really good reason for it all: that's the only way
huge complex projects get completed.&lt;/p&gt;

&lt;p&gt;Planning, documenting, and specifying should serve one purpose: to break things
into small enough chunks that the complexity is removed.  Once complexity is
removed, then implementing becomes possible.  Getting to the point where
complexity is removed should take as long, or longer, than the implementation.&lt;/p&gt;

&lt;p&gt;That sounds crazy, that planning should take longer than doing.  But for
complex projects, that's the best way to assure success.&lt;/p&gt;

&lt;p&gt;And in software development techniques like agile and scrum, that's exactly
what happens.  At the beginning of a sprint, there's supposed to be a planning
phase to decide, &quot;what's going to get done?&quot;  But even before it can be decided
&quot;what&quot; will get done, specifications on exactly &quot;what&quot; is need to be in place.
Once that's decided, then the
things that make the list can get implemented.  At the beginning of a project,
most of the implemented items should be documentation and specifications,
even (or especially) in scrum / agile.&lt;/p&gt;

&lt;p&gt;Without quality specifications, how do you know if you've implemented something
correctly?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;You don't.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;But on small teams, or in small companies, often it seems like complex things just
get winged.  No documentation.  No specifications.  Just &quot;make it work!&quot;
That's a death knell.  If you're winging it, how do you know when it actually
works?  How do you know when to stop implementing?  How do you plan your time
or say no to additional features?  It gets really hard.&lt;/p&gt;

&lt;p&gt;External contractors never accept contracts that aren't well defined.  Why
would they?  How could they get paid if the customer can always say things
aren't done yet?&lt;/p&gt;

&lt;p&gt;Why do small companies and small teams think they can treat their work
any differently than a big company or an external contractor?&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Music</title>
   <link href="http://www.bradfordembedded.com/2012/06/music"/>
   <updated>2012-06-21T00:00:00-07:00</updated>
   <id>hhttp://www.bradfordembedded.com/2012/06/music</id>
   <content type="html">&lt;p&gt;Today, on his Coding Horror blog, Jeff Atwood writes about &lt;a href=&quot;http://www.codinghorror.com/blog/2012/06/the-great-mp3-bitrate-experiment.html&quot;&gt;&quot;The Great MP3
Bitrate Experiment&quot;&lt;/a&gt; and how no one can tell the difference between 192kbps
encoded MP3s and raw CD audio.&lt;/p&gt;

&lt;p&gt;That's nice.&lt;/p&gt;

&lt;p&gt;Jeff talks about how he still listens to his CD collection, and that he's
paying a relative to rip it all into decent quality MP3s as a summer
project.&lt;/p&gt;

&lt;p&gt;That's nice, too.&lt;/p&gt;

&lt;p&gt;But Jeff's a dying breed.  Not only are CDs dead (really, they are! I promise)
but so are MP3s or any other personal music collection.&lt;/p&gt;

&lt;p&gt;Until about 2008, I had a CD collection that I always liked to have ripped
to MP3 or FLAC files (it just felt cool to have FLAC, I could never tell the
difference in the audio, and I didn't have a mobile player).  I enjoyed having
my entire CD collection available with my player set to random.  I thought
it was the bee's knees.&lt;/p&gt;

&lt;p&gt;But then I got married, had a baby (well, my wife did the hard part there),
stopped using my computer at home much, and &lt;a href=&quot;http://www.pandora.com/&quot;&gt;Pandora&lt;/a&gt; was invented.
I haven't listened to any of my CD/MP3/FLAC collection in at least a year.
&lt;strong&gt;Not one single song.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I'm a subscriber to Pandora, $3 a month is pretty decent, and my family uses
it pretty much every day.  We have about 20 different &quot;channels&quot; that we like,
and I've not even thought about my CD collection (which is in the basement
inside a foot locker) until reading Jeff's post.&lt;/p&gt;

&lt;p&gt;Personal music collections are a thing of the past.  Whether they be CD, MP3,
or any other format based.  The cloud is winning here and will only get better
over time.  Why limit yourself to the 1000 (or how ever many you have) albums
when you can effectively have unlimited albums?  And all for the same price
as buying 3 albums per year?&lt;/p&gt;

&lt;p&gt;Apple has been killing it with iTunes, they are &quot;the place to buy digital
music online.&quot;  But they have to see the writing on the wall.  Personal
music collections are going away.  I'm curious to see how they deal with
that.  Also, in the same vein, &quot;apps&quot; are going to go away, too.  But that's
for another post!&lt;/p&gt;

&lt;p&gt;I'm with &lt;a href=&quot;http://www.avc.com/a_vc/my_music/&quot;&gt;Fred Wilson on this one&lt;/a&gt;, music in the cloud is the only way forward.
Probably worth taking my CD collection to a used music store and getting a few
bucks for it, before no one wants CDs anymore...&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Posture</title>
   <link href="http://www.bradfordembedded.com/2012/06/posture"/>
   <updated>2012-06-20T00:00:00-07:00</updated>
   <id>hhttp://www.bradfordembedded.com/2012/06/posture</id>
   <content type="html">&lt;p&gt;Posture is important.&lt;/p&gt;

&lt;p&gt;I was in a car crash about a month ago.  Since then, I've had x-rays of my
back, neck, and wrist.  No broken bones, thank goodness, but I do have pain.
After going to the doctor, I've been seeing a chiropractor she recommended
along with getting once a week massages.  So far, things are improving, but
I'm not yet back (no pun intended) to how I was before the crash.&lt;/p&gt;

&lt;p&gt;Today, my masseuse recommended some stretches I can do along with a general
recommendation to be concious of my posture, that posture has a huge impact
on back and neck health and pain levels.&lt;/p&gt;

&lt;p&gt;She said that most people sit slouched over and with their shoulders ahead of
their chest.  This puts strain on the muscles in the upper back and the back
of the neck while letting the muscles in the upper chest and front of the neck
shorten.  Over time, this contributes to back and neck issues, or in my case,
doesn't help recovery.&lt;/p&gt;

&lt;p&gt;My mission for the next week, till I see her again, is to pay closer attention
to my posture (and to do my stretches).&lt;/p&gt;

&lt;p&gt;I've written about &lt;a href=&quot;/2012/01/justifying-good-chairs/&quot;&gt;chairs&lt;/a&gt;, before, and I'm thinking about them again.
We have crap chairs at work.  We also have a crap &quot;policy&quot; (in quotes because
we don't have a HR guide or anything, we just have what those with the ability to
reimburse my expenses say) about getting good chairs.&lt;/p&gt;

&lt;p&gt;But even if I could get an expensive chair, I'm now going to be even more picky
about it.  Especially in the width of the back of the chair.  This caught my
attention today, just now.  My chair has metal supports running along the rim
of the chair-back.  They're hard.  My elbows hit them and they prevent my
elbows from going to a position that would be comfortable when typing.  I don't
like the design of the chair-back.  It's preventing me from keeping my shoulders
back the way I want to in order to maintain good posture, or what I feel would
be good posture (this is purely subjective and has not been evaluated by any
kind of ergonomics professional).&lt;/p&gt;

&lt;p&gt;I've sat in a Steelcase Leap.  It has a similar problem, since in order for it
to have the fancy lower back support system, it needs support on the outside
rim of the chair-back.  So, even the chair I used to think was what I wanted
isn't really any better than my crap chair I have now (in this one way).&lt;/p&gt;

&lt;p&gt;But if I (or my employer) is going to drop hundreds or thousands of dollars
on a new chair, it had better be exactly what I want.&lt;/p&gt;

&lt;p&gt;I still do the &lt;a href=&quot;/2011/06/the-standing-desk/&quot;&gt;&quot;ghetto standing desk&quot;&lt;/a&gt; with my HP monitor box on top of my
desk.  But even when standing, posture is still very important, and I need to
keep a better check on myself to make sure I'm not slouching when standing.
This is harder than I thought.&lt;/p&gt;

&lt;p&gt;I've read that putting a 6 inch box on the floor, when standing, so that I can
rest one foot on it could be helpful.  Alternating feet on the box with both
feet on the floor can give a few different poses to keep things interesting
and not set in just one standing pose.  I'm going to give that a try, I just
need to find something sturdy enough to use.  Different heights will be worth
trying, to find the best one.  And I need to keep my neck up and shoulders back.&lt;/p&gt;

&lt;p&gt;When standing, the one nice thing is there's no chair to get in my way.
The bad thing is that there's no chair to support me when I'm tired of standing.
Alternating between sitting in a good chair and standing is probably my ideal.
I have my eye on a &lt;a href=&quot;http://www.geekdesk.com/default.asp?contentID=622&quot;&gt;GeekDesk Max&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;I wonder if there's a business in reselling standing desks, like GeekDesks,
along with other standing desk accessories...  The biggest obstacle to wide
market sales is the price, most people are going to balk at a grand for a desk.
There's not much competition in electric standing desks, that could be driving
the prices up, but now I've digressed...&lt;/p&gt;

&lt;p&gt;Posture.  It's important!&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Restrooms and Offices</title>
   <link href="http://www.bradfordembedded.com/2012/06/restrooms-and-offices"/>
   <updated>2012-06-19T00:00:00-07:00</updated>
   <id>hhttp://www.bradfordembedded.com/2012/06/restrooms-and-offices</id>
   <content type="html">&lt;p&gt;Restrooms and offices are interesting to compare.  There's generally 3 kinds
of offices and 3 kinds of restroom areas (for the men's room side of things).&lt;/p&gt;

&lt;p&gt;In an office, the 3 settings are:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Open, with no or very low walls between desks&lt;/li&gt;
&lt;li&gt;Cubes, with mid-height walls giving some privacy&lt;/li&gt;
&lt;li&gt;Walls with doors, with actual privacy&lt;/li&gt;
&lt;/ol&gt;


&lt;p&gt;There's 3 restroom settings, too:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Open, such as the urinals, sometimes there's little walls between each one&lt;/li&gt;
&lt;li&gt;Stalls, where a wall goes neither to the ceiling or floor&lt;/li&gt;
&lt;li&gt;Private, like in most homes, where there's a door and real walls&lt;/li&gt;
&lt;/ol&gt;


&lt;p&gt;It's interesting to compare each of these for social norms:&lt;/p&gt;

&lt;p&gt;In an open office, it's generally accepted to talk to the people around you, even
if those people don't agree.  In an open restroom setting, it's usually awkward,
but again, some people didn't get the memo and will gab away while relieving
themselves.  In an open office, it's also generally odd when someone stares at
you, but there's nothing stopping them, while in the restroom, depending on who's
doing the staring or being stared at, it's possible a fight breaks out (this is
MINE, you have your own!).&lt;/p&gt;

&lt;p&gt;In cubes or stalls, again, most people understand that talking between them is
not OK, but then there's the contingent that doesn't understand.  There's always
that one guy who pops his head over, just to see what's going on, and in both
situations, &lt;strong&gt;no one likes that guy!&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;In either the open restroom or stalls, talking on your cell phone feels weird,
and for good reason.  No one wants to know that the person on the other end of
the phone is &quot;doing their business.&quot;  But in any office, gabbing away on the
phone is seen as normal.  In both cases, everyone else nearby has to listen to
the conversation too, and sometimes the listeners can't tell if the person is
really on the phone or not and things feel really awkward.&lt;/p&gt;

&lt;p&gt;At home, when using the restroom, you close the door.  Others can't see you, they
can't hear you, and best of all, they can't smell you.  These are all good
things.  It also means that you can't see or hear the others.  It's generally
accepted that private bathrooms are the nicest, at least in the USA.&lt;/p&gt;

&lt;p&gt;So why is the open or cube office plan so popular?&lt;/p&gt;

&lt;p&gt;Managers want to watch, hear, and smell the minions &quot;doing their business.&quot;
That's why.&lt;/p&gt;

&lt;p&gt;Kind of gross, eh?&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Laptops Aren't Desktops</title>
   <link href="http://www.bradfordembedded.com/2012/06/laptops-arent-desktops"/>
   <updated>2012-06-12T00:00:00-07:00</updated>
   <id>hhttp://www.bradfordembedded.com/2012/06/laptops-arent-desktops</id>
   <content type="html">&lt;p&gt;The premise must seem like a stupid statement.  Of course laptops aren't
desktops, why would someone think otherwise?&lt;/p&gt;

&lt;p&gt;There's a whole industry out there making laptop computers, many of the
companies making laptops also make desktops.  And there's a class of consumer
who wants the power of a desktop but the portability of a laptop, and they're
apparently not willing to buy 2 computers.&lt;/p&gt;

&lt;p&gt;The compromise that this consumer is asking for is being given to the market
by the computer making companies, but it's a horrible compromise, getting none
of the good things from either class of computer.&lt;/p&gt;

&lt;p&gt;Let's use the HP Elitebook 8560w as an example.
I happen to have one handy on my desk and
have been using it as my only work computer since December 2011.  I've
&lt;a href=&quot;/2011/11/debian-6-amd64-on-hp-elitebook-workstation-8560w&quot;&gt;written about it before&lt;/a&gt;. I run Debian on it, quite successfully.&lt;/p&gt;

&lt;p&gt;My Elitebook has a dual core Intel Core-i7 (with HT, so 4 cores, sort of), 8GB
of RAM, a solid state disk, NVIDIA graphics, and a 24&quot; HP IPS monitor via
DisplayPort.  It's a decent little machine and gets the job done quite well for
me.  But here's the catch, for the same money, I could have gotten a desktop
that would be even faster, have more of the ports I wanted (dual Ethernet, real
serial port, and PCI-e expansion), and had less configuration issues (wifi not
needed on a desktop, and the internal monitor is lower in res than my external
but apparently X doesn't understand that I'm not using the internal monitor so
when I maximize things they don't actually fill the external monitor).  AND!
It's a 15 inch laptop that's almost 1.5 inches
thick and weighs in right around 7 pounds.  To say the least, a MacBook Air
is a dream in comparison (the 11 inch Air is about as thick as just the screen
on the 8560w!).&lt;/p&gt;

&lt;p&gt;To fix the lack of dual Ethernet, I have a &lt;a href=&quot;http://www.amazon.com/gp/product/B000GB0N14/ref=as_li_ss_tl?ie=UTF8&amp;amp;tag=bradford07-20&amp;amp;linkCode=as2&amp;amp;camp=1789&amp;amp;creative=390957&amp;amp;creativeASIN=B000GB0N14&quot;&gt;Belkin ExpressCard Gigabit Ethernet
card&lt;/a&gt;, but it's a 34 mm ExpressCard and the 8560w has a 54 mm wide slot, and
since there's no support built into the 8560w for the skinnier cards, if I so
much as move the 8560w slightly, the ExpressCard loses contact and I lose my
second Ethernet port (which no longer causes Linux to lock up hard since I've
enabled PCI hotplug, but is still annoying since the DHCP server goes down and
if I have iptables routing going really pisses off the kernel).&lt;/p&gt;

&lt;p&gt;So, I've got a laptop that's not easily portable and a desktop that lacks some
of the speed and ports that I really want.  Never mind that ECC memory or more
than 4 real cores wasn't even an option on the 8560w (it is on many desktops I
would consider buying).&lt;/p&gt;

&lt;p&gt;I thought that I only needed one machine. I was wrong.  The 8560w I got is
not stellar at being either role that I want.  The cost was lower than
purchasing two different machines, but not by that much.  And I may not have
even needed a powerful laptop, something portable for $500 would cut the
mustard, especially if I could SSH into my desktop to do &quot;real work&quot;.&lt;/p&gt;

&lt;p&gt;After having used the 8560w for almost 8 months, I've come to the conclusion
that I won't be buying a &quot;desktop replacement&quot; laptop ever again.  They don't
replace a desktop, and they aren't very portable laptops.  Something like a
MacBook Air and a decent mid-range workstation would make me much happier and
probably more productive.&lt;/p&gt;

&lt;p&gt;I will say, though, that since having a solid state disk, I'll never go back
to having spinning platters for any machine that real work gets done on.
No. Way.  Working with the Linux kernel git tree on spinning disks is a good
way to practice patience.  Working with the Linux kernel git tree on a solid
state disk is at least bearable, and not that slow with a hot cache.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Structured Learning</title>
   <link href="http://www.bradfordembedded.com/2012/06/structured-learning"/>
   <updated>2012-06-06T00:00:00-07:00</updated>
   <id>hhttp://www.bradfordembedded.com/2012/06/structured-learning</id>
   <content type="html">&lt;p&gt;Structured learning is important.  Hacking and slashing through being a n00b
is useful in many situations, but being able to find a person, book, or other
piece of documentation that will structure the learning for you makes for
faster and more thorough learning in many cases.&lt;/p&gt;

&lt;p&gt;I liked college, I got to take lots of challenging classes that involved quite
a large amount of structured learning.  Within the structured learning of class
time was often lab time which was much less structured except for the
requirements and expected result (if provided).  But the labs were based on the
structured part of the course and so I could leverage that learning in the lab
environment in order to put together disparate bits of information to
accomplish the lab goal.&lt;/p&gt;

&lt;p&gt;I feel I learn very quickly and thoroughly in this way.  Structured learning
interspersed with labs.&lt;/p&gt;

&lt;p&gt;But in the real world, once you have a job, there's a lot less structured
learning and a lot more hacking and slashing as a n00b.  There's an impression
that there isn't time to create proper structured learning activities or
documentation since there's products to build or money to make.  But I think
this may be a shortsighted view.&lt;/p&gt;

&lt;p&gt;Granted, for-profit companies can't be expected to prioritize structured
learning over profits, the shareholders wouldn't allow that.  But they should
provide some time and resources where structured learning can take place,
either by having experienced people lead a course or by providing time and
resources for individuals to engage in their own version.  Some companies do
a great job of this, others don't.&lt;/p&gt;

&lt;p&gt;When I first started at Xerox, I got the impression that they did a decent job
of providing structured learning opportunities.  There was a graduate studies
program where you could attend &lt;a href=&quot;http://www.rit.edu&quot;&gt;RIT&lt;/a&gt; or the &lt;a href=&quot;http://www.rochester.edu&quot;&gt;U of R&lt;/a&gt;, I went to company
provided training on things like Lean Six Sigma, and about once per year there
was some kind of &quot;class&quot; being offered (I remember taking a &quot;class&quot; on digital
control systems around 2006).  It wasn't the best environment for structured
learning, but Xerox didn't hold people back from participating.  Lately it
seems like Xerox isn't as good as it used to be at providing these
opportunities, but then again, I left in November 2011 so I'm not the best
judge.&lt;/p&gt;

&lt;p&gt;But what if your company doesn't provide these types of opportunities?  What
if you're unemployed?  What if you're at a school taking classes that don't
challenge you?&lt;/p&gt;

&lt;p&gt;Well, then you should make your own structured learning opportunities.&lt;/p&gt;

&lt;p&gt;There's a really cool market developing online where people can take college
type courses for rather low costs.  &lt;a href=&quot;http://ocw.mit.edu/index.htm&quot;&gt;MIT&lt;/a&gt; has had this for a while, but
it was a bit hit or miss for each course.  But now there's things like
&lt;a href=&quot;http://www.udacity.com/&quot;&gt;Udacity&lt;/a&gt;, &lt;a href=&quot;http://news.stanford.edu/news/2011/august/online-computer-science-081611.html&quot;&gt;Stanford's online experiements&lt;/a&gt;, and &lt;a href=&quot;http://www.udemy.com/&quot;&gt;Udemy&lt;/a&gt;.
You can take college type courses for free or rather low cost ($100 per type
&quot;rather-low&quot;).  This brings education to a whole new group of people, which is
awesome!&lt;/p&gt;

&lt;p&gt;But what if you don't have the ability to follow a time structured course like
these?  I'm somewhat in that camp, as demands in my life and work probably
won't let me commit to a multi-week (or multi-month) course schedule.  I failed
at taking the Stanford database online course in 2011, I just couldn't commit
to spending enough time each week due to a fluctuating schedule, so I just
stopped.&lt;/p&gt;

&lt;p&gt;I've found that getting a book with exercises can provide a similar experience
and I can set my own schedule.  I'm currently working through the exercises
in &lt;a href=&quot;http://www.amazon.com/gp/product/0131103628/ref=as_li_ss_tl?ie=UTF8&amp;amp;tag=bradford07-20&quot;&gt;K &amp;amp; R&lt;/a&gt;.  I've programmed in C for close to a decade, but never done
all of the exercises in K &amp;amp; R, so, now this is my structured learning.  In
the mornings, when I'm able, I read a few pages, then do a few exercises.  I
figure I can always come back after a week off and no one is holding me to a
schedule.&lt;/p&gt;

&lt;p&gt;The schedule part will be my biggest challenge.  If no one is holding me to a
schedule, how will I prevent myself from lapsing and stopping because I'm able
to come up with excuses?  I don't know, yet.  I'm going to try this and see
how it goes.  My goal is to do all of the exercises in K &amp;amp; R, to gain a better
understanding of C.  If this goes well and I'm able to keep up with it on a
regular basis, then I'll use the amount of time I was able to spend (rather
easy to calculate based on git commit timestamps) to see if I can commit to
taking an online course with a more fixed schedule.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Why Mainline Matters</title>
   <link href="http://www.bradfordembedded.com/2012/05/why-mainline-matters"/>
   <updated>2012-05-18T00:00:00-07:00</updated>
   <id>hhttp://www.bradfordembedded.com/2012/05/why-mainline-matters</id>
   <content type="html">&lt;p&gt;Yesterday, I wrote a rant about why &lt;a href=&quot;/2012/05/it-shouldnt-take-a-team&quot;&gt;it shouldn't take a team&lt;/a&gt; of engineers
to buy a dev kit and get mainline Linux running.  A great discussion ensued on
Google+, which was a great reason for me to log into Google+ for the first time
in 3 months, but that's another story...&lt;/p&gt;

&lt;p&gt;Mainline matters.  Full stop.&lt;/p&gt;

&lt;p&gt;Mainline matters because the people who have to approve patches or pulls in
order for code to make it into mainline are smarter than you.  They're smarter
than me.  They're smarter than most engineers at every ARM SoC vendor.
The people who need to approve code in order for it to make mainline bleed this
stuff, they've been around for decades, hacking Linux.  They've seen almost
all of the tricks in the book.  They will tell you when your code does stupid
things.  Your code will do stupid things.&lt;/p&gt;

&lt;p&gt;If I run TI's kernel (that happens to be hosted on Arago, thanks for the
correction) and I run into a problem, how to I send a patch?  How do I share my
problem with others who are running that kernel?  How do I know it gets fixed
correctly?  If I fix it myself, how do I know I'm not doing something stupid
that was tried 5 years ago and failed miserably?&lt;/p&gt;

&lt;p&gt;Short answer, I don't.  I'm trusting TI and myself.  TI's great, but they make mistakes
and without the huge amount of experience that exists on mainline mailing
lists taking a look at the code, I don't have huge faith.  Look through a TI
repo, read all the &quot;fixes foo&quot; followed by &quot;actually fixes foo&quot; followed by
&quot;fixes foo again for special case bar&quot; (modified comment from Koen) commits.&lt;/p&gt;

&lt;p&gt;I'm putting out a product.  My value add is the software that runs on top of
Linux and the interfaces to the devices outside the SoC.  I want my value adding
to stay at those levels.  If I'm adding value to my company by making Linux
work enough that I can do these other tasks, that's a failure of the
market.  I don't want to worry about the Linux kernel core functionality.&lt;/p&gt;

&lt;p&gt;I'm running Debian on my Beaglebones.  I use an old compiler.  Both for the
same exact reason:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;My value add isn't core Linux, it's everything on top and around the core.&lt;/strong&gt;&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>It Shouldn't Take a Team</title>
   <link href="http://www.bradfordembedded.com/2012/05/it-shouldnt-take-a-team"/>
   <updated>2012-05-17T00:00:00-07:00</updated>
   <id>hhttp://www.bradfordembedded.com/2012/05/it-shouldnt-take-a-team</id>
   <content type="html">&lt;p&gt;It shouldn't take a team of engineers to build a functional embedded GNU/Linux
system on a dev kit.  Often, it does.  The embedded dev kit industry is broken.&lt;/p&gt;

&lt;p&gt;The folks over at &lt;a href=&quot;http://beagleboard.org/&quot;&gt;Beagleboard.org&lt;/a&gt; are hard at work fixing this, but it
takes time, and they only offer solutions based on TI SoCs.  They're doing an
awesome job, please keep it up!&lt;/p&gt;

&lt;p&gt;But, unless you want to base an embedded design on a part that requires package
on package memory, the Beagles aren't quite there yet in terms of an open dev
kit that's as easy to use as it should be.  If you're building a multimedia
system and want a dev kit, pick a Beagleboard-xM or a Pandaboard.  Both are
great systems and have awesome support from all required software that you'll
want to run.&lt;/p&gt;

&lt;p&gt;But if you're not trying to build a multimedia system, the Beagleboard.org team
only has the Beaglebone to offer.  Don't get me wrong, the Beaglebone is great.
However, there are currently huge nits to pick with it, and TI in general.&lt;/p&gt;

&lt;p&gt;The &lt;a href=&quot;http://www.ti.com/product/am3359&quot;&gt;AM335x&lt;/a&gt; SoC used on the Beaglebone is not well supported by any
mainline Linux kernel.  Even the &lt;a href=&quot;https://git.kernel.org/?p=linux/kernel/git/tmlind/linux-omap.git&quot;&gt;linux-omap&lt;/a&gt; repo can't yet build a kernel
for an AM335x system that will enable MMC, which makes running the Beaglebone
away from an NFS root system rather difficult.  TI offers their &lt;a href=&quot;http://arago-project.org/git/projects/?p=linux-am33x.git;a=shortlog;h=refs/heads/v3.2-staging&quot;&gt;Arago kernel&lt;/a&gt;,
but until about 2 weeks ago, not even all of the interrupts were enabled in that
codebase.  And this is the TI kernel tree that forms the basis of TI's official
SDK releases!  To top it all off, TI has missed the Linux 3.5 window in the
linux-omap repo to get any more changes in before Linus' 3.5 merge window opens.
So, Linux 3.5 very likely won't support the AM335x very well, if at all.&lt;/p&gt;

&lt;p&gt;Hopefully TI will be able to get code into linux-omap for the 3.6 merge, but
with that kind of timeline, AM335x won't run a mainline Linux kernel until
almost the end of 2012 (3.6 will probably be released in the 4th quarter, if
past release performance indicates future success).  The Beaglebone was on sale
in the 4th quarter of 2011.  If 1 year between release of dev kits and mainline
Linux support is considered good, that's a horrible state of &quot;good.&quot;&lt;/p&gt;

&lt;p&gt;AM335x silicon is due to be finalized and parts actually available for general
consumption &quot;real soon now.&quot;  TI doesn't seem to have intentions of moving their
Arago kernel repo past a Linux 3.2 base.  Which is OK, Ben Hutchings is keeping
the v3.2.y stable series around for a while (Ubuntu and Debian rely on it), but
the Arago repo isn't run by many people, so it doesn't get very wide spread
testing.  This leads to things like &lt;a href=&quot;https://groups.google.com/forum/#!msg/beagleboard/A5Pmw94kFfo/nS9wVMPG4zEJ&quot;&gt;PREEMPT breaking Ethernet!&lt;/a&gt;  Which is
reported to be in the stages of being fixed, but may or may not yet be complete.&lt;/p&gt;

&lt;p&gt;TI's ability to push code into mainline Linux is so bad that even the
official &lt;a href=&quot;https://github.com/koenkooi/linux/tree/linux-ti33x-psp-3.2.16-r11l+gitr720e07b4c1f687b61b147b31c698cb6816d72f01&quot;&gt;Beaglebone kernel&lt;/a&gt;, maintained by Koen, is diverging from TI's Arago
repo.  Granted, a good bit of Koen's changes are to support capes, but there
are fundamental changes to core AM335x code in Koen's tree that are different
than what's in Arago's.&lt;/p&gt;

&lt;p&gt;TI needs to fix their development process, they need to have support in mainline
Linux ASAP after announcement of new SoCs.  Anything else is unacceptable.&lt;/p&gt;

&lt;p&gt;To pick on TI even more, there's the &lt;a href=&quot;http://designsomething.org/craneboard/w/overview/default.aspx/&quot;&gt;Craneboard&lt;/a&gt;.  Oh, my, goodness!
The Craneboard uses TI's AM3517 processor.  The AM3517 was released about
TWO YEARS AGO.  You cannot currently build a mainline Linux kernel for the
AM3517!  Even the linux-omap tree couldn't do it well, until recently, but I
haven't personally tried very hard, so it may not even do it well.  TI's
official SDK supplies a 2.6.37 kernel, which is not a long term supported
kernel.  The &lt;a href=&quot;https://github.com/craneboard/craneboard-kernel&quot;&gt;Craneboard Github repo&lt;/a&gt; is woefully out of date.&lt;/p&gt;

&lt;p&gt;So now that I've picked on TI quite a bit, here's my stance:&lt;/p&gt;

&lt;p&gt;I want to build a product that uses an ARM SoC and runs Linux.  I want to have
one, yes, that's right ONE single, engineer who spends only part of their time
getting cross compilers, boot loaders, Linux kernel, and the rest of the
required userspace set up.  I want that engineer to be able to receive a dev
kit from the UPS person and have it running GNU/Linux within 1 week.  Not just
running the provided SD card or what-have-you, but building all the components
from supported mainline repositories and understanding the build systems.
Documentation is a huge part of this, but core code support needs to come first.
Without mainline, whether it be Linux, u-boot, or anything else, I have nothing.&lt;/p&gt;

&lt;p&gt;Things in this relm are getting better, but too slowly.  I put this blame
entirely on the SoC vendors, TI, Freescale, Samsung, ST, etc.  All aren't to
blame in the same amount, but all are guilty.  The pay-for Linux vendors aren't
helping, they have no incentive to make things easier for people who aren't
their customers, so I'm not looking for them to make strides here.  The SoC
vendors do have a very high vested interest in making things better, &lt;a href=&quot;http://www.linaro.org/&quot;&gt;Linaro&lt;/a&gt;
is on the right track.&lt;/p&gt;

&lt;p&gt;Groups like &lt;a href=&quot;http://beagleboard.org/&quot;&gt;Beagleboard.org&lt;/a&gt; are making things better, but they are a tiny
team taking on the world and supporting not only documentation and code, but
trying to sell boards and do so on a shoe-string budget, all while making a
profit and not stepping on too many TI toes.  There needs to be more
organizations like &lt;a href=&quot;http://beagleboard.org/&quot;&gt;Beagleboard.org&lt;/a&gt;, putting out low cost dev kits and
pushing the SoC vendors to get their kernel code mainlined.&lt;/p&gt;

&lt;p&gt;It shouldn't take a team of engineers to get Linux running on a dev kit.
If your company has a team, or pays a team, that's a sign that the dev kit
and SoC vendor industries are broken.  Let's fix that.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>I Want to Learn More About...</title>
   <link href="http://www.bradfordembedded.com/2012/05/i-want-to-learn-more-about"/>
   <updated>2012-05-15T00:00:00-07:00</updated>
   <id>hhttp://www.bradfordembedded.com/2012/05/i-want-to-learn-more-about</id>
   <content type="html">&lt;p&gt;Here are some things I want to learn more about:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The Linux kernel&lt;/li&gt;
&lt;li&gt;Microprocessors: ARM, MIPS, x86, and OpenRISC&lt;/li&gt;
&lt;li&gt;Ruby and Rails&lt;/li&gt;
&lt;li&gt;git&lt;/li&gt;
&lt;li&gt;Flash memory. Mainstream use is approaching fast.&lt;/li&gt;
&lt;li&gt;Compilers and software build tools&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;And some things I want to start learning about:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Heroku, EC2 / AWS, Engine Yard, or some other cloud technology.&lt;/li&gt;
&lt;li&gt;Networking. IPv6 isn't a big deal yet but it will be eventually.&lt;/li&gt;
&lt;li&gt;Verilog / VHDL. I've done a tiny bit but I won't be contributing to
&lt;a href=&quot;http://opencores.org/&quot;&gt;OpenCores&lt;/a&gt; any time soon.&lt;/li&gt;
&lt;li&gt;JavaScript and AJAX. The interactive web is a big deal.&lt;/li&gt;
&lt;/ul&gt;

</content>
 </entry>
 
 <entry>
   <title>Building the Arago Linux Kernel for Beaglebone</title>
   <link href="http://www.bradfordembedded.com/2012/05/building-arago-kernel-for-beaglebone"/>
   <updated>2012-05-08T00:00:00-07:00</updated>
   <id>hhttp://www.bradfordembedded.com/2012/05/building-arago-kernel-for-beaglebone</id>
   <content type="html">&lt;p&gt;Things you'll need:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;The TI &lt;a href=&quot;http://software-dl.ti.com/dsps/dsps_public_sw/am_bu/sdk/AM335xSDK/latest/index_FDS.html&quot;&gt;am335x-evm-sdk sources&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;A git clone of the &lt;a href=&quot;http://arago-project.org/git/projects/?p=linux-am33x.git&quot;&gt;Arago am33xx v3.2-staging branch Linux source&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Some x86 to &lt;a href=&quot;http://wiki.debian.org/EmdebianToolchain&quot;&gt;ARM cross compiler (I like Debian)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Patience&lt;/li&gt;
&lt;/ol&gt;


&lt;p&gt;First clone the Arago am33xx kernel tree, or if you already have a kernel tree
locally, add the Arago repo as a remote and check out the &lt;code&gt;v3.2-staging&lt;/code&gt;
branch.  Then unpack the TI am335x-evm-sdk sources, of which you'll then again
need to unpack the Linux kernel sources inside, so that you can get the
Cortex-M3 firmware needed for proper power management.  The firmware is located
at &lt;code&gt;firmware/am335x-pm-firmware.bin&lt;/code&gt;.  Copy it to the &lt;code&gt;firmware/&lt;/code&gt; directory in
the Arago kernel tree you've checked out.&lt;/p&gt;

&lt;p&gt;Now, within the Arago Linux tree, you'll execute all the rest of the commands.&lt;/p&gt;

&lt;p&gt;First, make sure everything's clean:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;make mrproper
make ARCH=arm clean
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Then load the &lt;code&gt;am335x_evm_defconfig&lt;/code&gt;:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- am335x_evm_defconfig
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;If you'd like to make any changes, you may use menuconfig.  I personally like
to enable DEVTMPFS and automatically mount it at boot time since I don't create
any entries in &lt;code&gt;/dev&lt;/code&gt; on my root file system (I'm lazy, &lt;a href=&quot;https://gist.github.com/2634388&quot;&gt;patch available in
a gist&lt;/a&gt;, apply the patch before loading the defconfig):&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- menuconfig
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Then build the uImage (replace the -j5 with an apropriate value for your build
machine):&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- -j5 uImage
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Copy the resulting uImage to your SD card and boot up your Beaglebone!&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;cp arch/arm/boot/uImage /path/to/sdcard/
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Make sure when unmounting your SD card that you allow the unmount to return
before physically removing it from your PC.  A &lt;code&gt;sync&lt;/code&gt; before the &lt;code&gt;umount&lt;/code&gt;
command is my usual operation, to ensure all data has been written to the SD
card before I pull it.  Linux on your PC will buffer data being written, so the
actual &lt;code&gt;cp&lt;/code&gt; command will return before data has been fully written to the card.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Open Office Plans Suck</title>
   <link href="http://www.bradfordembedded.com/2012/03/open-offices-suck"/>
   <updated>2012-03-28T00:00:00-07:00</updated>
   <id>hhttp://www.bradfordembedded.com/2012/03/open-offices-suck</id>
   <content type="html">&lt;p&gt;Open office plans suck.&lt;/p&gt;

&lt;p&gt;Cubes are only slightly better.&lt;/p&gt;

&lt;p&gt;Private offices with doors are best.&lt;/p&gt;

&lt;p&gt;In an open office plan or in a cube, I put my headphones on when I want to get
real work done.  I don't work optimally with music but I sure as heck work
better with music than with hearing other people talking about things that
aren't relevant to me.&lt;/p&gt;

&lt;p&gt;If I had a real office with a door that closed and walls that went up to the
ceiling, I could close my door when I want to get real work done.  Then I won't
need my headphones and I can work optimally.  Other conversations will be
muffled to the point where I can't understand any talking I can hear and I
won't get distracted.&lt;/p&gt;

&lt;p&gt;The closed door is also a sign.  It says, &quot;I'm doing real work now.  Don't
bother me unless it's urgent.&quot;  If I'm not doing real work, I'll leave the
door open, feel free to interrupt me.&lt;/p&gt;

&lt;p&gt;Non-real work includes answering email, searching the web, or
reading blogs related to something I'm interested in.  Real work includes
writing code, thinking about hard problems, reading technical papers or data
sheets, writing important documents, or testing things that might not work
correctly.  I don't want to be interrupted when I'm doing real work.&lt;/p&gt;

&lt;p&gt;It's hard to put a price on the ability to do real work with a closed door.
Quantifying $X per year of output in order to justify the cost of building
real offices with real walls and real doors is difficult.  You can't do a
direct comparison with two different people, their abilities won't match.  You
can't stick me in an office for a year, measure my output, then stick me in an
open office plan and measure again and produce any kind of reasonable
comparison.  I won't be doing the same work (otherwise the second year better
be way more productive since I've already done it once!).&lt;/p&gt;

&lt;p&gt;Real walls and a door can't cost more than a few thousand dollars.  Cube walls
will also cost a few thousand dollars, but possibly slightly less.  Yes, cube
walls are reconfigurable, but how often has anyone actually seen cubes get
reconfigured?  I've seen it once in the past 7 years, and if they hadn't been
reconfigured, no one would have cared (we moved 3 semi-cubes from one end of
the office to the other because they matched the furniture over there better).&lt;/p&gt;

&lt;p&gt;If you're planning on rearranging your office, either give everyone real
offices with walls and doors or don't rearrange your office.  Save your money.
Nothing but offices with walls will be better than what you currently have,
so either build real offices or don't do anything and keep the money in the
bank.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Iterate Hardware Like Software</title>
   <link href="http://www.bradfordembedded.com/2012/03/iterate-hardware-like-software"/>
   <updated>2012-03-05T00:00:00-08:00</updated>
   <id>hhttp://www.bradfordembedded.com/2012/03/iterate-hardware-like-software</id>
   <content type="html">&lt;p&gt;Engineering companies don't iterate on hardware like they do with software.
This is a &lt;strong&gt;BAD THING!&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Software is developed in iterations (agile, lean, and a million other buzz
words made up every year).  Write some code, compile, run, test, repeat.  When
it's good enough, ship it.  Continue iterating to add features and squash bugs.
Job done.  That's software.&lt;/p&gt;

&lt;p&gt;Hardware is developed with a mindset that, &quot;It sure as hell better work the
first time!&quot;  This is wrong on so many levels.  It takes a heck of a lot longer
to make something work on the first try, so the engineer becomes very risk averse.
Anything that might not work gets outrageous attention, which takes time.&lt;/p&gt;

&lt;p&gt;Even simple things get reviewed once, twice, three times, and by a committee.
There's schematic reviews, layout reviews, and BOM reviews.  All have to be
attended by a huge number of people.  God forbid one little thing is wrong,
because then &lt;strong&gt;IT WON'T WORK AND THE SKY WILL FALL AND OUR FIRST PROTOTYPE
WON'T BE LOVED BY ITS MOMMY!&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;NO!&lt;/strong&gt;  This is wrong!&lt;/p&gt;

&lt;p&gt;Iterate on hardware like your software team iterates on software.  Constantly.
Build early, build often, fail constantly!  It's only through failure that the
weaknesses are found and can be removed.  If the first prototype shows up and
it doesn't work at all, find out why, fix it (physically if possible) and update
the design documents.  Then build another.  Find its failings, fix them.  And
repeat.  When a prototype works well enough, &lt;strong&gt;SELL IT!&lt;/strong&gt;  Then keep iterating
to make it cheaper, easier to manufacture, etc, all of which &lt;strong&gt;MAKE MORE MONEY!&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;In complete tandem to this, if your hardware has software or firmware that's
expected to run on it (let's be honest, it does, everything does), your
software team can't figure out if their software works until the hardware
arrives.  If, when the hardware arrives, it's different than the software team
thought, there's a huge effort to correct things in the software.  This may
take weeks.  You don't want that.&lt;/p&gt;

&lt;p&gt;If you have hardware prototypes showing up every week, in various states of
working-ness, the software people can start trying stuff out.  They'll even be
able to work around some of the hardware bugs with their code, getting you to
a sellable product even faster.  There won't be any week or month long project
for the software team because the hardware works differently than they expected,
they'll be involved the entire time though the hardware's development.&lt;/p&gt;

&lt;p&gt;And!  Once the hardware is &quot;good enough,&quot; your software will likely be as well.
Then you can &lt;strong&gt;SHIP IT AND MAKE MONEY!&lt;/strong&gt; which is why we're all here in
the first place.&lt;/p&gt;

&lt;p&gt;You should expect that the hardware design files on the hardware engineer's
computer will be at least 1 or 2 versions newer than the hardware that the
software team is working with.  Every week, new prototypes should be arriving.
Every week, incremental gains can be had in the hardware design.  Every week
you &lt;strong&gt;will be paying for new prototypes&lt;/strong&gt;, but only a hand full.
If a feature doesn't make it into a prototype build, &lt;strong&gt;THAT'S OK&lt;/strong&gt;
because it will make it in the next build, which is only 1 week away.&lt;/p&gt;

&lt;p&gt;Oh yeah, and your contract manufacturing house will already have 90% of the
parts you need on-hand once your first prototype is built, which saves you
even more time for each successive iteration.  Making the leap to designing
hardware this way is hard, it's different, and that first time, you will order
thousands of dollars of boards that &lt;strong&gt;won't work&lt;/strong&gt;.  But that's the point!
The next batch you order, in 1 week, &lt;strong&gt;WILL WORK&lt;/strong&gt; and your software team will
start coding on them, directly, getting you ever closer to a product you can
sell.&lt;/p&gt;

&lt;p&gt;Apple does this with their hardware.  Why don't you?&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>BeagleBone LEDs with Arago Kernel v3.2</title>
   <link href="http://www.bradfordembedded.com/2012/03/beaglebone-leds-with-arago-kernel-v3.2"/>
   <updated>2012-03-01T00:00:00-08:00</updated>
   <id>hhttp://www.bradfordembedded.com/2012/03/beaglebone-leds-with-arago-kernel-v3.2</id>
   <content type="html">&lt;p&gt;If you boot your BeagleBone using the supplied micro SD card image, there are
two LEDs (near the Ethernet jack) that will blink.  D2 (USR0 on the schematic)
will blink a heart beat, and D3 (USR1 on the schematic) will blink on SD card
access.&lt;/p&gt;

&lt;p&gt;This is really handy.  Since the Linux kernel is actually performing the blink
operations, as long as the heart beat is going, the kernel is running.  And if
your BeagleBone is not responding well, but the SD card access LED is flashing
like there's no tomorrow, it's just because SD cards are slow and a lot of disk
access is going on.&lt;/p&gt;

&lt;p&gt;But if you want to run TI's &lt;a href=&quot;http://arago-project.org/git/projects/?p=linux-am33x.git;a=shortlog;h=refs/heads/AM335XPSP_04.06.00.06&quot;&gt;AM335XPSP_04.06.00.06 kernel&lt;/a&gt; from the
&lt;a href=&quot;http://arago-project.org/wiki/index.php/Main_Page&quot;&gt;Arago Project&lt;/a&gt;, these LED actions aren't enabled by default.&lt;/p&gt;

&lt;p&gt;To enable them, you'll need a &lt;a href=&quot;https://gist.github.com/1950437&quot;&gt;small patch&lt;/a&gt;.  This is cobbled together from
code I found from the &lt;a href=&quot;http://code.google.com/p/beagle-borg/source/browse/kernel/arch/arm/mach-omap2/board-am335xevm.c?spec=svn24c36edc3e53fb59cb703b08be8d25cecf548413&amp;amp;r=24c36edc3e53fb59cb703b08be8d25cecf548413&quot;&gt;beagle-borg&lt;/a&gt; team, but with portions not applicable
to the base BeagleBone removed.&lt;/p&gt;

&lt;p&gt;I'm running Debian 6 Squeeze armel on my BeagleBone.  I now have &lt;strong&gt;blinkin'
lights!&lt;/strong&gt;&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Smells Like Electrolytic Capacitors</title>
   <link href="http://www.bradfordembedded.com/2012/02/smells-like-electrolytic-capacitors"/>
   <updated>2012-02-24T00:00:00-08:00</updated>
   <id>hhttp://www.bradfordembedded.com/2012/02/smells-like-electrolytic-capacitors</id>
   <content type="html">&lt;p&gt;Waking up at 2 am yesterday morning, I smelled something funny.  My house was
not burning down, which was good, but something didn't smell right.&lt;/p&gt;

&lt;p&gt;Opening the door to my home office, the smell got much, much worse.&lt;/p&gt;

&lt;p&gt;My wife had been using the office that day and had left her laptop on the desk.
It was still on and so became the prime suspect in my search for the smell
generator.  We shut everything down, pulled all the power cords for all devices
in the office out of their
outlets, opened the windows (it was about 30 degrees F outside, thankfully not
any colder), and started to air out the room.  Airing out lasted about an hour
before we both were fed up waiting, but the smell had reduced to a much lower
level and still nothing was on fire, so we closed everything up, put her laptop in
another room and went back to sleep.&lt;/p&gt;

&lt;p&gt;If the laptop was the root of the smell, the smell should follow it.  The smell
did not follow it.&lt;/p&gt;

&lt;p&gt;So that left my desktop computer...&lt;/p&gt;

&lt;p&gt;I didn't have time to investigate in the morning, but the smell was not as bad
as it was in the middle of the night.  Keeping the door and all heating vents
in the room closed, I went off to work.  Upon my return, yesterday evening, the
smell was still present, but at a reduced level.  Since I was now awake (2 am
isn't my brain's best hour), I tried powering on my desktop.&lt;/p&gt;

&lt;p&gt;No dice.  My raid card usually beeps every time the PCI bus reset gets pulled
(which happens twice at normal power up), it made the most sad sound a RAID card
with a buzzer can make.  Like it had lost its soul.  And then no boot.  So,
seeing as the machine wouldn't boot, the first thing that came to mind was
either the power supply or motherboard.&lt;/p&gt;

&lt;p&gt;A quick bit of looking at my desktop's motherboard showed no signs of dying
electrolytic capacitors or other obvious signs of death, so the power supply
became the prime suspect.  Pulling the power supply and looking closely though
the fan grates yielded the culprit: electrolytic capacitors with their
electrolyte popping out of the top of the can...  That's not good...&lt;/p&gt;

&lt;p&gt;The power supply has since been relegated to the garage, to wait until the next
time I recycle some electronics.  I'm now waiting patiently for the UPS guy to
show up with a new Seasonic 520 Watt unit.  It can't come fast enough! :)&lt;/p&gt;

&lt;p&gt;Last year, about this time, I was experiencing some RAM troubles.  When ever
I would plug in an SD card reader, the kernel would complain about ECC errors.
If I let it go long enough, I'd get to enjoy a fun crash.  Performing a bunch
of memory tests yielded no errors when running memtest86+.  Regardless, every
time I plugged that SD card reader in, ECC errors would arise and shortly
thereafter, a crash.  I narrowed the errors down to 4 of my 8 sticks of DDR
memory, after removing them, the ECC errors and crashes went away.&lt;/p&gt;

&lt;p&gt;I suspect that the power supply had been dying for quite a while, and that it
may have actually been the root cause of my ECC errors.  Since memtest86+
could not detect any problems, even when run for a full day, things just weren't
adding up.  Maybe I'll get to reinstall the other half of my DDR once the new
power supply arrives, that'd be a nice bonus.&lt;/p&gt;

&lt;p&gt;If you're wondering why I didn't just buy new DDR, you should price out
registered ECC DDR400.  It's not cheap, but I am.  One 1GB stick from Crucial
costs as much as the power supply I just bought.  My desktop is a 5+ year old dual
processor (physical ones, not cores) AMD Opteron box, and memory must be
installed equally between the two processors and in pairs (to get dual-channel
operation), so the only choices are 4 or 8 sticks of DDR if I want reasonably
good performance.  I was too cheap to try and buy another stick of DDR since
my computer still worked and the impact of half as much memory really wasn't
that bad.  Although the prospect of getting it all back would be nice...&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Triggers and Whining</title>
   <link href="http://www.bradfordembedded.com/2012/02/triggers_and_whining"/>
   <updated>2012-02-10T00:00:00-08:00</updated>
   <id>hhttp://www.bradfordembedded.com/2012/02/triggers_and_whining</id>
   <content type="html">&lt;p&gt;I'm reading &lt;a href=&quot;http://www.amazon.com/gp/product/1439127662/ref=as_li_ss_tl?ie=UTF8&amp;amp;tag=bradford07-20&amp;amp;linkCode=as2&amp;amp;camp=1789&amp;amp;creative=390957&amp;amp;creativeASIN=1439127662&quot;&gt;The Way We're Working Isn't Working&lt;/a&gt; by Tony Schwartz.
In it, Tony talks about triggers: things that get a negative reaction.  Be
they actions, words, or world events, triggers are things that get our blood
pressure up and make us act in fight or flight mode.  Triggers happen to
everyone, it's how we each deal with the triggers in our lives that sets us up
to have a better or worse life.&lt;/p&gt;

&lt;p&gt;The Way We're Working recommends taking a step back when confronted with a
trigger.  Ask yourself what are the facts and what are the stories you're
telling yourself.  There's a big difference!  Facts are facts.  Actual things
that happened are facts.  Stories are what our brains tell us in order to make
sense of facts.&lt;/p&gt;

&lt;p&gt;I'm not very good at dealing with triggers.  The best evidence I have is posts
I've made recently about &lt;a href=&quot;/2012/02/atlassian-vs-github&quot;&gt;Atlassian&lt;/a&gt; and &lt;a href=&quot;/2012/01/fuck-you-windows&quot;&gt;Windows&lt;/a&gt;.  This
is something I need to personally work on.  I had facts in both cases, but I told
myself (and then my blog) stories in order to rationalize those facts in a way
that made sense to me in my upset state.  Once I calmed down, my stories
changed, that's a good indicator that my stories were leaving out critical facts
or I was telling them in a way that made me feel good about myself by being
negative about something else.  That's not healthy.&lt;/p&gt;

&lt;p&gt;I've also recently read an interesting essay on value from &lt;a href=&quot;http://www.theajinetwork.com/index.php&quot;&gt;The Aji Network&lt;/a&gt;.
(Sorry, I'm not allowed to link to the essay.)  In it, there's mention about the fact
that the market does not respond to whining, only to actual action.  People who
whine and don't take any action aren't really of concern.&lt;/p&gt;

&lt;p&gt;For example, I was whining about Atlassian and Windows, but I'm not in a place
to actually take action to stop using those things.  For one, I'm a member of
a company that's using JIRA and tools that only run on Windows (no, VisualStudio
isn't a candidate for &lt;a href=&quot;http://www.winehq.org/&quot;&gt;WINE&lt;/a&gt;).  I'm just whining.  The market doesn't
really care because I'm not actually going to take action on my whines.&lt;/p&gt;

&lt;p&gt;Atlassian has actually gotten in contact with me (complaining on twitter really
does work!) and they explained why I had to enter credit card details.  They're
working to explain that better in their purchasing pages and they're looking
into why I wasn't notified when our account actually got upgraded.  Turns out
that most account upgrades do happen in minutes.&lt;/p&gt;

&lt;p&gt;In all, I'm going to work on my triggers and try to stop whining.  It's not good
for my health and the market doesn't care.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Atlassian vs GitHub</title>
   <link href="http://www.bradfordembedded.com/2012/02/atlassian-vs-github"/>
   <updated>2012-02-09T00:00:00-08:00</updated>
   <id>hhttp://www.bradfordembedded.com/2012/02/atlassian-vs-github</id>
   <content type="html">&lt;p&gt;At work, we use both Atlassian's OnDemand JIRA tool for tracking bugs and tasks,
and we use GitHub for version control.  Both our accounts have everything
private, we're not running an open source project.&lt;/p&gt;

&lt;p&gt;I've personally not been that fond of the JIRA tool.  I'm sure it's good for
some instances, but either the way it's intended to work or the limitations
put on our OnDemand instance cause it to be less than stellar in my eyes.  It
could just be that the point where I am in bug and feature tracking doesn't
need the complexity that JIRA brings to the table.  I've switched over to using
GitHub issues for my day-to-day and my workflow is smoother.&lt;/p&gt;

&lt;p&gt;Also, the way that Atlassian and GitHub deal with payments is rather different.
Both keep our (well, our CTO's) credit card on file and bill it monthly.  But
if you want to upgrade your level of service (adding users to Atlassian / adding
repos to GitHub), the method of doing that is drastically different for the
internet age.&lt;/p&gt;

&lt;p&gt;GitHub has a listing of their different offering levels, the number of private
repos you can have, and you push the &quot;Upgrade&quot; or &quot;Downgrade&quot; button to move
your account up or down in cost and available private repos.  After pushing
the button, you're asked to confirm, and then &lt;strong&gt;WHAM&lt;/strong&gt; your account changes to
reflect your desires.  No fluff.  I like it.&lt;/p&gt;

&lt;p&gt;Atlassian on the other hand, requires you to enter credit card details when
changing your account level.  You can't select to just use the card already on
file.  Yesterday, I wanted to move our OnDemand instance
from 10 users to 15 (we now have 11 developers who need access).
The CTO was not around, so I couldn't use his credit card, which meant I had
to use my own.  I thought, &quot;No big deal, right?&quot;  Well, sort of.  I now have to
submit an expense report, and since Atlassian says that my credit card is now
going to be the one billed monthly, rather than the one previously on file, I
have to get the CTO's card from him when he's back in town and change our
billing preferences, again!  To top it all off, after I go through all of this,
Atlassian tells me, &quot;our sales team member will review and process your order
within the next 1 - 3 business days.&quot;  &lt;strong&gt;ARE YOU SERIOUS?!?!&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Shipping physical things might take a day or two to grab, pack, and slap a label
onto.  Charging a credit card and changing a variable from 10 to 15 shouldn't!
A few hours, that's reasonable.  A few minutes, that's the expectation.
Days just don't exist on the internet.&lt;/p&gt;

&lt;p&gt;I've gotten word back from Atlassian sales.  Turns out our account got upgraded
overnight, which is good.  But their response to my complaint about entering
credit card details &lt;strong&gt;again&lt;/strong&gt; is that they do this on purpose to ensure that
the credit card owner isn't surprised by changes to the billing amount.  I can
only assume they've had problems before.  I'm confused by this, since only those
who can manage the account can upgrade it.  I'd think the solution here is to
tell customers not to let incompetent people manage an account where billing
decisions can be made.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Moving Day is Coming!</title>
   <link href="http://www.bradfordembedded.com/2012/01/moving-day-is-coming"/>
   <updated>2012-01-18T00:00:00-08:00</updated>
   <id>hhttp://www.bradfordembedded.com/2012/01/moving-day-is-coming</id>
   <content type="html">&lt;div class='post'&gt;
&lt;p&gt;Shortly, Bradford Embedded will be moving away from Blogger!&lt;/p&gt;
&lt;p&gt;The exact timing isn't set yet but I will be sure to post the new home prominently when it happens.  I'm moving to a Jekyll generated blog hosted on GitHub pages.  The goal is to have the transition go as smoothly as possible, so I'm taking it slow.  Until I've fully switched over, all posts will show up on both platforms.&lt;/p&gt;
&lt;p&gt;To see my progress - and the full archive of posts imported from Blogger - head on over to the new &lt;a href=&quot;http://www.bradfordembedded.com&quot;&gt;BradfordEmbedded.com&lt;/a&gt;.&lt;/p&gt;
&lt;/div&gt;
</content>
 </entry>
 
 <entry>
   <title>Open Hardware Innovation - It's Coming...</title>
   <link href="http://www.bradfordembedded.com/2012/01/open-hardware-innovation-it-s-coming"/>
   <updated>2012-01-16T00:00:00-08:00</updated>
   <id>hhttp://www.bradfordembedded.com/2012/01/open-hardware-innovation-it-s-coming</id>
   <content type="html">&lt;div class='post'&gt;
I predict that within the next 2 years, &lt;a href=&quot;http://www.openhardwaresummit.org/&quot;&gt;open hardware&lt;/a&gt; designs really start giving semi-commodity hardware a run for its money.&lt;br /&gt;&lt;br /&gt;Things like wifi routers, Ethernet switches, add-in cards, and input devices.  The time of the somewhat specialty non-open hardware design is coming to an end.&lt;br /&gt;&lt;br /&gt;Given the capabilities of the BeagleBoards and the &lt;a href=&quot;http://www.bunniestudios.com/blog/?p=2117&quot;&gt;neTV&lt;/a&gt;, &lt;a href=&quot;http://www.shapeways.com/&quot;&gt;Shapeways&lt;/a&gt;, lower cost FPGAs, open source micro controller development environments, and lower cost hardware design tools: there's going to be a really fun shake up the hardware landscape.  Combine this low cost (to develop) tech with &lt;a href=&quot;http://www.kickstarter.com/&quot;&gt;KickStarter&lt;/a&gt; type funding and I expect a large number of open hardware companies will emerge in the next few years.&lt;br /&gt;&lt;br /&gt;The early adopters will be power users who don't mind a few inconveniences at first in order to support awesome products (just like on the web or with software).  After about a year of an open hardware product being out, it'll start leaking into the masses.  Then it will all be over.  There will be a commoditization of hardware in the same way open / free software has commoditized a huge swath of the software landscape (open / free web servers run a HUGE portion of the web).  Traditional vendors of hardware will start using the open / free hardware as a basis for their designs because it will be cost prohibitive to do otherwise.&lt;br /&gt;&lt;br /&gt;We've seen this before with software.  It's to the point now where if you're building a product with an embedded computer in it, you pick GNU/Linux (or Android which uses Linux, the kernel at least).  It's too expensive to do otherwise, there's just such an awesome set of base open / free software available.&lt;br /&gt;&lt;br /&gt;I'd love to be on the forefront of the open hardware wave.  I'm not, yet.  It's just starting now.  I better get crackin'...&lt;/div&gt;
&lt;h2&gt;Comments&lt;/h2&gt;
&lt;div class='comments'&gt;
&lt;/div&gt;
</content>
 </entry>
 
 <entry>
   <title>More BeagleBone USB Based Serial Port Rambling</title>
   <link href="http://www.bradfordembedded.com/2012/01/more-beaglebone-usb-based-serial-port-rambling"/>
   <updated>2012-01-13T00:00:00-08:00</updated>
   <id>hhttp://www.bradfordembedded.com/2012/01/more-beaglebone-usb-based-serial-port-rambling</id>
   <content type="html">&lt;div class='post'&gt;
I'm somewhat disappointed with the BeagleBone's USB based serial port setup to connect to a host PC.  I've written about some of my &lt;a href=&quot;http://bradfordembedded.blogspot.com/2011/12/beaglebone-hardware-desire-usb-ftdi.html&quot;&gt;frustration before&lt;/a&gt;, but it's only getting worse for me.&lt;br /&gt;&lt;br /&gt;Now, sometimes (although not that often) when I plug the mini-USB cable into the BeagleBone while holding the reset button (to prevent booting) and open my serial terminal, when I release the reset I get garbage on the terminal and the Bone won't boot.  Resetting the board a few times often fixes this, but is very annoying.  Also, sometimes if I already have the Bone running with external power and then attempt to connect the mini-USB cable, I still sometimes get garbage in the terminal.&lt;br /&gt;&lt;br /&gt;I'm not sure of the root cause, but it affects at least one of the BeagleBones I have on my desk (I have 3 total).  It could very well be that minicom is somewhat to blame, I'm switching to picocom to see if that helps.  Regardless, I'm now very much desiring a real serial port that avoids this whole FTDI chip business.  It'd be nice to have a &quot;real serial port cape&quot; that provides DB9 connectors for one or two of the serial ports that are exposed through the expansion headers.  Modifying the SPL, u-boot, and kernel to use a different UART isn't hard...&lt;br /&gt;&lt;br /&gt;The main issue would be getting the boot loaders to read the cape I2C memory and realize that it should change the default UART output automatically.  That's doable if people are willing to rebuild the bootloader (or download a precompiled version) and use it.  It would be handy if the default BeagleBone bootloader supplied with the kit did this, but maybe that's asking a bit much.  I should probably write up this idea on the BeagleBoard mailing list...&lt;br /&gt;&lt;br /&gt;I think the goal of having one connection for USB, JTAG, and power was a good goal for the BeagleBone team.  It's just that I don't really want that.  Apparently I'm special :).  Otherwise I do really like the BeagleBone.  I'd personally prefer a real RS232 levels serial port, external power adapter (or PoE!), and a JTAG header (dedicated FTDI JTAG devices are under $100 from many vendors).&lt;/div&gt;
&lt;h2&gt;Comments&lt;/h2&gt;
&lt;div class='comments'&gt;
&lt;div class='comment'&gt;
&lt;div class='author'&gt;Andrew&lt;/div&gt;
&lt;div class='content'&gt;
I&amp;#39;m personally not a fan of screen for serial terminals.  The scrollback isn&amp;#39;t intuitive for me (my problem, not necessarily screen&amp;#39;s as it can be changed in the config).  I will give it a try the next time minicom or picocom barf.&lt;br /&gt;&lt;br /&gt;I&amp;#39;ve never had any issues using minicom for real serial ports (think /dev/ttyS0 and friends) or dedicated USB to serial port devices that have a DB9 connector.  I&amp;#39;ve been having issues here and there with the integrated system on the BeagleBone.  Because of my past good experiences, it makes me think the Bone is the problem, not me (but I&amp;#39;m slightly biased).&lt;/div&gt;
&lt;/div&gt;
&lt;div class='comment'&gt;
&lt;div class='author'&gt;Philip&lt;/div&gt;
&lt;div class='content'&gt;
Try:&lt;br /&gt;&lt;br /&gt;sudo screen /dev/ttyUSB1 115200,cs8,-ixon,-ixoff&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
</content>
 </entry>
 
 <entry>
   <title>Justifying Good Chairs</title>
   <link href="http://www.bradfordembedded.com/2012/01/justifying-good-chairs"/>
   <updated>2012-01-12T00:00:00-08:00</updated>
   <id>hhttp://www.bradfordembedded.com/2012/01/justifying-good-chairs</id>
   <content type="html">&lt;div class='post'&gt;
&lt;a href=&quot;http://www.codinghorror.com/blog/2008/07/investing-in-a-quality-programming-chair.html&quot;&gt;Good chairs&lt;/a&gt; aren't cheap.  We're talking $800 for a high quality, new, warrantied, chair from a good supplier like &lt;a href=&quot;http://www.steelcase.com&quot;&gt;Steelcase&lt;/a&gt; or &lt;a href=&quot;http://www.hermanmiller.com/&quot;&gt;Herman Miller&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;But those same chairs, in great condition, on the used market generally can be had for $400 to $500.  $400 isn't that expensive for a chair when you think about it.&lt;br /&gt;&lt;br /&gt;Let's assume a quality engineer costs $100,000 per year (pay, benefits, taxes, and insurance) for a business.  With 260 working days in a year (5 days per week, 52 weeks per year), that's $385 per day that the business is paying for the engineer's time.&lt;br /&gt;&lt;br /&gt;What does that mean for chairs?  It means that over the course of a 3 year span where a quality engineer works for you, it's cheaper to buy a $400 chair than it is to have that engineer miss &lt;b&gt;1/3 of one day of work&lt;/b&gt; (that's 3 hours) per year.&lt;br /&gt;&lt;br /&gt;Or think of it this way, if having a good $400 chair makes your engineer 0.13% more efficient over 3 years, the chair pays for itself.  That's &lt;b&gt;3 minutes&lt;/b&gt; more output &lt;b&gt;per week!&lt;/b&gt;  &lt;b&gt;3 minutes!&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Or, brand new $800 chairs mean you need to get 6 minutes more work out of your 3 year engineer per week.  Still not crazy, just over 1 minute per day more work to break even.&lt;/div&gt;
&lt;h2&gt;Comments&lt;/h2&gt;
&lt;div class='comments'&gt;
&lt;/div&gt;
</content>
 </entry>
 
 <entry>
   <title>Fuck You, Windows!</title>
   <link href="http://www.bradfordembedded.com/2012/01/fuck-you-windows"/>
   <updated>2012-01-12T00:00:00-08:00</updated>
   <id>hhttp://www.bradfordembedded.com/2012/01/fuck-you-windows</id>
   <content type="html">&lt;div class='post'&gt;
Probably overheard at Microsoft during Windows 7 development due to security issues Microsoft has experienced in the past, &quot;I've got an awesome idea for updates!&quot;&lt;br /&gt;&lt;br /&gt;That exclamation was probably quickly followed by, &quot;Let's have Windows 7 &lt;b&gt;default&lt;/b&gt; to automatically downloading any new updates over the internet and applying those updates in the middle of the night!  It can even &lt;b&gt;reboot, without prompting or authorization&lt;/b&gt;, if a reboot is needed!&quot;  And the Land of Microsoft rejoiced.&lt;br /&gt;&lt;br /&gt;Then users who don't expect their machine to reboot at 3am arrive at work and their computer has decided to reboot, possibly losing work, and at the very least moving windows, forgetting current location in very long Word documents, and generally making the user feel like they've lost control.&lt;br /&gt;&lt;br /&gt;So: Fuck You, Windows.  Your shit stinks.&lt;br /&gt;&lt;br /&gt;Side note: I don't mean to offend with my profanity.  The title is literally what came out of my mouth when I arrived at work this morning and my Windows 7 VM had decided to reboot on its own.&lt;/div&gt;
&lt;h2&gt;Comments&lt;/h2&gt;
&lt;div class='comments'&gt;
&lt;/div&gt;
</content>
 </entry>
 
 <entry>
   <title>HP Letting Us Down</title>
   <link href="http://www.bradfordembedded.com/2012/01/hp-letting-us-down"/>
   <updated>2012-01-11T00:00:00-08:00</updated>
   <id>hhttp://www.bradfordembedded.com/2012/01/hp-letting-us-down</id>
   <content type="html">&lt;div class='post'&gt;
I've written about my experiences with my EliteBook 8560w a few times.  Two other guys in the office also got 8560ws around the same time I got mine.  They both run Windows 7 (I know! The horror! :) and have the AMD graphics option.  Overall, nice machines, but there's one little gotcha:&lt;br /&gt;&lt;br /&gt;HP's 27&quot; IPS monitor, the ZR2740w, refuses to be driven by the AMD chipset, with Windows 7 Pro 64 bit, over DisplayPort.  We and HP have no idea why.  I can plug my 8560w with NVIDIA graphics and Debian 6 into the ZR2740w, restart X (so it detects the monitor correctly instead of thinking it's my ZR2440w), and BAM!, I get the full 2560x1440 pixel glory.&lt;br /&gt;&lt;br /&gt;My office mate has been on the phone with HP support for hours trying to get this fixed.  So far, no dice.  And we're &lt;a href=&quot;https://www.google.com/search?q=zr2740w+8560w&quot;&gt;not the only ones with issues&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;It boggles my mind why this isn't a plug-n-play type operation.  Especially if an NVIDIA card, on 64 bit Linux (Debian Stable no less!), can drive the monitor just the way it is supposed to be driven.  HP's really disappointing with this one.&lt;br /&gt;&lt;br /&gt;Side note: My ZR2440w and the ZR2740w are both &quot;anti-glare&quot; type monitors.  There's a coating on the screen to disperse the light and make it matte.  My ZR2440w has a pretty nice coating, I don't really notice it.  The ZR2740w coating is much easier to notice, solid colors on the display look off, just not the solid single color I'd expect, almost like they're shimmering.  I'm not a huge fan, but it's probably just something to get used to.  I wonder, are other 27&quot; panels with anti-glare the same?  Or is HP's anti-glare somehow different than, say, Dell's?&lt;br /&gt;&lt;br /&gt;UPDATE 20120111 4:00pm - HP's now saying it's an ATI driver issue and that ATI will have an updated driver by the end of January.&lt;/div&gt;
&lt;h2&gt;Comments&lt;/h2&gt;
&lt;div class='comments'&gt;
&lt;/div&gt;
</content>
 </entry>
 
 <entry>
   <title>Business Secrecy</title>
   <link href="http://www.bradfordembedded.com/2012/01/business-secrecy"/>
   <updated>2012-01-09T00:00:00-08:00</updated>
   <id>hhttp://www.bradfordembedded.com/2012/01/business-secrecy</id>
   <content type="html">&lt;div class='post'&gt;
There's lots of talk about &quot;stealth&quot; start-ups that don't publicize their market segment.  In any company, there's usually also talk about not tipping off the competition about the next big thing.  Basically, the idea of secrecy in business is normal and accepted.&lt;br /&gt;&lt;br /&gt;I (personally) think business secrecy is over rated.&lt;br /&gt;&lt;br /&gt;Granted, I've never owned my own business and I'm not a marketing mastermind, but I get the impression that keeping things secret really doesn't get you much.  It's execution that matters.&lt;br /&gt;&lt;br /&gt;Look at Apple, everyone knows what they are working on at least 6 months in advance.  iPhones leak.  The rumors sites get insider information.  Apple may even leak info out of its PR departments on purpose (but that's a rumor).  It's free press for Apple, they don't pay a dime for this advertising.  Apple didn't release an MP3 player till years after the first ones went to market.  Even with everyone knowing basically what Apple are working on months before it comes out, they still completely dominate their markets.&lt;br /&gt;&lt;br /&gt;Look at your local pizza joint.  Most make the pizza in view of customers at the counter.  The ingredients are all known, just watch the delivery guy drop them off.  The economics are easy to figure if you're in a competing pizza business.  Not much is secret, yet there's probably hundreds of thousands of pizza joints doing very well around the world.&lt;br /&gt;&lt;br /&gt;It all comes back to execution.&lt;br /&gt;&lt;br /&gt;Execution on an idea, a product, or a service.  All of the best performing companies have huge numbers of competitors all making very close to the same thing and selling to the same potential customers.  It's execution that sets the best apart from the rest.&lt;br /&gt;&lt;br /&gt;Customer service, design, capability, and features.  That's execution.  Not basic ideas or secrecy.&lt;/div&gt;
&lt;h2&gt;Comments&lt;/h2&gt;
&lt;div class='comments'&gt;
&lt;/div&gt;
</content>
 </entry>
 
 <entry>
   <title>Things That Matter in an Office</title>
   <link href="http://www.bradfordembedded.com/2012/01/things-that-matter-in-an-office"/>
   <updated>2012-01-05T00:00:00-08:00</updated>
   <id>hhttp://www.bradfordembedded.com/2012/01/things-that-matter-in-an-office</id>
   <content type="html">&lt;div class='post'&gt;
I'm now working at my second &quot;real job.&quot;  The two environments are very different but I've grown to appreciate a few office things:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Free decent coffee&lt;/li&gt;&lt;li&gt;A small kitchen area&lt;/li&gt;&lt;li&gt;Offices with walls and doors, just like in &lt;a href=&quot;http://www.amazon.com/gp/product/0932633439/ref=as_li_ss_tl?ie=UTF8&amp;tag=bradford07-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0932633439&quot;&gt;Peopleware&lt;/a&gt;&lt;img src=&quot;http://www.assoc-amazon.com/e/ir?t=bradford07-20&amp;l=as2&amp;o=1&amp;a=0932633439&quot; width=&quot;1&quot; height=&quot;1&quot; border=&quot;0&quot; alt=&quot;&quot; style=&quot;border:none !important; margin:0px !important;&quot; /&gt;&lt;/li&gt;&lt;li&gt;Startups don't have open office environments because they like them, real estate and renovations are a pain and that effort would be better put to making product&lt;/li&gt;&lt;li&gt;Parking shouldn't require a 10 minute walk, in the cold, in Rochester&lt;/li&gt;&lt;li&gt;No one should be using a monitor smaller than 24 inches&lt;/li&gt;&lt;li&gt;Laptops, get them&lt;/li&gt;&lt;li&gt;Solid State Disks, get them for the laptops&lt;/li&gt;&lt;li&gt;Wifi, gotta have&lt;/li&gt;&lt;li&gt;Fast, symmetric net connection for the office, at least 10/10 Mbit for a few people, more for more&lt;/li&gt;&lt;li&gt;Don't block any of the web.  Trust your employees not to surf porn at work and they won't.&lt;/li&gt;&lt;li&gt;Big desks with lots of space are very handy, reduces the need for lab time with hardware&lt;/li&gt;&lt;li&gt;GOOD CHAIRS! They don't have to be Aerons (my present chair leaves something to be desired)&lt;/li&gt;&lt;li&gt;Open 24/7 for use&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;
&lt;h2&gt;Comments&lt;/h2&gt;
&lt;div class='comments'&gt;
&lt;/div&gt;
</content>
 </entry>
 
 <entry>
   <title>Load Average - 10.08</title>
   <link href="http://www.bradfordembedded.com/2012/01/load-average-10-08"/>
   <updated>2012-01-04T00:00:00-08:00</updated>
   <id>hhttp://www.bradfordembedded.com/2012/01/load-average-10-08</id>
   <content type="html">&lt;div class='post'&gt;
I like my HP 8560w laptop :)&lt;br /&gt;&lt;br /&gt;I currently have a 1 minute load average of 10.08 and the thing is still fairly responsive.  I'm doing an rsnapshot backup of the main SSD with an encrypted ext4 disk to an external USB 3.0 encrypted ext4 disk while cross compiling Linux 3.1 for the BeagleBone and running a Windows 7 VM in VirtualBox.  I'm going to credit about half of this ability to the Core-i7 and the other half to the SSD, the 8GB of ram helps I'm sure (look ma, no swap!).&lt;br /&gt;&lt;br /&gt;Patiently awaiting Linux 3.1 or 3.2 to show up in Squeeze backports (if it ever will) so I can enable discards for the SSD and punch through the encryption layer.  Should give a little better response from the SSD but even after 2 months of decent usage, the SSD is still much faster than a traditional hard disk.  I'm not sure how important TRIM really is...&lt;/div&gt;
&lt;h2&gt;Comments&lt;/h2&gt;
&lt;div class='comments'&gt;
&lt;/div&gt;
</content>
 </entry>
 
 <entry>
   <title>NameCheap and SOPA</title>
   <link href="http://www.bradfordembedded.com/2011/12/namecheap-and-sopa"/>
   <updated>2011-12-29T00:00:00-08:00</updated>
   <id>hhttp://www.bradfordembedded.com/2011/12/namecheap-and-sopa</id>
   <content type="html">&lt;div class='post'&gt;
I'm now a fan (and customer) of &lt;a href=&quot;http://www.namecheap.com?aff=26161&quot;&gt;NameCheap&lt;/a&gt; (that's an affiliate link, if you're interested in supporting Bradford Embedded).&lt;br /&gt;&lt;br /&gt;NameCheap is running a special today on any domain transfers.  Use the coupon code &quot;&lt;a href=&quot;https://www.namecheap.com/moveyourdomainday.aspx&quot;&gt;SOPAsucks&lt;/a&gt;&quot; (without the quotes) and transfers are only $6.99, plus NameCheap will donate $1 to the EFF for every transfer!  Transfers include 1 year of renewal.&lt;br /&gt;&lt;br /&gt;The target appears to be GoDaddy, who were supporting SOPA.  I dislike GoDaddy (hence, no link) as well, but I had that opinion long before SOPA came about.  NameCheap has been a fairly popular topic over on &lt;a href=&quot;http://news.ycombinator.com/&quot;&gt;HN&lt;/a&gt; recently.  That's where I heard about them.  If you use the coupon code and my affiliate link, I don't get any money but that's OK (I encourage you to use the coupon! SOPA does suck, and supporting the EFF is way more important than supporting me).&lt;br /&gt;&lt;br /&gt;NameCheap's also running a special where if you register a new domain (in at least .com and .net, and possibly others), you get the .org domain registration for free.  No coupons required.  The affiliate link should still pay me if you use this deal, and you won't pay a higher price because of it.&lt;br /&gt;&lt;br /&gt;I've transferred my domains to NameCheap from &lt;a href=&quot;http://dyn.com/&quot;&gt;Dyn&lt;/a&gt;.  I liked Dyn, I have nothing against them, but NameCheap lives up to their name, they're cheaper, and I like supporting the EFF and companies who take stands.&lt;br /&gt;&lt;br /&gt;A short while ago, &lt;a href=&quot;http://bradfordembedded.blogspot.com/2011/11/google-adwords-gone.html&quot;&gt;I removed ads from my blog&lt;/a&gt;.  I'm still against ads, even though this post may sound like one.  It is, but only because I'm a very happy customer, wanted to share my experience, and if it can net me a few bucks, all the better.  I'm also in a transparent mood today ;)&lt;/div&gt;
&lt;h2&gt;Comments&lt;/h2&gt;
&lt;div class='comments'&gt;
&lt;/div&gt;
</content>
 </entry>
 
 <entry>
   <title>Set The World On Fire</title>
   <link href="http://www.bradfordembedded.com/2011/12/set-the-world-on-fire"/>
   <updated>2011-12-27T00:00:00-08:00</updated>
   <id>hhttp://www.bradfordembedded.com/2011/12/set-the-world-on-fire</id>
   <content type="html">&lt;div class='post'&gt;
I like &lt;a href=&quot;https://twitter.com/FAKEGRIMLOCK&quot;&gt;FAKEGRIMLOCK&lt;/a&gt;.  You should get in on the &lt;a href=&quot;http://www.kickstarter.com/projects/531215105/make-fakegrimlock-posters&quot;&gt;KickStarter&lt;/a&gt;.  I also like &lt;a href=&quot;http://sethgodin.typepad.com&quot;&gt;Seth Godin&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Put the two together:&lt;br /&gt;&lt;br /&gt;If you want to set the world on fire, first, &lt;a href=&quot;http://www.feld.com/wp/archives/2011/10/be-on-fire.html&quot;&gt;you must burn&lt;/a&gt;!&lt;br /&gt;If you're not setting the world on fire, your house is burning.  &lt;a href=&quot;http://sethgodin.typepad.com/seths_blog/2011/12/firemen-donuts-and-meetings.html&quot;&gt;Do something about it, NOW!&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I like these analogies for business.&lt;/div&gt;
&lt;h2&gt;Comments&lt;/h2&gt;
&lt;div class='comments'&gt;
&lt;/div&gt;
</content>
 </entry>
 
 <entry>
   <title>BeagleBone Debian Squeeze armel Multistrap Config</title>
   <link href="http://www.bradfordembedded.com/2011/12/beaglebone-debian-squeeze-armel-multistrap-config"/>
   <updated>2011-12-27T00:00:00-08:00</updated>
   <id>hhttp://www.bradfordembedded.com/2011/12/beaglebone-debian-squeeze-armel-multistrap-config</id>
   <content type="html">&lt;div class='post'&gt;
For those interested, here's my current Debian Squeeze armel &lt;a href=&quot;http://wiki.debian.org/Multistrap&quot;&gt;multistrap&lt;/a&gt; configuration file that I'm using to build a Debian file system for my BeagleBones:&lt;br /&gt;&lt;br /&gt;&lt;script src=&quot;https://gist.github.com/1523416.js?file=multistrap-armel.conf&quot;&gt;&lt;/script&gt;&lt;br /&gt;&lt;br /&gt;It's going to be a little &lt;a href=&quot;http://rubyonrails.org/&quot;&gt;rails&lt;/a&gt; server :)&lt;br /&gt;&lt;br /&gt;EDIT: You'll probably want to use the &lt;a href=&quot;http://packages.debian.org/squeeze-backports/multistrap&quot;&gt;backports version of multistrap&lt;/a&gt; if you want to verify package signatures and you have fakeroot installed.  There's no support for this in the standard Squeeze multistrap version.&lt;/div&gt;
&lt;h2&gt;Comments&lt;/h2&gt;
&lt;div class='comments'&gt;
&lt;/div&gt;
</content>
 </entry>
 
 <entry>
   <title>BeagleBone Boot Time</title>
   <link href="http://www.bradfordembedded.com/2011/12/beaglebone-boot-time"/>
   <updated>2011-12-27T00:00:00-08:00</updated>
   <id>hhttp://www.bradfordembedded.com/2011/12/beaglebone-boot-time</id>
   <content type="html">&lt;div class='post'&gt;
Apparently a lot of people want to know things about BeagleBone boot time...&lt;br /&gt;Let me know if this is covering it or if you'd like more info.  Most of my work is with &lt;a href=&quot;http://trac.cross-lfs.org/&quot;&gt;CLFS&lt;/a&gt; and &lt;a href=&quot;http://www.debian.org/&quot;&gt;Debian&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;I'm seeing about 8.5 seconds from kernel start to login prompt with a rather pared down Debian Sqeueze armel configuration and Linux 3.1.  Add about two seconds for SPL, u-boot, and kernel decompression.  Then add on the boot delay countdown (3 seconds in my case).  That gets us to about 13.5 seconds to boot.&lt;br /&gt;&lt;br /&gt;Let's be conservative and say 15 seconds.  Completely respectable.  Not a 1 second boot, but that's not my goal, anything under a minute is pretty good in my book.&lt;br /&gt;&lt;br /&gt;To give you a sense of what I'm starting at boot time for services, here's some output:&lt;br /&gt;&lt;br /&gt;&lt;script src=&quot;https://gist.github.com/1523407.js?file=gistfile1.txt&quot;&gt;&lt;/script&gt;&lt;/div&gt;
&lt;h2&gt;Comments&lt;/h2&gt;
&lt;div class='comments'&gt;
&lt;/div&gt;
</content>
 </entry>
 
 <entry>
   <title>BeagleBone Booting Debian Squeeze!</title>
   <link href="http://www.bradfordembedded.com/2011/12/beaglebone-booting-debian-squeeze"/>
   <updated>2011-12-19T00:00:00-08:00</updated>
   <id>hhttp://www.bradfordembedded.com/2011/12/beaglebone-booting-debian-squeeze</id>
   <content type="html">&lt;div class='post'&gt;
I've got my BeagleBone booting Debian 6 Squeeze!&lt;br /&gt;(The real Squeeze, not Emdebian)&lt;br /&gt;&lt;br /&gt;I've used the &lt;a href=&quot;http://arago-project.org/git/projects/?p=u-boot-am33x.git;a=summary&quot;&gt;u-boot&lt;/a&gt; and &lt;a href=&quot;http://arago-project.org/git/projects/?p=linux-am33x.git;a=summary&quot;&gt;kernel&lt;/a&gt; sources (with only a few tiny modifications from the am335x_evm_defconfig) from the &lt;a href=&quot;http://arago-project.org/wiki/index.php/Main_Page&quot;&gt;Arago project&lt;/a&gt; git repos.  I'm using &lt;a href=&quot;http://wiki.debian.org/Multistrap&quot;&gt;multistrap&lt;/a&gt; and qemu-static to build and configure Debian on my amd64 host, then copying over the files to the microSD card.&lt;br /&gt;&lt;br /&gt;I'll be sure to post more info on steps in the near future.  The partitioning and formatting of the microSD card is the first step.&lt;br /&gt;&lt;br /&gt;Click through the jump to see output in a Gist.&lt;br /&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;script src=&quot;https://gist.github.com/1497690.js?file=gistfile1.txt&quot;&gt;&lt;/script&gt;&lt;/div&gt;
&lt;h2&gt;Comments&lt;/h2&gt;
&lt;div class='comments'&gt;
&lt;/div&gt;
</content>
 </entry>
 
 <entry>
   <title>Format an SD Card with 8 MiB Aligned Partitions</title>
   <link href="http://www.bradfordembedded.com/2011/12/format-an-sd-card-with-8-mib-aligned-partitions"/>
   <updated>2011-12-14T00:00:00-08:00</updated>
   <id>hhttp://www.bradfordembedded.com/2011/12/format-an-sd-card-with-8-mib-aligned-partitions</id>
   <content type="html">&lt;div class='post'&gt;
SD cards generally have 2, 4, or 8 MiB (MiB = 1024 * 1024 bytes) erase blocks and 8 KiB write pages.  Because of this, your partitions on an SD card should be aligned so that they begin and end at the edges of the erase blocks.  This, of course, assumes the SD card isn't doing address translation and sticking data where ever it wants (which the low priced ones probably aren't, the high priced ones might be).  So take this with a grain of salt :)&lt;br /&gt;&lt;br /&gt;If you want to create a microSD card for use with the BeagleBone that uses partitions aligned to 8MiB bounds, you can use the below script.  It's adapted from the &lt;a href=&quot;http://elinux.org/Panda_How_to_MLO_%26_u-boot&quot;&gt;eLinux.org Panda U-Boot instructions&lt;/a&gt;.  It assumes you are using a microSD card that shows up as an mmc device where partitions are named /dev/mmcblk0p1 (and not a SCSI device, like some USB based SD readers do, where partitions are named /dev/sdb1).  You'll destroy all data on the microSD card and you'll end up with a 64MiB FAT partition and the rest of the device as an ext3 partition.&lt;br /&gt;&lt;br /&gt;&lt;script src=&quot;https://gist.github.com/1477240.js?file=format_sd.sh&quot;&gt;&lt;/script&gt;&lt;br /&gt;&lt;br /&gt;Copy your MLO and u-boot.img onto the FAT partition and boot it up!  The BeagleBone will boot this partition mapping, even though its different from TI's recommendations.  I'm using the SPL and u-boot from the &lt;a href=&quot;http://arago-project.org/git/projects/?p=u-boot-am33x.git&quot;&gt;Arago repo&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;I'd like to build in support for determining the partition type (mmc versus SCSI) automatically, but that's not done yet.  My HP 8560w has a built in SD card reader that shows up as an mmc device.&lt;/div&gt;
&lt;h2&gt;Comments&lt;/h2&gt;
&lt;div class='comments'&gt;
&lt;/div&gt;
</content>
 </entry>
 
 <entry>
   <title>ROC The Day!</title>
   <link href="http://www.bradfordembedded.com/2011/12/roc-the-day"/>
   <updated>2011-12-08T00:00:00-08:00</updated>
   <id>hhttp://www.bradfordembedded.com/2011/12/roc-the-day</id>
   <content type="html">&lt;div class='post'&gt;
If you live near Rochester, NY, or if you know someone who does, please take a few minutes to visit &lt;a href=&quot;http://roctheday.org&quot;&gt;ROCtheday.org&lt;/a&gt; and donate to one of our local not for profits.  This is a one day (today!) only fundraising event for a huge number of Rochester groups.&lt;/div&gt;
&lt;h2&gt;Comments&lt;/h2&gt;
&lt;div class='comments'&gt;
&lt;/div&gt;
</content>
 </entry>
 
 <entry>
   <title>SanDisk iNAND</title>
   <link href="http://www.bradfordembedded.com/2011/12/sandisk-inand"/>
   <updated>2011-12-07T00:00:00-08:00</updated>
   <id>hhttp://www.bradfordembedded.com/2011/12/sandisk-inand</id>
   <content type="html">&lt;div class='post'&gt;
I stumbled upon &lt;a href=&quot;http://www.sandisk.com/business-solutions/inand-embedded-flash-drives&quot;&gt;SanDisk's iNAND&lt;/a&gt; products today while doing some searching about SD cards.  The iNAND idea looks very appealing to me compared to raw flash from a board design perspective.  Since iNAND looks just like a MMC device, you can hook up to it with a 4 or 8 bit data bus and your total useful pin count can stay around 11 pins, not counting power, ground, and decoupling caps for internally derived voltages.  In terms of keeping pin count down, that's awesome!&lt;br /&gt;&lt;br /&gt;Then, looking what appears to have been a leaked preliminary data sheet for an older version of the current iNAND devices, the speed is pretty good, and internally there's 512 byte pages, wear leveling, TRIM support, and a host of other features required in demanding storage applications (like industrial or smart phones).&lt;br /&gt;&lt;br /&gt;I assume the controller internals are very similar to those found in SanDisk's high end SD cards, and so using iNAND may not give much of a performance difference.  But in some cases, a removable SD card is a liability and soldered down memory would be preferred, such as if people might steal it or in environments with high vibration.&lt;br /&gt;&lt;br /&gt;The only drawback I see is with the lack of removability.  Either SanDisk needs to program your desired initial data into the iNAND at time of purchase, or you need a fixture to interface the iNAND on your own manufacturing line and engineering work bench.  Not a big deal if you have the resources and design the board it mounts to correctly.  And then if you create a situation where the board is unbootable (I'm looking at you, in the field software upgrades), you'll need either the fixture or a JTAG device, just like raw flash.&lt;br /&gt;&lt;br /&gt;I don't know the costs associated with each iNAND family but I do have a request into SanDisk sales to get more info and data sheets.  Not sure I'll be able to share that data, but if I am, I will.&lt;br /&gt;&lt;br /&gt;UPDATE 20111208 1:45pm - After more research, the iNAND family of devices are a type of &lt;a href=&quot;http://en.wikipedia.org/wiki/MultiMediaCard#eMMC&quot;&gt;eMMC device&lt;/a&gt;.  Basically it's MMC but in a soldered down package, usually BGA.  Another handy bit is when developing hardware that will eventually use eMMC, you can lay down the footprint for both the eMMC device and a normal microSD card connector and only populate the one you wish to use (eMMC in production, microSD in development).&lt;/div&gt;
&lt;h2&gt;Comments&lt;/h2&gt;
&lt;div class='comments'&gt;
&lt;/div&gt;
</content>
 </entry>
 
 <entry>
   <title>BeagleBone Hardware Desire - USB and FTDI Power Independence</title>
   <link href="http://www.bradfordembedded.com/2011/12/beaglebone-hardware-desire-usb-ftdi-power-independence"/>
   <updated>2011-12-02T00:00:00-08:00</updated>
   <id>hhttp://www.bradfordembedded.com/2011/12/beaglebone-hardware-desire-usb-ftdi-power-independence</id>
   <content type="html">&lt;div class='post'&gt;
Now that I've got my BeagleBone, I'm still not happy :)&lt;br /&gt;&lt;br /&gt;I'd like to be able to plug the USB cable into my host PC but not have the board power up.  Since the USB cable is now also the serial cable, I'd like to have a few seconds after plugging the USB cable to get my serial port terminal up and running so I can watch the x-loader and u-boot data from a cold boot.  Based on my read through the schematics, this isn't possible by just removing a resistor or a simple hack.  I could probably cut some traces and solder up some jumpers, but it will look messy and I'm not sure it's worth the time, yet.&lt;br /&gt;&lt;br /&gt;It would be nice to have the option of the micro USB connector's power only going to the USB hub and FTDI chip.  That way, when USB is plugged to the host PC, the serial port can be set up before the ARM core boots.  Then when DC power is applied to the 5V input, the ARM core and all other circuits would be powered and boot would occur.  This would be behavior similar to how the BeagleBoard and BeagleBoard-xM work with their &quot;real&quot; serial ports.  I could connect my serial term before boot.&lt;br /&gt;&lt;br /&gt;I realize I can just push the rest button to get a glimpse of the x-loader and u-boot messages, but that's not what I want.  The things I'm going to be building on my BeagleBone will have a rather quick boot (although nothing like the 1 second stuff) and while doing development, I'd like to be able to see the messages scroll.  It's also not always a good idea to hit the hard reset button once Linux has mounted the file systems and started services (ext3/4 have journaling but it's still not a good thing to do often).&lt;br /&gt;&lt;br /&gt;I'm not sure of the official procedure for requesting hardware changes for the BeagleBoards, but I'll probably stop by the Google Group and post this request there, as well.&lt;br /&gt;&lt;br /&gt;EDIT 20111208 6:40am: I sent in a &lt;a href=&quot;http://groups.google.com/group/beagleboard/browse_thread/thread/328a9c693b646816#&quot;&gt;message to the BeagleBoard Google Group&lt;/a&gt; yesterday describing this.&lt;/div&gt;
&lt;h2&gt;Comments&lt;/h2&gt;
&lt;div class='comments'&gt;
&lt;div class='comment'&gt;
&lt;div class='author'&gt;Andrew&lt;/div&gt;
&lt;div class='content'&gt;
Jadon, will do.  Thanks!&lt;br /&gt;&lt;br /&gt;Based on my reading of the schematics, it looks like the main power controller (TPS65217) takes input both from the USB 5V and the external adapter 5V.  Output is the 3.3V used for both the ARM SoC as well as the FTDI.  On my quick look, my power scheme would require an additional DC-DC converter to drop the USB 5V to 3.3V for the FTDI in order to get independence.&lt;br /&gt;&lt;br /&gt;The interesting part, it seems, from looking at the schematics is that the USB hub is powered from the mini-USB connector&amp;#39;s 5V and never from the external adapter&amp;#39;s 5V (which makes sense since it&amp;#39;s only used when mini-USB is connected).  It occurred to me (before your comment) that my desire most likely was taken into consideration but was dropped because the normal use case couldn&amp;#39;t justify the extra cost (both board space and $).&lt;/div&gt;
&lt;/div&gt;
&lt;div class='comment'&gt;
&lt;div class='author'&gt;Jadon&lt;/div&gt;
&lt;div class='content'&gt;
Some thought was put into doing exactly what you are suggesting, where there was a way to keep the FTDI portion powered separately and to enable the rest to be powered by a USB controlled switch or the 5V adapter.  I know it seems a bit nickel and dime, but it was seen as being too expensive/complex to implement effectively.&lt;br /&gt;&lt;br /&gt;What is there is:&lt;br /&gt;a) the ability to control the RESET line via the USB and &lt;br /&gt;b) you can hold the reset button until the USB serial comes up.&lt;br /&gt;&lt;br /&gt;We wanted to initially hold the chip in reset until the serial port became active when powered by USB, but it didn&amp;#39;t work out either.  I understand this is a care-about and you might be able to propose a solution that is suitable.  It is just that we didn&amp;#39;t want any solution that was complex or interfered with a more typical, less-experienced user.  Of course, without users like yourself, we wouldn&amp;#39;t be able to address the needs of the less-experienced users, so please do share on the Google Group your suggestion.&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
</content>
 </entry>
 
 <entry>
   <title>BeagleBones Arrived!</title>
   <link href="http://www.bradfordembedded.com/2011/12/beaglebones-arrived"/>
   <updated>2011-12-01T00:00:00-08:00</updated>
   <id>hhttp://www.bradfordembedded.com/2011/12/beaglebones-arrived</id>
   <content type="html">&lt;div class='post'&gt;
2 &lt;a href=&quot;http://beagleboard.org/bone&quot;&gt;BeagleBones&lt;/a&gt; were delivered by the friendly people at FedEx this morning!&lt;br /&gt;&lt;br /&gt;I've got one of them booted up with the provided microSD card that came already inserted into the Bone.  Oddly, there's another microSD card that was included in a separate packaging inside the BeagleBone box.  I'm not yet sure what the difference is or why 2 were included, but both Bones came this way.&lt;br /&gt;&lt;br /&gt;FedEx also delivered a pair of new SanDisk Mobile Ultra 8GB microSD cards this morning.  I've run flashbench on them and &lt;a href=&quot;http://lists.linaro.org/pipermail/flashbench-results/2011-December/000240.html&quot;&gt;mailed in my results&lt;/a&gt;.  These look like pretty nice cards for Linux given my understanding.&lt;br /&gt;&lt;br /&gt;Next up is building x-loader, u-boot, a kernel, and an Emdebian image for a Bone.&lt;br /&gt;&lt;br /&gt;EDIT 20111201 4:30pm: On my machine, the FTDI serial port driver wasn't working without some help and being that I'm an engineer, I didn't read the directions :)&lt;br /&gt;There's good info on making sure your virtual serial port is working on the &lt;a href=&quot;http://beagleboard.org/static/beaglebone/a3/README.htm&quot;&gt;BeagleBone info page&lt;/a&gt;.&lt;/div&gt;
&lt;h2&gt;Comments&lt;/h2&gt;
&lt;div class='comments'&gt;
&lt;/div&gt;
</content>
 </entry>
 
 <entry>
   <title>Dithering, NVIDIA Quadro 1000M, and HP ZR2440w</title>
   <link href="http://www.bradfordembedded.com/2011/11/dithering-nvidia-quadro-1000m-and-hp-zr2440w"/>
   <updated>2011-11-30T00:00:00-08:00</updated>
   <id>hhttp://www.bradfordembedded.com/2011/11/dithering-nvidia-quadro-1000m-and-hp-zr2440w</id>
   <content type="html">&lt;div class='post'&gt;
My new laptop is an HP Elitebook Workstation 8560w.  It's sweet and &lt;a href=&quot;http://bradfordembedded.blogspot.com/2011/11/debian-6-amd64-on-hp-elitebook.html&quot;&gt;well supported by Debian 6&lt;/a&gt;.  I also have a HP ZR2440w monitor, also sweet.&lt;br /&gt;&lt;br /&gt;For some reason, with the NVIDIA proprietary drivers, version 290.10 with a 2.6.38 backports kernel on Debian Squeeze, when ever I have the monitor connected via DisplayPort, the NVIDIA driver turns on dithering for the external display.  This is not what I want.&lt;br /&gt;&lt;br /&gt;The HP ZR2440w is an 8 bit monitor, it doesn't need dithering, and with dithering enabled some colors flicker which is very annoying.  The built in LCD on the Elitebook is only 6 bits and so dithering can help make it look like there's a wider color gamut.&lt;br /&gt;&lt;br /&gt;To disable dithering on my ZR2440w but keep it enabled on the built-in LCD, my &quot;Screen&quot; section of my /etc/X11/xorg.conf looks like this (DFP-0 is the internal LCD, DFP-6 is the ZR2440w, and I have them mirrored so I only use the ZR2440w when it's connected):&lt;br /&gt;&lt;br /&gt;&lt;script src=&quot;https://gist.github.com/1409045.js?file=xorg.conf&quot;&gt;&lt;/script&gt;&lt;br /&gt;&lt;br /&gt;With this config, now my ZR2440w is always non-dithered while the internal LCD always is dithered.&lt;/div&gt;
&lt;h2&gt;Comments&lt;/h2&gt;
&lt;div class='comments'&gt;
&lt;/div&gt;
</content>
 </entry>
 
 <entry>
   <title>Google's New Look - It Sucks</title>
   <link href="http://www.bradfordembedded.com/2011/11/google-s-new-look-it-sucks"/>
   <updated>2011-11-26T00:00:00-08:00</updated>
   <id>hhttp://www.bradfordembedded.com/2011/11/google-s-new-look-it-sucks</id>
   <content type="html">&lt;div class='post'&gt;
I'm not a fan of Google's new look for GMail or Blogger.  I use GMail on a daily basis, many times per day.  I use Blogger enough, almost daily, to at least check if any new comments came up on this blog or to write up some draft ideas rumbling around in my head.&lt;br /&gt;&lt;br /&gt;Both GMail and Blogger complain now when I log in using Firefox / Iceweasel 3.5, which is what ships with Debian Squeeze.  They tell me my browser is out of date and that my experience won't work well.  This is for a browser that's not that old and is still supported with security updates from Debian.  GMail also reverts to the old school plain HTML version which isn't pretty and for some reason keyboard shortcuts and priority inbox are disabled (very annoyed at that).&lt;br /&gt;&lt;br /&gt;I'm taking my email to IMAP, goodbye GMail web interface, and I've rolled back Blogger's new look to the older version.  If I'm on someone else's computer or using my wife's iPhone, I'll deal with GMail's web access.  The worst part of this is before the new GMail and Blogger interfaces went live, neither complained about using Firefox / Iceweasel 3.5 and everything worked as I liked.&lt;br /&gt;&lt;br /&gt;I'm seriously considering taking my email business elsewhere, possibly to &lt;a href=&quot;http://www.fastmail.fm/&quot;&gt;FastMail&lt;/a&gt; where I can avoid ads and get my own domain for a very reasonable price.  For blogging, in the past I had tried Tumblr but wasn't impressed.  I'm going to take a serious look at &lt;a href=&quot;https://posterous.com/&quot;&gt;Posterous&lt;/a&gt;.  I do all my blog editing in the HTML mode on Blogger anyway, losing some editing features isn't a concern.&lt;br /&gt;&lt;br /&gt;I'd love to say goodbye to Google.  It's looking like it will be easier every day.  I don't think that's a good thing.&lt;br /&gt;&lt;br /&gt;PS: Google AdWords, not worth it.  So far, with thousands of ad impressions on my blog, I've make a nice $2.50 over 6 months.  Not even enough that Google will pay me (gotta hit $10 for that).  Don't blog for the money, blog for the reputation, skills, to help others, and because you want to improve your writing.  Future post on that ;)&lt;/div&gt;
&lt;h2&gt;Comments&lt;/h2&gt;
&lt;div class='comments'&gt;
&lt;div class='comment'&gt;
&lt;div class='author'&gt;Jizzy Gillespie&lt;/div&gt;
&lt;div class='content'&gt;
And don&amp;#39;t forget Google&amp;#39;s &amp;quot;Buzz&amp;quot; in gmail, which went over like a fart in church and was quietly removed after virtually no one either used it or saw any reason to use it. Every time Google tries to be cool they end up looking more like Microsoft than Apple.&lt;/div&gt;
&lt;/div&gt;
&lt;div class='comment'&gt;
&lt;div class='author'&gt;Andrew&lt;/div&gt;
&lt;div class='content'&gt;
Michael, thanks for your (kind?) words.  Sadly, I&amp;#39;ve not had time, due to the holidays, to really investigate moving off Blogger or GMail any further.  But it&amp;#39;s definitely on my to-do list.&lt;/div&gt;
&lt;/div&gt;
&lt;div class='comment'&gt;
&lt;div class='author'&gt;Michael Casher&lt;/div&gt;
&lt;div class='content'&gt;
Google does suck. Everything Google does sucks. They either have no clue or else they don&amp;#39;t care what their users think. That&amp;#39;s why their user forums suck, too. You&amp;#39;ll get no help there anymore.&lt;br /&gt;&lt;br /&gt;I used to display Google AdSense ads on my blogs until they sucked so bad I had to pull them all. The Ads for Content are almost uncontrollable and yet Google thinks we have control over them. Google AdSense ads are distasteful and even hideous. Google also &amp;quot;updated&amp;quot; its interface for AdSense users, too, making the process of controlling your ads even harder than before.&lt;br /&gt;&lt;br /&gt;I&amp;#39;ve been blogging at Blogger since 2005 and I write ten blogs there but I&amp;#39;m just about ready to give it up. When Google took over Blogger it went steadily downhill.&lt;br /&gt;&lt;br /&gt;Gmail sucks big time,too. I stayed with the old interface, knowing darn well that, if it&amp;#39;s new at Google, it will absolutely suck. Just like Google Profiles. As soon as you get used to how it works, Google changes it and makes it worse. &lt;br /&gt;&lt;br /&gt;By the way, I have to use Firefox to edit my Blogger posts in &amp;quot;Compose&amp;quot;. The new interface at Blogger is so complicated and so cheesy looking, I can&amp;#39;t get it to work for me. It makes you rethink the WordPress experience, which I used to think was a nightmare for bloggers.&lt;br /&gt;&lt;br /&gt;Google now runs YouTube and YouTube now sucks big time. Especially YouTube&amp;#39;s new, cheesy, generic look. Way to go, Google. You&amp;#39;re rapidly ruining the Internet, website by website.&lt;br /&gt;&lt;br /&gt;Picasa still works for me, despite the fact that Google now runs it. But, given Google&amp;#39;s track record, it&amp;#39;s only a matter of time before Picasa will suck as bad as Blogger, AdSense, Google Profiles and Gmail. &lt;br /&gt;&lt;br /&gt;Sorry you&amp;#39;re having a rough go of it with Blogger. It shouldn&amp;#39;t be that way. Thanks for posting.&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
</content>
 </entry>
 
 <entry>
   <title>Google AdWords - Gone</title>
   <link href="http://www.bradfordembedded.com/2011/11/google-adwords-gone"/>
   <updated>2011-11-26T00:00:00-08:00</updated>
   <id>hhttp://www.bradfordembedded.com/2011/11/google-adwords-gone</id>
   <content type="html">&lt;div class='post'&gt;
I've removed Google AdWords from my blog and RSS feed.  So not worth it to have ads.  I've not yet made enough in ad impressions to get paid by Google and I've had ads up for almost 6 months.&lt;br /&gt;&lt;br /&gt;For those of you using AdBlock, you shouldn't notice any difference.  And yes, there were quite a few visitors blocking ads.  For those of you not using AdBlock, the blog should load a little faster and there won't be any more ads.&lt;br /&gt;&lt;br /&gt;Enjoy!&lt;/div&gt;
&lt;h2&gt;Comments&lt;/h2&gt;
&lt;div class='comments'&gt;
&lt;/div&gt;
</content>
 </entry>
 
 <entry>
   <title>Debian 6 amd64 on HP Elitebook Workstation 8560w</title>
   <link href="http://www.bradfordembedded.com/2011/11/debian-6-amd64-on-hp-elitebook-workstation-8560w"/>
   <updated>2011-11-23T00:00:00-08:00</updated>
   <id>hhttp://www.bradfordembedded.com/2011/11/debian-6-amd64-on-hp-elitebook-workstation-8560w</id>
   <content type="html">&lt;div class='post'&gt;
I got my new laptop this week, it's a spiffy HP Elitebook Workstation 8560w.  Dual core i7 at 2.7 GHz, 8 GB ram, SSD, NVIDIA Quadro 1000M, all good stuff.&lt;br /&gt;&lt;br /&gt;I've installed Debian Squeeze and found that I needed to do a few tweaks beyond what I expected in order to get the graphics and wifi working.  First, get the wifi working, then deal with graphics.&lt;br /&gt;&lt;br /&gt;You'll need to enable squeeze-backports.  Follow &lt;a href=&quot;http://http://backports-master.debian.org/Instructions/&quot;&gt;the directions&lt;/a&gt;.  Install the linux-kernel-2.6.38, linux-headers-2.6.38, and firmware-iwlwifi packages.  Then modify your /etc/default/grub file, the 7th line should look like this:&lt;br /&gt;&lt;br /&gt;GRUB_CMDLINE_LINUX_DEFAULT=&quot;nouveau.modeset=0 quiet&quot;&lt;br /&gt;&lt;br /&gt;Run update-grub2 to make the change permanent.&lt;br /&gt;&lt;br /&gt;Now you can reboot and you should be running the 2.6.38 kernel.  If you don't pass the nouveau.modeset line to your kernel when booting, it will hang.  Mine likes to hang just after &quot;hp_accel: driver loaded&quot; which isn't very helpful.&lt;br /&gt;&lt;br /&gt;Now, go grab the NVIDIA drivers from nvidia.com.  Make sure you have gcc-4.4 installed.  Go to a terminal with cmd-alt-F1 and log in as root.  &quot;killall gdm3&quot; to shutdown X.  Now run the NVIDIA installer.&lt;br /&gt;&lt;br /&gt;Whamo!  After another reboot you should be up and running with both wifi and graphics!&lt;br /&gt;Sadly, with the stock kernel, the webcam worked awesomely.  With 2.6.38, it's broken.  If I determine the root cause I'll update. &lt;br /&gt;&lt;br /&gt;UPDATE 20111123 5:30pm: To get webcam working again, don't use Camorama.  Use something like cheese.  Camorama wants the camera to be located at /dev/video0, it's not there any more.  Things like Skype and cheese find the webcam with no issue.  I'm happy! :) &lt;br /&gt;&lt;br /&gt;UPDATE 20111126 10:00am: In order to get suspend working again with kernels newer than 2.6.35, you may need to blacklist a few modules, namely &quot;firewire_ohci&quot; and &quot;firewire_core&quot;.  Put the below in a file named /etc/modprobe.d/8560w-blacklist.conf, run  and give the laptop a reboot.  I've included here the pcspkr module as well to make that stupid beep go away ;)  Now I have (I believe) all the hardware working on my 8560w except Firewire (I don't have any Firewire devices so I'm not that upset).  Thanks go out to an Ubuntu &lt;a href=&quot;https://bugs.launchpad.net/ubuntu/+source/linux/+bug/748994&quot;&gt;bug report&lt;/a&gt;, scroll down to &lt;a href=&quot;https://bugs.launchpad.net/ubuntu/+source/linux/+bug/748994/comments/50&quot;&gt;#50&lt;/a&gt;. &lt;br /&gt;&lt;br /&gt;&lt;script src=&quot;https://gist.github.com/1395828.js?file=8560w-blacklist.conf&quot;&gt;&lt;/script&gt;&lt;br /&gt;&lt;br /&gt;UPDATE 20111129 3:00pm: If you'd like ExpressCard hot plugging to work, you need to add &quot;pciehp&quot; to your /etc/modules and &quot;options pciehp pciehp_force=1&quot; to a new file called /etc/modprobe.d/pciehp.  Both those are to be added without the quotes.  Hat tip to Mark Lord on the LKML, &lt;a href=&quot;https://lkml.org/lkml/2009/8/27/158&quot;&gt;part 1&lt;/a&gt; and &lt;a href=&quot;https://lkml.org/lkml/2009/8/27/165&quot;&gt;part 2&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;UPDATE 20111208 7:00am: I'm going to recommend against encrypted LVM on an SSD with Debian Squeeze.  The SSD in my 8560w says it supports TRIM but I'm having a hard time verifying that it's working, either automatically or manually.  I have &quot;discard&quot; in my fstab and the 2.6.38 kernel supports it.&lt;br /&gt;I'm thinking the way to go about encrypting important info is to just encrypt the directories I care about rather than the whole file system.  I might do a backup, reformat, and restore, then enable just directory level encryption where needed (for example, I don't really care if my /usr directory is encrypted since it just has Debian sourced programs installed).&lt;/div&gt;
&lt;h2&gt;Comments&lt;/h2&gt;
&lt;div class='comments'&gt;
&lt;div class='comment'&gt;
&lt;div class='author'&gt;Andrew&lt;/div&gt;
&lt;div class='content'&gt;
Neal,&lt;br /&gt;Sorry, but I don&amp;#39;t have much experience running Ubuntu on my 8560w, I&amp;#39;ve stuck with Debian and run Ubuntu and Windows in VMs.  I know there have been other complaints of similar issues (including one Ubuntu bug report where it looks like you&amp;#39;ve already mentioned this).  I wouldn&amp;#39;t think SATA issues would be related to the graphics driver, but those messages might just be the last things written to the screen and not be indicative of the actual issue.&lt;br /&gt;Can you try installing Ubuntu Server and booting it?  Server shouldn&amp;#39;t install a graphical desktop by default.  At least if you can get that far, it&amp;#39;s not a core issue but can be narrowed down to the graphics or other sub-system.&lt;br /&gt;Good luck!&lt;/div&gt;
&lt;/div&gt;
&lt;div class='comment'&gt;
&lt;div class='author'&gt;NealTNJ&lt;/div&gt;
&lt;div class='content'&gt;
Hi, i recently brought a HP Elitebook 8560w and its awesome. However, every time i try to boot linux ubuntu  and backtrack 5 off a USB external hard drive . I receive this error &lt;br /&gt;ata 4: sata link down sstatus 0 scontrol 300&lt;br /&gt;ata 5: sata link down sstatus 0 scontrol 300&lt;br /&gt;ata 6: sata link down sstatus 0 scontrol 300. This error still persists even after updating grub.cfg with the commands nouveau.modeset=0 quiet. After reading your blog, I feel that your the person to ask.&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
</content>
 </entry>
 
 <entry>
   <title>Embedded Linux Long Term - Part 3</title>
   <link href="http://www.bradfordembedded.com/2011/11/embedded-linux-long-term-part-3"/>
   <updated>2011-11-21T00:00:00-08:00</updated>
   <id>hhttp://www.bradfordembedded.com/2011/11/embedded-linux-long-term-part-3</id>
   <content type="html">&lt;div class='post'&gt;
I wrote about long term support for embedded Linux &lt;a href=&quot;http://bradfordembedded.blogspot.com/2011/10/embedded-linux-and-long-term-support_21.html&quot;&gt;before&lt;/a&gt;, &lt;a href=&quot;http://bradfordembedded.blogspot.com/2011/10/embedded-linux-and-long-term-support.html&quot;&gt;a few times&lt;/a&gt;, but I'm back for more!&lt;br /&gt;&lt;br /&gt;Recently in LWN, there have was another &lt;a href=&quot;http://lwn.net/Articles/464834/&quot;&gt;article&lt;/a&gt; about various embedded groups, like Linaro and LTSI, maintaining an official policy on long term support kernels.  That's cool and all, if you're developing consumer electronics that will get replaced in 2 years (like cell phones in the US), but it's not that helpful for embedded industrial systems that will have lifetimes measured in decades.  Especially industrial systems where the customer is scared to death of software upgrades because they've been burned before by past providers that assured them, &quot;Nothing will go wrong.&quot;  (It did)&lt;br /&gt;&lt;br /&gt;Upgrading a kernel at one of these customers' sites will not happen.  Security updates for the same kernel version, maybe.  Beyond that, NO WAY!&lt;br /&gt;&lt;br /&gt;So how does the embedded developer deal with this?&lt;br /&gt;&lt;br /&gt;The best way I've thought up so far is to ride coat-tails for as long as possible and do extensive testing when absolutely forced to move to a new kernel version.  That means grabbing sources from something like Red Hat or Ubuntu LTS at the beginning of a long term support cycle and riding that as far as it will go (usually 5 years).  For example, Ubuntu 12.04 LTS is most likely going to have Linux 3.2 as the kernel for both the desktop and server versions.  If your embedded system is supported by 3.2 (most established, non-cutting edge designs will be), grab that and let the Canonical team deal with the security updates for you.  Be a good community supporter and send anything you can up-stream but otherwise just ride their coat-tail.&lt;br /&gt;&lt;br /&gt;Another thing to keep in mind is your distribution.  Although most embedded developers already keep installed packages to a minimum, you'll want to take this as far as you can.  Once who ever's coat-tails you're riding for all your software, other than the kernel, goes end-of-life (i.e.: no more security updates for free), you've got two choices: 1) Ask your customer to upgrade (probably not going to happen), or 2) Backport security fixes yourself.  Neither is much fun.  Minimize this!&lt;br /&gt;&lt;br /&gt;Don't pick something targeted towards mobile phones.  Historically, everyone making mobile phones (ironically, except Apple) sucks at providing software updates &lt;a href=&quot;http://theunderstatement.com/post/11982112928/android-orphans-visualizing-a-sad-history-of-support&quot;&gt;beyond a year&lt;/a&gt; or two.  The embedded Linux teams working to provide systems to compete with Android aren't much better.  You're going to get stuck taking a server distribution and making it work on your embedded system (becoming less of an issue but still not as straight forward as something like &lt;a href=&quot;http://www.openembedded.org/wiki/Main_Page&quot;&gt;OpenEmbedded&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;Or you can &lt;a href=&quot;http://windriver.com/products/linux/&quot;&gt;pay&lt;/a&gt;...  But that's no fun and you'll still deal with these issues down the road in about the same time frames.&lt;br /&gt;&lt;br /&gt;It'd be cool to see a long term support version of Emdebian.  Emdebian already has way less packages than real Debian so it's less daunting to apply security fixes.  Debian has fairly long release cycles and is community driven.  Lenny's already &lt;a href=&quot;http://wiki.debian.org/DebianLenny&quot;&gt;been around&lt;/a&gt; for a while and will be supported at least 1 year beyond Wheezy's release.  Having a community support project to keep Squeeze and beyond supported for 5+ years would be cool...&lt;/div&gt;
&lt;h2&gt;Comments&lt;/h2&gt;
&lt;div class='comments'&gt;
&lt;/div&gt;
</content>
 </entry>
 
 <entry>
   <title>Build the PandaBoard or BeagleBoard-xM x-loader on Debian Squeeze</title>
   <link href="http://www.bradfordembedded.com/2011/11/build-the-pandaboard-or-beagleboard-xm-x-loader-on-debian-squeeze"/>
   <updated>2011-11-16T00:00:00-08:00</updated>
   <id>hhttp://www.bradfordembedded.com/2011/11/build-the-pandaboard-or-beagleboard-xm-x-loader-on-debian-squeeze</id>
   <content type="html">&lt;div class='post'&gt;
EDIT 20111116 15:37: This post and the git repo have been updated to include info on the BeagleBoard-xM.&lt;br /&gt;&lt;br /&gt;I wrote up some quick instructions on building the PandaBoard and BeagleBoard-xM x-loader on a Debian Squeeze host this morning.  You can find them below, but also in my GitHub &lt;a href=&quot;https://github.com/bradfa/x-loader&quot;&gt;x-loader repo&lt;/a&gt;.  My x-loader repo is only slightly modified from &lt;a href=&quot;http://gitorious.org/x-loader&quot;&gt;mainline&lt;/a&gt;.  Enjoy!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;To build x-loader on Debian:&lt;br /&gt;&lt;br /&gt;Install the emdebian-archive-keyring:&lt;br /&gt;$ sudo aptitude install emdebian-archive-keyring&lt;br /&gt;&lt;br /&gt;Add to your apt sources:&lt;br /&gt;deb http://www.emdebian.org/debian/ squeeze main&lt;br /&gt;&lt;br /&gt;Perform an aptitude update:&lt;br /&gt;$ sudo aptitude update&lt;br /&gt;&lt;br /&gt;Install the Emdebian cross compilers:&lt;br /&gt;$ sudo aptitude install gcc-4.4-arm-linux-gnueabi g++-4.4-arm-linux-gnueabi&lt;br /&gt;&lt;br /&gt;Install git and partitioning tools:&lt;br /&gt;$ sudo aptitude install git parted&lt;br /&gt;&lt;br /&gt;Clone the repo from github, this will create a directory called &quot;x-loader&quot;:&lt;br /&gt;$ git clone git://github.com/bradfa/x-loader.git&lt;br /&gt;&lt;br /&gt;Enter the directory, make the configuration you desire, then compile the MLO&lt;br /&gt;file (actual x-loader).  For the PandaBoard use &quot;omap4430panda_config&quot; and&lt;br /&gt;for BeagleBoard-xM use &quot;omap3530beagle_config&quot; in the second step&lt;br /&gt;(example uses Panda):&lt;br /&gt;$ cd x-loader&lt;br /&gt;$ make CROSS_COMPILE=arm-linux-gnueabi- distclean&lt;br /&gt;$ make CROSS_COMPILE=arm-linux-gnueabi- omap4430panda_config&lt;br /&gt;$ make CROSS_COMPILE=arm-linux-gnueabi-&lt;br /&gt;&lt;br /&gt;Now we'll partition and format an SDcard.&lt;br /&gt;&lt;br /&gt;***************************************&lt;br /&gt;* THIS PROCESS WILL DESTROY ALL DATA! *&lt;br /&gt;***************************************&lt;br /&gt;&lt;br /&gt;Make sure your SDcard is not mounted.  Then run the partitioning script to&lt;br /&gt;create a 64 MB FAT partition followed by an ext3 partition taking up the rest&lt;br /&gt;of the SDcard space (SDcards are slow, this may take some time).  The arugment&lt;br /&gt;passed to the script is the device node of the SDcard itself (/dev/sdb in our &lt;br /&gt;example), not a partition!:&lt;br /&gt;$ sudo ./format_sd.sh /dev/sdb&lt;br /&gt;&lt;br /&gt;Some systems may automatically mount the newly created file systems. If not,&lt;br /&gt;mount the boot file system:&lt;br /&gt;$ sudo mkdir -v /mnt/boot&lt;br /&gt;$ sudo mount /dev/sdb1 /mnt/boot&lt;br /&gt;&lt;br /&gt;The _VERY_FIRST_ file written to the FAT partition should be the MLO.&lt;br /&gt;$ sudo cp -v MLO /mnt/boot/&lt;br /&gt;&lt;br /&gt;Unmount the FAT partition and boot the board to verify operation!&lt;/div&gt;
&lt;h2&gt;Comments&lt;/h2&gt;
&lt;div class='comments'&gt;
&lt;div class='comment'&gt;
&lt;div class='author'&gt;Andrew&lt;/div&gt;
&lt;div class='content'&gt;
Israr,&lt;br /&gt;&lt;br /&gt;X-loader is the MLO file.  The boot process is that internal to the ARM chip there is some ROM that executes as first stage boot laoder, it goes and grabs the MLO (second stage), runs it, and the MLO grabs and runs u-boot (third stage).  U-boot then grabs and runs the kernel and points the kernel to the file system.&lt;br /&gt;&lt;br /&gt;In more recent versions of u-boot (at least in TI&amp;#39;s dev kits and the BeagleBone), the SPL is now built directly out of u-boot sources, x-loader is being depreciated.&lt;br /&gt;&lt;br /&gt;This sounds confusing, sorry.&lt;/div&gt;
&lt;/div&gt;
&lt;div class='comment'&gt;
&lt;div class='author'&gt;israr&lt;/div&gt;
&lt;div class='content'&gt;
hi andrew!!&lt;br /&gt;    is x-loader is replacement of Uboot in BeagleBoard or &lt;br /&gt;it sits above Uboot ? plz explain, thanks&lt;br /&gt;&lt;br /&gt;Israr&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
</content>
 </entry>
 
 <entry>
   <title>The BeagleBone!</title>
   <link href="http://www.bradfordembedded.com/2011/11/the-beaglebone"/>
   <updated>2011-11-12T00:00:00-08:00</updated>
   <id>hhttp://www.bradfordembedded.com/2011/11/the-beaglebone</id>
   <content type="html">&lt;div class='post'&gt;
Somehow I missed the introduction of the &lt;a href=&quot;http://beagleboard.org/bone&quot;&gt;BeagleBone&lt;/a&gt;!  I don't know how that could be!&lt;br /&gt;&lt;br /&gt;The BeagleBone looks like a really exciting little ARM board.  It's a single core 720 MHz Cortex-A8 with 256 MB of RAM, gigabit Ethernet MAC built into the SoC with 10/100 PHY external, some very nifty USB on-the-go capabilities, and headers for expansion similar to Arduino (but not pin compatible).  All for $89!&lt;br /&gt;&lt;br /&gt;Hopefully the BeagleBone will be available for purchase later this month or, at the latest, early in December.&lt;br /&gt;&lt;br /&gt;TI seems to be targeting a very wide audience with the BeagleBone this time.  The expansion connectors pit it against some higher end applications for hobbyists where an Arduino may not have had enough power but where the expansion provided by Arduino is really handy.  &lt;br /&gt;&lt;br /&gt;The &lt;a href=&quot;http://www.ti.com/product/am3359&quot;&gt;AM335x&lt;/a&gt; ARM SoC, however, throws the BeagleBone right up the alley of quite a few companies who are producing single board computers for various markets.  The AM335x was also announced just over a week ago and TI already has high quality datasheets and reference manuals up online for free.  [Side note, TI, you're awesome about this! Thanks!]  The AM335x also has a reasonable 0.8mm ball &lt;a href=&quot;http://bradfordembedded.blogspot.com/2011/04/tuxedoboard-bgas-and-minimum-ball-pitch.html&quot;&gt;pitch BGA&lt;/a&gt; package and is fairly low in pin count (around 300 pins depending on version).  This makes designing systems with the SoC very easy for those with access to professional level schematic and layout tools (and even doable for those using Eagle, GEDA, or KiCad!).&lt;br /&gt;&lt;br /&gt;I should be receiving at least one BeagleBone in the not-too-distant future.  It's an exciting time!&lt;/div&gt;
&lt;h2&gt;Comments&lt;/h2&gt;
&lt;div class='comments'&gt;
&lt;/div&gt;
</content>
 </entry>
 
 <entry>
   <title>Calendar Interface</title>
   <link href="http://www.bradfordembedded.com/2011/11/calendar-interface"/>
   <updated>2011-11-03T00:00:00-07:00</updated>
   <id>hhttp://www.bradfordembedded.com/2011/11/calendar-interface</id>
   <content type="html">&lt;div class='post'&gt;
Scott Adams recently wrote about &lt;a href=&quot;http://dilbert.com/blog/entry/calendar_interface/&quot;&gt;calendar interfaces&lt;/a&gt;.  Short version: Outlook and Google Calendar suck, they're too complex and require you to change your mental reference too many times when setting up an appointment.  I got about half way though and lost interest in the article.  Even his idea is too complex.&lt;br /&gt;&lt;br /&gt;When I type something, anything, into Google, it corrects my spelling, recommends choices, and interprets my shorthand into useful search results.  It does this across things like maps, email, web, patents, etc.  I can help Google out by giving hints, like going to the maps interface when I'm looking for a location but even if I don't, often Google knows that's what I really want when searching for a business or address and the maps results come up first.&lt;br /&gt;&lt;br /&gt;Why can't I just select the day for an appointment and type in &quot;Doctor's appointment at 3pm.&quot;  The calendar will parse that, pull out the time, and make the appointment in my calendar.  If I've got my doctor's office in my address book, the calendar will even link that data along with doing a map lookup on my doctor's office phone number to find the location.  The calendar can even ask me, after I enter this, if it got the choices right for location and other info with a listing like a Google search.  Then, most likely, I'll just pick the first result (since it will be correct) and that confirms the calendar event and sticks it in my calendar.  Done!&lt;br /&gt;&lt;br /&gt;No, I can't write code to do this (not yet at least), but the infrastructure already in existence in Google's searching products, when combined, can almost do exactly this!&lt;br /&gt;&lt;br /&gt;So, Google, why is your calendar interface so complex?&lt;/div&gt;
&lt;h2&gt;Comments&lt;/h2&gt;
&lt;div class='comments'&gt;
&lt;/div&gt;
</content>
 </entry>
 
 <entry>
   <title>Bootstrapping Fedora for ARMv7 Hard Float</title>
   <link href="http://www.bradfordembedded.com/2011/11/bootstrapping-fedora-for-armv7-hard-float"/>
   <updated>2011-11-03T00:00:00-07:00</updated>
   <id>hhttp://www.bradfordembedded.com/2011/11/bootstrapping-fedora-for-armv7-hard-float</id>
   <content type="html">&lt;div class='post'&gt;
There's a great set of articles (&lt;a href=&quot;http://lwn.net/Articles/463506/&quot;&gt;part 1&lt;/a&gt;, &lt;a href=&quot;http://lwn.net/Articles/463507/&quot;&gt;part 2&lt;/a&gt;) from LWN discussing some of the processes and issues that were used / encountered when attempting to bootstrap a build environment for ARMv7-a hard float.  Turns out, Fedora didn't really have a good set of infrastructure to do this and a lot of creativity was involved (including a 4.6GB git repo).&lt;br /&gt;&lt;br /&gt;After a bit of reading, even Debian &lt;a href=&quot;http://penta.debconf.org/dc11_schedule/events/745.en.html&quot;&gt;doesn't have a great set of infrastructure&lt;/a&gt; for bootstrapping onto a new architecture or ABI, although the Emdebian team is working on it.&lt;br /&gt;&lt;br /&gt;This is awesome to see from both the Fedora and Debian teams.  As much as Cross Linux From Scratch is a neat exercise, having the ability to bootstrap a &quot;real&quot; Linux distribution is very handy.  Being able to base an embedded system on a well supported community distribution that can be customized through a well documented bootstrap process is an awesome thing.  I'm looking forward to learning more about these methods.&lt;/div&gt;
&lt;h2&gt;Comments&lt;/h2&gt;
&lt;div class='comments'&gt;
&lt;/div&gt;
</content>
 </entry>
 
 <entry>
   <title>New Beginnings</title>
   <link href="http://www.bradfordembedded.com/2011/10/new-beginnings"/>
   <updated>2011-10-27T00:00:00-07:00</updated>
   <id>hhttp://www.bradfordembedded.com/2011/10/new-beginnings</id>
   <content type="html">&lt;div class='post'&gt;
I attended a retirement lunch today for a former coworker.  Previously in my life I've attended a reasonable number of similar events, either people retiring or people leaving for other opportunities.  Sometimes the people leaving get emotional and I had a hard time understanding why.  I always thought, &quot;It's just a job.&quot;  Today, it's hitting me as to why.&lt;br /&gt;&lt;br /&gt;Friday November 4, 2011 will be my last day at my current job.  The following Monday I'll be starting at a much smaller company with huge aspirations to do amazing things for their customers.  I'll be building embedded Linux systems and developing the software that runs on them.  It's going to be an awesome challenge.  I'm very excited.&lt;br /&gt;&lt;br /&gt;I spent most of today organizing my notes and cleaning out my office.  Over the next week, I'll be transferring my notes, responsibilities, and everything I've worked on to the rest of my group.  Looking at things I've done, it's astounding.  I've gotten a lot accomplished.  I didn't realize how much work I've actually done in the past six and a half years and three different roles within the company.  The amount of time, effort, and personal investment I've put in astounds me.  Others feel the same way when they leave a company, that's what drives the emotions.&lt;br /&gt;&lt;br /&gt;Looking at my resume, sure, I've done a lot.  But when I found a directory full of minutes from meetings I ran 5 years ago and I can remember the details surrounding decisions that were made, problems that were solved, and bureaucracy that was dealt with, it's way more impressive.  I've had quite a few other experiences like this, just today.&lt;br /&gt;&lt;br /&gt;People spend a huge portion of their non-sleeping life at work.  The relationships that are developed, the work that's accomplished, the situations that are dealt with, and the impact on the world that is made is non-trivial.  It's a big deal to stop working somewhere that you've been for a significant amount of time.  Work reflects a good chunk of life, leaving it, even for something better, is a big deal and shouldn't be taken lightly.&lt;/div&gt;
&lt;h2&gt;Comments&lt;/h2&gt;
&lt;div class='comments'&gt;
&lt;/div&gt;
</content>
 </entry>
 
 <entry>
   <title>Management and Leadership - Startup versus Established?</title>
   <link href="http://www.bradfordembedded.com/2011/10/management-and-leadership-startup-versus-established"/>
   <updated>2011-10-24T00:00:00-07:00</updated>
   <id>hhttp://www.bradfordembedded.com/2011/10/management-and-leadership-startup-versus-established</id>
   <content type="html">&lt;div class='post'&gt;
I like &lt;a href=&quot;http://sethgodin.typepad.com/seths_blog/&quot;&gt;Seth&lt;/a&gt;, his blog is in my Google Reader.  His &lt;a href=&quot;http://www.amazon.com/gp/entity/Seth-Godin/B000AP9EH0?ie=UTF8&amp;ref_=sr_ntt_srch_lnk_1&amp;qid=1319458162&amp;sr=8-1&amp;ie=UTF8&amp;tag=bradford07-20&amp;linkCode=ur2&amp;camp=1789&amp;creative=390957&quot;&gt;books are good&lt;/a&gt;&lt;img src=&quot;https://www.assoc-amazon.com/e/ir?t=bradford07-20&amp;l=ur2&amp;o=1&quot; width=&quot;1&quot; height=&quot;1&quot; border=&quot;0&quot; alt=&quot;&quot; style=&quot;border:none !important; margin:0px !important;&quot; /&gt;, too.  He recently wrote about &lt;a href=&quot;http://sethgodin.typepad.com/seths_blog/2011/10/the-difference-between-management-and-leadership.html&quot;&gt;leadership and management&lt;/a&gt;.  It inspired me to come up with a question:&lt;br /&gt;&lt;br /&gt;Does the relationship between leadership/management and startup/established business exists in a meaningful and measurable way?&lt;br /&gt;&lt;br /&gt;I think it exists, and I'm sure it's meaningful, but I'm not sure it's measurable.  How can you measure leadership or management in the way that Seth describes them?  There's no easy metrics that spring to my mind.  It's mostly one of those, &quot;You'll know it when you see it&quot; kind of things.  That's too bad.&lt;br /&gt;&lt;br /&gt;There's probably a whole industry out there claiming that they can offer insight into how to perform this measurement.  These consultants probably make good money.  Sadly, it's most likely all for naught.  Unless you can see it plain as day, the person you're looking at isn't a leader.&lt;/div&gt;
&lt;h2&gt;Comments&lt;/h2&gt;
&lt;div class='comments'&gt;
&lt;/div&gt;
</content>
 </entry>
 
 <entry>
   <title>Embedded Linux and Long Term Support / Updates - Part 2</title>
   <link href="http://www.bradfordembedded.com/2011/10/embedded-linux-and-long-term-support-updates-part-2"/>
   <updated>2011-10-21T00:00:00-07:00</updated>
   <id>hhttp://www.bradfordembedded.com/2011/10/embedded-linux-and-long-term-support-updates-part-2</id>
   <content type="html">&lt;div class='post'&gt;
In my &lt;a href=&quot;http://bradfordembedded.blogspot.com/2011/10/embedded-linux-and-long-term-support.html&quot;&gt;previous post&lt;/a&gt; about embedded Linux long term support, I neglected Ubuntu.  I had not realized how much effort Canonical are putting into their ARM platform products.  After doing a little reading today, it appears that within the next year, Ubuntu's long term support server distribution should be a very high quality product on ARM platforms.  That's awesome!&lt;br /&gt;&lt;br /&gt;Ubuntu LTS server releases are already supported for 5 years.  Starting with version 12.04, the desktop LTS release will also be &lt;a href=&quot;http://www.canonical.com/content/ubuntu-1204-feature-extended-support-period-desktop-users&quot;&gt;supported for 5 years&lt;/a&gt;.  Combined with&lt;a href=&quot;https://wiki.ubuntu.com/ARM/OMAP&quot;&gt; prebuilt images&lt;/a&gt; for various ARM development kits, that's an awesome starting point for higher powered, ARM based, embedded systems.&lt;br /&gt;&lt;br /&gt;Ubuntu seems primed to completely take over the Linux distro landscape.  I think that's awesome if you're looking to develop any new Linux based device on a platform they support.  It'll make your life that much easier.  Thanks, Canonical!&lt;/div&gt;
&lt;h2&gt;Comments&lt;/h2&gt;
&lt;div class='comments'&gt;
&lt;/div&gt;
</content>
 </entry>
 
 <entry>
   <title>An Unknown Error Has Occurred</title>
   <link href="http://www.bradfordembedded.com/2011/10/an-unknown-error-has-occurred"/>
   <updated>2011-10-17T00:00:00-07:00</updated>
   <id>hhttp://www.bradfordembedded.com/2011/10/an-unknown-error-has-occurred</id>
   <content type="html">&lt;div class='post'&gt;
In software, don't ever tell a user that an &quot;&lt;b&gt;unknown error&lt;/b&gt;&quot; has occurred.  It does nothing but hurt the relationship between user and software.&lt;br /&gt;&lt;br /&gt;This weekend I upgraded our iPad and my wife's iPhone4 to iOS5.  The iPad went super smooth other than taking forever to download the update.  The iPhone update did not go nearly as smooth.  After downloading the update, backing up the iPhone, and erasing the flash, iTunes errored out with an &quot;unknown (14) error.&quot;  There was a nice link provided to an Apple knowledge base article telling me to try another USB port, reboot, or update iTunes (again? I just did!).&lt;br /&gt;&lt;br /&gt;Lacking from all of this was any indication of what the heck caused the error!&lt;br /&gt;&lt;br /&gt;Clearly, iTunes knows what caused the error, it raised an error message because of some event happening in a way that wasn't expected.  But I have no idea what that event was so that I can try to prevent it from happening again or so I can write a bug report.  It also left the iPhone in an uninitialized state, requiring a restore (which in itself was over an hour in duration).&lt;br /&gt;&lt;br /&gt;Don't ever tell me that an &quot;unknown&quot; error has occurred.  Either just tell me that &quot;an error has occurred preventing&quot; a task from completing or tell me what the heck the error was!  The &quot;UNKNOWN&quot; part of the error is the most frustrating part, then Apple kicked me when I was down by providing a knowledge base article with stupid answers that didn't provide any insight into what the problem actually was.  Yeah, I've used Windows before, rebooting is the knee jerk reflex, I don't need to be told that.&lt;br /&gt;&lt;br /&gt;And to top it all off, iOS5 is noticeably slower than iOS4 was on both the iPad and iPhone4.  The updated features are almost unnoticeable but the slowness is easily seen.  Overall, I'm unimpressed.&lt;/div&gt;
&lt;h2&gt;Comments&lt;/h2&gt;
&lt;div class='comments'&gt;
&lt;/div&gt;
</content>
 </entry>
 
 <entry>
   <title>Embedded Linux and Long Term Support / Updates</title>
   <link href="http://www.bradfordembedded.com/2011/10/embedded-linux-and-long-term-support-updates"/>
   <updated>2011-10-14T00:00:00-07:00</updated>
   <id>hhttp://www.bradfordembedded.com/2011/10/embedded-linux-and-long-term-support-updates</id>
   <content type="html">&lt;div class='post'&gt;
If you are building a non-consumer commercial system that uses embedded Linux, you will probably be interested in long term support.  Now, what I mean by long term support is: Two (or five) years from now, will someone be providing me with security updates to the same version of software that I use today?&lt;br /&gt;&lt;br /&gt;For example, if you run RedHat Enterprise on a desktop or server, you can be sure that 5 years from when a new release comes out, RedHat will still be providing you with security updates for the exact same versions of all the software you run.  You won't be forced to upgrade to some new version of software provided by RHEL in order to continue getting security updates.  Your kernel will stay the same version, your Apache will stay the same version, your Bash will stay the same version, and you'll only get little tiny changes that 99% of the time are due to security issues being fixed.  The other 1% of the time is things that are actually seriously broken and need to be fixed.  But overall, NO NEW VERSIONS OR FEATURES!&lt;br /&gt;&lt;br /&gt;For desktop and server distributions, there's a lot of choice between paid for setups like this and community supported setups.  You've got RedHat and Suse as the major players in the paid for sector, and Debian stable, Ubuntu LTS, and Scientific / CentOS in the community sector.&lt;br /&gt;&lt;br /&gt;In the embedded landscape, there's companies like MontaVista and Wind River that supply longish term supported embedded Linuxes, much the same way RedHat does.  But the on the community side, other than Emdebian, there's not a whole lot (that I've heard of) that provide a long term support system for embedded.&lt;br /&gt;&lt;br /&gt;Many of the embedded distributions are focused on cutting edge stuff.  Cutting edge is cool, it's hip, and it's where all the neat stuff happens.  But if you're deploying a real product that's going to have to function for years and years at a customer site, you're not going to want to have to keep sending them software updates having cutting edge versions.  Cutting edge versions means things break.  Stable old stuff being updated only with tiny security fixes means things don't break, at least not usually more than they were before.  If you're looking to make real money selling embedded non-consumer Linux systems, you're going to pick old stable stuff getting security updates, and if you need fancy new stuff, you'll become an expert in just that new fancy stuff, and you'll do your own security updates just for that one thing you need to be newer.&lt;br /&gt;&lt;br /&gt;I understand that having long term support be a community activity is hard.  Especially when there's a low number of developers.  Small projects can't afford to spend developer time supporting old stuff if they want to continue moving forward.  Bigger companies who get paid (like Wind River and MontaVista) can.  And Debian can, but only because they've built up the support systems, platforms, and methods of working over a huge amount of time and with a huge community that's dedicated to just that.  It's very hard to do.&lt;br /&gt;&lt;br /&gt;Linux kernel has long term supported versions, but those only get updates for 2 years, then they assume the distributions will take care of further updates.  This is awesome for short life commercial projects, but some commercial projects need to last longer than that.  For those projects, your choices are really limited if you don't want to employ a huge number of experts to keep things stable and secure.  For those projects, you're going to buy a long term support system from a vendor or need the support of a high quality community.  Because of this, you're either going to pay, or you're going to use Emdebian.&lt;br /&gt;&lt;br /&gt;What else is there for community support?&lt;/div&gt;
&lt;h2&gt;Comments&lt;/h2&gt;
&lt;div class='comments'&gt;
&lt;/div&gt;
</content>
 </entry>
 
 <entry>
   <title>More Raspberry Pi</title>
   <link href="http://www.bradfordembedded.com/2011/10/more-raspberry-pi"/>
   <updated>2011-10-04T00:00:00-07:00</updated>
   <id>hhttp://www.bradfordembedded.com/2011/10/more-raspberry-pi</id>
   <content type="html">&lt;div class='post'&gt;
When I wrote my &lt;a href=&quot;http://bradfordembedded.blogspot.com/2011/09/some-raspberry-pi.html&quot;&gt;blog entry last week&lt;/a&gt; about the &lt;a href=&quot;http://www.raspberrypi.org/&quot;&gt;Raspberry Pi&lt;/a&gt; project, I was being negative.  That was wrong of me.&lt;br /&gt;&lt;br /&gt;I was being negative about Raspberry Pi because they're doing an awesome job of putting out a low cost embedded system and I'm a bit jealous.  The TuxedoBoard won't be nearly as low of cost.  When I first thought up the TuxedoBoard, most ARM based single board computers were in the $100 to $250 range (think &lt;a href=&quot;http://beagleboard.org/&quot;&gt;BeagleBoards&lt;/a&gt; and &lt;a href=&quot;https://www.gumstix.com/&quot;&gt;Gumstix&lt;/a&gt;).  Pricing my less capable but much more open TuxedoBoard at $100 would fit in nicely with that marketplace.  But with the Raspberry Pi being $25 and $35, that's going to ruin my potential customers' expectations on price.  Even though I'm not trying to compete with the Raspberry Pi, just the fact that they're putting out an ARM based system (with very nice stats) for such a low price will hurt my chances of selling TuxedoBoards.&lt;br /&gt;&lt;br /&gt;Raspberry Pi project, I'm sorry.  I hope you succeed.  I'm just jealous.  Heck, I want to buy one of the $35 models.  Good luck!&lt;/div&gt;
&lt;h2&gt;Comments&lt;/h2&gt;
&lt;div class='comments'&gt;
&lt;/div&gt;
</content>
 </entry>
 
 <entry>
   <title>TI AM170x Booting Annoyances - Take 2</title>
   <link href="http://www.bradfordembedded.com/2011/10/ti-am170x-booting-annoyances-take-2"/>
   <updated>2011-10-01T00:00:00-07:00</updated>
   <id>hhttp://www.bradfordembedded.com/2011/10/ti-am170x-booting-annoyances-take-2</id>
   <content type="html">&lt;div class='post'&gt;
I was incorrect in some of the statements I made &lt;a href=&quot;http://bradfordembedded.blogspot.com/2011/09/ti-am170x-booting-annoyances.html&quot;&gt;before&lt;/a&gt; when discussing the TI AM170x booting.  Daniel pointed out a few of my mistakes in the comments (thanks!).  This is a quick follow up.  I have quite a lot more reading and learning to do.&lt;br /&gt;&lt;br /&gt;The AM170x chips require an external memory attached either to EMIFA, I2C, SPI, UART, or the HPI (host port interface).  Since I want to be able to boot without requiring the UART connected, that boot method is most likely ruled out.  The HPI sounds interesting but the impression I get is that usually another processor of some sort is connected there, which the TuxedoBoard won't have.  So it's down to NOR or NAND flash on EMIFA, I2C, or SPI.  Any of those will probably work for me, even though I wanted to avoid having an external memory device.&lt;br /&gt;&lt;br /&gt;It turns out that the internal ROM is hard coded and not changeable.  I was under the incorrect impression that it was an EEPROM and that using Code Composer Studio that one could change it.  This is not the case.  The internal ROM is what gets executed after reset, it sets up some basic configuration registers and checks the boot mode pins.  Based on the boot mode pins, the ROM will configure the processor to access the appropriate external memory interface and load up the AIS (or non AIS boot mode) executable.  This executable holds the device configuration information along with some other setup data such as clock speeds, pin mux settings, and various other configuration registers.&lt;br /&gt;&lt;br /&gt;It seems like one could create an AIS (or non AIS executable) that would contain arbitrary code to be executed as a first stage bootloader but I'm not entirely clear on that yet.  If so, or if it could fetch a first stage bootloader from the external memory that could contain a custom written binary that can access the SD/MMC card.  All this together might be an end-around for booting off SD/MMC.  Uboot would then be the second stage bootloader.&lt;br /&gt;&lt;br /&gt;Daniel pointed out that there's a TI BSD licensed version of the &lt;a href=&quot;http://sourceforge.net/projects/dvflashutils/&quot;&gt;AIS generator&lt;/a&gt; and other core boot code written in C# which should execute under &lt;a href=&quot;http://www.mono-project.com/Main_Page&quot;&gt;Mono&lt;/a&gt; in Linux.  These utilities also should not require Code Composer Studio, which is handy.&lt;/div&gt;
&lt;h2&gt;Comments&lt;/h2&gt;
&lt;div class='comments'&gt;
&lt;div class='comment'&gt;
&lt;div class='author'&gt;Andrew&lt;/div&gt;
&lt;div class='content'&gt;
Brian, you&amp;#39;re welcome :)&lt;br /&gt;&lt;br /&gt;Not locked into the TI AM170x parts but they are the lowest cost in the 1 to 100 quantity range that meet my (currently mostly unwritten) requirements.  Maybe I should write my requirements first... (there&amp;#39;s an idea!)&lt;br /&gt;Thanks for the info on the &lt;a href=&quot;http://www.st.com/internet/mcu/product/247246.jsp&quot; rel=&quot;nofollow&quot;&gt;ST parts&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;If I was planning on buying in the 1,000 to 10,000 quantity range, I think that&amp;#39;d increase the number of processors that would be cost effective to include a lot of Cortex-A8 parts from many vendors.  But I&amp;#39;m not looking at those quantities.&lt;/div&gt;
&lt;/div&gt;
&lt;div class='comment'&gt;
&lt;div class='author'&gt;brian&lt;/div&gt;
&lt;div class='content'&gt;
Wow thanks for the compliment.  Are you locked into using the AM170x micro?  I met with ST a few weeks ago and they have a series of nice embedded low cost processors that might be an option.  Although I am not sure what is available for open source tools.  We can talk about it next time we meet.  I will send you some info on the processor.&lt;/div&gt;
&lt;/div&gt;
&lt;div class='comment'&gt;
&lt;div class='author'&gt;Andrew&lt;/div&gt;
&lt;div class='content'&gt;
Bill, thanks! :)&lt;br /&gt;&lt;br /&gt;I saw a little about the UBL in the link that Daniel provided but I haven&amp;#39;t yet had time to delve into it too far.  I&amp;#39;ll also read through your wiki link.&lt;br /&gt;&lt;br /&gt;Thanks for the advice on SPI.  I&amp;#39;ve been pondering using the EMIFA bus and either NOR or NAND flash but will definitely do some research on SPI parts.  SPI will probably be less complex than NOR or NAND flash.&lt;br /&gt;&lt;br /&gt;I&amp;#39;m pretty new to a lot of this although I do have decent experience with embedded Linux.  I&amp;#39;ve never designed a board from scratch nor built a bootloader.  It&amp;#39;s all stuff I want to learn and I&amp;#39;m trying to keep the complexity to a level that&amp;#39;s reasonable and I figure if I share my thoughts as I go, others can learn too.  I have a friend (hi Brian!) that&amp;#39;s experienced with board design (think 16 layer boards, 1000+ pin BGAs, and PCI-Express type experience [he&amp;#39;s thorough and good at writing documentation, too]) giving me some advice, which is a huge help.&lt;/div&gt;
&lt;/div&gt;
&lt;div class='comment'&gt;
&lt;div class='author'&gt;Bill M.&lt;/div&gt;
&lt;div class='content'&gt;
&amp;gt; It seems like one could create an AIS (or non AIS executable) that would contain arbitrary code to be executed as a first stage bootloader but I&amp;#39;m not entirely clear on that yet. &lt;br /&gt;&lt;br /&gt;Yes that is pretty standard practice: use the ROM bootloader to load a small intermediate bootloader that then loads the real bootloader (u-boot).  Bootloaders are the turtles of the embedded world; Its pretty much bootloaders all the way down.&lt;br /&gt;&lt;br /&gt;On OMAP the intermediate bootloader is xloader.  If you checkout the links Daniel provided I think you will find another intermediate bootloader called UBL that was used on the Davinci family of parts.  &lt;br /&gt;&lt;br /&gt;http://processors.wiki.ti.com/index.php/RBL_UBL_and_host_program&lt;br /&gt;&lt;br /&gt;You could start with any of these to make your intermediate loader that would load u-boot from MMC/SD.  I would look to SPI to hold your intermediate loader as it is cheap, simple, and much faster than I2C.&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
</content>
 </entry>
 
 <entry>
   <title>TI AM170x Booting Annoyances</title>
   <link href="http://www.bradfordembedded.com/2011/09/ti-am170x-booting-annoyances"/>
   <updated>2011-09-30T00:00:00-07:00</updated>
   <id>hhttp://www.bradfordembedded.com/2011/09/ti-am170x-booting-annoyances</id>
   <content type="html">&lt;div class='post'&gt;
Although I haven't spent much time working on the TuxedoBoard in the past few months (newborn daughter in July), I've been thinking about it again recently as my sleep schedule is starting to normalize a bit.&lt;br /&gt;&lt;br /&gt;In reading through the info from TI about &lt;a href=&quot;http://www.ti.com/lit/an/spraba4b/spraba4b.pdf&quot;&gt;boot modes on the AM17xx&lt;/a&gt; processors, a lot of time is spent describing the AIS (Application Image Script) proprietary boot script system.  It's proprietary to TI, the script generator only runs on Windows, and it requires that you pay for and use &lt;a href=&quot;http://www.ti.com/tool/ccstudio&quot;&gt;Code Composer Studio&lt;/a&gt;.  None of that sounds exciting to someone interested in open platforms.&lt;br /&gt;&lt;br /&gt;So, if the AM170x processor is going to go onto the TuxedoBoard, there's going to have to be a custom bootloader.&lt;br /&gt;&lt;br /&gt;Ideally, I would want a bootloader that doesn't require an external memory interface (either EMIFA, SPI, or I2C) due to the added cost and complexity.  I'm imagining that there will be an MMC/SD card on the TuxedoBoard in order to hold the Linux filesystem, so booting directly off of that would be best.  The BeagleBoard-xM boots off the MMC/SD card but its processor has internal firmware (not sure on the details) that is smart enough to find a FAT partition (if its the first one) and grab the &lt;a href=&quot;http://groups.google.com/group/beagleboard/browse_thread/thread/33e7b0fd61a313f0?pli=1&quot;&gt;MLO (x-loader)&lt;/a&gt; file (if its the first file loaded onto the partition).&lt;br /&gt;&lt;br /&gt;I'd like it if my bootloader can setup the external SDRAM, set up all registers properly, find the MMC/SD card, transfer uboot (or other second stage bootloader) into RAM and jump to it.  Kind of like the BeagleBoard-xM does it.  There's 64kB of ROM and 8kB of RAM inside the AM170x ARM core.  I'm not sure if that's enough but coming from a 8/16-bit microcontroller perspective, that's decent for doing quite a lot.  It seems possible (even if it will be a lot of work).&lt;br /&gt;&lt;br /&gt;It'd be awesome if the first partition on the MMC/SD card could be ext2 (or other open and less complex filesystem) and have only the uboot executable.  The second partition (in your favorite, supported by uboot, format) would hold the actual Linux filesystem.&lt;br /&gt;&lt;br /&gt;UPDATE 1 October 2011: I'm incorrect in some of the things stated in this blog post.  I've not changed them but I have written &lt;a href=&quot;http://bradfordembedded.blogspot.com/2011/10/ti-am170x-booting-annoyances-take-2.html&quot;&gt;another blog post&lt;/a&gt;.&lt;/div&gt;
&lt;h2&gt;Comments&lt;/h2&gt;
&lt;div class='comments'&gt;
&lt;div class='comment'&gt;
&lt;div class='author'&gt;Andrew&lt;/div&gt;
&lt;div class='content'&gt;
Bill, thanks for the info, I&amp;#39;ll take a further look at the XDS100 emulator.  I also did not know that CCS runs on Linux, that&amp;#39;s very helpful.  I&amp;#39;ll be sure to check that out.&lt;br /&gt;&lt;br /&gt;I&amp;#39;ve also updated some of the statements I made in this post in my follow on update (see link at bottom of post) but I&amp;#39;ve not changed my misunderstandings in this post because it&amp;#39;s useful for others to see how I&amp;#39;m wrong and read the comments and my second post.&lt;/div&gt;
&lt;/div&gt;
&lt;div class='comment'&gt;
&lt;div class='author'&gt;Bill M.&lt;/div&gt;
&lt;div class='content'&gt;
&amp;gt; and it requires that you pay for and use Code Composer Studio. &lt;br /&gt;&lt;br /&gt;Daniel already pointed out that Code Composer Studio is not required to use the boot code and AIS.  I would also like to point out that CCS is free (as in Beer) to use with an XDS100 emulator.  These are available from TI for $79 and other vendors sell even cheaper clones.  There is an XDS100 reference design so you can even build your own if you are so inclined.&lt;br /&gt;&lt;br /&gt;An XDS100 is not blazing fast but it is useful to have JTAG debug when bringing up a new board and this is a pretty cheap way to go.  Best of all CCSv5 now runs on Linux in addition to Windows.&lt;/div&gt;
&lt;/div&gt;
&lt;div class='comment'&gt;
&lt;div class='author'&gt;Andrew&lt;/div&gt;
&lt;div class='content'&gt;
Daniel, interesting.  Thanks for the info!  I&amp;#39;ll have to check out the sourceforge project you linked to.&lt;br /&gt;&lt;br /&gt;I was slightly confused about the 64kB of ROM, since I was under the impression that the AIS went into, but now that you mention it...  So I guess I need to do more reading. :)&lt;/div&gt;
&lt;/div&gt;
&lt;div class='comment'&gt;
&lt;div class='author'&gt;Daniel&lt;/div&gt;
&lt;div class='content'&gt;
&amp;gt;&amp;gt; It&amp;#39;s proprietary to TI, the script generator only runs on Windows, and it requires that you pay for and use Code Composer Studio.&lt;br /&gt;&lt;br /&gt;True, it is proprietary (but fully described in the mentioned doc). The GUI script generator should run on Linux under Mono (it&amp;#39;s a .Net app).  I haven&amp;#39;t tried it in a while, but it should.  Plus there is a command line version, also written in C# .Net, with full source available (BSD licensed) as part of the flash and boot utilities package: http://sourceforge.net/projects/dvflashutils/files/OMAP-L137/&lt;br /&gt;&lt;br /&gt;And code composer studio is not required to create AIS boot images. The executables you feed the AIS generator could be created using TI&amp;#39;s codegen tools, or they could be created using GCC.&lt;br /&gt;&lt;br /&gt;&amp;gt;&amp;gt; There&amp;#39;s 64kB of ROM and 8kB of RAM inside the AM170x ARM core. I&amp;#39;m not sure if that&amp;#39;s enough but coming from a 8/16-bit microcontroller perspective, that&amp;#39;s decent for doing quite a lot.&lt;br /&gt;&lt;br /&gt;The 64KB ROM is not user programmable - that ROM contains the primary boot loader that can load the AIS images from various interfaces. Unfortunately, one interface that is not natively supported is SD/MMC. So a secondary loader on some natively supported interface (like a SPI flash) will be required to fetch uboot from an SD/MMC card (unless TI updates the ROM and releases a new version of the chip with this support).&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
</content>
 </entry>
 
 <entry>
   <title>SD Card Depot Why Don't You Exist?</title>
   <link href="http://www.bradfordembedded.com/2011/09/sd-card-depot-why-don-t-you-exist"/>
   <updated>2011-09-30T00:00:00-07:00</updated>
   <id>hhttp://www.bradfordembedded.com/2011/09/sd-card-depot-why-don-t-you-exist</id>
   <content type="html">&lt;div class='post'&gt;
Trying to buy SD cards sucks.  &lt;a href=&quot;http://www.newegg.com/&quot;&gt;Newegg&lt;/a&gt; is way better than Amazon for finding an SD card that you want, but it still sucks.&lt;br /&gt;&lt;br /&gt;I wish there was something like an SD Card Depot that just sold SD cards.  They'd only sell high quality parts, test the things they sell, write reviews of them, sell consistent product (SD card &lt;a href=&quot;http://www.bunniestudios.com/blog/?page_id=1022&quot;&gt;quality&lt;/a&gt; &lt;a href=&quot;http://grigio.org/microsd_class_6_performance_benchmarks&quot;&gt;varies&lt;/a&gt;.  &lt;a href=&quot;http://www.sakoman.com/OMAP/microsd-card-perfomance-test-results.html&quot;&gt;A lot!&lt;/a&gt;), provide guidance on what kind of cards work best for what kind of uses (do I really need a class 10 card for HD camcorder?), and make finding the SD card I want easy.  Oh yea, and cheap shipping (hello Amazon sellers with $1 4GB cards and $9.95 shipping!!).&lt;br /&gt;&lt;br /&gt;They'd be the (when they were just shoes) &lt;a href=&quot;http://www.zappos.com/&quot;&gt;Zappos&lt;/a&gt; of SD cards.  Awesome website, awesome service, dedicated to just one product and killing the act of selling it.&lt;br /&gt;&lt;br /&gt;Makes me think there's a market opportunity here...&lt;/div&gt;
&lt;h2&gt;Comments&lt;/h2&gt;
&lt;div class='comments'&gt;
&lt;/div&gt;
</content>
 </entry>
 
 <entry>
   <title>Some Raspberry Pi</title>
   <link href="http://www.bradfordembedded.com/2011/09/some-raspberry-pi"/>
   <updated>2011-09-29T00:00:00-07:00</updated>
   <id>hhttp://www.bradfordembedded.com/2011/09/some-raspberry-pi</id>
   <content type="html">&lt;div class='post'&gt;
I'm torn about the &lt;a href=&quot;http://www.raspberrypi.org/&quot;&gt;Raspberry Pi&lt;/a&gt; project. On the one hand, it's awesome that the group is developing a very low cost ($25 and $35 goal price points) ARM based computer with some rather nice specifications (clock speed, RAM, USB, Ethernet [on $35 model], 3d accel, etc) but the way they're going about it somewhat rubs me the wrong way.&lt;br /&gt;&lt;br /&gt;Broadcom makes the ARM processor (BCM2835) but hasn't released any type of datasheet.  It uses package-on-package memory, which is rather difficult for many assembly houses to deal with and requires rather large orders in order to obtain memory from suppliers due to constrained supply lines.  The Broadcom GPU that's integrated uses closed source drivers and in order to get legal access to the multimedia hardware IP blocks you are required to buy a license (RasPi says they'll include a few of the most often used codec licenses with purchase, but not all).  The boot process is yet another convoluted weird way of doing things: the GPU runs first, executes a first stage bootloader, then dumps you over to the actual ARM core for booting Linux.&lt;br /&gt;&lt;br /&gt;In order to manufacture their 6 layer (originally they said 4 but that's not appearing possible) board, RasPi is using blind, buried, or partial vias which raises the cost of the bare board and limits who can manufacture it.  They're also not even connecting all pins on the processor, some GPIO won't be connected to anything and thus will be unused.  These tiny pitch BGA parts are awesome if you've got constrained spaces to fit in and you have access to seriously advanced manufacturing capability and can use 8+ layer boards.  Otherwise, &lt;a href=&quot;http://bradfordembedded.blogspot.com/2011/04/tuxedoboard-bgas-and-minimum-ball-pitch.html&quot;&gt;they're a pain&lt;/a&gt;!&lt;br /&gt;&lt;br /&gt;The RasPi foundation is getting special pricing on almost all of their parts.  They're buying in the 10,000 quantity but (at least on some parts) appear to be getting 1,000,000 quantity pricing.  They have publicly said they are not getting any sponsorship or free parts, which is good to hear based on their very low price point goals for the finished product.&lt;br /&gt;&lt;br /&gt;Although Eben has said (in &lt;a href=&quot;http://interviews.slashdot.org/story/11/09/14/1554243/Eben-Upton-Answers-Your-Questions&quot;&gt;answers to Slashdot questions&lt;/a&gt;) that the layout and schematics would be open with &quot;A qualified yes,&quot; that's dependent upon the final board design being able to be exported to something like Eagle.  He also throws in some other verbiage that makes me unsure what will really happen.  (And yes, I understand I won't be able to build one myself, even if I had mad hot air rework skills, the pitch on some parts are remarkably small and POP is a nightmare even for automated robotic assembly shops.)&lt;br /&gt;&lt;br /&gt;But in the end, my biggest concern is that the $25 and $35 prices won't really happen.  There's been mention of a &quot;give one get one&quot; program at first (so you have to pay for 2 in order to obtain one) where the one you &quot;give&quot; will be provided to school children. But there's not been mention that I've seen of when the one you &quot;give&quot; will be actually given.  Mostly, for $25, leaving the RasPi foundation with no profit, they need (my personal &lt;a href=&quot;http://en.wiktionary.org/wiki/SWAG&quot;&gt;SWAG&lt;/a&gt; on cost) about $15 in parts (including circuit board), maybe $8 in labor to assemble (including all tooling costs being rolled into the per unit cost), and that leaves about $2 to cover testing and warranty replacements (2% warranty rate is $0.50, 4% is $1).  That's crazy cheap! And it requires a very low failure rate under warranty, let alone the costs associated with fulfilling the warranty replacements (emails, phone calls, shipping, etc aren't included).&lt;br /&gt;&lt;br /&gt;I don't think $25 and $35 price points are sustainable in a break-even or profit making enterprise based on the goals and current public information for the Raspberry Pi.  I do hope I'm wrong.&lt;/div&gt;
&lt;h2&gt;Comments&lt;/h2&gt;
&lt;div class='comments'&gt;
&lt;/div&gt;
</content>
 </entry>
 
 <entry>
   <title>Google Search Results!</title>
   <link href="http://www.bradfordembedded.com/2011/09/google-search-results"/>
   <updated>2011-09-28T00:00:00-07:00</updated>
   <id>hhttp://www.bradfordembedded.com/2011/09/google-search-results</id>
   <content type="html">&lt;div class='post'&gt;
Somewhat ironically, if you search Google for: &lt;a href=&quot;http://www.google.com/search?q=stanford+database+class&quot;&gt;Stanford database class&lt;/a&gt;, my blog is showing up (at least some of the time, even when searching when I'm using a different browser and not logged into Google services) in 5th spot, ahead of the actual &lt;a href=&quot;http://db-class.com/&quot;&gt;db-class.com&lt;/a&gt; (which redirects to the .org version) website.&amp;nbsp; I find that intriguing and funny.&amp;nbsp; It also makes me smile.&lt;br /&gt;&lt;br /&gt;Now to get my actual &lt;a href=&quot;http://db-class-notes.blogspot.com/&quot;&gt;database class notes blog&lt;/a&gt; to show up there as well!&lt;br /&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://4.bp.blogspot.com/-DLnFs0Kldqg/ToNaN3Ko2EI/AAAAAAAAAQA/Kqr1st4sqis/s1600/stanford_database_class_google_listing.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://4.bp.blogspot.com/-DLnFs0Kldqg/ToNaN3Ko2EI/AAAAAAAAAQA/Kqr1st4sqis/s1600/stanford_database_class_google_listing.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;
&lt;h2&gt;Comments&lt;/h2&gt;
&lt;div class='comments'&gt;
&lt;/div&gt;
</content>
 </entry>
 
 <entry>
   <title>Do What You Love, Good Things Will Come</title>
   <link href="http://www.bradfordembedded.com/2011/09/do-what-you-love-good-things-will-come"/>
   <updated>2011-09-27T00:00:00-07:00</updated>
   <id>hhttp://www.bradfordembedded.com/2011/09/do-what-you-love-good-things-will-come</id>
   <content type="html">&lt;div class='post'&gt;
This morning, I found this &lt;a href=&quot;http://blogs.hbr.org/bregman/2009/02/need-to-find-a-job-stop-lookin.html&quot;&gt;article from the Harvard Business Review&lt;/a&gt; blog that's mostly about job hunting but also a few other things.  Do what you enjoy, build relationships, and stop stressing out about the state of the economy or your life.  You'll find what you are looking for faster, or at least enjoy yourself way more while waiting for opportunity to arrive in the same amount of time.&lt;br /&gt;&lt;br /&gt;I like the premise.  It's part of why I started contributing to the Cross Linux From Scratch project and why I started blogging.  My database class notes blog might make me a little money from Google ads but I think the real value is in establishing myself as a resource and opening doors for me.  Maybe (but probably not) I'll become a lesser version of Salman Khan and be known for presenting small chunks of learning.  Who knows?!  Certainly not me, but I am enjoying writing more.&lt;br /&gt;&lt;br /&gt;In mostly the same vein, &lt;a href=&quot;http://www.marco.org/2011/09/26/gruber-merlin-sxsw-2009&quot;&gt;Marco&lt;/a&gt; linked to &lt;a href=&quot;http://www.43folders.com/2009/03/25/blogs-turbocharged&quot;&gt;a presentation&lt;/a&gt; by John Gruber and Merlin Mann from SXSW 2009 that I really enjoy listening to.  The title of their talk is awesome, &quot;HOWTO: 149 Surprising Ways to Turbocharge Your Blog With Credibility!&quot;  (note: you will not hear them list 149 things, it's more like 5)&lt;/div&gt;
&lt;h2&gt;Comments&lt;/h2&gt;
&lt;div class='comments'&gt;
&lt;/div&gt;
</content>
 </entry>
 
 <entry>
   <title>Database Class Notes</title>
   <link href="http://www.bradfordembedded.com/2011/09/database-class-notes"/>
   <updated>2011-09-26T00:00:00-07:00</updated>
   <id>hhttp://www.bradfordembedded.com/2011/09/database-class-notes</id>
   <content type="html">&lt;div class='post'&gt;
The Stanford online database course's &lt;a href=&quot;http://db-class.org&quot;&gt;enrollment has opened&lt;/a&gt; and I've got my &lt;a href=&quot;http://db-class-notes.blogspot.com/&quot;&gt;course notes blog&lt;/a&gt; started!&lt;br /&gt;&lt;br /&gt;I'll be blogging my notes and thoughts on the course in as close to real time as I can.  I hope to post up my solutions to assignments once allowed on &lt;a href=&quot;https://github.com/bradfa&quot;&gt;my Github&lt;/a&gt; account.&lt;/div&gt;
&lt;h2&gt;Comments&lt;/h2&gt;
&lt;div class='comments'&gt;
&lt;/div&gt;
</content>
 </entry>
 
 <entry>
   <title>Hewlett-Packard, WebOS... RIP</title>
   <link href="http://www.bradfordembedded.com/2011/09/hewlett-packard-webos-rip"/>
   <updated>2011-09-23T00:00:00-07:00</updated>
   <id>hhttp://www.bradfordembedded.com/2011/09/hewlett-packard-webos-rip</id>
   <content type="html">&lt;div class='post'&gt;
Meg Whitman is the new CEO of HP.  Leo Apotheker got to be CEO for less than a year and for most of that time Meg Whitman was on the board of directors.  The board seemed to back Apotheker when he made decisions that roiled the web press.  He killed almost everything HP got from the purchase of Palm, bought Autonomy, said the company is going to transition into &quot;enterprise&quot; software &amp; services, and started discussions that HP was going to sell off their commodity computer business.  The board didn't seem to object, at least not publicly.  Apotheker was horrible at communicating with the shareholders but that pales in comparison to the rather large changes being made, it's forgivable.&lt;br /&gt;&lt;br /&gt;But now they've fired Apotheker and put Whitman in his place.  HP's not going to recover from Apotheker's decisions if Whitman is in charge.&lt;br /&gt;&lt;br /&gt;I'm sorry HP shareholders, employees, and customers.  You're in for a continued rough ride in the near future.&lt;br /&gt;&lt;br /&gt;Why should anyone think that Whitman, who didn't have the best record at eBay (even though the major press seems to think otherwise), who failed at becoming the governor of California, and who was on the board of directors for most of the time Apotheker made such &quot;bad&quot; decisions, will do anything &quot;better&quot; than Apotheker?&lt;br /&gt;&lt;br /&gt;HP used to be an engineer's company.  Woz worked there and loved it.  If Woz thought HP was an engineer's dream company, I bet it was.  HP made THE BEST calculators, THE BEST test equipment, THE BEST mid range laser printers, THE BEST low end ink jet printers, and probably tons of other products that were THE BEST of their time.  HP isn't an engineer's company any more.  Meg Whitman isn't going to make it back into an engineer's company.&lt;br /&gt;&lt;br /&gt;Today, what does HP build that's the best?&lt;br /&gt;&lt;br /&gt;WebOS had a chance to be THE BEST, even though they stumbled out of the starting blocks and were late to the party.  Out of all the things that have changed at HP under Apotheker, the loss of WebOS as even a reasonable contender against iOS and Android, is the worst.&lt;br /&gt;&lt;br /&gt;HP's not THE BEST at anything any more.  Rest in peace...&lt;/div&gt;
&lt;h2&gt;Comments&lt;/h2&gt;
&lt;div class='comments'&gt;
&lt;/div&gt;
</content>
 </entry>
 
 <entry>
   <title>Stanford Database Class and an Experiment</title>
   <link href="http://www.bradfordembedded.com/2011/09/stanford-database-class-and-an-experiment"/>
   <updated>2011-09-22T00:00:00-07:00</updated>
   <id>hhttp://www.bradfordembedded.com/2011/09/stanford-database-class-and-an-experiment</id>
   <content type="html">&lt;div class='post'&gt;
Stanford is running a free online &lt;a href=&quot;http://db-class.org/&quot;&gt;databases course&lt;/a&gt; this fall.  I've signed up to get more info and once that info comes out, I'll be registering for the course.  It runs from October 10 till December 12.  I assume there will be two or three video lectures per week along with projects or homework.&lt;br /&gt;&lt;br /&gt;If allowed by the course guidelines, I'm going to blog my notes from lectures and post my projects / homework up on GitHub.&lt;br /&gt;&lt;br /&gt;I want to become a better writer, learn about databases, and possibly make a little money from Google ads.  Taking the database course and blogging my notes and thoughts will help me to accomplish all three.&lt;br /&gt;&lt;br /&gt;My background is mostly in electrical engineering but I do write software.  Although I've been formally programming since my first year of college (2001), I've never taken a formal algorithms, data structures, or database course.  These days I write some C# for Windows and C for microcontrollers but I've also worked with Java and C++ and done a tiny bit of Python and Perl.  My background probably matches a lot of people out there who are self taught coders and I think that provides me with a good audience desiring to learn about databases and that I can easily connect with.&lt;br /&gt;&lt;br /&gt;I had wanted to try out Tumblr but after opening an account and playing with their interface, I think I'll stick with Blogger.  Tumblr wasn't necessarily bad, but I'm used to Blogger (even with the new interface) and writing in the HTML view is pretty unencumbered for me.  I'll post up a link to the database class notes blog shortly.&lt;/div&gt;
&lt;h2&gt;Comments&lt;/h2&gt;
&lt;div class='comments'&gt;
&lt;div class='comment'&gt;
&lt;div class='author'&gt;Andrew&lt;/div&gt;
&lt;div class='content'&gt;
A link to my database class notes blog:&lt;br /&gt;&lt;a href=&quot;http://db-class-notes.blogspot.com&quot; rel=&quot;nofollow&quot;&gt;http://db-class-notes.blogspot.com&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
</content>
 </entry>
 
 <entry>
   <title>Introduction to Verilog</title>
   <link href="http://www.bradfordembedded.com/2011/08/introduction-to-verilog"/>
   <updated>2011-08-05T00:00:00-07:00</updated>
   <id>hhttp://www.bradfordembedded.com/2011/08/introduction-to-verilog</id>
   <content type="html">&lt;div class='post'&gt;
I found a nice series of lectures given at the Indian Institute of Technology at Kharagpur by Prof. Sengupta.  They're hosted on YouTube and I've made a playlist for lectures 2 through 7.  There are quite a few lectures in this course and I'll be posting playlists for more later.  &lt;br /&gt;&lt;br /&gt;Please be aware, at the start of each lecture video there is a very loud test tone for the first few seconds.&lt;br /&gt;&lt;br /&gt;&lt;object width=&quot;480&quot; height=&quot;385&quot;&gt;&lt;param name=&quot;movie&quot; value=&quot;http://www.youtube.com/p/522694885E653BC7?version=3&amp;hl=en_US&amp;fs=1&quot;&gt;&lt;/param&gt;&lt;param name=&quot;allowFullScreen&quot; value=&quot;true&quot;&gt;&lt;/param&gt;&lt;param name=&quot;allowscriptaccess&quot; value=&quot;always&quot;&gt;&lt;/param&gt;&lt;embed src=&quot;http://www.youtube.com/p/522694885E653BC7?version=3&amp;hl=en_US&amp;fs=1&quot; type=&quot;application/x-shockwave-flash&quot; width=&quot;480&quot; height=&quot;385&quot; allowscriptaccess=&quot;always&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;
&lt;h2&gt;Comments&lt;/h2&gt;
&lt;div class='comments'&gt;
&lt;/div&gt;
</content>
 </entry>
 
 <entry>
   <title>Downsides and Upsides of Altera's Configuration Via Protocol</title>
   <link href="http://www.bradfordembedded.com/2011/07/downsides-and-upsides-of-altera-s-configuration-via-protocol"/>
   <updated>2011-07-29T00:00:00-07:00</updated>
   <id>hhttp://www.bradfordembedded.com/2011/07/downsides-and-upsides-of-altera-s-configuration-via-protocol</id>
   <content type="html">&lt;div class='post'&gt;
Yesterday, I wrote a little about &lt;a href=&quot;http://bradfordembedded.blogspot.com/2011/07/modular-fpga-accelerated-computing.html&quot;&gt;reconfigurable FPGAs&lt;/a&gt; attached to the PCI-Express bus as an addition to the general purpose computer.  The idea revolves around being able to reconfigure an FPGA over PCI-Express without requiring a PCI reset (basically a reboot).  In this way, as processing demands change on the host computer, the FPGA can be configured to process data in the most effective way.&lt;br /&gt;&lt;br /&gt;The huge upside of being able to reconfigure an FPGA over PCI-Express is that there's no external programmer (such as Altera's USB Blaster) involved.  The hardware needed to perform a configuration is all built into the FPGA and embedded in the operating system drivers running on the computer.  This ability really opens up the possibility of having a large number of FPGAs connected over PCI-Express and configuring each one individually, quickly, and when ever you want.&lt;br /&gt;&lt;br /&gt;On the downside, the initial configuration that is loaded into the FPGA at boot time sets the I/O interfaces up for each pin and can't be changed.  This is fine, if you don't care about I/O customization.  I'm envisioning a system where this isn't a large issue because the FPGAs would only be used for data processing, not for interfacing to I/O outside of the PCI-Express bus and a minimal set of devices located on the same circuit board.&lt;br /&gt;&lt;br /&gt;Another downside is that currently only the Cyclone V, Arria V, and Stratix V FPGAs from Altera support configuration via protocol over PCI-Express.  Cyclone V is the most attractive as the Cyclone family usually is lower cost than Arria and Stratix.  Cyclone V doesn't appear to be available yet for public consumption which makes cost estimation difficult for those who don't have a standing relationship with Altera (myself included).  The Cyclone IV has been available for a while, includes hard IP for PCI-Express 1.0, and is reasonably priced but Altera doesn't support configuration via protocol for that family.&lt;br /&gt;&lt;br /&gt;Overall, for developing a PCI-Express reconfigurable FPGA system, the upsides strongly outweigh the downsides.  I'm very excited about configuration via protocol!&lt;/div&gt;
&lt;h2&gt;Comments&lt;/h2&gt;
&lt;div class='comments'&gt;
&lt;/div&gt;
</content>
 </entry>
 
 <entry>
   <title>Modular FPGA Accelerated Computing</title>
   <link href="http://www.bradfordembedded.com/2011/07/modular-fpga-accelerated-computing"/>
   <updated>2011-07-28T00:00:00-07:00</updated>
   <id>hhttp://www.bradfordembedded.com/2011/07/modular-fpga-accelerated-computing</id>
   <content type="html">&lt;div class='post'&gt;
General purpose computers are great at doing a huge variety of things because they are programmable via software.  But with this flexibility comes sloth, general purpose computers are slow compared to specialist hardware like ASICs or even FPGAs for a large number of computations.&lt;br /&gt;&lt;br /&gt;The recent push into &lt;a href=&quot;http://en.wikipedia.org/wiki/Gpgpu&quot;&gt;GPGPU &lt;/a&gt;computing using graphics processors to attack massively parallel problems that involve simple computations is expanding the abilities of general purpose computers.  AMD is betting the farm on it with their &lt;a href=&quot;http://sites.amd.com/us/fusion/apu/Pages/fusion.aspx&quot;&gt;Fusion&lt;/a&gt; designs.  The capabilities of GPGPU programs are limited but the speed at which they can be executed is approaching that of FPGA hardware.  By utilizing GPGPU computing, a rather low cost, somewhat easy to program addition to the general purpose computer can improve processing performance for a subset of computations.&lt;br /&gt;&lt;br /&gt;But the main drawback to GPGPU computing is power consumption.  In order to be this fast and have the ability to be programmed with software, graphics cards draw huge amounts of power compared to dedicated hardware like ASICs or FPGAs.&lt;br /&gt;&lt;br /&gt;This is where I think reconfigurable FPGAs come into play in the general purpose computer.  FPGAs can be configured in many different ways and can execute some algorithms in hardware much faster than a general purpose computer can.  In this way, they're a lot like GPGPU computing, except the power consumption is orders of magnitude lower.&lt;br /&gt;&lt;br /&gt;Pico Computing makes the &lt;a href=&quot;http://www.picocomputing.com/e_series.html&quot;&gt;Pico E-18&lt;/a&gt; ExpressCard/34 FPGA device.  It fits in an &lt;a href=&quot;http://en.wikipedia.org/wiki/ExpressCard&quot;&gt;ExpressCard&lt;/a&gt;/34 slot and I assume conforms to the power requirements of ExpressCard/34.  That means its power consumption should be about 3W max.  Compare this to even mid-level performance GPGPU devices consuming hundreds of Watts of power.  Let's assume, for comparison sake, that a GPGPU device consumes 100W of power and that the Pico E-18 or similar FPGA based device consumes 3W.  At that ratio, you could have 33 FPGAs or one GPGPU device!  Or, even better, you can have one ExpressCard/34 FPGA in your laptop and not impact heat or battery performance dramatically.&lt;br /&gt;&lt;br /&gt;The main drawback of FPGA based computing is the upfront costs.  GPGPU devices are relatively cheap because lots of people buy graphics cards.  Very few people are currently buying FPGA devices for their computers.  It's a chicken and egg problem but some high profile use cases are tipping the scales towards more pervasive use of FPGAs in general purpose computers, take &lt;a href=&quot;http://news.slashdot.org/story/11/07/11/2232253/JPMorgan-Rolls-Out-FPGA-Supercomputer&quot;&gt;JPMorgan&lt;/a&gt; for example.&lt;br /&gt;&lt;br /&gt;Along with use cases becoming more visible to the computing world showing what FPGAs can do, the ability to reconfigure an FPGA on the fly is very important.  Usually, when an FPGA is powered up, it gets configured.  Until the power goes away or a special programmer device is connected, FPGAs rarely get reconfigured while running.  That's changing!&lt;br /&gt;&lt;br /&gt;Xilinx has &lt;a href=&quot;http://www.xilinx.com/tools/partial-reconfiguration.htm&quot;&gt;Partial Reconfiguration&lt;/a&gt; and now Altera has announced &lt;a href=&quot;http://www.altera.com/literature/wp/wp-01132-stxv-cvpcie.pdf&quot;&gt;Configuration via PCI-Express&lt;/a&gt;.  Altera's technology basically allows you to only partially configure the FPGA in the usual way, such as with an Active Serial device, and then to configure the rest of the FPGA at a later time over PCI-Express dynamically.  This means that you could load up a different FPGA configuration at the start of software execution on your PC.  Then when you start a different program, another FPGA configuration is loaded.  This provides more general purpose abilities but with the speed of execution that an FPGA provides.&lt;br /&gt;&lt;br /&gt;This is huge!&lt;br /&gt;&lt;br /&gt;The main barrier to entry is up-front initial FPGA purchase price.  But cost can be reduced by selling smaller modules, like ExpressCard devices, and by ramping up volume.  Ramping up volume requires showing people how they can utilize the technology for lots of currently slow, power hungry computations.  Showing people how this technology can improve performance requires some very well built software and example FPGA code along with making the sale of these devices more like other general purpose computing hardware (vendors currently make it difficult to buy an FPGA based PCI-Express card).  Altera and Xilinx aren't going to enter this market but I bet they'd love to support someone who was.  The tools and support, let alone devices to be sold, provides a great reason for Altera and Xilinx to support a company doing this.&lt;br /&gt;&lt;br /&gt;It'd be a great start-up company and the business side has some awesome potential, too.  Think of an app-store for FPGA configurations where the vendor (like Apple does) gets a cut of every sale!  Let alone actually selling hardware and support contracts.  Plus, there's no big player doing this yet making it easier to enter the market.&lt;/div&gt;
&lt;h2&gt;Comments&lt;/h2&gt;
&lt;div class='comments'&gt;
&lt;div class='comment'&gt;
&lt;div class='author'&gt;Andrew&lt;/div&gt;
&lt;div class='content'&gt;
Xilinx also has a similar technology to Altera&amp;#39;s Configuration via PCI-Express.  &lt;a href=&quot;http://www.xilinx.com/support/documentation/application_notes/xapp883_Fast_Config_PCIe.pdf&quot; rel=&quot;nofollow&quot;&gt;Nice PDF about it&lt;/a&gt;.&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
</content>
 </entry>
 
 <entry>
   <title>Function Pointers</title>
   <link href="http://www.bradfordembedded.com/2011/07/function-pointers"/>
   <updated>2011-07-01T00:00:00-07:00</updated>
   <id>hhttp://www.bradfordembedded.com/2011/07/function-pointers</id>
   <content type="html">&lt;div class='post'&gt;
Function pointers are pretty cool.  I learned about them this week, then I solved a problem using them.&lt;br /&gt;&lt;br /&gt;At work, I'm writing some code for a 16 bit microcontroller.  In the system I'm working with, a relatively slow external clock causes an interrupt to be fired off.  Inside my code, I have a state machine that executes each time the interrupt fires.  The state machine was implemented using a switch statement that contained a reasonable number of cases, one for each possible state.&lt;br /&gt;&lt;br /&gt;This worked great, up until I continued to add states.  Eventually, the time to determine which state should be executed became about half as long as the period of the external clock.  This is bad because it means some of my states may not have enough time to execute before the next interrupt comes along.  If that happens, bad things occur and the state machine loses place compared to the rest of the world.&lt;br /&gt;&lt;br /&gt;To solve this, I thought there had to be a way to create an array of pointers to functions.  Then as I change state - represented as an index into the array - I could just call what ever function is pointed to in the array.  It turns out, that's very possible in C.  Here's a &lt;a href=&quot;http://www.newty.de/fpt/intro.html&quot;&gt;good tutorial&lt;/a&gt; I found.&lt;br /&gt;&lt;br /&gt;The assembly code for using an array of function pointers is much shorter than the switch statement code.  This gives me more time to execute code in between interrupts and was not hard to implement.  Each of the switch statement's cases (states) became a function and at the start of execution an array of function pointers to each function is populated.  Within the states the array index can be changed based on inputs or the result of processing data.&lt;br /&gt;&lt;br /&gt;Extra documentation can be very helpful when using function pointers.  A switch statement is easy to understand but an array of function pointers is a bit more opaque.&lt;/div&gt;
&lt;h2&gt;Comments&lt;/h2&gt;
&lt;div class='comments'&gt;
&lt;/div&gt;
</content>
 </entry>
 
 <entry>
   <title>Crypto Load Balancer Using Off The Shelf Hardware</title>
   <link href="http://www.bradfordembedded.com/2011/06/crypto-load-balancer-using-off-the-shelf-hardware"/>
   <updated>2011-06-15T00:00:00-07:00</updated>
   <id>hhttp://www.bradfordembedded.com/2011/06/crypto-load-balancer-using-off-the-shelf-hardware</id>
   <content type="html">&lt;div class='post'&gt;
At my day job, I work a reasonable amount of time with cryptographic and authentication systems.  Lately, I've been reading about &lt;a href=&quot;http://www.khronos.org/opencl/&quot;&gt;OpenCL&lt;/a&gt; and &lt;a href=&quot;http://www.nvidia.com/object/cuda_home_new.html&quot;&gt;CUDA&lt;/a&gt;.  I'm wondering if buying a high end graphics card to do some brute force number crunching would be worthwhile.&lt;br /&gt;&lt;br /&gt;Today on &lt;a href=&quot;http://news.ycombinator.com/&quot;&gt;Hacker News&lt;/a&gt;, there was a link to &lt;a href=&quot;http://info.iet.unipi.it/~luigi/netmap/&quot;&gt;netmap&lt;/a&gt;.  Netmap looks like a neat way of getting very high network throughput (like saturating a 10G Ethernet line using only 1.66 GHz of processor) using standard hardware (no special ASICs or FPGAs).&lt;br /&gt;&lt;br /&gt;I've also read in the past about &lt;a href=&quot;http://en.wikipedia.org/wiki/Transport_Layer_Security&quot;&gt;TLS / SSL&lt;/a&gt; and &lt;a href=&quot;http://en.wikipedia.org/wiki/Load_balancing_%28computing%29&quot;&gt;load balancers&lt;/a&gt;.  TLS / SSL is what's used to encrypt data going between a server and a client, such as for credit card number or username &amp; password transmission.  A traditional load balancer will sit on the network in-line before the cluster of servers that actually serve webpages.  As requests come into the load balancer, it distributes the requests to the servers in such a way that no server gets overloaded.&lt;br /&gt;&lt;br /&gt;I've also read a tiny amount about load balancers that will decrypt and encrypt TLS / SSL traffic such that the webservers don't have to (encryption on general purpose CPUs is expensive).  I'd imagine that, for these load balancers to do TLS / SSL inline, this requires very high network throughput as well as very fast number crunching for encryption systems.  Traditionally, I'd expect a load balancer such as this would use special hardware (as normal routers do) in order to obtain very high network throughput.  I'd also expect custom FPGA code or ASICs would be used to provide high throughput encryption abilities.  In both cases, these are low volume, very specialized systems that will be very expensive to create and sell.&lt;br /&gt;&lt;br /&gt;But what if someone could combine both netmap and OpenCL to perform load balancing and TLS / SSL in one box that uses off the shelf hardware?&lt;br /&gt;&lt;br /&gt;It probably wouldn't be as capable as the truly high end hardware, but it could probably compete in the mid-range and cost significantly less.  As the hardware required would be basically:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;A fast processor / motherboard / RAM combo&lt;/li&gt;&lt;li&gt;A large number of PCIe 2.0 slots with a large number of lanes each&lt;/li&gt;&lt;li&gt;At least 2 10Gb Ethernet PCIe cards&lt;/li&gt;&lt;li&gt;A few high end ATI graphics cards to execute OpenCL code&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;A high end server system with some add-in cards would fit the hardware bill.  Then you'd just need a nicely setup OS (to support netmap and the ATI drivers) and some software to load balance and run the encryption.  This isn't simple but it's less complex than a dedicated custom hardware system.&lt;br /&gt;&lt;br /&gt;I think this is a pretty neat idea.  Of course, as more processors start to include encryption abilities, the viability of a device like this is reduced.  But an advantage of this type of device over built-in encryption abilities in CPUs is that it's easy to update this device, we just write new software and deploy it normally.  A CPU can't easily be updated to add additional encryption schemes once it is produced.  &lt;br /&gt;&lt;br /&gt;Another concern would be that the load balancer would need to store the private key and pass it around to the graphics cards, this could be a security issue, but one that could be mitigated by having separate private keys for normal TLS / SSL traffic and traffic where really sensitive data is transmitted (like credit card numbers).  The credit card processing server should probably have an &lt;a href=&quot;http://en.wikipedia.org/wiki/Hardware_security_module&quot;&gt;HSM&lt;/a&gt; and that would be OK because traffic would be much lower.&lt;br /&gt;&lt;br /&gt;Something like this could really accelerate the adoption of HTTPS everywhere in order to prevent  &lt;a href=&quot;http://codebutler.com/firesheep&quot;&gt;FireSheep&lt;/a&gt; type attacks.&lt;/div&gt;
&lt;h2&gt;Comments&lt;/h2&gt;
&lt;div class='comments'&gt;
&lt;/div&gt;
</content>
 </entry>
 
 <entry>
   <title>Conan's Dartmouth 2011 Commencement Address</title>
   <link href="http://www.bradfordembedded.com/2011/06/conan-s-dartmouth-2011-commencement-address"/>
   <updated>2011-06-14T00:00:00-07:00</updated>
   <id>hhttp://www.bradfordembedded.com/2011/06/conan-s-dartmouth-2011-commencement-address</id>
   <content type="html">&lt;div class='post'&gt;
Watch Conan O'Brien give the commencement address to the Dartmouth class of 2011.  It's funny and there's real life lessons that apply to everyone, not just those graduating.&lt;br /&gt;&lt;br /&gt;&lt;iframe width=&quot;560&quot; height=&quot;349&quot; src=&quot;http://www.youtube.com/embed/ELC_e2QBQMk&quot; frameborder=&quot;0&quot; allowfullscreen&gt;&lt;/iframe&gt;&lt;/div&gt;
&lt;h2&gt;Comments&lt;/h2&gt;
&lt;div class='comments'&gt;
&lt;/div&gt;
</content>
 </entry>
 
 <entry>
   <title>The Standing Desk</title>
   <link href="http://www.bradfordembedded.com/2011/06/the-standing-desk"/>
   <updated>2011-06-12T00:00:00-07:00</updated>
   <id>hhttp://www.bradfordembedded.com/2011/06/the-standing-desk</id>
   <content type="html">&lt;div class='post'&gt;
At work, I started using a ghetto standing desk with my lab PC about a month ago.  At the beginning of the year, I got a new Dell tower and monitor (the U2311, which is really nice).  The monitor box standing on top of a few plastic &quot;project boxes&quot; on top of a slightly higher than normal lab workbench is just the right height for my keyboard and trackball.  The monitor sits on top of the Dell tower.&lt;br /&gt;&lt;br /&gt;I like it, but the work I'm doing these days leads to some inefficiencies.  I'm working a lot reading reams of documentation, connecting different things to various circuit boards, and running a logic analyzer.  All of this stuff happens at the normal lab bench height.  Because of this, I sit down about 25% of the time when working at my standing desk.  That's OK, but it would be much nicer if I could raise the workbench up to the right height for my keyboard and trackball (it's about a 14&quot; difference, I think).&lt;br /&gt;&lt;br /&gt;The floor in the lab is 1 foot square industrial stick-on &quot;tiles&quot; (I think they're like linoleum).  I don't use any kind of standing mat.  My everyday shoes are 4 year old Adidas soccer shoes.  The first week was a bit hard on my legs and back, I'd be stiff each morning, but it has gotten better.  I still feel like I'm doing more physical work by standing (I've read it burns 3x the calories as sitting) but I'm not uncomfortable standing for 4 hours at a time.&lt;br /&gt;&lt;br /&gt;The one thing I have noticed is that I'm more focused on my work when standing.  Lately I'm writing C code for a PIC24f microcontroller.  But I like to sit when I'm doing real hard core thinking, like when figuring out timing of interrupts or reading through assembly code.  I'm not sure why this is.  Having everything I work with up at the right height might help but I've not yet found the right sized cinder blocks laying around.&lt;br /&gt;&lt;br /&gt;In my cube I still sit.  My chair isn't fancy but it isn't too bad for comfort.  At home I sit on a wooden chair when working on my desktop.  My main motivation for trying the standing desk was that the chair I had in the lab was uncomfortable and rather than attempt to find a chair that would work, making a standing desk was quick and cheap.&lt;br /&gt;&lt;br /&gt;So far I like it, although it does have downsides (my hardcore thinking, not everything being at the same level, etc).  My coworkers think it's funny that I stand up but my boss has started pondering the idea of trying it since I've been using it successfully for a decent amount of time now.&lt;br /&gt;&lt;br /&gt;If you're uncomfortable sitting all day, try a standing desk.  It's all the rage on &lt;a href=&quot;http://news.ycombinator.com/&quot;&gt;Hacker News&lt;/a&gt; ;)&lt;/div&gt;
&lt;h2&gt;Comments&lt;/h2&gt;
&lt;div class='comments'&gt;
&lt;/div&gt;
</content>
 </entry>
 
 <entry>
   <title>Install the HP webOS SDK on Debian 6 Squeeze</title>
   <link href="http://www.bradfordembedded.com/2011/05/install-the-hp-webos-sdk-on-debian-6-squeeze"/>
   <updated>2011-05-14T00:00:00-07:00</updated>
   <id>hhttp://www.bradfordembedded.com/2011/05/install-the-hp-webos-sdk-on-debian-6-squeeze</id>
   <content type="html">&lt;div class='post'&gt;
Quick instructions on how to install HP's webOS SDK (software development kit) on Debian 6 Squeeze x86_64.  I was a little bored and was reading about webOS...&lt;br /&gt;&lt;br /&gt;Edit /etc/apt/sources.list to add the VirtualBox repo and enable contrib and non-free for your favorite Debian repo line.  The lines we care about look something like this:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;deb http://mirror.rit.edu/debian/ squeeze main contrib non-free&lt;br /&gt;deb http://download.virtualbox.org/virtualbox/debian \&lt;br /&gt;    squeeze contrib non-free&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Grab the &lt;a href=&quot;http://download.virtualbox.org/virtualbox/debian/oracle_vbox.asc&quot;&gt;Oracle apt signing key&lt;/a&gt; and install it with a:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo apt-key add oracle_vbox.asc&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Run a quick update for aptitude (or apt-get if you prefer):&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo aptitude update&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Install the needed packages (Java6 JDK [you supposedly only need the JRE but I'm using the JDK as well], VirtualBox 3.2, and ia32 libraries [only on 64 bit]):&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo aptitude install sun-java6-jdk virtualbox-3.2 ia32-libs&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Grab a copy of HP/Palm's &lt;a href=&quot;https://cdn.downloads.palm.com/sdkdownloads/2.1.0.519/sdkBinaries/palm-novacom_1.0.64_amd64.deb&quot;&gt;novacom&lt;/a&gt; and the actual &lt;a href=&quot;https://cdn.downloads.palm.com/sdkdownloads/2.1.0.519/sdkBinaries/palm-sdk_2.1.0-svn409992-pho519_i386.deb&quot;&gt;SDK&lt;/a&gt; (be wary, it's 185MB in size) in deb format.&lt;br /&gt;&lt;br /&gt;And, finally, install both of those:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo dpkg -i --force-architecture \&lt;br /&gt;    palm-sdk_2.1.0-svn409992-pho519_i386.deb&lt;br /&gt;sudo dpkg -i --force-architecture palm-novacom_1.0.64_amd64.deb &lt;/code&gt;&lt;br /&gt;&lt;br /&gt;As the novacom package provided by Palm/HP uses Upstart as found on Ubuntu (Debian doesn't), you have to start the novacom daemon yourself.  It can be found in /opt/Palm/novacom/novacomd.  Novacom should allow you to push apps into the virtual machine for testing, Palm/HP don't want you messing with the file system in weird ways.&lt;br /&gt;&lt;br /&gt;To launch the emulator, fire up a console and run &lt;code&gt;palm-emulator&lt;/code&gt;.  It will first build the virtual machine and then launch it.  Use the escape button (on your keyboard) to go back, the end button acts like the button on the phone, and home does something (sort of like end, but not sure why it's different).  Clicking and dragging are just like your finger would do.&lt;br /&gt;&lt;br /&gt;Enjoy! :)&lt;br /&gt;&lt;br /&gt;Pretty picture below:&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://4.bp.blogspot.com/-_wnUQI-PiX8/Tc7_zHMrsLI/AAAAAAAAANE/JirJK1_Gbgo/s1600/webOS_virtual_machine.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left:1em; margin-right:1em&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;400&quot; width=&quot;238&quot; src=&quot;http://4.bp.blogspot.com/-_wnUQI-PiX8/Tc7_zHMrsLI/AAAAAAAAANE/JirJK1_Gbgo/s400/webOS_virtual_machine.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h2&gt;Comments&lt;/h2&gt;
&lt;div class='comments'&gt;
&lt;/div&gt;
</content>
 </entry>
 
 <entry>
   <title>Expectations and the i.MX53 QSB "Lab" Session</title>
   <link href="http://www.bradfordembedded.com/2011/05/expectations-and-the-i-mx53-qsb-lab-session"/>
   <updated>2011-05-10T00:00:00-07:00</updated>
   <id>hhttp://www.bradfordembedded.com/2011/05/expectations-and-the-i-mx53-qsb-lab-session</id>
   <content type="html">&lt;div class='post'&gt;
My expectations were high for the Freescale i.MX53 lab session that was held this morning.  I was excited!  The agenda had items like Linux on the i.MX53! LTIB! Android development on the i.MX53! and free lunch!&lt;br /&gt;&lt;br /&gt;My expectations were not realized.&lt;br /&gt;There was free lunch but I left.&lt;br /&gt;&lt;br /&gt;The morning consisted of a lecture by a very nice and smart guy about general embedded Linux things and the i.MX53 QSB hardware.  No fault on him but the material was way too basic.  I was expecting to get right into using LTIB and learning about the LTIB configuration and build system and how it applies to the i.MX53.  I don't have much experience with LTIB but we didn't really do much with it other than run a script and look at some options in the menuconfig interface.&lt;br /&gt;&lt;br /&gt;Those who felt comfortable with embedded Linux were given the serial cables and SDcards so they could play during the lecture.  I tried to do the Ubuntu demo but just loading it onto the SDcard must have taken a good hour.  Then the USB to serial converter decided to not play nice with VMware Workstation (host machines were Ubuntu 10.10 in a VM on top of Windows).  And then once the demo finished loading and I booted it... It's Ubuntu! What's the fun of that?  What did I learn?  Nothing.&lt;br /&gt;&lt;br /&gt;SDcards are slow.  But that's another topic all together.&lt;br /&gt;&lt;br /&gt;I then played a little with LTIB but I didn't like it.  I felt like I had no control over the choices.  I'm not sure if that is LTIB's fault or Freescale's fault.  We didn't have a connection to the Internet so there was no way for me to use any sources other than what was provided.  Regardless, it was a type the following few lines, look at some options that have already been selected, push go.  One thing I really disliked was that the LTIB menuconfig had almost no help for options that were vague.  That's not cool.&lt;br /&gt;&lt;br /&gt;I did meet a nice guy name Jon who works for a local company doing board support packages for custom embedded boards, that was cool.  But overall, I wish I hadn't gone.  It was nice out today so I did the next best thing and left at lunch to mow the lawn.  Way better use of my vacation day.&lt;/div&gt;
&lt;h2&gt;Comments&lt;/h2&gt;
&lt;div class='comments'&gt;
&lt;div class='comment'&gt;
&lt;div class='author'&gt;Andrew&lt;/div&gt;
&lt;div class='content'&gt;
Lee, sorry to hear that the support isn&amp;#39;t up to your expectations.  I&amp;#39;m sorry but I&amp;#39;m not available for freelance support, hopefully you&amp;#39;ll be able to find someone who is.  Best of luck.&lt;/div&gt;
&lt;/div&gt;
&lt;div class='comment'&gt;
&lt;div class='author'&gt;Lee Zhi Hong&lt;/div&gt;
&lt;div class='content'&gt;
Hi. I am using  the Freescale iMX53 QSB too. HAving problem and the support is not good enough to solve my problem.&lt;br /&gt;I have to look for freelance to help me through it.&lt;br /&gt;&lt;br /&gt;Good luck with it.&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
</content>
 </entry>
 
 <entry>
   <title>The TuxedoBoard has a Brain! (picked out)</title>
   <link href="http://www.bradfordembedded.com/2011/05/the-tuxedoboard-has-a-brain-picked-out"/>
   <updated>2011-05-06T00:00:00-07:00</updated>
   <id>hhttp://www.bradfordembedded.com/2011/05/the-tuxedoboard-has-a-brain-picked-out</id>
   <content type="html">&lt;div class='post'&gt;
I've chosen an ARM SoC (system on chip) for the TuxedoBoard!  The Texas Instruments &lt;a href=&quot;http://focus.ti.com/docs/prod/folders/print/am1707.html&quot;&gt;AM1707&lt;/a&gt; ARM9 core will meet my requirements.&lt;br /&gt;&lt;br /&gt;The AM1707 is a 456-MHz ARM926EJ-S SoC that has an internal Ethernet MAC, multiple UARTs (serial ports), an external memory interface for a 32 bit wide SDRAM bus supporting up to 256MB RAM, an external NOR flash memory interface multiplexed with an SD card controller, USB, an LCD interface, and a few other interesting features.&lt;br /&gt;&lt;br /&gt;In keeping with the stated goals for the TuxedoBoard project, the schematic capture and layout will be done with &lt;a href=&quot;http://www.lis.inpg.fr/realise_au_lis/kicad/&quot;&gt;Kicad&lt;/a&gt;.  Kicad supports both Windows and Linux and is covered by the GPLv2 license.  I'm currently using the 20100314 release as that's what comes with Debian 6.&lt;br /&gt;&lt;br /&gt;I'm in the process of creating the schematic symbols for the AM1707.  I'm new to Kicad and I was not able to find an already made symbol with a permissive license, so this is taking a little time.  I've made the power symbol and the EMIF_A (external NOR flash / SD card interface) symbol.  Some pretty pictures of what I've got so far:&lt;br /&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://3.bp.blogspot.com/-E9u55OK94TI/TcPQQMCZbpI/AAAAAAAAAMw/3gz37OglG5k/s1600/AM1707_PWR_symbol.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;400&quot; src=&quot;http://3.bp.blogspot.com/-E9u55OK94TI/TcPQQMCZbpI/AAAAAAAAAMw/3gz37OglG5k/s400/AM1707_PWR_symbol.png&quot; width=&quot;174&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://2.bp.blogspot.com/-07VOo7CIwHE/TcPQVLZYU6I/AAAAAAAAAM4/Z9d1b6ZRAnU/s1600/AM1707_EMIF_A_symbol.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;187&quot; src=&quot;http://2.bp.blogspot.com/-07VOo7CIwHE/TcPQVLZYU6I/AAAAAAAAAM4/Z9d1b6ZRAnU/s400/AM1707_EMIF_A_symbol.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h2&gt;Comments&lt;/h2&gt;
&lt;div class='comments'&gt;
&lt;div class='comment'&gt;
&lt;div class='author'&gt;Charles&lt;/div&gt;
&lt;div class='content'&gt;
It&amp;#39;d be pretty fantastic to see that expanded outward to an easily modified (say I wanted to use a cortex-9 processor), extendable (maybe I want to include a distinct graphics chipset), and upgradable open module. &lt;br /&gt;&lt;br /&gt;Then again, I&amp;#39;m just a coder, I&amp;#39;ll leave the circuit stuff to you guys.&lt;/div&gt;
&lt;/div&gt;
&lt;div class='comment'&gt;
&lt;div class='author'&gt;Andrew&lt;/div&gt;
&lt;div class='content'&gt;
Charles, yes, I saw that the other day.  Looks like an interesting concept.  In order to hit that price point, they&amp;#39;re going to have to build a heck of a lot of them.  I haven&amp;#39;t read extensively about that project, but it&amp;#39;s currently unclear to me if they&amp;#39;re using open source tools to do the design and how open they&amp;#39;re going to be about the hardware once it&amp;#39;s out.  Regardless, I hope they succeed.  The world can only get better when there&amp;#39;s more low cost embedded development kits :)&lt;/div&gt;
&lt;/div&gt;
&lt;div class='comment'&gt;
&lt;div class='author'&gt;Charles&lt;/div&gt;
&lt;div class='content'&gt;
Andrew, you seen this yet:&lt;br /&gt;&lt;br /&gt;http://www.geekosystem.com/raspberry-pi-25-dollar-pc/&lt;br /&gt;&lt;br /&gt;Not sure if it applies to what you&amp;#39;re doing, but the two projects sounded similar enough that i thought i&amp;#39;d point it out.&lt;/div&gt;
&lt;/div&gt;
&lt;div class='comment'&gt;
&lt;div class='author'&gt;Andrew&lt;/div&gt;
&lt;div class='content'&gt;
Yeah.  I&amp;#39;m also going to make 3D files for the parts.  Kicad supports integration of Wings 3D models and can render the board.  I just think it looks cool.  Probably will end up being a lot of work :)&lt;/div&gt;
&lt;/div&gt;
&lt;div class='comment'&gt;
&lt;div class='author'&gt;brian&lt;/div&gt;
&lt;div class='content'&gt;
Just think you are going to have to make the parts in the layout tool as well.  It might not be as bad as it sounds.  If they have a similar part you can just work from that.  You may have already know that.  Good job :)&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
</content>
 </entry>
 
 <entry>
   <title>Picking an Open Source Hardware License</title>
   <link href="http://www.bradfordembedded.com/2011/04/picking-an-open-source-hardware-license"/>
   <updated>2011-04-30T00:00:00-07:00</updated>
   <id>hhttp://www.bradfordembedded.com/2011/04/picking-an-open-source-hardware-license</id>
   <content type="html">&lt;div class='post'&gt;
I've been wandering around the Definition of Free Cultural Works open source hardware &lt;a href=&quot;http://freedomdefined.org/OSHW&quot;&gt;Statement of Principles&lt;/a&gt; and doing a little thinking.&lt;br /&gt;&lt;br /&gt;I like the ideas behind open source hardware as stated in the Statement of Principles.  I want the TuxedoBoard to have a licence that complies with these principles.  The difficult part is finding a license that has already been written that can accomplish those principles.  I'm not a lawyer so writing one myself seems like a bad idea to me.&lt;br /&gt;&lt;br /&gt;The whole open source hardware movement is at the heel of the hockey stick curve.  Having a high quality open source hardware license, like the GNU GPL is for software, is something that's definitely needed.&lt;br /&gt;&lt;br /&gt;Creative Commons is nice but it is too general and doesn't require enough.  The GPL seems awkward when applied to physical things or designs for physical things.  The BSD and MIT licenses allow inclusion without releasing source and also seem to apply best to software.  &lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://www.tapr.org/ohl.html&quot;&gt;TAPR &lt;/a&gt;doesn't quite go far enough and I don't think it completely complies with the OSHW Statement of Principles.  For example, under TAPR, schematics or layouts can be distributed in PDF form.  That's not helpful!  I want a license that requires distribution of things like schematics and layouts in the original computer file format.  &lt;br /&gt;&lt;br /&gt;So far, I've not found a high quality open source hardware license that I like.  I'm confident that one will come about soon but I'm not sure who's going to write it.  I'm not that concerned yet, TuxedoBoard is still just an idea, but the time to be concerned is quickly approaching.  &lt;br /&gt;&lt;br /&gt;Maybe the best bet is a modified TAPR license.  But then again, what license is the TAPR license text under? It's copyrighted but does not appear to be licensed for modification or reuse.&lt;/div&gt;
&lt;h2&gt;Comments&lt;/h2&gt;
&lt;div class='comments'&gt;
&lt;div class='comment'&gt;
&lt;div class='author'&gt;Andrew&lt;/div&gt;
&lt;div class='content'&gt;
No, not yet. :(&lt;br /&gt;I&amp;#39;ll keep looking, though.&lt;/div&gt;
&lt;/div&gt;
&lt;div class='comment'&gt;
&lt;div class='author'&gt;brian&lt;/div&gt;
&lt;div class='content'&gt;
Have you found anything else regarding open source licensing with schematics and Layouts. I was downloading  KiCAD and was wondering the same thing I went on your blog and sure enough you had written about it.&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
</content>
 </entry>
 
 <entry>
   <title>TuxedoBoard BGAs and Minimum Ball Pitch</title>
   <link href="http://www.bradfordembedded.com/2011/04/tuxedoboard-bgas-and-minimum-ball-pitch"/>
   <updated>2011-04-28T00:00:00-07:00</updated>
   <id>hhttp://www.bradfordembedded.com/2011/04/tuxedoboard-bgas-and-minimum-ball-pitch</id>
   <content type="html">&lt;div class='post'&gt;
After some discussion with Brian and lots of reading, I've learned quite a bit more about BGAs and ball pitch.  I'm now leaning towards wanting at least 1mm ball pitch on any BGA parts used on the TuxedoBoard.  0.8mm ball pitch seems like the dividing line between being able to do a &quot;traditional&quot; dog bone fanout and needing to use via-in-pad.  I want to avoid doing via-in-pad if at all possible. Not all board manufacturing houses can build PCBs this way, and even those that can will charge more or have lower yield than other methods.  Even &lt;a href=&quot;http://i.screamingcircuits.com/docs/Via_In_Pad_Guidelines.pdf&quot;&gt;Screaming Circuits&lt;/a&gt; would prefer to not deal with via-in-pad, although it sounds like they can.  I believe &lt;a href=&quot;http://blog.screamingcircuits.com/2009/08/we-build-the-beagleboard.html&quot;&gt;they built the BeagleBoards&lt;/a&gt; but even they consider the technology used on a low cost BeagleBoard to be special.&lt;br /&gt;&lt;br /&gt;With 1mm ball pitch BGAs, two or three 4mil (or 3.5mil) &lt;a href=&quot;http://www.pcdandf.com/cms/magazine/95/3760&quot;&gt;traces can fit between vias&lt;/a&gt;, depending on a whole slew of other parameters.  Brian warned me that some board houses can't reliably do 3mil and smaller traces, that's good to know.  For the number of pins I'm considering for the ARM SoC (in the 300 pin range), a 6 layer board should be doable with 4 routing layers and 2 power.  Now, whether 4 routing layers and 2 power is possible for the pinout, that's another question. :)&lt;br /&gt;&lt;br /&gt;With this in mind, a minimum of 1mm ball pitch seems the best way forward for now.  I want the design to be easy and inexpensive to manufacture at a large number of places.  In order to achieve this, microvias and via-in-pad aren't the way to go.&lt;br /&gt;&lt;br /&gt;Now, to pin down which SoC will be used!&lt;br /&gt;The Freescale i.MX25 parts are 0.8mm and smaller ball pitch. :( But TI does make the &lt;a href=&quot;http://focus.ti.com/docs/prod/folders/print/am1707.html&quot;&gt;AM1707&lt;/a&gt; ARM9 part with 1mm ball pitch which now looks interesting...&lt;/div&gt;
&lt;h2&gt;Comments&lt;/h2&gt;
&lt;div class='comments'&gt;
&lt;div class='comment'&gt;
&lt;div class='author'&gt;Andrew&lt;/div&gt;
&lt;div class='content'&gt;
Regarding layer count, it looks more like a 6 layer board would have 3 power planes (2 ground, 1 power) and 3 routing planes (top, bottom, and 1 inner).&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
</content>
 </entry>
 
 <entry>
   <title>TuxedoBoard SoC Selection</title>
   <link href="http://www.bradfordembedded.com/2011/04/tuxedoboard-soc-selection"/>
   <updated>2011-04-27T00:00:00-07:00</updated>
   <id>hhttp://www.bradfordembedded.com/2011/04/tuxedoboard-soc-selection</id>
   <content type="html">&lt;div class='post'&gt;
I don't yet know which ARM &lt;a href=&quot;http://en.wikipedia.org/wiki/System-on-a-chip&quot;&gt;SoC&lt;/a&gt; (system on a chip) I'm going to use for the TuxedoBoard.  Cost and features both weigh heavily on my mind when looking at what different vendors have to offer.  I wrote an email spewing some of my thoughts on this topic yesterday and I'd like to share an edited version:&lt;br /&gt;&lt;br /&gt;Due to my desired price point of about $100 for assembled and tested TuxedoBoards and because I expect the first build's volume to be about 100 boards, I'm looking to keep the SoC cost to under $8 each.&lt;br /&gt;&lt;br /&gt;So far, I've not had success finding Cortex-A8 devices in the $8 range when purchased in quantities of about 100 units, regardless of vendor or features.  There's quite a good variety of ARM9 parts in the $6 range that include all the features I think I'm interested in.  I would prefer to use a Cortex-A8 part but if the cost is too high, ARM9 will get the job done and allow my price point.&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://en.wikipedia.org/wiki/Ball_grid_array&quot;&gt;BGA packages&lt;/a&gt; seem to be the only package offered for all Cortex-A8 and many ARM9 parts.  That's OK with me as I've realized that selling an assemble-it-yourself kit isn't as important as making everything open so others can utilize the design.  I'd prefer 1mm BGA ball pitch to allow for easy and cheap assembly but 0.8mm is second choice and would work fine.  Pitch smaller than 0.8mm is a real turnoff to me because assembly tolerances get very tight and some assembly houses can't promise good yields.  As I'm not looking to make the board into a mobile phone, or other space constrained device, physical size of the package isn't as important as ease and cost of assembly.  &lt;br /&gt;&lt;br /&gt;I'm not that excited about &lt;a href=&quot;http://en.wikipedia.org/wiki/Package_on_package&quot;&gt;package-on-package&lt;/a&gt; (POP) memory, like used on the BeagleBoards.  I get the impression that a good number of assembly houses aren't yet comfortable with POP and that the BeagleBoard team went through some issues with manufacturing yield at first.  My first manufacturing run will only be around 100 boards, having yield issues would be very bad and ruin the finance side of things.&lt;br /&gt;&lt;br /&gt;Freescale makes a very nice looking ARM9 core in the &lt;a href=&quot;http://www.freescale.com/webapp/sps/site/prod_summary.jsp?code=i.MX253&quot;&gt;i.MX253&lt;/a&gt;.  The i.MX253 prices out in the $6 range at &lt;a href=&quot;http://www.digikey.com/scripts/us/dksus.dll?Detail&amp;amp;name=MCIMX253DJM4A-ND&quot;&gt;Digi-Key&lt;/a&gt;.  TI makes a competing ARM9 part in the &lt;a href=&quot;http://focus.ti.com/docs/prod/folders/print/am1802.html&quot;&gt;AM1802&lt;/a&gt; but I'm not clear on the pricing or features yet, still have to look into that.&lt;/div&gt;
&lt;h2&gt;Comments&lt;/h2&gt;
&lt;div class='comments'&gt;
&lt;/div&gt;
</content>
 </entry>
 
 <entry>
   <title>I Dub Thee, TuxedoBoard</title>
   <link href="http://www.bradfordembedded.com/2011/04/i-dub-thee-tuxedoboard"/>
   <updated>2011-04-26T00:00:00-07:00</updated>
   <id>hhttp://www.bradfordembedded.com/2011/04/i-dub-thee-tuxedoboard</id>
   <content type="html">&lt;div class='post'&gt;
In order to have a name that I can refer to my planned open source hardware embedded Linux board with, I've chosen TuxedoBoard.  Brian wrote me, &quot;how about the TUX or Tuxedo board, its fitting and fun like beagle.&quot;  Yes, it is! :)&lt;br /&gt;&lt;br /&gt;I've changed the decor of my blog just slightly, replacing the formerly orange background with an almost black one.  It's more fitting of a tuxedo.  This is not &lt;a href=&quot;http://www.amazon.com/gp/product/B000SBH50Y/ref=as_li_ss_tl?ie=UTF8&amp;amp;tag=bradford07-20&amp;amp;linkCode=as2&amp;amp;camp=217145&amp;amp;creative=399349&amp;amp;creativeASIN=B000SBH50Y&quot;&gt;Dumb and Dumber&lt;/a&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; height=&quot;1&quot; src=&quot;http://www.assoc-amazon.com/e/ir?t=&amp;amp;l=as2&amp;amp;o=1&amp;amp;a=B000SBH50Y&amp;amp;camp=217145&amp;amp;creative=399349&quot; style=&quot;border: none !important; margin: 0px !important;&quot; width=&quot;1&quot; /&gt;.&lt;/div&gt;
&lt;h2&gt;Comments&lt;/h2&gt;
&lt;div class='comments'&gt;
&lt;/div&gt;
</content>
 </entry>
 
 <entry>
   <title>More Open Source Hardware Ramblings</title>
   <link href="http://www.bradfordembedded.com/2011/04/more-open-source-hardware-ramblings"/>
   <updated>2011-04-25T00:00:00-07:00</updated>
   <id>hhttp://www.bradfordembedded.com/2011/04/more-open-source-hardware-ramblings</id>
   <content type="html">&lt;div class='post'&gt;
I'm that much closer to designing a completely open source embedded computer!&lt;br /&gt;&lt;br /&gt;I've been reading &lt;a href=&quot;http://www.amazon.com/gp/product/1936719010/ref=as_li_ss_tl?ie=UTF8&amp;tag=bradford07-20&amp;linkCode=as2&amp;camp=217145&amp;creative=399349&amp;creativeASIN=1936719010&quot;&gt;Do the Work&lt;/a&gt;&lt;img src=&quot;http://www.assoc-amazon.com/e/ir?t=&amp;l=as2&amp;o=1&amp;a=1936719010&amp;camp=217145&amp;creative=399349&quot; width=&quot;1&quot; height=&quot;1&quot; border=&quot;0&quot; alt=&quot;&quot; style=&quot;border:none !important; margin:0px !important;&quot; /&gt; by Steven Pressfield and I've been rambling on and on about designing a board to my friend Brian.  The hardest part is starting, then the hardest part is shipping.  I'm working on the starting part and wanted to share my thoughts.&lt;br /&gt;&lt;br /&gt;The concept for an open source embedded board is that everything will be open source.  By everything, I mean everything!  The tools used to design the hardware, both schematics and layout, will be open source tools (currently leaning towards Kicad).  The files used for schematic capture and layout will be open sourced (not just PDFs but real actual files you can pick up and use to make your own board).  The information on how to bring up the board from a blank, just manufactured state, will be online with an open documentation license.  The information on how to build Linux and a bootloader and useful software will be online with an open documentation license.  Everything will be open!&lt;br /&gt;&lt;br /&gt;Along with general openness of the design process, I'd like to keep any software written or used on the board open as well.  So no binary blob kernel drivers, no closed source software, and no non-free IP blocks.  This is hard.  It means no hardware accelerated 3d graphics.  It means limited (probably no) DSP blocks.&lt;br /&gt;&lt;br /&gt;I'd like to be able to sell this board for $100 but I'm not sure if that's a reasonable target price.  I'm not looking to make big bucks doing this, it's a learning exercise for me.  But shipping product to customers is a goal I have because it will force me to actually get things working.  A more realistic price point is probably $150, but then it loses the appeal of being cheap because a BeagleBoard is only $125 now and my board won't offer much more in terms of hardware.&lt;br /&gt;&lt;br /&gt;In order to meet the $100 price goal, I wouldn't use a Cortex-A8 part.  I'd probably use an ARM9 processor.  That gets the price lower but sacrifices a lot of nice things that Cortex-A8 parts have (faster, better floating point, etc).  I'm not yet sure if the trade-off is worth it, in either direction.  I'm leaning towards ARM9 because I think price is really important, even if my board is the only one out there that's completely open.&lt;br /&gt;&lt;br /&gt;As a functionality differentiator, I'd like to have hardware compatibility with &lt;a href=&quot;http://shieldlist.org/&quot;&gt;Arduino shields&lt;/a&gt;.  There's already a huge amount of hardware out there that works well with Arduino systems and is aimed at people who like to play with little computer systems.  Taking advantage of that ecosystem while showing people how they can communicate with the same hardware, but from within Linux, would be really cool.  An ARM9 is hugely more powerful than an ATmega and is a nice halfway point between an Arduino and a full PC (size, power, price, and ability wise).&lt;br /&gt;&lt;br /&gt;Once I have a design that will work, I plan to fund the build of prototypes and shipping hardware using &lt;a href=&quot;http://www.kickstarter.com/&quot;&gt;Kickstarter&lt;/a&gt;.  &lt;a href=&quot;http://kck.st/hxl2x9&quot;&gt;Open Vizsla&lt;/a&gt; inspired me that this type of funding scheme for hardware can really work.&lt;/div&gt;
&lt;h2&gt;Comments&lt;/h2&gt;
&lt;div class='comments'&gt;
&lt;/div&gt;
</content>
 </entry>
 
 <entry>
   <title>Free IP Block Boards?</title>
   <link href="http://www.bradfordembedded.com/2011/04/free-ip-block-boards"/>
   <updated>2011-04-17T00:00:00-07:00</updated>
   <id>hhttp://www.bradfordembedded.com/2011/04/free-ip-block-boards</id>
   <content type="html">&lt;div class='post'&gt;
At the LFCS (Linux Foundation Collaboration Summit) recently, some of the discussion was about system on chip (SoC) vendors including IP blocks (basically special circuitry to interface to the world in a specific way, like for outputting 3D graphics) in their designs that require non-free kernel drivers.  By non-free, I mean that the source code is not available without some type of non-disclosure agreement.  &lt;a href=&quot;http://lwn.net/SubscriberLink/437929/256fdc3dd5a456f0/&quot;&gt;LWN mentioned&lt;/a&gt; this.  It's basically an accepted fact of life in the embedded world right now that if you want certain kinds of hardware, you're stuck with non-free kernel drivers.&lt;br /&gt;&lt;br /&gt;I don't want to deal with non-free IP blocks.  The whole point of using Linux on embedded devices is because stuff works, and when it doesn't, you have the source and can see why.  This enables delivery of a system faster and more effectively.&lt;br /&gt;&lt;br /&gt;Are there any low cost embedded development boards out there that do not include any non-free hardware?  I'd prefer a board where all the drivers exist in the mainline kernel, but stuff in -staging is OK, too.  An ARM processor isn't a requirement, I'm open to MIPS, PowerPC, SuperH, x86, or any other type, just as long as I can use all of the hardware without needing any non-free code.  Oh, and it should cost $150 or less.&lt;/div&gt;
&lt;h2&gt;Comments&lt;/h2&gt;
&lt;div class='comments'&gt;
&lt;/div&gt;
</content>
 </entry>
 
 <entry>
   <title>The Freescale i.MX53 QSB Looks Neat</title>
   <link href="http://www.bradfordembedded.com/2011/04/the-freescale-i-mx53-qsb-looks-neat"/>
   <updated>2011-04-13T00:00:00-07:00</updated>
   <id>hhttp://www.bradfordembedded.com/2011/04/the-freescale-i-mx53-qsb-looks-neat</id>
   <content type="html">&lt;div class='post'&gt;
Yesterday, I received an email from a Freescale representative saying that they would be holding a free day-long &quot;lab&quot; session in Rochester (where I live) next month about the i.MX53 Quick Start Development Board.  Topics to be covered include getting both Linux and Android up and running on the board as well as showing how to set up a development environment on a host PC.  There will be a few different &quot;labs&quot; (mostly following a script I assume) but everything will be provided and I think they include lunch.  All attendees receive a $50 off coupon towards the purchase of an i.MX53 QSB.&lt;br /&gt;&lt;br /&gt;I had never heard of the i.MX53 QSB before so I was intrigued.&lt;br /&gt;&lt;br /&gt;It turns out, the &lt;a href=&quot;http://www.freescale.com/webapp/sps/site/prod_summary.jsp?code=IMX53QSB&quot;&gt;i.MX53 QSB&lt;/a&gt; looks like a pretty cool little board.  It's got Freescale's implementation of an ARM Cortex-A8 core running at 1 GHz, 1 GB of DDR3 RAM, USB, Ethernet, VGA (and LVDS) video output, SD card, microSD card, audio, and an expansion port.  All for $150.  One cool thing you can add to the expansion port is a 800x480 touch screen LCD!&lt;br /&gt;&lt;br /&gt;My impression is that Freescale was inspired by the BeagleBoard-xM, although I don't know for sure.  The &lt;a href=&quot;http://www.freescale.com/files/32bit/doc/user_guide/IMX53QSBRM.pdf&quot;&gt;written documentation&lt;/a&gt; appears to be a bit more in-depth than the BeagleBoard-xM and comes across as more professional but there are a lot of typos.  The price is the same as the BeagleBoard-xM (without a coupon) and the feature set is very similar, except a few nice extras (expansion port and double the RAM).&lt;br /&gt;&lt;br /&gt;I'm very happy to see that Freescale is getting into this market.  The $150 price point is cheap enough for hobbyists (like me) but also cheap enough that employers won't balk at an engineer asking to buy one.  Both the i.MX53 QSB and BeagleBoard-xM are going to help grow the ARM device ecosystem at tremendous rates.&lt;br /&gt;&lt;br /&gt;Will Freescale be able to create a community around the i.MX53 QSB in the same way that the BeagleBoard has?&lt;br /&gt;&lt;br /&gt;That's the million dollar question.  Just having cool hardware or software isn't enough.  Community is probably more important.  Solving problems, posting how-tos, sending code up-stream, having an IRC channel and mailing list...  Without that, the i.MX53 QSB won't be nearly as successful as the BeagleBoards.&lt;br /&gt;&lt;br /&gt;I, for one, welcome our new low cost ARM development boards!&lt;/div&gt;
&lt;h2&gt;Comments&lt;/h2&gt;
&lt;div class='comments'&gt;
&lt;/div&gt;
</content>
 </entry>
 
 <entry>
   <title>Git is Cool!</title>
   <link href="http://www.bradfordembedded.com/2011/04/git-is-cool"/>
   <updated>2011-04-05T00:00:00-07:00</updated>
   <id>hhttp://www.bradfordembedded.com/2011/04/git-is-cool</id>
   <content type="html">&lt;div class='post'&gt;
I'm working on adding a patch to the CLFS embedded book this morning to enable soft floating point support in libgcc for ARM when used with uClibc.  I had committed the patch in my CLFS embedded git repo but with a name that wasn't really in line with other CLFS patches.  I hadn't yet pushed that commit and I wanted to change the name.&lt;br /&gt;&lt;br /&gt;I hadn't realized that I wanted to change the name until I started adding the new patch to the DocBook.  So now I have unstaged changes and I want to change the name of a patch file that had already been committed.  Also, having a commit that just changes the name to what it should have been in the first place seems messy to me, no reason to have two commits when one will do.&lt;br /&gt;&lt;br /&gt;Git makes it soooo easy!  Thank you Git developers!&lt;br /&gt;&lt;br /&gt;Move the file, commit that change (and only that change), stash the unstaged changes, interactively rebase to squash the name change onto the creation of the patch, pop the unstaged changes off the stash buffer, and continue with my DocBook updates!&lt;br /&gt;&lt;br /&gt;$ git mv incorrect-name.patch correct-name.patch&lt;br /&gt;$ git commit -m &quot;Corrected name&quot;&lt;br /&gt;$ git stash&lt;br /&gt;$ git rebase -i HEAD~2&lt;br /&gt;$ git stash pop&lt;br /&gt;&lt;br /&gt;And to think I use to administer a Subversion server and tell everyone how great that was... :)&lt;/div&gt;
&lt;h2&gt;Comments&lt;/h2&gt;
&lt;div class='comments'&gt;
&lt;/div&gt;
</content>
 </entry>
 
 <entry>
   <title>What Is CLFS?</title>
   <link href="http://www.bradfordembedded.com/2011/03/what-is-clfs"/>
   <updated>2011-03-17T00:00:00-07:00</updated>
   <id>hhttp://www.bradfordembedded.com/2011/03/what-is-clfs</id>
   <content type="html">&lt;div class='post'&gt;
In this week's &lt;a href=&quot;http://beagleboard.blogspot.com/2011/03/beaglecast-2011-03-14-beagleboard-xm.html&quot;&gt;BeagleCast&lt;/a&gt;, my blog post about &lt;a href=&quot;http://bradfordembedded.blogspot.com/2011/03/toolchain-check-kernel-check.html&quot;&gt;getting a kernel running&lt;/a&gt; on my BeagleBoard-xM with CLFS got a mention.  That's cool!  But there seemed to be some confusion around what CLFS really is.  Let me try to explain, in my own words:&lt;br /&gt;&lt;br /&gt;CLFS stands for &lt;a href=&quot;http://trac.cross-lfs.org/&quot;&gt;Cross Linux From Scratch&lt;/a&gt;, it's an offshoot of the LFS (&lt;a href=&quot;http://www.linuxfromscratch.org/&quot;&gt;Linux From Scratch&lt;/a&gt;) project.  The goal of both LFS and CLFS is to provide instruction on how to build a Linux system, step by step, from source.  In both projects, first a &lt;a href=&quot;http://en.wikipedia.org/wiki/Toolchain&quot;&gt;toolchain&lt;/a&gt; is built and then a bootable GNU/Linux operating system is built using that toolchain.  CLFS differs from LFS in that CLFS builds a GNU/Linux system for an architecture different than the one doing the building.  For example, if I have an x86 based computer on my desk that I want to use to build GNU/Linux for a PowerPC system I just bought off eBay, I'd use CLFS rather than LFS.&lt;br /&gt;&lt;br /&gt;The methods described by CLFS are very similar to the methods used by &lt;a href=&quot;http://www.openembedded.org/index.php/Main_Page&quot;&gt;OpenEmbedded&lt;/a&gt; or &lt;a href=&quot;http://buildroot.uclibc.org/&quot;&gt;Buildroot&lt;/a&gt;, but each step is described and there's very little automation.  You literally manually build, step by step from upstream source, a toolchain and then a functioning GNU/Linux system.  Throughout the books there is information on all the different choices you are required to make.  For example: if targeting an ARM processor, when building GCC, you have to choose which ARM version to target, like &quot;armv7-a&quot; for Cortex-A8.&lt;br /&gt;&lt;br /&gt;The CLFS project has three different books: Standard, Embedded, and Sysroot.  The Standard book is the most developed book and mostly targets people who want to build a cross-compiled system for a desktop computer system.  The Embedded book (the one I work on) builds a minimal GNU/Linux system using uClibc targeted at embedded devices where resources may be constrained.  The Sysroot book uses a different technique to accomplish similar goals as the Standard book.  Both the Standard and Embedded books are under active development, Sysroot hasn't been updated in a while.&lt;br /&gt;&lt;br /&gt;Where OpenEmbedded and Buildroot hide a lot of the complexity of building a cross compiled version of GNU/Linux, CLFS hides almost nothing.  Think of CLFS as more of a learning experience rather than a quick way to build a cross system.  A big advantage of CLFS over an automated system is that errors are usually easy to identify, since everything's done manually you stay at the terminal and you'll probably watch the configure scripts and compiler output.  If something doesn't look right, you will have a much better idea of where the problem is, if not what the problem is.&lt;br /&gt;&lt;br /&gt;If you'd like to help with the CLFS project, or if you just have questions, come join the IRC channel (#cross-lfs) on Freenode and / or sign up for the clfs-support &lt;a href=&quot;http://trac.cross-lfs.org/wiki/lists&quot;&gt;mailing list&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;PS: On Freenode (both in #cross-lfs and #beagle), I'm user &quot;bradfa&quot;.&lt;/div&gt;
&lt;h2&gt;Comments&lt;/h2&gt;
&lt;div class='comments'&gt;
&lt;/div&gt;
</content>
 </entry>
 
 <entry>
   <title>File System - Check!</title>
   <link href="http://www.bradfordembedded.com/2011/03/file-system-check"/>
   <updated>2011-03-17T00:00:00-07:00</updated>
   <id>hhttp://www.bradfordembedded.com/2011/03/file-system-check</id>
   <content type="html">&lt;div class='post'&gt;
I've gotten an Embedded &lt;a href=&quot;http://cross-lfs.org/view/clfs-embedded/arm/&quot;&gt;CLFS&lt;/a&gt; system running on my BeagleBoard-xM!&lt;br /&gt;I made a &lt;a href=&quot;https://gist.github.com/874183&quot;&gt;public gist of the boot-up&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;I'm still using the supplied U-Boot so I'm not using the automated &quot;bootcmd&quot;, but that's shortly coming up on my list of things to fix (along with getting a few microSD cards).  I've put my kernel (that was &lt;a href=&quot;http://bradfordembedded.blogspot.com/2011/03/toolchain-check-kernel-check.html&quot;&gt;built before&lt;/a&gt; and uses no modules) in the first FAT partition on the microSD card and then created a 1GB ext3 partition as the 3rd partition, which is where my root file system lives.  In order to boot I use the following U-Boot commands:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;setenv console ttyO2,115200n8&lt;/li&gt;&lt;li&gt;mmc init ${mmcdev}&lt;/li&gt;&lt;li&gt;setenv mmcroot /dev/mmcblk0p3 rw&lt;/li&gt;&lt;li&gt;run loaduimage&lt;/li&gt;&lt;li&gt;run mmcboot&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;When booted, the system's only using about 8MB of RAM according to 'top', which isn't half bad.  Granted, it's not doing anything useful yet, but that's a nice starting place.  My system doesn't have networking yet, but that's next up on the to do list along with an SSH server.&lt;br /&gt;&lt;br /&gt;In order to get this far, I've made some changes that aren't yet in the Embedded CLFS book.  I've opened Trac tickets that document the issues and I'll be updating the book soon (hopefully this weekend).&lt;/div&gt;
&lt;h2&gt;Comments&lt;/h2&gt;
&lt;div class='comments'&gt;
&lt;/div&gt;
</content>
 </entry>
 
 <entry>
   <title>Toolchain, Check! Kernel, Check!</title>
   <link href="http://www.bradfordembedded.com/2011/03/toolchain-check-kernel-check"/>
   <updated>2011-03-14T00:00:00-07:00</updated>
   <id>hhttp://www.bradfordembedded.com/2011/03/toolchain-check-kernel-check</id>
   <content type="html">&lt;div class='post'&gt;
I've been working on the &lt;a href=&quot;http://trac.cross-lfs.org/&quot;&gt;CLFS embedded book&lt;/a&gt; for a few months now. &amp;nbsp;I've been learning a lot and my goal has been to get a CLFS embedded system running on my BeagleBoard-xM. I'm now one step closer!&lt;br /&gt;&lt;br /&gt;I've built my own toolchain using CLFS instructions currently found in &lt;a href=&quot;http://git.cross-lfs.org/?p=abradford/clfs-embedded.git&quot;&gt;my git repo&lt;/a&gt;.  My toolchain consists of:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Linux Headers from 2.6.36&lt;/li&gt;&lt;li&gt;GMP 5.0.1&lt;/li&gt;&lt;li&gt;MPFR 3.0.0&lt;/li&gt;&lt;li&gt;MPC 0.8.2&lt;/li&gt;&lt;li&gt;Binutils 2.21&lt;/li&gt;&lt;li&gt;GCC 4.5.2&lt;/li&gt;&lt;li&gt;uClibc 0.9.31 (with uClibc provided patches)&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;My kernel is from &lt;a href=&quot;http://git.kernel.org/?p=linux/kernel/git/tmlind/linux-omap-2.6.git&quot;&gt;tmlind's OMAP tree&lt;/a&gt;, version 2.6.38-rc8. &amp;nbsp;I started with the omap2plus_defconfig and modified it a little bit (although modification may not be needed, still have to check that).&lt;br /&gt;&lt;br /&gt;I'm using the provided xM U-Boot but with a few slight changes to the boot args and boot up sequence:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;setenv console ttyO2,115200n8&lt;/li&gt;&lt;li&gt;mmc init ${mmcdev}&lt;/li&gt;&lt;li&gt;run loaduimage&lt;/li&gt;&lt;li&gt;run mmcboot&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;I've made public gists of the &lt;a href=&quot;https://gist.github.com/869016&quot;&gt;boot console output&lt;/a&gt; and my &lt;a href=&quot;https://gist.github.com/869020&quot;&gt;kernel config&lt;/a&gt;, in case anyone is interested.&lt;br /&gt;&lt;br /&gt;Next step is to get the CLFS embedded filesystem up and running on my xM!&lt;br /&gt;&lt;br /&gt;EDIT: Thought my selection of ABI and triplets might be of interest as well:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;target triplet: armv7a-unknown-linux-uclibceabi&lt;/li&gt;&lt;li&gt;ABI: aapcs-linux&lt;/li&gt;&lt;li&gt;little endian&lt;/li&gt;&lt;li&gt;hard float&lt;/li&gt;&lt;li&gt;arm mode only (no thumb instructions)&lt;/li&gt;&lt;li&gt;vfpv3 floating point hardware&lt;/li&gt;&lt;/ul&gt;Also, happy Pi day!&lt;/div&gt;
&lt;h2&gt;Comments&lt;/h2&gt;
&lt;div class='comments'&gt;
&lt;/div&gt;
</content>
 </entry>
 
 <entry>
   <title>Chromium Minimum Font Size</title>
   <link href="http://www.bradfordembedded.com/2011/03/chromium-minimum-font-size"/>
   <updated>2011-03-03T00:00:00-08:00</updated>
   <id>hhttp://www.bradfordembedded.com/2011/03/chromium-minimum-font-size</id>
   <content type="html">&lt;div class='post'&gt;
I've recently switched to using Chromium. &amp;nbsp;I liked Firefox / Iceweasel but it has gotten a bit slower over time and Chromium is now faster for the places I visit on the web. &amp;nbsp;Also, all the plugins I use on Firefox / Iceweasel are now available on Chromium (mainly Adblock Plus and Xmarks).&lt;br /&gt;&lt;br /&gt;But one thing I was missing, that Firefox / Iceweasel had, was an easy way to set the minimum font size through the GUI settings panel. &amp;nbsp;Firefox / Iceweasel makes it easy, just pick the smallest font size you want from a drop down menu where you pick your default fonts. &amp;nbsp;Chromium (at least the version that ships with Debian 6) doesn't have a menu choice to set this and the default was causing some pages I visit to have smaller fonts than I desired. &amp;nbsp;And I don't like having to zoom.&lt;br /&gt;&lt;br /&gt;But the fix is easy!&lt;br /&gt;Simply open up your ~/.config/chromium/Default/Preferences file and in the &quot;webkit&quot; section, add these two lines (make sure Chromium is not running when you both open and save the file):&lt;br /&gt;&lt;br /&gt;&quot;minimum_font_size&quot;: 14,&lt;br /&gt;&quot;minimum_logical_font_size&quot;: 14&lt;br /&gt;&lt;br /&gt;You can substitute your favorite minimum font size for the 14 I've chosen. &amp;nbsp;Next time you start Chromium, fonts won't be smaller than 14! :)&lt;/div&gt;
&lt;h2&gt;Comments&lt;/h2&gt;
&lt;div class='comments'&gt;
&lt;/div&gt;
</content>
 </entry>
 
 <entry>
   <title>Multiple Concurrent Linux Distributions in Debian Squeeze</title>
   <link href="http://www.bradfordembedded.com/2011/02/multiple-concurrent-linux-distributions-in-debian-squeeze"/>
   <updated>2011-02-28T00:00:00-08:00</updated>
   <id>hhttp://www.bradfordembedded.com/2011/02/multiple-concurrent-linux-distributions-in-debian-squeeze</id>
   <content type="html">&lt;div class='post'&gt;
Ted Dziuba inspired me to try installing &lt;a href=&quot;http://teddziuba.com/2011/01/multiple-concurrent-linux-distros.html&quot;&gt;multiple concurrent Linux distributions&lt;/a&gt; inside of an existing distribution. &amp;nbsp;This is really handy for testing. &amp;nbsp;Go try it (it won't take long). &amp;nbsp;It's really awesome!&lt;br /&gt;&lt;br /&gt;Ted's instructions are rather minimal, although are a great place to start. &amp;nbsp;I also found the&amp;nbsp;&lt;a href=&quot;http://wiki.debian.org/Debootstrap&quot;&gt;Debian Wiki - Debootstrap&lt;/a&gt;&amp;nbsp;page to be helpful.&lt;br /&gt;&lt;br /&gt;In my case, I'm running Debian 6 squeeze on my desktop machine. &amp;nbsp;I've installed Debian 5 lenny and Ubuntu 10.04 lucid as chroot environments. &amp;nbsp;If after installing a Debian release, when running apt, you get errors about not being able to authenticate packages, make sure you run &quot;apt-get update&quot; first. &amp;nbsp;That will take care of it.&lt;br /&gt;&lt;br /&gt;There's no &quot;debian-minimal&quot; package like there is for Ubuntu but (as root in the chroot environment) a quick &quot;apt-get update &amp;amp;&amp;amp; apt-get install aptitude sudo nano&quot; got me to a place where installing the things I want is easy.&lt;br /&gt;&lt;br /&gt;One thing to be careful of, your user is still your user inside the chroot environment and your home directory is still your home directory! &amp;nbsp;If you delete stuff in your home directory, it really will be gone, whereas if you delete / modify stuff (inside the chroot) from /etc and other system directories, it's only within the chroot.&lt;br /&gt;&lt;br /&gt;If you'd like to use rinse to install RedHat based distributions that aren't included by default (no recent Fedoras are for Debian 6's version of rinse), take a look at&amp;nbsp;the &lt;a href=&quot;http://gitorious.org/rinse/rinse/trees/master&quot;&gt;rinse Gitorious tree&lt;/a&gt; and grab the more up-to-date /etc/rinse/rinse.conf and *.packages files. &amp;nbsp;I'll be doing this shortly and I'll post a follow up after installing some RedHat distros.&lt;br /&gt;&lt;br /&gt;See after the jump for list of commands I used to install both lenny and lucid...&lt;br /&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;sudo mkdir -pv /opt/chroot/lenny&lt;br /&gt;sudo debootstrap --variant=buildd --arch amd64 \&lt;br /&gt;&amp;nbsp;lenny /opt/chroot/lenny/ http://mirror.rit.edu/debian/&lt;br /&gt;sudo mkdir -p /opt/chroot/lucid&lt;br /&gt;sudo debootstrap --variant=buildd --arch amd64 \&lt;br /&gt;&amp;nbsp;lucid /opt/chroot/lucid http://mirror.rit.edu/ubuntu/&lt;/div&gt;
&lt;h2&gt;Comments&lt;/h2&gt;
&lt;div class='comments'&gt;
&lt;div class='comment'&gt;
&lt;div class='author'&gt;Andrew&lt;/div&gt;
&lt;div class='content'&gt;
For Ubuntu lucid, when in the chroot, you may get some errors when running apt (or other programs).  They&amp;#39;ll look like this: &amp;quot;start: Unable to connect to Upstart: Failed to connect to socket /com/ubuntu/upstart: Connection refused&amp;quot;&lt;br /&gt;&lt;br /&gt;To fix these issues with upstart (which are only evident in the chroot), check out this bug report: https://bugs.launchpad.net/ubuntu/karmic/+source/upstart/+bug/430224&lt;/div&gt;
&lt;/div&gt;
&lt;div class='comment'&gt;
&lt;div class='author'&gt;Andrew&lt;/div&gt;
&lt;div class='content'&gt;
If you use the Gitorious /etc/rinse/*.packages files to install Fedora 13, just be forewarned that you may have an issue when attempting to run yum.  The issue will be the errror: &amp;quot;Error: Cannot retrieve repository metadata (repomd.xml) for repository: fedora&amp;quot;&lt;br /&gt;&lt;br /&gt;In the /etc/yum.repos.d/fedora{,-updates}.repo files, simply comment out the mirrorlist line and put your favorite local Fedora mirror in for baseurl (with the actual path).  This will make yum happy.&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
</content>
 </entry>
 
 <entry>
   <title>Product Compliments and FPGAs, They Don't Get It!</title>
   <link href="http://www.bradfordembedded.com/2011/02/product-compliments-fpgas-they-don-t-get-it"/>
   <updated>2011-02-27T00:00:00-08:00</updated>
   <id>hhttp://www.bradfordembedded.com/2011/02/product-compliments-fpgas-they-don-t-get-it</id>
   <content type="html">&lt;div class='post'&gt;
The other day, I was reading Joel Spolsky's &lt;a href=&quot;http://www.joelonsoftware.com/articles/StrategyLetterV.html&quot;&gt;blog post about product compliments&lt;/a&gt;.&amp;nbsp; Joel states that, &quot;Smart companies try to commoditize their products' compliments.&quot;&amp;nbsp; The compliments of a product are the other things that people buy with that product.&amp;nbsp; For example, operating systems and software compliment PC sales.&amp;nbsp; When you buy a PC, you'll also probably buy an operating system (even if it comes with the PC) and some software.&amp;nbsp; In this case, the software vendors want to sell you software, so it's their prerogative to make PCs into a commodity such that the price is as low as possible.&amp;nbsp; For the most part, this has happened.&lt;br /&gt;&lt;br /&gt;One interesting side effect of thinking this way is you start to look at other companies and industries and notice how they're not doing this at all.&amp;nbsp; Like in FPGA land.&amp;nbsp; Really, there's the two big players: Altera and Xilinx.&amp;nbsp; Neither of them is trying to commoditize their products' compliments, and for what it's worth, I can't tell which product they sell is the product and which is the compliment.&lt;br /&gt;&lt;br /&gt;With FPGAs you really need two things: the physical part and the software to realize a design.&amp;nbsp; In either case, both Altera and Xilinx will charge you.&amp;nbsp; You have to pay for the parts (which are really expensive if you buy them from online retailers like DigiKey but are much more reasonably priced direct or from distributors in volume) and you have to pay for the synthesis software!&amp;nbsp; Some will argue that you don't have to use just Altera's or Xilinx's synthesis software, other vendors will sell you software that will work, but that software isn't cheap either.&amp;nbsp; (For the companies selling just synthesis software, the physical chip is the commodity compliment, which kind of works, but not well enough.)&lt;br /&gt;&lt;br /&gt;If you assume that Altera and Xilinx want to sell you physical chips, they should be driving the synthesis software to be a commodity and be low priced.&amp;nbsp; If they want to sell you software, they should be working to make their chips as commodity like as possible (easy to switch from one company's chips to the other).&amp;nbsp; But they aren't doing either of these things!&lt;br /&gt;Yes, you can get free versions of Altera's and Xilinx's tools, but those tools are limited and &quot;real&quot; FPGA designers will probably need the full version of the tools.&lt;br /&gt;&lt;br /&gt;So what's my point?&lt;br /&gt;My point is the FPGA landscape is F'ed up.&amp;nbsp; They're missing out on gaining new customers who are very price conscious (like hobbyists or bootstrapped start-up companies) but need advanced features in the synthesis software.&amp;nbsp; There's going to be a huge market out there for hobbyist type development for FPGAs soon (if it hasn't started already) and both Altera and Xilinx are going to miss out on it.&lt;br /&gt;&lt;br /&gt;I predict that as soon as there's an open source / free software program that can do decent FPGA synthesis, both Altera and Xilinx are going to feel the pain.&amp;nbsp; I also predict that one of those little FPGA companies are going to reap huge benefits, because they'll be the ones behind it.&lt;/div&gt;
&lt;h2&gt;Comments&lt;/h2&gt;
&lt;div class='comments'&gt;
&lt;/div&gt;
</content>
 </entry>
 
 <entry>
   <title>Low Cost ARM Computer</title>
   <link href="http://www.bradfordembedded.com/2011/02/low-cost-arm-computer"/>
   <updated>2011-02-23T00:00:00-08:00</updated>
   <id>hhttp://www.bradfordembedded.com/2011/02/low-cost-arm-computer</id>
   <content type="html">&lt;div class='post'&gt;
I was thinking about my &lt;a href=&quot;http://bradfordembedded.blogspot.com/2011/01/low-cost-arm-fpga-computer.html&quot;&gt;ARM + FPGA computer&lt;/a&gt; idea some more. &amp;nbsp;There's already a lot of competition in the single board computer space and adding just another entry there isn't really worthwhile on a small scale, the prices would just be too high to attract any users. &amp;nbsp;However, there's currently a rather small market for single board computer kits with free software like ideals.&lt;br /&gt;&lt;br /&gt;What if the goals of the kit were to be a free hardware project? &amp;nbsp;By free hardware, I mean as close to open source / free software ideals as possible. &amp;nbsp;The specifications, schematics, BOM, layout, and manufacturing files would all be created using free software and available to everyone. &amp;nbsp;If you wanted to build your own version of the computer, you can either take the files and modify them and build one yourself, buy each component from the vendor of your choice, or buy pre-built models from a vendor. &amp;nbsp;Different vendors could compete with a commodity (the free hardware design kits) but also have the freedom to modify the kits to add extra functionality, reduce costs, or change things all together. &amp;nbsp;It'd be a reference design but with a free hardware spin.&lt;br /&gt;&lt;br /&gt;Along with publishing the design of the hardware, there'd also be a book like &lt;a href=&quot;http://trac.cross-lfs.org/&quot;&gt;Cross Linux From Scratch&lt;/a&gt; made specific for the released designs. &amp;nbsp;With the combination of free hardware and free documentation, it'd be an amazing teaching tool for people wanting to learn about embedded systems.&lt;br /&gt;&lt;br /&gt;Currently, projects like the &lt;a href=&quot;http://beagleboard.org/hardware/design&quot;&gt;BeagleBoard&lt;/a&gt; offer some of their design files online for free, but you'll need expensive tools in order to edit them. &amp;nbsp;There are free software tools out there that are capable (&lt;a href=&quot;http://www.gpleda.org/index.html&quot;&gt;gEDA&lt;/a&gt;) along with lower cost tools (&lt;a href=&quot;http://www.cadsoftusa.com/&quot;&gt;Eagle&lt;/a&gt;). &amp;nbsp;If you want to attract&amp;nbsp;hobbyists&amp;nbsp;and very small companies to the embedded Linux market, using low cost or free software tools and providing high quality documentation is the way to go.&lt;/div&gt;
&lt;h2&gt;Comments&lt;/h2&gt;
&lt;div class='comments'&gt;
&lt;/div&gt;
</content>
 </entry>
 
 <entry>
   <title>KDE4 Sucks</title>
   <link href="http://www.bradfordembedded.com/2011/02/kde4-sucks"/>
   <updated>2011-02-12T00:00:00-08:00</updated>
   <id>hhttp://www.bradfordembedded.com/2011/02/kde4-sucks</id>
   <content type="html">&lt;div class='post'&gt;
I upgraded to Debian 6 Squeeze last weekend on my desktop. &amp;nbsp;I was very excited to get some more up-to-date packages (git, gcc, kernel, and chromium) but I'm&amp;nbsp;disappointed&amp;nbsp;by KDE4.&amp;nbsp; Yes, I realize I'm a few years behind the rest of the world coming to this conclusion but that's the curse / blessing of Debian stable.&lt;br /&gt;&lt;br /&gt;I had been using KDE3 in Lenny.&amp;nbsp; It did everything I wanted and generally kept out of my way.&amp;nbsp; KDE4 is completely different, in a very bad way.&amp;nbsp; My computer isn't slow, although it is 4 years old, but KDE4's out of the box configuration was way too laggy.&lt;br /&gt;&lt;br /&gt;It's back to Gnome for me and I'm actually liking the configuration of it that comes with Squeeze.&amp;nbsp; It does what I need, was quick / easy to configure to my liking, and it gets out of my way.&amp;nbsp; That's how it &lt;b&gt;should &lt;/b&gt;be.&lt;/div&gt;
&lt;h2&gt;Comments&lt;/h2&gt;
&lt;div class='comments'&gt;
&lt;div class='comment'&gt;
&lt;div class='author'&gt;Andrew&lt;/div&gt;
&lt;div class='content'&gt;
Just read today about the Trinity project which is maintaining and updating / improving the KDE 3.5 codebase.  It&amp;#39;s not an official part of the KDE project, but is definitely worth checking out.  They have repositories set up for RHEL, Debian, Ubuntu, Fedora, and Slackware to make installation easy.&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://www.trinitydesktop.org/&quot; rel=&quot;nofollow&quot;&gt;http://www.trinitydesktop.org/&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
</content>
 </entry>
 
 <entry>
   <title>Pick an ARM ABI When Building GCC</title>
   <link href="http://www.bradfordembedded.com/2011/02/pick-an-arm-abi-when-building-gcc"/>
   <updated>2011-02-04T00:00:00-08:00</updated>
   <id>hhttp://www.bradfordembedded.com/2011/02/pick-an-arm-abi-when-building-gcc</id>
   <content type="html">&lt;div class='post'&gt;
If you follow the &lt;a href=&quot;http://cross-lfs.org/view/clfs-embedded/arm/&quot;&gt;CLFS embedded book for ARM&lt;/a&gt;, you'll see that your ABI choice isn't used until compiling packages (ie: after you've built a cross-GCC).&amp;nbsp; What you will also find is that if you want to use the aapcs-linux ABI (EABI) and you choose your target triplet to be arm-unknown-linux-uclibc (like the book says) that you'll have issues.&lt;br /&gt;&lt;br /&gt;Your issues will begin with configuring e2fsprogs using the $BUILD variable and will look like this:&lt;br /&gt;error: FPA is unsupported in the AAPCS&lt;br /&gt;&lt;br /&gt;That's a very unhelpful error message.  What you want it to tell you is why the heck the configure script decided to use FPA and AAPCS together if they obviously don't work.&lt;br /&gt;&lt;br /&gt;What happened was you chose your target triplet to be a triplet that GCC's configure thinks uses the OABI, but now you're building some software and telling GCC to use the EABI.  Rather than spit out &quot;Hey, you built GCC with the OABI and now you're trying to use the EABI!&quot; it just complains about FPA.&lt;br /&gt;&lt;br /&gt;To solve this, if you plan to use the EABI, set your target triplet to be arm-unknown-linux-uclibcgnueabi.  Then when you build GCC, pass it the --with-abi=aapcs-linux switch.  This will produce a GCC that builds for the EABI.&lt;br /&gt;&lt;br /&gt;This caused me quite a few hours of banging my head on my keyboard.  The &lt;a href=&quot;http://buildroot.uclibc.org/&quot;&gt;Buildroot&lt;/a&gt; people know this, and it's included in their build scripts, but searching Google was not very helpful.&lt;/div&gt;
&lt;h2&gt;Comments&lt;/h2&gt;
&lt;div class='comments'&gt;
&lt;div class='comment'&gt;
&lt;div class='author'&gt;Andrew&lt;/div&gt;
&lt;div class='content'&gt;
This (both my post and comment) has since been fixed! :)&lt;/div&gt;
&lt;/div&gt;
&lt;div class='comment'&gt;
&lt;div class='author'&gt;Andrew&lt;/div&gt;
&lt;div class='content'&gt;
You&amp;#39;ll also need to make sure you pick the EABI for uClibc.  The present patches only contain an OABI uClibc configuration.  &amp;quot;make menuconfig&amp;quot; will help out there until it gets updated.&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
</content>
 </entry>
 
 <entry>
   <title>My Embedded Cross Linux From Scratch Git Repo</title>
   <link href="http://www.bradfordembedded.com/2011/01/my-embedded-cross-linux-from-scratch-git-repo"/>
   <updated>2011-01-29T00:00:00-08:00</updated>
   <id>hhttp://www.bradfordembedded.com/2011/01/my-embedded-cross-linux-from-scratch-git-repo</id>
   <content type="html">&lt;div class='post'&gt;
I was maintaining a Git repository that mirrored the embedded CLFS book's master and my own changes on &lt;a href=&quot;https://github.com/bradfa/clfs-embedded&quot;&gt;github&lt;/a&gt; but I've now got &lt;a href=&quot;http://git.cross-lfs.org/?p=abradford/clfs-embedded.git;a=summary&quot;&gt;my own repo&lt;/a&gt; on the actual CLFS server.&amp;nbsp; If you'd like to follow it, feel free.&lt;br /&gt;&lt;br /&gt;Clone the book from my repo:&lt;br /&gt;$ git clone git://git.cross-lfs.org/abradford/clfs-embedded.git&lt;br /&gt;&lt;br /&gt;Build instructions to make the book into HTML and other formats are included.&amp;nbsp; For the impatient, create the HTML version:&lt;br /&gt;$ make BASEDIR=&lt;i&gt;[where you want them to go]&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Check out the &lt;a href=&quot;http://trac.cross-lfs.org/&quot;&gt;main CLFS page&lt;/a&gt; and participate on the &lt;a href=&quot;http://trac.cross-lfs.org/wiki/lists#MailingLists&quot;&gt;mailing lists&lt;/a&gt; if you have issues.&lt;br /&gt;&lt;br /&gt;EDIT: If you'd like to simply browse my repo via a webbrowser, check out:&lt;br /&gt;&amp;nbsp;&lt;a href=&quot;http://git.cross-lfs.org/?p=abradford/clfs-embedded.git&quot;&gt;http://git.cross-lfs.org/?p=abradford/clfs-embedded.git&lt;/a&gt;&lt;/div&gt;
&lt;h2&gt;Comments&lt;/h2&gt;
&lt;div class='comments'&gt;
&lt;div class='comment'&gt;
&lt;div class='author'&gt;israr&lt;/div&gt;
&lt;div class='content'&gt;
ok...fine i got it andrew. now i will start right from scratch from your&amp;#39;s book , let&amp;#39;s hope that i can do it, because, in online book i m stuck at GCC-final build.it is so frustrating .Anways , thanks a lot for reply andrew.&lt;/div&gt;
&lt;/div&gt;
&lt;div class='comment'&gt;
&lt;div class='author'&gt;Andrew&lt;/div&gt;
&lt;div class='content'&gt;
israr, the main difference between my repository and the main repository or the online edition of the book is that mine usually contains a few additional updates.  Every so often, my changes will get pulled into the main book.&lt;br /&gt;&lt;br /&gt;You can see the difference between my repository and the main repository by looking at the git log.  If you view the web version of my repo&amp;#39;s git log, the &amp;quot;mainline&amp;quot; branch is the current mainline book.  My book is at the &amp;quot;master&amp;quot; branch.  Everything in between is how my repo is different.&lt;br /&gt;&lt;br /&gt;Link to my repo:&lt;br /&gt;&lt;a href=&quot;http://git.cross-lfs.org/?p=abradford/clfs-embedded.git&quot; rel=&quot;nofollow&quot;&gt;http://git.cross-lfs.org/?p=abradford/clfs-embedded.git&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class='comment'&gt;
&lt;div class='author'&gt;israr&lt;/div&gt;
&lt;div class='content'&gt;
hello andrew !...another night gone to make it HTML..but succeded .&lt;br /&gt;  Now 1 question:&lt;br /&gt;-&amp;gt; Is there any significant difference in your book and   &lt;br /&gt;   clfs&amp;#39;s, apart from some packages are latest&lt;/div&gt;
&lt;/div&gt;
&lt;div class='comment'&gt;
&lt;div class='author'&gt;israr&lt;/div&gt;
&lt;div class='content'&gt;
hello Andrew!&lt;br /&gt;  could u please guide me , hwere i can get the BOOK in HTML/PDF format.I spent my whole night installing, &lt;br /&gt;If you want to convert the XML to HTML, install the following components:&lt;br /&gt;* libxml2 * libxslt * DocBook DTD * DocBook XSL  &lt;br /&gt;* HTMLTidy * lynx * JDK * FOP and JAI&lt;br /&gt; some of them installed in ubuntu10.10 by [apt-get],but&lt;br /&gt;some are not.thanks in advance,please help.&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
</content>
 </entry>
 
 <entry>
   <title>Confusion When Cross Compiling GCC --without-headers and --with-newlib</title>
   <link href="http://www.bradfordembedded.com/2011/01/confusion-when-cross-compiling-gcc-without-headers-and-with-newlib"/>
   <updated>2011-01-29T00:00:00-08:00</updated>
   <id>hhttp://www.bradfordembedded.com/2011/01/confusion-when-cross-compiling-gcc-without-headers-and-with-newlib</id>
   <content type="html">&lt;div class='post'&gt;
When building a GCC cross compiler, you're going to run into GCC's configure options named --without-headers and --with-newlib.&amp;nbsp; If the configure script help isn't very helpful, check out this &lt;a href=&quot;http://gcc.gnu.org/ml/gcc-help/2009-07/msg00373.html&quot;&gt;GCC help mailing list thread&lt;/a&gt; and read the &lt;a href=&quot;http://gcc.gnu.org/install/configure.html&quot;&gt;online help&lt;/a&gt; for the configure script.&lt;/div&gt;
&lt;h2&gt;Comments&lt;/h2&gt;
&lt;div class='comments'&gt;
&lt;/div&gt;
</content>
 </entry>
 
 <entry>
   <title>Next Steps - January 2011</title>
   <link href="http://www.bradfordembedded.com/2011/01/next-steps-january-2011"/>
   <updated>2011-01-23T00:00:00-08:00</updated>
   <id>hhttp://www.bradfordembedded.com/2011/01/next-steps-january-2011</id>
   <content type="html">&lt;div class='post'&gt;
Some things I'd like to do next:&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Compile a spreadsheet of all the major parts on the BeagleBoard-xM with links to the part product page and datasheet.&lt;/li&gt;&lt;li&gt;Understand why the $BUILD variable gets set to the -mabi= option in CLFS embedded section 6.3 and what the impact of this is.&amp;nbsp; Should it get set when building GCC rather than for each package?&amp;nbsp; See &lt;a href=&quot;http://trac.cross-lfs.org/ticket/620&quot;&gt;trac ticket 620&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;Set up a git repo locally and follow the CLFS embedded book within the repo to enable me to better react to and understand changes.&amp;nbsp; In this way, if some part of the book changes, I can go back to a tag just before the change and then be able to tell what the change has done.&amp;nbsp; I'll also be able to get a better idea of what files get put in what places as parts of the CLFS embedded book don't have good info on this.&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;
&lt;h2&gt;Comments&lt;/h2&gt;
&lt;div class='comments'&gt;
&lt;/div&gt;
</content>
 </entry>
 
 <entry>
   <title>BeagleBoard-xM Datasheets</title>
   <link href="http://www.bradfordembedded.com/2011/01/beagleboard-xm-datasheets"/>
   <updated>2011-01-23T00:00:00-08:00</updated>
   <id>hhttp://www.bradfordembedded.com/2011/01/beagleboard-xm-datasheets</id>
   <content type="html">&lt;div class='post'&gt;
I've compiled a list of all the major BeagleBoard-xM parts and links to the part product pages (and to the part datasheets) in a &lt;a href=&quot;https://spreadsheets.google.com/ccc?key=0AlTRzDMNNOQkdFNJMnhzX2FPekZrdl9FZng4eFhFRGc&amp;amp;hl=en&quot;&gt;Google spreadsheet&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;You can find the schematic, BOM, system reference manual, and layout files on &lt;a href=&quot;http://beagleboard.org/hardware/design&quot;&gt;beagleboard.org/hardware/design&lt;/a&gt;.&lt;/div&gt;
&lt;h2&gt;Comments&lt;/h2&gt;
&lt;div class='comments'&gt;
&lt;/div&gt;
</content>
 </entry>
 
 <entry>
   <title>Micron Is Annoying</title>
   <link href="http://www.bradfordembedded.com/2011/01/micron-is-annoying"/>
   <updated>2011-01-21T00:00:00-08:00</updated>
   <id>hhttp://www.bradfordembedded.com/2011/01/micron-is-annoying</id>
   <content type="html">&lt;div class='post'&gt;
I'm attempting to compile all of the datasheets for the parts used on the BeagleBoard-xM, but Micron is being unhelpful.&amp;nbsp; Every part used on the BeagleBoard-xM has a publicly available datasheet except the package-on-package Micron memory.&lt;br /&gt;&lt;br /&gt;The Micron part number is MT46H128M32L2KQ-5 but Micron won't let me download the datasheet unless I create an account (so I did) and then explain my expected development time, expected product launch time, expected monthly quantities, and provide an explanation of my design (which I'm not designing since I'm just looking for info on a board I bought).&amp;nbsp; So I put some values in and now my &quot;request has been forwarded to the appropriate product group.&quot;&lt;br /&gt;WTF does that mean? &lt;br /&gt;&lt;br /&gt;Micron, this is stupid!&amp;nbsp; It's a memory chip.&amp;nbsp; Just make the datasheet available to everyone.&amp;nbsp; There's no way any of your intellectual property will get leaked through a datasheet.&amp;nbsp; Just stop with this nonsense.&lt;/div&gt;
&lt;h2&gt;Comments&lt;/h2&gt;
&lt;div class='comments'&gt;
&lt;/div&gt;
</content>
 </entry>
 
 <entry>
   <title>Low Cost ARM + FPGA Computer?</title>
   <link href="http://www.bradfordembedded.com/2011/01/low-cost-arm-fpga-computer"/>
   <updated>2011-01-21T00:00:00-08:00</updated>
   <id>hhttp://www.bradfordembedded.com/2011/01/low-cost-arm-fpga-computer</id>
   <content type="html">&lt;div class='post'&gt;
What if there was a low cost, small, power efficient ARM processor based computer with a reasonable FPGA attached to it?&amp;nbsp; I'm thinking 600 MHz ARM Cortex with an Altera Cyclone4.&amp;nbsp; What if this board could be powered by &lt;a href=&quot;http://en.wikipedia.org/wiki/Power_over_Ethernet&quot;&gt;Power over Ethernet (PoE)&lt;/a&gt;?&amp;nbsp; What if the ARM processor could reprogram the FPGA over JTAG?&lt;br /&gt;&lt;br /&gt;As long as the interface between the ARM and FPGA was fast enough, the types of things this computer could do would be rather vast.&amp;nbsp; Some computations are much faster in &quot;dedicated&quot; silicon (an FPGA isn't really dedicated silicon, but for the money it's close enough) than in general purpose processors.&amp;nbsp; For example, crypto processing is dramatically faster in &quot;dedicated&quot; silicon than in a general purpose processor.&lt;br /&gt;&lt;br /&gt;What if you could have 47 of these little ARM + FPGA computers plugged into a 48 port PoE switch? (Or 15 in a 16 port switch?)&amp;nbsp; The switch would power them and allow them to communicate.&amp;nbsp; A desktop PC could coordinate the operations of the boards and feed each one the data for computations.&amp;nbsp; It'd basically be a mini cluster of FPGAs that could scale and be affordable.&amp;nbsp; It'd also be easy to wire compared to normal computers as there's only one wire per ARM + FPGA computer (the Ethernet cord provides both communications and power).&amp;nbsp; And if you can't afford to buy a lot of nodes, you can just buy a few and expand when you can afford it.&amp;nbsp; And if newer versions come out, you can add them to your cluster.&lt;br /&gt;&lt;br /&gt;There's lots of software out there to coordinate clusters of computers, this is nothing new.&amp;nbsp; But currently a lot of the crypto busting computing power that's available comes as PCI-e cards with very expensive FPGAs attached.&amp;nbsp; There's also the problem of scaling a PCI-e based solution, once you run out of PCI-e slots, you need another expensive computer, and you'll still need coordination software and expensive networking if you have more than one PC.&lt;br /&gt;&lt;br /&gt;If the ARM + FPGA computer could cost around $100, come with great documentation and &lt;a href=&quot;http://en.wikipedia.org/wiki/Free_software&quot;&gt;libre licenses&lt;/a&gt; for the software and FPGA code, plus offer professional support, I wonder if anyone would buy it...&lt;/div&gt;
&lt;h2&gt;Comments&lt;/h2&gt;
&lt;div class='comments'&gt;
&lt;div class='comment'&gt;
&lt;div class='author'&gt;Andrew&lt;/div&gt;
&lt;div class='content'&gt;
An ARM processor like TI&amp;#39;s &lt;a href=&quot;http://focus.ti.com/docs/prod/folders/print/am3505.html&quot; rel=&quot;nofollow&quot;&gt;AM3505&lt;/a&gt; 600 MHz Cortex-A8 that costs $13.75 (USD) in quantities of 1000 (or $22 in qty of 1), has an Ethernet MAC, USB, SPI, DDR2 controller, and comes in a 1mm pitch BGA package, would be awesome for this computer.&lt;br /&gt;&lt;br /&gt;Throw 1 GB of DDR2, an Ethernet PHY, and a quality FPGA on there and we&amp;#39;re off to the races! :)&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
</content>
 </entry>
 
 <entry>
   <title>Shared and Static Libraries</title>
   <link href="http://www.bradfordembedded.com/2011/01/shared-and-static-libraries"/>
   <updated>2011-01-17T00:00:00-08:00</updated>
   <id>hhttp://www.bradfordembedded.com/2011/01/shared-and-static-libraries</id>
   <content type="html">&lt;div class='post'&gt;
I've been reading&amp;nbsp;&lt;a href=&quot;http://www.amazon.com/Introduction-GCC-GNU-Compilers/dp/0954161793?ie=UTF8&amp;amp;tag=bradford07-20&amp;amp;link_code=btl&amp;amp;camp=213689&amp;amp;creative=392969&quot; target=&quot;_blank&quot;&gt;An Introduction to GCC: For the GNU Compilers GCC and G++&lt;/a&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; height=&quot;1&quot; src=&quot;http://www.assoc-amazon.com/e/ir?t=bradford07-20&amp;amp;l=btl&amp;amp;camp=213689&amp;amp;creative=392969&amp;amp;o=1&amp;amp;a=0954161793&quot; style=&quot;border: medium none ! important; margin: 0px ! important; padding: 0px ! important;&quot; width=&quot;1&quot; /&gt; (also available &lt;a href=&quot;http://www.network-theory.co.uk/docs/gccintro/&quot;&gt;online for free&lt;/a&gt;, from the publisher).&amp;nbsp; I'm not that experienced with GCC and there's a lot of good information in this book.&amp;nbsp; It's a little out dated but I believe most still applies to today's versions of GCC.&lt;br /&gt;&lt;br /&gt;One part of the book discusses libraries.&amp;nbsp; I've not really had any experience with libraries and they always seemed to mystify me.&amp;nbsp; I found this quote to really clear one part of that up:&lt;br /&gt;&lt;br /&gt;&quot;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;&quot;&gt;External libraries are usually provided in two forms: static libraries and shared libraries. Static libraries are the ‘.a’ files seen earlier. When a program is linked against a static library, the machine code from the object files for any external functions used by the program is copied from the library into the final executable.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style=&quot;font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;&quot;&gt;Shared libraries are handled with a more advanced form of linking, which makes the executable file smaller. They use the extension ‘.so’, which stands for shared object.&lt;/span&gt;&lt;/span&gt;&quot;&lt;br /&gt;&lt;br /&gt;It's simple, straight forward, and now that I understand, I feel silly for previously not understanding libraries.&amp;nbsp; And besides that, the discussion about LD_LIBRARY_PATH (loader library path) and LIBRARY_PATH (linker library path) is very helpful.&amp;nbsp; &lt;a href=&quot;http://www.network-theory.co.uk/docs/gccintro/gccintro_23.html&quot;&gt;Section 3.1.2&lt;/a&gt; starts a very good explanation.&lt;/div&gt;
&lt;h2&gt;Comments&lt;/h2&gt;
&lt;div class='comments'&gt;
&lt;/div&gt;
</content>
 </entry>
 
 <entry>
   <title>It's Alive! (The BeagleBoard-xM That Is)</title>
   <link href="http://www.bradfordembedded.com/2011/01/it-s-alive-the-beagleboard-xm-that-is"/>
   <updated>2011-01-12T00:00:00-08:00</updated>
   <id>hhttp://www.bradfordembedded.com/2011/01/it-s-alive-the-beagleboard-xm-that-is</id>
   <content type="html">&lt;div class='post'&gt;
My BeagleBoard-xM lives!&lt;br /&gt;&lt;br /&gt;Granted, using the provided Angstrom distribution, but that's a good first step (and it verifies my hardware is working properly).&lt;br /&gt;&lt;br /&gt;I've made &lt;a href=&quot;https://gist.github.com/777123&quot;&gt;a public gist&lt;/a&gt; for those interested in the output over the serial port (the DB9 style one) during boot.&amp;nbsp; If you've got a BeagleBoard-xM and are using the supplied SD card image, on first boot, just know it takes forever and a day to read the ramdisk.&lt;br /&gt;&lt;br /&gt;Oh, and in case anyone wants to order a power supply, real serial cable, plastic standoffs, and plastic screws (to get it off the table), here's the &lt;a href=&quot;http://www.digikey.com/&quot;&gt;DigiKey&lt;/a&gt; part numbers you'll need:&lt;br /&gt;Power supply (5V @ 2.6A): T988-P5P-ND&lt;br /&gt;3m male to female DB9 serial cable (straight through): AE9871-ND&lt;br /&gt;M3, 15mm long, hex, threaded plastic standoffs (need 4): 25512K-ND&lt;br /&gt;M3, 6mm long, flat head driver, plastic screws (need 4): 29341K-ND&lt;br /&gt;&lt;br /&gt;In all, the accessories should run about $23 (USD) plus shipping and tax.&amp;nbsp; You don't need the USB OTG cable (besides, it can't supply enough juice to use the BeagleBoard-xM USB ports as a host).&lt;br /&gt;&lt;br /&gt;Now to build my own version of Linux for it!&lt;br /&gt;&lt;br /&gt;EDIT: Also of interest, &lt;a href=&quot;https://gist.github.com/794308&quot;&gt;a gist&lt;/a&gt; of the /etc/fstab as found inside the Angstrom distribution that comes with the BeagleBoard-xM.&lt;/div&gt;
&lt;h2&gt;Comments&lt;/h2&gt;
&lt;div class='comments'&gt;
&lt;/div&gt;
</content>
 </entry>
 
 <entry>
   <title>The Tale Of Two ARMs - A Christmas Story</title>
   <link href="http://www.bradfordembedded.com/2011/01/the-tale-of-two-arms-a-christmas-story"/>
   <updated>2011-01-04T00:00:00-08:00</updated>
   <id>hhttp://www.bradfordembedded.com/2011/01/the-tale-of-two-arms-a-christmas-story</id>
   <content type="html">&lt;div class='post'&gt;
I got two ARM devices for Christmas!&amp;nbsp; (OK, well, I have to share one of them with my wife...)&lt;br /&gt;&lt;br /&gt;My brother is awesome and got me and my wife an iPad.&amp;nbsp; It's something I probably wouldn't buy for myself but since having it I think it's awesome.&amp;nbsp; The reading electronic books part so far is my favorite although general web surfing, YouTubing, and Angry Birds aren't far behind.&amp;nbsp; I'm currently reading &lt;a href=&quot;http://producingoss.com/&quot;&gt;Producing Open Source Software&lt;/a&gt;, am planning to read &lt;a href=&quot;http://www.network-theory.co.uk/docs/gccintro/&quot;&gt;An Introduction to GCC&lt;/a&gt;, and then I'll be on to &lt;a href=&quot;http://www.amazon.com/gp/product/0596529686?ie=UTF8&amp;amp;tag=bradford07-20&amp;amp;linkCode=as2&amp;amp;camp=1789&amp;amp;creative=390957&amp;amp;creativeASIN=0596529686&quot;&gt;Building Embedded Linux Systems&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;My wife got me a &lt;a href=&quot;http://beagleboard.org/&quot;&gt;Beagle Board xM&lt;/a&gt;!&amp;nbsp; Something I've been wanting to get for a few months now.&amp;nbsp; I'm very interested to see what the Beagle Board can do and how good the information is regarding how to do things with it.&amp;nbsp; From what I've seen so far, there's a real lack of high quality and well written instruction on how to get Linux up and running beyond a simple precompiled distribution install.&amp;nbsp; No one seems to have a walk through of building cross compilers, building the Linux kernel, and creating a file system.&amp;nbsp; Maybe I'm not yet looking in the right parts of the Internet to find these things, but I think this could be a really cool thing to write about, in the way the Cross Linux From Scratch project does, but with the Beagle Board in mind so that it can be tailored to the hardware and be more of a hands on project that people can approach.&amp;nbsp; (One of CLFS's shortfalls is that the embedded book is too general, there are so many varieties of each type of processor that it's hard to provide info for everyone who will read it.)&lt;br /&gt;&lt;br /&gt;What's really funny about these two gifts is how different they are yet how much inside is the same.&amp;nbsp; It all comes down to the software and packaging.&amp;nbsp; Obviously the Beagle Board doesn't care much about either since it's really just a low priced development kit, but both run a 1GHz ARM core processor, have graphics accelerators, network connectivity, flash storage, and some form of USB.&lt;br /&gt;&lt;br /&gt;I had an awesome Christmas.&amp;nbsp; Now I need a serial cable and a 5V power brick!&amp;nbsp; Digikey, here I come!&lt;/div&gt;
&lt;h2&gt;Comments&lt;/h2&gt;
&lt;div class='comments'&gt;
&lt;div class='comment'&gt;
&lt;div class='author'&gt;jefro&lt;/div&gt;
&lt;div class='content'&gt;
Hi Andrew,&lt;br /&gt;&lt;br /&gt;Best places to look for static BeagleBoard information are http://beagleboard.org, of course; http://elinux.org/BeagleBoard ; and http://code.google.com/p/beagleboard/ .  However, the best thing to do is to participate in the community, particularly the mailing list and IRC channel, both linked from http://beagleboard.org.  It isn&amp;#39;t excessively organized, but that&amp;#39;s where the latest, best, and most personal help will come from.&lt;br /&gt;&lt;br /&gt;That being said - I have been working on a BeagleBoard book that is currently stalled.  I&amp;#39;d be pleased to help you any way I can, for the simple cost of seeing what you need to learn.  You can find me at jefro@jefro.net.&lt;br /&gt;&lt;br /&gt;Good luck &amp;amp; have fun!  And please keep writing about your experiences, particularly what you plan to do with the board.&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
</content>
 </entry>
 
 <entry>
   <title>Being Clear About The Work I Want To Do (Part 2)</title>
   <link href="http://www.bradfordembedded.com/2010/12/being-clear-about-the-work-i-want-to-do-part-2"/>
   <updated>2010-12-21T00:00:00-08:00</updated>
   <id>hhttp://www.bradfordembedded.com/2010/12/being-clear-about-the-work-i-want-to-do-part-2</id>
   <content type="html">&lt;div class='post'&gt;
A month ago, I &lt;a href=&quot;http://bradfordembedded.blogspot.com/2010/11/being-clear-about-work-i-want-to-do.html&quot;&gt;wrote a post&lt;/a&gt; saying I want to be clear about the work I want to do and that I'd follow up every month or so.&amp;nbsp; It's about that time.&lt;br /&gt;&lt;br /&gt;I'm doing something interesting.&amp;nbsp; I'm learning.&amp;nbsp; It's open source.&amp;nbsp; There's, so far, no bureaucracy.&lt;br /&gt;I'm not yet teaching and I'm still a long way off from making any money. &lt;br /&gt;&lt;br /&gt;I've started working on the &lt;a href=&quot;http://trac.cross-lfs.org/&quot;&gt;CLFS&lt;/a&gt; (Cross Linux From Scratch) project.&amp;nbsp; I've opened two tickets for changes that should be made to the embedded book and submitted patches.&amp;nbsp; They're minor things, no one seems to have noticed yet, but I feel very proud of myself.&lt;br /&gt;&lt;br /&gt;I'm making progress and it feels really good.&lt;/div&gt;
&lt;h2&gt;Comments&lt;/h2&gt;
&lt;div class='comments'&gt;
&lt;/div&gt;
</content>
 </entry>
 
 <entry>
   <title>America.  Yeah!</title>
   <link href="http://www.bradfordembedded.com/2010/12/america-yeah"/>
   <updated>2010-12-21T00:00:00-08:00</updated>
   <id>hhttp://www.bradfordembedded.com/2010/12/america-yeah</id>
   <content type="html">&lt;div class='post'&gt;
I've been having conversations with various different people over the past few months about the state of America: our education system, economy, corporations, tax law, and politics.&amp;nbsp; One trend I'm seeing from the people I have conversations with (and both on TV and online articles) is that people are very pessimistic.&lt;br /&gt;&lt;br /&gt;I'm not pessimistic.&amp;nbsp; I'm very optimistic.&lt;br /&gt;&lt;br /&gt;Maybe we don't have the highest ranking education system.&amp;nbsp; Maybe we're outsourcing a lot of jobs to India and China.&amp;nbsp; Maybe our political system is fractured and uncooperative.&amp;nbsp; Maybe all this is true.&lt;br /&gt;&lt;br /&gt;But you know what?&amp;nbsp; Everyone outside North America, even if only slightly, is envious of us.&amp;nbsp; Maybe they're not envious of &lt;b&gt;all&lt;/b&gt; our things, but we have something that's better, worth being envious of.&lt;br /&gt;&lt;br /&gt;We have the best sports leagues (NHL, NFL, MLB, NBA, and PGA).&amp;nbsp; We have THE financial market (Wall St.).&amp;nbsp; We have the best higher education system (everyone knows Harvard, Princeton, MIT, Yale, heck even my alma mater RPI).&amp;nbsp; We have the biggest, most high tech companies (Google, Facebook, IBM, Apple, and Intel).&lt;br /&gt;&lt;br /&gt;Almost all of these things that we have, that are the best, are spreading world wide.&amp;nbsp; It's a global economy and in order to grow, it's required.&amp;nbsp; But they all started here and for the most part are based here, in the USA.&lt;br /&gt;&lt;br /&gt;This is the reason so many people still flock to the US.&amp;nbsp; We're still the land of opportunity, of the free, and where dreams can come true.&amp;nbsp; It's why we have an illegal immigrant &quot;problem.&quot;&amp;nbsp; So many people want so badly to come here that they're willing to break the law, hide, and do jobs for very little pay with horrid work conditions.&lt;br /&gt;&lt;br /&gt;Stop being pessimistic.&amp;nbsp; It'll only hold you back from greatness, especially in America.&lt;/div&gt;
&lt;h2&gt;Comments&lt;/h2&gt;
&lt;div class='comments'&gt;
&lt;/div&gt;
</content>
 </entry>
 
 <entry>
   <title>Gawker Got Hacked...  I Dislike Online Accounts</title>
   <link href="http://www.bradfordembedded.com/2010/12/gawker-got-hacked-i-dislike-online-accounts"/>
   <updated>2010-12-14T00:00:00-08:00</updated>
   <id>hhttp://www.bradfordembedded.com/2010/12/gawker-got-hacked-i-dislike-online-accounts</id>
   <content type="html">&lt;div class='post'&gt;
&lt;a href=&quot;http://lifehacker.com/5712785/&quot;&gt;Gawker got hacked&lt;/a&gt; over the weekend and had all their users' data stolen, including encrypted passwords.&amp;nbsp; Awesome.&lt;br /&gt;&lt;br /&gt;Gawker at least emailed all the people who had accounts letting them know that this happened, which is nice of them.&amp;nbsp; I didn't even realize I had a Gawker account, but I do.&amp;nbsp; I've changed my password there as well as my Google and Amazon passwords.&amp;nbsp; I don't have any idea what password I used for Gawker but figure I should be cautious since I did use my real Gmail address for the Gawker account.&amp;nbsp; All my banking stuff uses usernames and passwords I don't use anywhere else so I'm not concerned about those.&lt;br /&gt;&lt;br /&gt;I'm thoroughly annoyed by this.&amp;nbsp; Generally I don't like getting accounts at tons of websites, mostly because I don't want to remember all the logins.&amp;nbsp; On my work laptop I use &lt;a href=&quot;http://passwordsafe.sourceforge.net/&quot;&gt;Password Safe&lt;/a&gt; so I don't have to remember any passwords or usernames, but I shouldn't have to.&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://www.quora.com/What-s-wrong-with-OpenID&quot;&gt;OpenID isn't the answer&lt;/a&gt;.&amp;nbsp; I don't have the ability to easily generate throw away email addresses (right now).&amp;nbsp; Using &lt;a href=&quot;http://gmailblog.blogspot.com/2008/03/2-hidden-ways-to-get-more-from-your.html&quot;&gt;Gmail's &quot;+&quot; option&lt;/a&gt; doesn't work on 90% of the sites I've tried.&amp;nbsp; So far, just not having accounts is the only answer.&amp;nbsp; But not having accounts is actually fairly difficult these days.&lt;br /&gt;&lt;br /&gt;I'm thoroughly annoyed and I don't know how to fix this.&lt;/div&gt;
&lt;h2&gt;Comments&lt;/h2&gt;
&lt;div class='comments'&gt;
&lt;/div&gt;
</content>
 </entry>
 
 <entry>
   <title>My Inspiration</title>
   <link href="http://www.bradfordembedded.com/2010/12/my-inspiration"/>
   <updated>2010-12-11T00:00:00-08:00</updated>
   <id>hhttp://www.bradfordembedded.com/2010/12/my-inspiration</id>
   <content type="html">&lt;div class='post'&gt;
I like playing with computers.&amp;nbsp; Professionally, that's all I really want to do.&lt;br /&gt;&lt;br /&gt;I've been playing with computers since 5th grade.&amp;nbsp; My family bought an Apple Mac Performa 577 and I couldn't get enough of it.&amp;nbsp; I bought huge books all about how the software worked, I downloaded all sorts of things from AOL and then the Internet.&amp;nbsp; I just had to play and learn.&lt;br /&gt;&lt;br /&gt;In high school I attended a vocational program for computing.&amp;nbsp; Most people thought it was odd I'd that I'd attend vocational school as I had good grades and took honors courses and that just wasn't something that people thought went together.&amp;nbsp; I loved it.&amp;nbsp; I'm so glad I went to vocational school.&amp;nbsp; Everybody should go.&amp;nbsp; Learning the basics of a trade is invaluable further on in life.&amp;nbsp; And yes, basic IT tasks are basically a trade these days, that's what we learned (A+ certification, installing Windows, putting together computers, basic networking, etc).&lt;br /&gt;&lt;br /&gt;I used to be a die-hard Apple fan.&amp;nbsp; I bought the first G4 Yikes! tower from our local Apple reseller in high school.&amp;nbsp; I had read about the announcement of this model and just had to have one.&amp;nbsp; I spent my entire savings from working that summer to get it.&amp;nbsp; I got the 400 MHz one, before they downgraded the lowest model to 350 MHz.&amp;nbsp; I felt special.&amp;nbsp; 66 MHz PCI graphics!&amp;nbsp; Yeah! :)&lt;br /&gt;Apple gave me a free copy of OS9 because I answered a lot of questions on their online support forums.&amp;nbsp; This was huge for me.&amp;nbsp; I didn't have much money but I really wanted OS9.&amp;nbsp; Getting a free copy built a ton of loyalty for me.&lt;br /&gt;I then bought the OSX beta.&amp;nbsp; It was slow as balls, but that was OK because I was on the cutting edge.&lt;br /&gt;&lt;br /&gt;In college I played with a lot of Linux but still had my G4.&amp;nbsp; I went to opening day at the Crossgates Mall Apple Store in Albany, NY.&amp;nbsp; I got a free t-shirt and that built even more Apple loyalty.&amp;nbsp; I couldn't afford buying updates to OSX, so I installed Yellow Dog Linux on the G4 and it became my NFS server for my music collection.&lt;br /&gt;&lt;br /&gt;I then went on to built computers and install Linux on them.&amp;nbsp; One winter when I came home for the holidays I literally had 8 computers packed in mom's minivan.&amp;nbsp; It was awesome.&amp;nbsp; I built Gentoo Linux from stage 1 on a 200 MHz Pentium system.&amp;nbsp; It took days.&amp;nbsp; It was so much fun.&amp;nbsp; I ran Return to Castle Wolfenstein demo servers off my laptop and built my first ever computer from scratch just so I could play the demo on Linux.&amp;nbsp;&amp;nbsp;&amp;nbsp; It was an amazing learning experience.&amp;nbsp; I learned that the motherboard I got had a newer chip set that didn't have support built into the Red Hat 7.2 provided kernel for the IDE controller, so it got stuck having the processor clock everything in and out in PIO mode.&amp;nbsp; The hard disk performance was atrocious.&amp;nbsp; So I learned to build kernels.&lt;br /&gt;&lt;br /&gt;Fast forward about a decade.&amp;nbsp; Now I work at a big Fortune 500 company writing .NET software, playing with RFIDs and smart cards, and soon I'll be diving into some Verilog.&amp;nbsp; I'm basically an engineer who does DRM for physical things, but I can't really go into the details.&amp;nbsp; It's interesting, but I want to get back to playing with computers and especially Linux.&amp;nbsp; Up to the beginning of 2010, I was designing and building an embedded XML-RPC server in C++ for a PowerPC board and the desktop Java app to control automated board testing.&amp;nbsp; That was a cool job for the technical things, but the business side of things seemed to be turning for the worse and I jumped to the division I'm in now.&lt;br /&gt;&lt;br /&gt;These days, I want to play with embedded Linux.&amp;nbsp; It's cool.&amp;nbsp; It runs a whole ton of stuff.&amp;nbsp; It's inexpensive and there seems to be a real dearth of quality people out there who know what they're doing with it and are willing to share that knowledge for a reasonable price.&amp;nbsp; I want to become one of the people who knows what they're doing and then teach other people those same skills.&amp;nbsp; Along with my continued interest in many things related to computing and Linux, this is my inspiration for writing a book about embedded Linux and for wanting to help with the Cross Linux From Scratch project.&lt;/div&gt;
&lt;h2&gt;Comments&lt;/h2&gt;
&lt;div class='comments'&gt;
&lt;/div&gt;
</content>
 </entry>
 
 <entry>
   <title>Absolute FreeBSD and Building A Server With FreeBSD 7</title>
   <link href="http://www.bradfordembedded.com/2010/12/absolute-freebsd-and-building-a-server-with-freebsd-7"/>
   <updated>2010-12-04T00:00:00-08:00</updated>
   <id>hhttp://www.bradfordembedded.com/2010/12/absolute-freebsd-and-building-a-server-with-freebsd-7</id>
   <content type="html">&lt;div class='post'&gt;
Two books on my bookshelf, that I read over a year ago, are &lt;a href=&quot;http://www.amazon.com/Absolute-FreeBSD-Complete-Guide-2nd/dp/1593271514?ie=UTF8&amp;amp;tag=bradford07-20&amp;amp;link_code=btl&amp;amp;camp=213689&amp;amp;creative=392969&quot; target=&quot;_blank&quot;&gt;Absolute FreeBSD: The Complete Guide to FreeBSD, 2nd Edition&lt;/a&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; height=&quot;1&quot; src=&quot;http://www.assoc-amazon.com/e/ir?t=bradford07-20&amp;amp;l=btl&amp;amp;camp=213689&amp;amp;creative=392969&amp;amp;o=1&amp;amp;a=1593271514&quot; style=&quot;border: medium none ! important; margin: 0px ! important; padding: 0px ! important;&quot; width=&quot;1&quot; /&gt; by Michael Lucas and &lt;a href=&quot;http://www.amazon.com/Building-Server-FreeBSD-Bryan-Hong/dp/159327145X?ie=UTF8&amp;amp;tag=bradford07-20&amp;amp;link_code=btl&amp;amp;camp=213689&amp;amp;creative=392969&quot; target=&quot;_blank&quot;&gt;Building a Server with FreeBSD 7&lt;/a&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; height=&quot;1&quot; src=&quot;http://www.assoc-amazon.com/e/ir?t=bradford07-20&amp;amp;l=btl&amp;amp;camp=213689&amp;amp;creative=392969&amp;amp;o=1&amp;amp;a=159327145X&quot; style=&quot;border: medium none ! important; margin: 0px ! important; padding: 0px ! important;&quot; width=&quot;1&quot; /&gt; by Bryan Hong.&amp;nbsp; I bought them at about the same time and read them together.&amp;nbsp; I was wanting to use FreeBSD on my desktop machine and I was setting up a virtual private server (VPS) on &lt;a href=&quot;http://www.rootbsd.net/&quot;&gt;RootBSD&lt;/a&gt; to serve web pages, mail, and be an network time protocol server.&amp;nbsp; These two books, although both published by &lt;a href=&quot;http://nostarch.com/&quot;&gt;No Starch Press&lt;/a&gt; and about the same operating system, are very different in both content and style.&lt;br /&gt;&lt;br /&gt;Absolute FreeBSD is a thick tome covering everything about FreeBSD that an aspiring computer savvy person would want to know.&amp;nbsp; Basically, you could read Absolute FreeBSD, never read the official &lt;a href=&quot;http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/&quot;&gt;FreeBSD Handbook&lt;/a&gt;, and learn very similar information all while building a computer system that can serve web pages, DNS, mail, and many users.&amp;nbsp; Michael Lucas is a great technical writer.&amp;nbsp; He keeps things light when describing situations but then provides just enough technical details about how things are supposed to work, interspersed with step by step instruction, to assist you with setting up your own server.&amp;nbsp; It's one of the best written books about computing that I've ever read.&amp;nbsp; I thoroughly enjoyed reading it and putting the information to practical use.&amp;nbsp; It's an awesome book and I learned not only how to set up a FreeBSD server, but also, why certain things work the way they do (especially DNS which is rather difficult to explain).&amp;nbsp; This book will be a lasting reference book on my bookshelf that I will refer to in the future, even when doing non-FreeBSD things (like DNS), to help refresh my memory.&lt;br /&gt;&lt;br /&gt;Contrast this with Building a Server with FreeBSD 7, which is purely a step by step (literally) manual on installing and configuring often used software packages on a FreeBSD 7 system.&amp;nbsp; There's very little, if any, explanation on: why you should set up configuration files in the specified ways, why certain commands are issued the way they are, and how to do anything beyond the basics of installing and getting said software running.&amp;nbsp; I'm sad that I spent money buying this book, I could have gotten just as much out of it by borrowing it from a friend or library.&amp;nbsp; I only used it once and now some of it is already outdated because the software packages described are either out of date or because FreeBSD has moved on (already being at version 8.1).&lt;br /&gt;&lt;br /&gt;The way these two books contrast each other is astounding.&amp;nbsp; Usually, the No Starch Press books I've read are mostly written similarly to Lucas's style.&lt;br /&gt;&lt;br /&gt;One thing I definitely got out of these two books is that I want to be a writer like Michael Lucas.&lt;/div&gt;
&lt;h2&gt;Comments&lt;/h2&gt;
&lt;div class='comments'&gt;
&lt;/div&gt;
</content>
 </entry>
 
 <entry>
   <title>QEMU Booting CLFS PPC Issues</title>
   <link href="http://www.bradfordembedded.com/2010/12/qemu-booting-clfs-ppc-issues"/>
   <updated>2010-12-01T00:00:00-08:00</updated>
   <id>hhttp://www.bradfordembedded.com/2010/12/qemu-booting-clfs-ppc-issues</id>
   <content type="html">&lt;div class='post'&gt;
I'm building version &lt;a href=&quot;http://cross-lfs.org/files/BOOK/1.1.0/view/ppc/index.html&quot;&gt;1.1.0 of the Cross Linux From Scratch (CLFS) PowerPC&lt;/a&gt; system.&amp;nbsp; I don't actually have any PowerPC hardware so I'm using &lt;a href=&quot;http://wiki.qemu.org/Main_Page&quot;&gt;QEMU&lt;/a&gt;.&amp;nbsp; I have built QEMU 0.13.0 from source because Debian Lenny only comes with version 0.9.1 and it's a bit old.&lt;br /&gt;&lt;br /&gt;When booting my CLFS system in QEMU, this is my command line:&lt;br /&gt;&lt;blockquote&gt;andrew@bigbox:~$ qemu-system-ppc -nographic \&lt;br /&gt;-hda cross-lfs-ppc/disk.img -kernel \&lt;br /&gt;cross-lfs-ppc/clfs-fs/boot/clfskernel-2.6.24.7 -M g3beige&lt;/blockquote&gt;The switches used are:&lt;br /&gt;-nographic -&amp;gt; QEMU should output to my terminal rather than VNC&lt;br /&gt;-hda -&amp;gt; This is the file to use as disk /dev/hda&lt;br /&gt;-kernel -&amp;gt; The kernel to use&lt;br /&gt;-M g3beige -&amp;gt; QEMU should emulate a beige G3 PowerMac&lt;br /&gt;&lt;br /&gt;When I was building my CLFS system, I didn't follow the directions for Yaboot because I was under the impression that I could simply hand QEMU the kernel and root file system and it would be happy.&amp;nbsp; When creating my disk image, I didn't create any partitions, everything's simply in hda.&amp;nbsp; One of these two spots are probably the root of my problem.&amp;nbsp; I'm going to try building Yaboot first and if that doesn't fix it, I'll work on creating the partitions correctly within my disk image file.&lt;br /&gt;&lt;br /&gt;When booting, QEMU goes through its normal bios output but after finding a display and building the device tree, it hangs with:&lt;br /&gt;&lt;blockquote&gt;Calling quiesce ...&lt;br /&gt;returning from prom_init&lt;/blockquote&gt;After a few minutes, it will reboot and end up at the same place.&amp;nbsp; The verbosity is not much help for debugging and Google doesn't seem to be my friend with this issue.&lt;br /&gt;&lt;br /&gt;I'll be sure to either comment on this post as to my resolution or I'll write another post detailing the fix.&lt;/div&gt;
&lt;h2&gt;Comments&lt;/h2&gt;
&lt;div class='comments'&gt;
&lt;/div&gt;
</content>
 </entry>
 
 <entry>
   <title>Being Clear About The Work I Want To Do</title>
   <link href="http://www.bradfordembedded.com/2010/11/being-clear-about-the-work-i-want-to-do"/>
   <updated>2010-11-29T00:00:00-08:00</updated>
   <id>hhttp://www.bradfordembedded.com/2010/11/being-clear-about-the-work-i-want-to-do</id>
   <content type="html">&lt;div class='post'&gt;
A Better Way of Work blog has a &lt;a href=&quot;http://abetterwayofwork.com/?p=121070734&quot;&gt;posting&lt;/a&gt; saying people should make it clear what the work you want to do is.&amp;nbsp; I'm going to do that and I'd like to be able to write additional posts under the &quot;work&quot; tag to update my status on this.&lt;br /&gt;&lt;br /&gt;I want to do work that:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Is interesting&lt;/li&gt;&lt;li&gt;Allows me to learn and to teach &lt;/li&gt;&lt;li&gt;Involves open source software or hardware&lt;/li&gt;&lt;li&gt;Pays well enough that I feel secure&lt;/li&gt;&lt;li&gt;Doesn't bog me down with corporate bureaucracy &lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;I'm willing to give up playing hockey.&amp;nbsp; I've played for the past 22 years but I'd rather focus on the work I want to do.&amp;nbsp; That will net me extra time in the evenings to spend with my family or to do my work.&lt;br /&gt;&lt;br /&gt;I'm willing to give up sleeping in.&amp;nbsp; I'm trying to create the habit of waking up before 6am so I can work before going to my job.&amp;nbsp; So far I've been successful at doing this 2 or 3 times per week.&amp;nbsp; I'd like do this more often.&amp;nbsp; Yes, I get tired earlier, but I'm much more focused and productive early in the morning.&lt;br /&gt;&lt;br /&gt;My biggest fear is that I won't be able to do the work I want to do and still make enough money to be secure.&amp;nbsp; I don't need to be rich but I do need to be able to provide for my family.&lt;/div&gt;
&lt;h2&gt;Comments&lt;/h2&gt;
&lt;div class='comments'&gt;
&lt;/div&gt;
</content>
 </entry>
 
 <entry>
   <title>LED Lighting to Replace Fluorescents, The Future!</title>
   <link href="http://www.bradfordembedded.com/2010/11/led-lighting-to-replace-fluorescents-the-future"/>
   <updated>2010-11-20T00:00:00-08:00</updated>
   <id>hhttp://www.bradfordembedded.com/2010/11/led-lighting-to-replace-fluorescents-the-future</id>
   <content type="html">&lt;div class='post'&gt;
I broke a fluorescent U shaped bulb yesterday evening in my kitchen.&amp;nbsp; I was attempting to set it on the counter so I could remove the bulb that was in the fixture and it tapped the counter ever-so-slightly, shattering into a million pieces.&amp;nbsp; I attempted to follow the &lt;a href=&quot;http://www.epa.gov/cfl/cflcleanup.html&quot;&gt;EPA guidelines for cleaning up&lt;/a&gt; the mess, mercury and all, but it's not easy.&amp;nbsp; We have hardwood-like floors in the kitchen, so after opening a bunch of windows and going in another room for a bit, I was able to scoop up most of the glass and powders that were near where the break occurred.&amp;nbsp; But then there's glass everywhere, and I mean &lt;b&gt;everywhere&lt;/b&gt;!&amp;nbsp; Little tiny shards of it.&amp;nbsp; It was a pain to clean up.&amp;nbsp; After cleaning up, I proceeded to freak out about mercury.&amp;nbsp; How much is in the air?&amp;nbsp; What's too much?&amp;nbsp; Am I breathing it?&amp;nbsp; What's the impact on me, my wife, and our cats?&amp;nbsp; I proceeded to cleaning of the entire kitchen: floor, counters, and stove top, multiple times.&amp;nbsp; Windows and doors were open with fans running full blast for about 3 hours.&amp;nbsp; That should get it all out, right?&lt;br /&gt;&lt;br /&gt;Come today, I'm still paranoid.&amp;nbsp; Who can I call about this on a Saturday?&amp;nbsp; Well, the &lt;a href=&quot;http://poison.org/&quot;&gt;National Poison Center&lt;/a&gt; is open 24/7, so I called them.&amp;nbsp; A very professional woman answered all my questions, told me the way I cleaned up was fine, and reassured me that even cleaning up just one bulb completely the wrong way on wood flooring is nothing to get concerned over if I've had windows and doors open.&amp;nbsp; It made me feel a whole lot better.&lt;br /&gt;I still cleaned the kitchen again after hanging up.&amp;nbsp; Just to be safe :)&lt;br /&gt;&lt;br /&gt;Why am I so concerned over this?&lt;br /&gt;It's because there's no sure way to know what the heck is going on with mercury.&amp;nbsp; I'm no expert but I do know about &lt;a href=&quot;http://en.wikipedia.org/wiki/Restriction_of_Hazardous_Substances_Directive&quot;&gt;RoHS&lt;/a&gt;, and mercury is definitely one of the restricted substances (ironically with an exemption for fluorescent bulbs).&amp;nbsp; It can't be good for you.&amp;nbsp; But you can't see it (when it's vapor), smell it, taste it, or easily test what concentration it exists in with a DIY kit.&amp;nbsp; Thus, I was paranoid about it.&lt;br /&gt;&lt;br /&gt;I don't want this to happen ever again.&amp;nbsp; But how can I ensure that this doesn't happen again?&lt;br /&gt;Getting rid of all my fluorescent bulbs seems like a decent answer.&amp;nbsp; But incandescents use quite a lot more electricity and don't really come in tube sizes so they're not really an option.&amp;nbsp; What about LED lights?&lt;br /&gt;&lt;br /&gt;LED lights aren't really easy to buy right now.&amp;nbsp; Home Depot lists quite a few different types of bulbs (84 in the LED lighting section) but many are only available online and some of those listed are holiday lights.&amp;nbsp; None of those listed are tube type that can replace fluorescent bulbs.&amp;nbsp; All are expensive (think 10x the price of incandescents or CFLs) and generally have lower light output compared to fluorescent or incandescent bulbs.&amp;nbsp; I searched around online and found some places selling tube type LED lights but every single one I found requires you to rewire the fixture to bypass the ballast and starter.&amp;nbsp; Some even require an external power unit (I assume to convert the AC to DC) that has to be wired in.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;I can rewire my fixtures to support different types of bulbs (I'm an EE and I know my way around a wire nut) but I don't &lt;b&gt;want&lt;/b&gt; to do this.&amp;nbsp; I'm pretty sure no body &lt;b&gt;wants&lt;/b&gt; to do this, they just want to buy a light bulb and put it in.&amp;nbsp; That's how light bulbs are expected to work.&lt;br /&gt;&lt;br /&gt;I think this is a market ripe for innovation.&amp;nbsp; With upcoming US regulations requiring higher light output per watt combined with people's dislike for CFLs (and fluorescent bulbs in general [warm up time, flickering, buzz, cold weather performance, lack of dimming, etc]), the LED market place is going to experience rapid growth.&amp;nbsp; Right now the growth seems to be in normal screw in type bulbs with some less elegant systems for tube bulbs.&lt;br /&gt;&lt;br /&gt;I'd expect the LED tube bulb market to be the largest market, yet there doesn't seem to be a (literally) drop in tube LED bulb out there at any price.&amp;nbsp; Schools, corporate facilities, and hospitals use tons of tube lights and are often concerned about mercury releases, energy consumption, and &quot;green-ness.&quot;&amp;nbsp; These same institutions also don't want to have to pay an electrician to rewire every single light fixture.&amp;nbsp; Tube LED lights that are a drop in replacement for tube fluorescent bulbs would sell like hotcakes!&amp;nbsp; Even if there was a price premium, early adopters would pay extra to get their benefits.&amp;nbsp; This would drive volume and technology development, ultimately bringing prices down.&lt;br /&gt;&lt;br /&gt;Maybe I should design a tube LED lighting system...&lt;/div&gt;
&lt;h2&gt;Comments&lt;/h2&gt;
&lt;div class='comments'&gt;
&lt;div class='comment'&gt;
&lt;div class='author'&gt;brian&lt;/div&gt;
&lt;div class='content'&gt;
Yes its mostly due to cost. Look at Plasma and LCD TV&amp;#39;s they use florescent back lights and they are cheap in comparison to the cost of an LED TV.  In my opinion someday LED&amp;#39;s will be cheap enough to replace other light sources.  They also last so much longer and use less power.&lt;/div&gt;
&lt;/div&gt;
&lt;div class='comment'&gt;
&lt;div class='author'&gt;Andrew&lt;/div&gt;
&lt;div class='content'&gt;
I found one company that is making drop in tube LED lights: &lt;a href=&quot;http://www.everled.com/&quot; rel=&quot;nofollow&quot;&gt;EverLED&lt;/a&gt; in Vermont.  They ask $129 for one 4&amp;#39; tube.  That&amp;#39;s a bit pricey but I did some research and it would be hard with today&amp;#39;s white LEDs to make a profit and compete with tube fluorescent bulb light output for under $100 (retail).&lt;br /&gt;&lt;br /&gt;I still think this is an area that&amp;#39;s ripe for innovation and I&amp;#39;d expect some creative thinking could get the prices lower even with today&amp;#39;s LEDs.&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
</content>
 </entry>
 
 <entry>
   <title>Computer Configuration User Interfaces Suck</title>
   <link href="http://www.bradfordembedded.com/2010/11/computer-configuration-user-interfaces-suck"/>
   <updated>2010-11-17T00:00:00-08:00</updated>
   <id>hhttp://www.bradfordembedded.com/2010/11/computer-configuration-user-interfaces-suck</id>
   <content type="html">&lt;div class='post'&gt;
When buying a computer, especially desktop or workstation class computers, why is it so annoying to configure a computer that you want?&lt;br /&gt;&lt;br /&gt;For example, go to Dell.com's &quot;Large Enterprise&quot; store and find the lowest cost configuration that gets you a workstation computer with at least the following specs:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;2 or more processor cores with VT extensions (of any speed)&lt;/li&gt;&lt;li&gt;4GB of RAM (with or without ECC and of any speed)&lt;/li&gt;&lt;li&gt;Either a 160GB 10k RPM or 128GB SSD hard disk drive&lt;/li&gt;&lt;li&gt;DVD+/-RW burner&lt;/li&gt;&lt;li&gt;Windows7 32bit Professional w/ XP mode &lt;/li&gt;&lt;/ul&gt;It's so impossible it's not even funny.&amp;nbsp; I attempted to wade through this exact situation at my Fortune 500 the other day and I was not a happy camper.&lt;br /&gt;What's the difference between an Optiplex 980, 960, and 780?&amp;nbsp; How do those compare to the Precision T1500 and T3500?&amp;nbsp; Which one will let you get at least the above specs for the least money?&amp;nbsp; Why the #%@$ can't I get a 256GB solid state drive in any computer I want?&lt;br /&gt;&lt;br /&gt;I have no friggin idea.&lt;br /&gt;&lt;br /&gt;A great idea would be a web 2.0 style drag and drop interface for configuration of a PC.&amp;nbsp; Along one side it would list all the different categories of things you can choose, like processors, RAM, disk drives, graphics, etc.&amp;nbsp; You'd have a work area in the middle and you can drag any of the categories onto the work area.&amp;nbsp; Once you drag a category onto the work area you can narrow your selection of available choices by putting constraints on the category, like I only want &amp;gt;2 cores.&amp;nbsp; As you refine your search by adding constraints, options that aren't compatible with your constraints would simply not be available (like if you choose a constraint of ECC memory being required, you wouldn't be able to choose a Core2Duo processor anymore).&amp;nbsp; As you refine your search by putting constraints on categories and adding additional categories to your work area, another column would list the number of configurations that fit your requirement along with highest and lowest prices.&amp;nbsp; Most people would simply pick the lowest price computer that met their requirements.&lt;br /&gt;&lt;br /&gt;This would be great for pretty much anyone who has specific requirements for their PC.&amp;nbsp; It wouldn't be that hard to develop (at least compared to other configuration interfaces) and would probably get a lot of use by customers.&amp;nbsp; I'd think someone like Dell would really reduce the headache of customers by offering a system like this.&amp;nbsp; It'd even help their internal sales people, probably especially when quoting larger orders for corporate clients.&lt;br /&gt;&lt;br /&gt;If no one has something like this next year, maybe I'll teach myself Ruby on Rails and some JavaScript and do it myself.&lt;/div&gt;
&lt;h2&gt;Comments&lt;/h2&gt;
&lt;div class='comments'&gt;
&lt;/div&gt;
</content>
 </entry>
 
 <entry>
   <title>Open Source (at my Fortune 500)</title>
   <link href="http://www.bradfordembedded.com/2010/11/open-source-at-my-fortune-500"/>
   <updated>2010-11-12T00:00:00-08:00</updated>
   <id>hhttp://www.bradfordembedded.com/2010/11/open-source-at-my-fortune-500</id>
   <content type="html">&lt;div class='post'&gt;
At my Fortune 500 company the other day, there was a presentation performed by some of the lawyers about open source software and how it can be used within the company for internal uses and for use in products.&amp;nbsp; It was interesting and I'm glad I went, but it was held right before lunch and I was very hungry, so I only stayed for the first half.&lt;br /&gt;&lt;br /&gt;In the first half of the meeting the lawyers reviewed the requirements of open source licensing, such as the fact that with most licenses you must provide the same freedoms you received and that open source licenses are just like closed source licenses, they use similar laws to be effective.&amp;nbsp; This is interesting because one word that got a lot of attention is &quot;distribution&quot;.&amp;nbsp; Another topic that came up frequently is &quot;viral&quot; licenses that can &quot;infect&quot; other software (those are words from the presentation, not my words).&lt;br /&gt;&lt;br /&gt;What counts as distribution?&amp;nbsp; Does passing a copy of a software from one employee to another count as distribution?&amp;nbsp; With pay-for software, often it does, as you're expected to purchase a license for each person or machine that the software executes on.&amp;nbsp; But sometimes with open source software it can be assumed that distribution means passing the software to another entity, be it another corporate entity or a customer.&amp;nbsp; Like when I download a copy of Debian GNU/Linux from debian.org, that's clearly distribution because I'm not a part of Debian, I'm just a user of Debian.&amp;nbsp; If I install Debian on my computer and my wife's computer, does that count as distribution?&amp;nbsp; Do I then have to comply with all of Debian's licensing terms regarding distribution?&amp;nbsp; It gets tricky, did I just &quot;distribute&quot; a copy to my wife?&lt;br /&gt;&lt;br /&gt;The &quot;viral&quot; part is also interesting.&amp;nbsp; My company doesn't want to have to release large amounts of our currently closed source software to the public (or even just our customers) because we currently make a bunch of money selling said software.&amp;nbsp; Should a &quot;viral&quot; license &quot;infect&quot; our current closed source software in such a way that we release some software that used something with a &quot;viral&quot; license, we'd then be obligated to give away the source to our closed source (or at least part of it).&amp;nbsp; It's a legitimate issue for closed source software shops that make money the Microsoft way, by charging for each copy sold.&amp;nbsp; It also makes sense because some of our software does really neat stuff that not many competitors can do.&amp;nbsp; It's what sets us apart and we don't want to give our competitors any advantage if we can help it.&lt;br /&gt;&lt;br /&gt;I understand that distribution is a strange term that may be defined differently by different people and that makes it tricky.&amp;nbsp; And I understand that &quot;viral&quot; licenses could force us to disclose source code that's currently secret.&amp;nbsp; But what saddens me is that we're not changing our business model or internal practices (very much) to take advantage of open source.&amp;nbsp; Not even in just a few of our products.&lt;br /&gt;&lt;br /&gt;Jeff Atwood &lt;a href=&quot;http://www.codinghorror.com/blog/2010/09/because-everyone-needs-a-router.html&quot;&gt;blogged recently&lt;/a&gt; about how routers are becoming a commodity hardware platform because of things like DD-WRT.&amp;nbsp; My company makes hardware and provides services for both our software and hardware (along with various other things that we do).&amp;nbsp; It would be interesting to see my company (and / or competing companies) release source code to the public and focus on other avenues of making money, mainly service, support, and hardware.&amp;nbsp; We'd have to keep ownership of the software in the sense that the Mozilla Foundation retains ownership of Firefox but allows the public to contribute.&lt;/div&gt;
&lt;h2&gt;Comments&lt;/h2&gt;
&lt;div class='comments'&gt;
&lt;/div&gt;
</content>
 </entry>
 
 <entry>
   <title>What's Going On in CLFS Chapter 5? [/tools and /cross-tools]</title>
   <link href="http://www.bradfordembedded.com/2010/11/what-s-going-on-in-clfs-chapter-5-tools-and-cross-tools"/>
   <updated>2010-11-09T00:00:00-08:00</updated>
   <id>hhttp://www.bradfordembedded.com/2010/11/what-s-going-on-in-clfs-chapter-5-tools-and-cross-tools</id>
   <content type="html">&lt;div class='post'&gt;
In building the CLFS PowerPC cross compiler the instructions say to create both the /tools and /cross-tools directories (these are actually symlinks to directories of your choosing but it's the easiest way to reference what I'm talking about).&amp;nbsp; I didn't fully understand why this is the case so I did some Googling and re-read parts of the CLFS book.&lt;br /&gt;&lt;br /&gt;Turns out it's briefly described across various sections, including: &lt;a href=&quot;http://cross-lfs.org/files/BOOK/1.1.0/view/ppc/final-preps/creatingtoolsdir.html&quot;&gt;4.2 (Creating the /tools Directory)&lt;/a&gt;, &lt;a href=&quot;http://cross-lfs.org/files/BOOK/1.1.0/view/ppc/final-preps/creatingcrossdir.html&quot;&gt;4.3 (Creating the /cross-tools Directory)&lt;/a&gt;, &lt;a href=&quot;http://cross-lfs.org/files/BOOK/1.1.0/view/ppc/cross-tools/linux-headers.html&quot;&gt;5.4 (Linux-Headers)&lt;/a&gt;, and &lt;a href=&quot;http://cross-lfs.org/files/BOOK/1.1.0/view/ppc/temp-system/introduction.html&quot;&gt;6.1 (Introduction to chapter 6)&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;The /cross-tools directory is where the actual cross compiler and its assorted &quot;friends&quot; will live.&amp;nbsp; The /tools directory is where we're building a temporary system that can actually build a real system.&amp;nbsp; The entire goal of chapter 5 is to build a GCC cross compiler that executes on your desktop PC and builds executables for some other computer system (in my case, my desktop's an x86_64 box running Debian Lenny and I'm wanting to create executables for PowerPC Linux).&lt;br /&gt;&lt;br /&gt;A fun problem is that in order to build a cross compiler, we need a compiler (and a bunch of other stuff).&amp;nbsp; There may be a shorter method to achieving this, but I outline the CLFS way of doing things:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Starting off with section &lt;a href=&quot;http://cross-lfs.org/files/BOOK/1.1.0/view/ppc/cross-tools/linux-headers.html&quot;&gt;5.4 (Linux Headers)&lt;/a&gt;, just the header files for a Linux kernel are installed into /tools/include.&amp;nbsp; The headers will be needed later to build Glibc.&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/li&gt;&lt;li&gt;In section &lt;a href=&quot;http://cross-lfs.org/files/BOOK/1.1.0/view/ppc/cross-tools/file.html&quot;&gt;5.5 (File)&lt;/a&gt;, we build and install File into /cross-tools (File lets us figure out what type any given file is).&amp;nbsp; This version of File we build is a native application on our desktop PC and is used by other steps.&lt;/li&gt;&lt;li&gt;Section &lt;a href=&quot;http://cross-lfs.org/files/BOOK/1.1.0/view/ppc/cross-tools/binutils.html&quot;&gt;5.6 (Cross Binutils)&lt;/a&gt; has us build a set of binutils, again these are native to our desktop PC.&amp;nbsp; No cross compiling yet.&amp;nbsp; Binutils assists in compiling and linking programs.&amp;nbsp; We'll use this set of binutils to build our cross compiler, GCC.&amp;nbsp; Binutils gets installed into /cross-tools.&lt;/li&gt;&lt;li&gt;Now we get to some compiler compiling, section &lt;a href=&quot;http://cross-lfs.org/files/BOOK/1.1.0/view/ppc/cross-tools/gcc-static.html&quot;&gt;5.7 (Cross GCC - Static)&lt;/a&gt;.&amp;nbsp; Here we build a very simple, statically linked version (it includes all libraries it needs internally to itself rather than reference them being installed in another location) of GCC that can only compile C programs.&amp;nbsp; GCC is actually built without any C library (Glibc) as we don't yet have it.&amp;nbsp; GCC goes into /cross-tools.&lt;/li&gt;&lt;li&gt;Section &lt;a href=&quot;http://cross-lfs.org/files/BOOK/1.1.0/view/ppc/cross-tools/glibc.html&quot;&gt;5.8 (Glibc)&lt;/a&gt; finally gets us to the C library.&amp;nbsp; When configuring Glibc, we must tell the configuration script how to find all the different items we've already installed, as they're in non-standard locations.&amp;nbsp; Glibc gets built using our statically linked GCC and our kernel headers, it has just enough ability to do so, and installed into the /tools directory.&amp;nbsp; The kernel headers are needed as some of the implementation of the C library involves making system calls, thus the C library needs to know how to make those system calls.&lt;/li&gt;&lt;li&gt;Now we can finally create an actual cross compiler.&amp;nbsp; Section &lt;a href=&quot;http://cross-lfs.org/files/BOOK/1.1.0/view/ppc/cross-tools/gcc-final.html&quot;&gt;5.9 (Cross GCC - Final) &lt;/a&gt;finally has us build a real C and C++ cross compiler.&amp;nbsp; This step uses the previously built statically linked GCC and Glibc to create a real, dynamically linked, version of GCC.&amp;nbsp; Now we have a cross compiler!&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;I'm curious to see how much of what was used to build our cross compiler is still needed in order to complete the CLFS book.&amp;nbsp; Maybe this is a job for git (another thing I'd like to learn).&lt;/div&gt;
&lt;h2&gt;Comments&lt;/h2&gt;
&lt;div class='comments'&gt;
&lt;/div&gt;
</content>
 </entry>
 
 <entry>
   <title>Cross-Compiled Linux From Scratch</title>
   <link href="http://www.bradfordembedded.com/2010/11/cross-compiled-linux-from-scratch"/>
   <updated>2010-11-08T00:00:00-08:00</updated>
   <id>hhttp://www.bradfordembedded.com/2010/11/cross-compiled-linux-from-scratch</id>
   <content type="html">&lt;div class='post'&gt;
I'm following the &lt;a href=&quot;http://cross-lfs.org/files/BOOK/1.1.0/CLFS-ppc.html&quot;&gt;Cross-Compiled Linux From Scratch (CLFS) version 1.1.0 book for PowerPC&lt;/a&gt;.&amp;nbsp; I'm using this to make sure I understand what's going on with cross compilation and setting up a basic Linux system for a different architecture.&lt;br /&gt;&lt;br /&gt;I've previously followed the CLFS book for creating x86 and x86_64 based cross compilers for PowerPC Linux at my day job, but I never really understood why I did each step in the process.&amp;nbsp; I also do not have good experience with a lot of the tools used, such as ar, as, sed, and qemu (as I don't actually own any PowerPC hardware).&lt;br /&gt;&lt;br /&gt;My goal is to first understand the entire CLFS process and be able to either commit helpful changes back to the project or to be able to write additional documentation about how and why the CLFS project book has each step in it.&amp;nbsp; I consider myself to be a decent Linux user but there are so many widely different things that can be done with Linux that it's difficult to be excellent at all of them.&lt;br /&gt;&lt;br /&gt;About 8 years ago I was a Gentoo zealot and through my adventures in installing and maintaining Gentoo boxes I learned a lot about Linux systems, but I wouldn't consider myself an expert [I've since reformed and I'm no longer a zealot, or a Gentoo user ;)].&amp;nbsp; I'm hoping to move closer to expert status by diving into the CLFS project and I want to be able to explain the entire process.&amp;nbsp; I think it's very important to have an understanding of how things go together to create a Linux &quot;distribution&quot; (in quotes because CLFS isn't really a distribution as much as a receipe).&lt;/div&gt;
&lt;h2&gt;Comments&lt;/h2&gt;
&lt;div class='comments'&gt;
&lt;/div&gt;
</content>
 </entry>
 
 <entry>
   <title>Short and Sweet, But Not Always</title>
   <link href="http://www.bradfordembedded.com/2010/11/short-and-sweet-but-not-always"/>
   <updated>2010-11-06T00:00:00-07:00</updated>
   <id>hhttp://www.bradfordembedded.com/2010/11/short-and-sweet-but-not-always</id>
   <content type="html">&lt;div class='post'&gt;
Jason @ 37signals posted a &lt;a href=&quot;http://37signals.com/svn/posts/2647-the-class-id-like-to-teach&quot;&gt;blog entry about how he'd like to teach a class&lt;/a&gt; where the goal is to learn how to edit complex ideas into various sized chunks that are still meaningful.&lt;br /&gt;&lt;br /&gt;I think that's awesome!&amp;nbsp; I would love to improve my ability in this area.&amp;nbsp; I tend to ramble on about things when writing and often I can get off of my original train of thought.&amp;nbsp; I end up with long &quot;papers&quot; written about things I was excited to write about when I began writing.&amp;nbsp; Other people do this too and I get turned off by long essays - even on things I'm interested in - if my mood isn't ready to read something long and detailed.&lt;br /&gt;&lt;br /&gt;Having the choice to get different sized versions of the same material is a sweet idea for marketing a product that conveys an idea.&amp;nbsp; Offer different price points that coincide with different sized versions of the idea and the customer decides which version / price / size they want based on their own factors.&amp;nbsp; This could even be applied such that the customer can &quot;buy&quot; the lower priced but shorter version as a trial (maybe for free?) and then opt to get a discount on a longer version that has more detail.&lt;br /&gt;&lt;br /&gt;Or this could revolutionize the &quot;news&quot; industry.&amp;nbsp; Currently the fad is Twitter or articles, often they overlap.&amp;nbsp; What's missing is the sizes between 140 characters and full blown articles.&amp;nbsp; Maybe another part that's missing is the true long form version where detailed analysis and further investigation takes place.&lt;br /&gt;&lt;br /&gt;If I ran a newspaper and I wanted to survive in today's world, I'd make an iPad / iPhone / Android app that delivers news in this way.&amp;nbsp; Then have it automatically pick articles you'd be interested in (a la Google News) based on browsing habits and present a 2-3 sentence or Twitter'ized version aggregated on a home screen but also pick the size you'd be interested in when you go to view the article with the option to see or &quot;buy&quot; other sizes of the same article.&amp;nbsp; Google News meets Twitter meets traditional news reporting meets LexisNexis.&lt;br /&gt;&lt;br /&gt;It's MY SIZED news.&amp;nbsp; That's a good idea.&lt;/div&gt;
&lt;h2&gt;Comments&lt;/h2&gt;
&lt;div class='comments'&gt;
&lt;/div&gt;
</content>
 </entry>
 
 <entry>
   <title>Revolution OS</title>
   <link href="http://www.bradfordembedded.com/2010/11/revolution-os"/>
   <updated>2010-11-02T00:00:00-07:00</updated>
   <id>hhttp://www.bradfordembedded.com/2010/11/revolution-os</id>
   <content type="html">&lt;div class='post'&gt;
I just finished watching &lt;a href=&quot;http://www.imdb.com/title/tt0308808/&quot;&gt;Revolution OS&lt;/a&gt; on Netflix.&amp;nbsp; It was actually pretty good.&amp;nbsp; I'd be curious to see an updated version made today.&amp;nbsp; Things have changed but they're still going in the same direction they were when the movie was made.&lt;br /&gt;&lt;br /&gt;Even though I've been using Linux and BSDs for about 11 years, I didn't really know the faces or voices of the people who've made it all happen.&amp;nbsp; It was cool to see and hear Richard Stallman and Linus.&amp;nbsp; I've known who Bill Gates is, he was often on TV back when he ran Microsoft, and Steve Ballmer throws chairs, so I know who he is (plus he's really intense looking).&amp;nbsp; It's funny that I don't care for Microsoft that much, yet I know the guys who made it happen.&amp;nbsp; With GNU/Linux (to please Richard who makes the point over and over in the movie [probably in real life too]) I had no real idea who the people behind it were other than the names.&lt;br /&gt;&lt;br /&gt;I'm glad I watched Revolution OS.&amp;nbsp; If you've got an hour and 20 minutes to kill, it's worth a viewing if you're interested in free / open source software and Linux.&lt;/div&gt;
&lt;h2&gt;Comments&lt;/h2&gt;
&lt;div class='comments'&gt;
&lt;/div&gt;
</content>
 </entry>
 
 <entry>
   <title>Rework, Drive, and Linchpin</title>
   <link href="http://www.bradfordembedded.com/2010/11/rework-drive-and-linchpin"/>
   <updated>2010-11-01T00:00:00-07:00</updated>
   <id>hhttp://www.bradfordembedded.com/2010/11/rework-drive-and-linchpin</id>
   <content type="html">&lt;div class='post'&gt;
I have just finished (in this order) reading &lt;a href=&quot;http://www.amazon.com/gp/product/0307463745?ie=UTF8&amp;amp;tag=bradford07-20&amp;amp;linkCode=as2&amp;amp;camp=1789&amp;amp;creative=9325&amp;amp;creativeASIN=0307463745&quot;&gt;Rework&lt;/a&gt; by Hansson and Fried, &lt;a href=&quot;http://www.amazon.com/gp/product/1594488843?ie=UTF8&amp;amp;tag=bradford07-20&amp;amp;linkCode=as2&amp;amp;camp=1789&amp;amp;creative=9325&amp;amp;creativeASIN=1594488843&quot;&gt;Drive&lt;/a&gt; by Dan Pink, and &lt;a href=&quot;http://www.amazon.com/gp/product/1591843162?ie=UTF8&amp;amp;tag=bradford07-20&amp;amp;linkCode=as2&amp;amp;camp=1789&amp;amp;creative=9325&amp;amp;creativeASIN=1591843162&quot;&gt;Linchpin&lt;/a&gt; by Seth Godin.&lt;br /&gt;&lt;br /&gt;I really enjoyed Rework.&amp;nbsp; It is part of the reason I started this blog and want to get back into Linux.&amp;nbsp; I'm not yet sure how I can make decent money off Linux with the skills I have, but I'm excited to try.&amp;nbsp; And Rework, combined with reading a lot of things written by VCs, has given me a good feel for the tech new business starting landscape.&amp;nbsp; Mostly that there's no one right way to start up a business, but without trying, it won't work.&lt;br /&gt;&lt;br /&gt;Drive was also very good, but a little more wordy than Rework.&amp;nbsp; Also, before I read Drive, I watched some of Dan Pink's presentations on YouTube.&amp;nbsp; Basically what he says in the book is what he says in the videos online.&amp;nbsp; That was somewhat a letdown for me, but still worth reading the book as he is able to go into more detail of examples.&lt;br /&gt;&lt;br /&gt;Linchpin kind of let me down.&amp;nbsp; It's very wordy for the message.&amp;nbsp; I liked the message, but it just takes too long for Godin to get it across.&amp;nbsp; A book with half the amount of pages would have gotten the message across just as well, if not better.&lt;br /&gt;&lt;br /&gt;I'd recommend both Rework and Drive.&amp;nbsp; Especially if you're at a job where you feel something is missing but you're not sure what.&amp;nbsp; You're talented and capable but you're not reaching your full potential at work, these two books will talk to you.&amp;nbsp; Linchpin will talk to you too, but it's annoying and less inspirational.&lt;/div&gt;
&lt;h2&gt;Comments&lt;/h2&gt;
&lt;div class='comments'&gt;
&lt;/div&gt;
</content>
 </entry>
 
 <entry>
   <title>I'm Writing a Book</title>
   <link href="http://www.bradfordembedded.com/2010/10/i-m-writing-a-book"/>
   <updated>2010-10-26T00:00:00-07:00</updated>
   <id>hhttp://www.bradfordembedded.com/2010/10/i-m-writing-a-book</id>
   <content type="html">&lt;div class='post'&gt;
I'm writing a book about embedded Linux but I'm not going to compete with traditional technical books.&amp;nbsp; O'Reilly isn't my competition.&amp;nbsp; (I personally really like many O'Reilly books and how they're often they're written by open source contributors.)&lt;br /&gt;&lt;br /&gt;My competition is often outdated and unfriendly, hard to &lt;u&gt;&lt;b&gt;use&lt;/b&gt;&lt;/u&gt; technical resources such as the web, mailing lists, wikis, forums, and yes, books.&lt;br /&gt;&lt;br /&gt;I want to teach people how to develop embedded Linux systems.&amp;nbsp; I don't want to provide a step by step here's &lt;u&gt;&lt;b&gt;how&lt;/b&gt;&lt;/u&gt; you put together an embedded Linux system, although I'm going to do that.&amp;nbsp; I want to provide the how, but right behind that I'm going to provide the &lt;b&gt;&lt;u&gt;why&lt;/u&gt;&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;Why does the manual tell me to do this step and then that step?&amp;nbsp; What's going on under the covers?&amp;nbsp; What if I (the reader) want to do something similar to this but changing things X, Y, and Z?&lt;br /&gt;&lt;br /&gt;I'm going to answer those questions.&amp;nbsp; You (the reader) are going to help me.&lt;br /&gt;&lt;br /&gt;The book's going to be inexpensive (not free).&amp;nbsp; There's going to be online collaboration (think Google Groups or a forum).&amp;nbsp; The book's going to take on the mantra of release early, release often.&amp;nbsp; Trees are going to die, but the book will be available in electronic formats too.&lt;br /&gt;&lt;br /&gt;I think it's going to be amazing!&amp;nbsp; I hope you will, too.&lt;/div&gt;
&lt;h2&gt;Comments&lt;/h2&gt;
&lt;div class='comments'&gt;
&lt;/div&gt;
</content>
 </entry>
 

</feed>
