We're hiring!

We're actively seeking developers and designers for our Detroit & Ann Arbor locations.

Development

I Hate #regions

As software consultants, we work in many environments. Most of the time we are working in our own environment on a brand new project, but sometimes we work with a team of client developers on existing software. In the later case, we have to be mindful of their coding standards. One practice that drives me nuts is code organized into #regions.

What’s Wrong with Regions?

Microsoft introduced #regions to help organize big files into understandable chunks. In my opinion, if your code can be broken up into regions, then it can be refactored into smaller files. I try to write my classes with single responsibility in mind, where a class has a single responsibility. Therefore regions are not required to organize the code into responsibilities.

Regions are also used to separate private, public, and protected variables, properties, and functions. This is where I see them used most often. If your class is small enough, there is no need to organize them into regions. Read more on I Hate #regions…

Also posted in Developer Tools | Tagged , | 3 Comments

Cool and Easy HTML with Emmet

emmet-logoAmaze your friends and write HTML faster with this one cool trick!

But seriously, native HTML is repetitive and annoying to write. Emmet provides an intuitive and sleek alternative. It’s widely supported, and its simplest features can be adopted no problem on day one of using it. Plus — it feels great to use, and it just looks cool.

Emmet, formerly known as Zen Coding (developed by Sergey Chikuyonok), is a super cool shorthand tool for writing native HTML code. There are plugins in most editors (including Sublime Text, Visual Studio, Eclipse, IntelliJ, and Brackets), so there’s no reason not to use it. Read more on Cool and Easy HTML with Emmet…

Also posted in Developer Tools | Tagged , , | Leave a comment

Increasing Pivotal Tracker Usability with Shorter IDs

Pivotal TrackerWe’re using Pivotal Tracker to manage the backlog on my current project. I initially really appreciated the simplicity of the way Tracker presents stories just by their human-readable name. But as the project progressed, there came a point where there were so many stories that it started to become difficult to find stories quickly.

One of the clients made a mention in passing about how they wished they had a short story ID like they had seen in previous projects. Having previously worked with JIRA’s project-unique issue-ID system, I realized how much easier it would be to make quick reference to existing stories, and started looking for a solution. Read more on Increasing Pivotal Tracker Usability with Shorter IDs…

Also posted in Developer Tools | Tagged | Leave a comment

Xcode Efficiency Tips: Keyboard Shortcuts

xcodegraniteincon

Although other IDEs exist, Apple’s Xcode remains the most popular choice for development of iOS applications. At Atomic, we highly value efficiency, so it’s important for a developer working in Xcode to familiarize themselves with at least some of the most useful keyboard shortcuts. To that end, this blog post will cover some of the keyboard shortcuts and resources I find myself using the most. Read more on Xcode Efficiency Tips: Keyboard Shortcuts…

Also posted in Developer Tools | Tagged , | Leave a comment

Shorten Board Bring-up with a Well-Designed Alpha Board

The board bring-up phase can be quite a challenge for embedded developers because it involves the first interaction between code and the physical components on the board. It’s the phase where you take an expensive paper-weight (the circuit running no application) and start to bring it to life. Challenges during board bring-up include:

  • working with components from many different manufacturers
  • gleaning important bits of information from often poorly written datasheets
  • writing applications that respond to user inputs instantaneously while using next-to no power

However, a well-designed Alpha board can make the process go more smoothly and quickly.

What is an Alpha board?

The Alpha board is the very first revision of the circuit. It will likely never be seen by the target-user. The sole purpose is to prove out the circuit — can it do what we want it to do and not catch on fire? Read more on Shorten Board Bring-up with a Well-Designed Alpha Board…

Also posted in Development Techniques | Tagged | Leave a comment

Editing the Future – Light Table, and Atom, and Then What?

Github recently announced their project to create their own programming editor called Atom. (Nice logo! *wink*) If you haven’t seen it, here’s a great hands-on post showing off its features.

In 2012, Chris Granger announced a project called Light Table, which I think was a recent mile marker on the same road as Atom.

Here’s some of what Light Table shares with Github’s Atom:

  • Both offer a web-based programming platform targeting customizability (Atom, LightTable).
  • Both leverage modern languages to implement the editor itself (Atom, LightTable).
  • Both envision open-source communities of 3rd party plugins (Atom, Light Table).

So if these two recent programming environment projects are points on a line, where does that line point? Read more on Editing the Future – Light Table, and Atom, and Then What?…

Also posted in Developer Tools | Tagged , | 2 Comments

How to Avoid Stupid Programming Mistakes

I made a mistake. While implementing a feature, I got stuck and spent a little bit too long spinning in circles before I figured out my problem.

While I was scrutinizing the front end, the mistake was (of course) hidden in the furthest possible back-end location. When I finally discovered the error, I felt silly and a bit stupid, and I couldn’t believe it had taken me that long. I immediately took a step back and thought about how I’ve approached being stuck in the past and what I could do differently next time, both before starting the feature and while working on it. Read more on How to Avoid Stupid Programming Mistakes…

Also posted in Development Techniques | Leave a comment

Affordable CAN Bus Tools that Won’t Break the Bank

The CAN bus is a simplistic, cheap, and robust interface that’s widely used for communications between microcontrollers but is a viable and cost-effective communications network for systems that are physically wired together. Vector Informatik GmbH has long dominated the space of CAN bus development/analysis tools, but the hardware and software offerings they provide are extremely pricey. This leads to organizations fighting over these tools, because they cannot justify the cost involved to allow all developers and testers to have the setup they require to get their work done.

In this post, I will be presenting some alternatives to the Vector suite that likely provide all of the necessary capabilities your teams require, but at a fraction of the price. Read more on Affordable CAN Bus Tools that Won’t Break the Bank…

Also posted in Developer Tools | Tagged | 1 Comment

Dumb Development Mistake Checklist

As engineers, we enjoy solving technical problems and enjoy the results of our hard work. But sometimes, our development suddenly and mysteriously stops working, and we get stuck trying to figure out what happened. Then, hours later, we realize it was a really dumb mistake or oversight. Those times are really unfulfilling and frustrating.

To help you avoid this frustration, here’s list of lessons that have been painfully burnt into my heart over the years.

1. Save the file.

200px-Document-saveYeah, we still forget to do this sometimes. We were supposed to have permanently learned this lesson during our first ever Hello, World program, but sometimes we still forget. Many IDEs have an autosave feature, but watch out when using that same IDE on another machine, since the feature might not be switched on. I’m more likely to neglect saving when I switch between buffers or tabs a lot. Read more on Dumb Development Mistake Checklist…

Also posted in Development Techniques | Leave a comment

Don’t Fear the Standards – They’re There for a Reason

When I started working on my first embedded project at Atomic, I was given just two pieces of advice regarding C programming:

  1. Read the K&R C book.
  2. Turn to the C technical standard for language questions.

The second one struck me as an odd proposition at the time, as I had never before cracked open a language spec.

My impression of language specifications and formal documents in general was that they were for a chosen few, and not generally useful day-to-day. This turns out to be almost completely untrue. Since the standards documents lay out the rules which the people implementing the standard must follow, they often provide one of the very best references for how things behave in the real world. They also must be clear enough to follow, and detail the corner cases that introductory blog posts always seem to leave out.

Surely enough, I quickly found myself skimming through the C99 specs for everything from finding out what the ‘register’ keyword actually does (hint: nothing to do with register allocation) to the exact behavior of designated initializers for structs. The spec isn’t always the clearest, and takes some time to read, but importantly it’s almost always right. Read more on Don’t Fear the Standards – They’re There for a Reason…

Also posted in Development Techniques | Leave a comment