Posts

App Tune-up Kit

A central theme to all embedded development has been getting better performance and thus increasing battery life.  This is entirely an exercise on how to get more out of the same hardware by doing things smarter with better design. To that end, let's talk about how to rate and compare your app with what others are doing in the wild.  On Android, this is a very easy process thanks to Qualcomm's App Tune-up Kit .  From an Android device, you can quickly grab details about any app currently installed on your device and learn about how costly it is to run that app.  Watch how when the CPU and GPU are working hard crunching numbers the battery life correlates and goes down.  Most importantly, take note of apps that run over the network.  Networking is very battery intensive, especially when not using wifi and going over the cell's 3g or 4g connection. One of the gravest sins an app can do is a process called sending heartbeats.  Heartbeats are short statu...

Setting up git

If you've never used git before; it's probably best to start with github , it's a free service so long as you are doing an open source project.  If you have the ability to run your own server and require keeping your project closed source and not in the hands of a third party, then it's perfectly reasonable to run a local git server. As the process for setting up github is very simple , it seems reasonable to do a quick blog post about how to use git in a day to day type of setting.  First let's cover a few things about the theory of git. Git is a versioning control system.  It works by allowing remote computers to work on the current version of everything in a project.  Git keeps the entire history and change logs inside a subfolder of the project hidden from normal view called ".git".  Git works by comparing the contents of the directory on the remote server with the directory locally to see what has changed and what needs to be added.  This local git ...

Setting up Software for development and testing

We're going to get into some fun and practical knowledge for this post.  As mentioned in my first blog post, this site will use C / C++.  To that end, we'll start with examining the tools we'll use and getting the IDE (Integrated Development Environment) setup.  In order to try and avoid confusion, I will present a survey of IDE choices and setups that are popular and give advantages and disadvantages of each along with when to use them.  If you feel confused anywhere within this post, just skip to the Android Studio at the end, using it and Gradle is not only the official way to do things, it's also what I'll use in all my projects that target Android on this blog. Choosing an IDE Up until recently, May of 2015 when Google announced Android Studio Native Development Kit support; the old official way of using the Native Development Kit involved using an IDE known as Eclipse.  While I'll be mentioning the official ways, but there are non-official IDEs that ar...

Practical project: Magic Mirror - part 1

Image
We're going to do something that is a little whimsical and timely given that it was recently Valentine's day.  First let's discuss the motivation.  Snow White had this evil relative that could call out to her magic mirror by saying "Magic Mirror on the wall" and then ask it any question.  Well ya know what, we can build our own magic mirror that will respond to questions with answers, display a face, or just display some relevant information sans the evil relative bent on feeding poison apples.  Ours will display everything from motivational statements to agenda for the day and news about commute; thus works quite well for a practical Internet Of Things (IOT) project. There's some really cool magic mirrors out there built with raspberry pis. The goal of those projects is to do something that displays a message of encouragement or displays an agenda. For our version, we're going to do a Magic Mirror that does something a little more advanced than just di...

Setting up the Snapdragon DragonBoard 410c for headless server operation

All projects must start somewhere, and most of the time when working with electronics or embedded programming, you're going to have to deal with a controller board of some kind.  Controller boards can range in capabilities, so we usually look for a balance in capacity of processing and cost requirement in terms of resources.  If you want to work with the Internet of Things (IOT), then you're probably looking at making some object that needs logic.  Just as most projects need something to control them with logic and a Central Processing Unit (CPU), it's probably good to establish how to use one of the better controller boards available for the money. The  DragonBoard 410c comes with Android installed.  As cool as that is, it's not so useful for an IOT (Internet Of Things) object that doesn't use touch to interact. Android does not support running a server on it that can be controlled from other computers.  Android is a very "user facing" operati...

Ohm's Law

Image
The natural place to go next in our journey in embedded programming is to delve into some theory.  This week, we'll focus on hardware and show exactly how easy it all can be.  As I firmly believe that if you understand the history as a story explaining how something came to be, you'll understand the why behind it.   We'll start by talking about a late 18th century German Mathematician and Physicist named Georg Simon Ohm . Ohm was a high school teacher who was interested in experimenting with an at the time recently invented, by an Italian,   Conte Volta , electric cell .  Volta's cell is a battery, same as the AA, or AAA variety we use in common modern life.  Volta's cell wasn't something one could buy from the local store, so Ohm created the tools he used to further his own research. The first thing Ohm noticed is the further you try to get electricity to flow through a wire, the less current you have.  He also very early recognized that the thic...

Embedded Development Beginner

I thought about what would make a good starting point for my first blog post.  I have several projects that I will be doing and a series of blog entries I'm eager to share.  However, this is the beginning; thus, it's probably best to start at the beginning. So let's talk about what it takes to do Development, and more specifically gear our discussion towards Embedded Dev.  My plan is to use this blog as a teaching and learning platform for myself.  Many things I will be learning for the first time and will then draw on my experience to try and teach others. Thus things I know really well, such as high level programming, development, and embedded programming will get a lot of focus with everything from game dev tutorials, to memory management best practices and testing / qa methodologies.  I'll try to refrain from rehashing things covered elsewhere to my satisfaction, while I will be picking topics that work well for new and seasoned developers. For things I d...