Back

Coding & Development

  • Matthew Burton
  • Posted by Matthew Burton
May 8, 2017

Last year I wrote a series of blogs concerning the Internet of Things(IoT).  In that series I layed out what the IoT is and some ideas for what IoT may become.  As incredible and impactful as the IoT is there is something holding it back even today- power!  More specifically, I’m talking the ability to take electrical power with you, aka the battery.  Crazy, no?  The battery is a common enough and relatively simple device.  How on earth could this be holding technology back? The problem lies with the fact that batteries are old technology.  The lithium-ion battery(LIB) is the type of battery that powers most mobile devices today. For those of us who have used a smartphone or smart wearable we know all too well the troubles of ‘low battery’.  LIBs were invented in the 1970’s- that’s almost 50 years ago!  It may not seem like a long time, but when you consider the rapid pace at which technology changes today, it’s ages ago.  According to Moore’s law, integrated circuitry will double in performance every 18 months, and that has held reasonably true since he postulated it in the 1960’s.  Batteries have improved in that time but they simply have not kept pace. Another area of technology that demonstrates this fact is the electric car industry.  All but a few of the best fully electric cars struggle to range above 200 miles.  There are a few that break this rule but the two that really stick out, with ranges at or above 300 miles are both made by Tesla.  Of course, getting this kind of range out of an electric car comes with a high price tag.  The X starts at $85,500 and goes up from there.  The S, with the longest range, starts at $68,000.  These cars are loaded with premium options but one of the biggest costs is giving it a longer range. That requires upgrading the battery package on the vehicle which significantly increases the price. In software development, as in the development of all technology, there are always constraints.  Memory, storage, processing power, and many other factors must be considered when designing and implementing any software solution.  When it comes to development for software that runs on a mobile device, power consumption is always a very real concern. In technology there are few areas that have to consider power consumption more than the IoT and embedded systems.  At this level, the quality and efficiency of the code makes a difference in every milliwatt used.  At Metova we pride ourself on providing the best software solutions to our customers.  This includes understanding the constraints of the platforms our software will be executed on.

Read More
  • Bryan Finlayson
  • Posted by Bryan Finlayson
April 24, 2017

Chrome’s rising popularity as the world’s pre-eminent web browser makes it a great time for developers to write Chrome extensions. According to NetMarketShare.com, Chrome makes up over 58% of the desktop browsing market right now. Luckily, Google makes it easy to publish Chrome extensions, plus you get to use technologies that you already know. Chrome extensions are bundles of HTML, CSS, and Javascript files that add some functionality to Chrome. Some examples are Pocket for keeping track of articles you want to read and Reddit Enhancement Suite which adds infinite scroll and other goodies to Reddit.com. Chrome extensions are also great for businesses that already have an API to leverage, because extensions can serve as another platform for users to find your app and are always visible in the browser toolbar (the Evernote Web Clipper for keeping track of things you see on the web is one example). Another example of where you might use a Chrome Extension is to help you automate tasks that you find yourself doing all the time. At Metova, developers use Jenkins, a continuous integration tool that runs a project’s full test suite each time code is committed before deploying an application. If a build fails and your project is configured with Junit, Jenkins will save the names and stack traces of the failed tests. That information is not always easy to access if you’re trying to compare the results of multiple failed builds, so I made an extension called Evil Jenkins to help developers do just that.

Read More
  • Christina McIntyre
  • Posted by Christina McIntyre
April 17, 2017

Audio manipulation in iOS can be very daunting. The documentation for low...

Read More
  • Renzo Rivas
  • Posted by Renzo Rivas
March 20, 2017

rbenv vs. RVM

Choosing a Ruby version management tool often comes down to two players: rbenv and RVM. The latter was widely accepted as the norm, greatly due to its wide toolkit. However, rbenv has become a strong contender with its lightweight approach.

Read More
  • Jennifer Pike
  • Posted by Jennifer Pike
February 13, 2017

Android fans are excited about Google’s release of Android Wear 2.0 and...

Read More
  • Logan Gauthier
  • Posted by Logan Gauthier
January 23, 2017

As an iOS mobile developer, you may think you don't need to manage Ruby versions in your project. Many iOS projects use CocoaPods which is a Ruby gem. Some projects may even use other Ruby gems such as fastlane for automating your deployment pipeline, or slather for reporting code coverage results. Here at Metova, we use bundler to manage our gem versions, but it's also important to manage your Ruby version as well. Sometimes some of the gems used for your project may have known bugs with specific Ruby versions that haven't been fixed yet or they only support specific Ruby versions. When you manage your Ruby version, you can take more control over your environment. By doing this, you'll know that if everything works on your machine, it will work on other machines too. Specifically:

Read More
About Metova Software Development macbook keyboard
  • Andreas Can
  • Posted by Andreas Can
December 14, 2016

Prelude to Swift 3 Migration

If you didn’t migrate to Swift 3 in September like the rest of us, do it now and start next year off right. If you’ve been holding off on making the update, here is some advice and guidance to ensure a safe and swift transition to the next version. Migrating to Swift 3 can seem a bit daunting depending on the size of the project, but with the proper steps and procedures you should be able to get through it much sooner than later.  Xcode 8.2 will be the last version to support Swift 2.3, and that in itself is an incentive to start the migration as soon as possible.

Read More
  • Jennifer Pike
  • Posted by Jennifer Pike
December 13, 2016

Google is making developing devices and apps for the Internet of Things simple with their Android Things operating system. This is actually an updated and rebranded version of Brillo, which was announced at Google I/O in 2015.

Read More
  • Bryan Lindsey
  • Posted by Bryan Lindsey
November 30, 2016

2016 is shaping up to be the year of Virtual Reality. We’ve seen the release of 3 major high-end virtual reality (VR) headsets - the Oculus Rift, the HTC Vive, and Playstation VR. We are also seeing some advancements in the mobile VR world as well, with Samsung releasing a new version of their Gear VR headset, and Google releasing its new Daydream platform- unique for mobile VR in part thanks to its motion controller - to complement its existing Cardboard efforts.

Much of the focus with virtual reality has been around gaming. However, as the hardware and platforms mature, it is becoming evident that VR has many applications outside of gaming. The ability to see depth and to have real movements translated into virtual space provides an immersive feeling that is convincing enough to make your brain feel like you are in a different place. This is known as presence (see my previous post for information about presence).

This ability to create presence lends itself to a variety of applications. For example, it could be used for…

Read More
  • Riley Mills
  • Posted by Riley Mills
November 2, 2016

When you see something like the below, what do you do?

major version 51 is newer than 50, the highest major version supported by this compiler.

Read More