1 min

What A Post-Mortem Of Pokemon GO Can Teach Us About Augmented Reality Development

2016 has been an odd year. What seemed like the hottest news in tech just a few months ago, isn’t even a blip on the radar anymore. After a series of strongly criticized launches from Apple (even if the criticism was premature), an explosive disaster from Samsung, an impressive bounce back from Microsoft, and political chaos in United States, chances are you don’t even remember you spent the summer chasing after that Dratini in Pokemon Go.

read more

1 min

IoT Development: Planning For A Connected Future We Can’t Predict

IoT has already enjoyed a next-big-thing status for several years now and all signs point to continued growth as homes, cars, and nearly every piece of hardware in our lives gets connected. But that doesn’t mean the industry isn’t facing challenges. In fact, rapid growth and its status as the new kid on the block, make IoT perfectly poised to face two particularly big challenges in the years to come.

read more

1 min

Product-Minded Engineers: Who They Are And Why They Matter

One of the most discussed people in the tech world are the elusive product-minded engineers. People have been kicking this term around for years — in job descriptions, “Looking for a product-minded engineer,” on company About pages, “Our team prides itself on product-focused engineering” — but how do you define a product-minded engineer? Why does everyone want to hire this type of engineer? And how can engineers become more product-focused?

read more

1 min

Throwing Arithmetic Operators in Swift

“Let me throw you a hand”

If you are making an application that is heavy on math calculations, you may wish to be able to catch errors such as division by zero and integer type overflows before they spread all over the place.

Floating point errors include division by zero, which produces ±infinity, and undefined (NaN) expressions, such as sin(Double.infinity). These fail silently. Integer type operator errors are limited to overflows, which make your code crash loudly.

Swift provides handy integer arithmetic operators permitting overflow; &+,&−, &*, and more informative methods such as addWithOverflow(_,_). I have leveraged these methods to define throwing operators &&+, &&−,&&*, &&/, &&%, and &&?. Usage follows.

/*
 *  Example.swift
 */
// Produces 15.27543444817377
func x() throws -> Double {
  return try (12.5 &&+ 2.3) &&/ (&&?sin(3.1) &&+ &&?atan2(4,3))
}
// Throws ArithmeticOperationError(.infinity,.division)
func y() throws -> Double {
  let y = try (1.0 &&+ 1.0) &&/ (&&?sin(M_PI_2) &&- 1.0)
} 

read more

1 min

Type Safe Matrices in Swift

Thanks to Swift’s type safety and generics it is possible to define matrix types with safe operations. Where, for instance, you may only multiply an M×N matrix by a P×Q matrix if N is equal to P.

In this article I tackle this problem in a very generic way, so that you can add type safety to your favourite existing matrix implementation. This is useful since different matrix libraries may perform better in different applications (machine learning algorithms vs 3D graphics for example).

read more

1 min

How IoT Will Transform The Automotive Industry

The advent of smartphones, and the rise of mobile internet and mobile apps disrupted and transformed the way we live and do business. Thanks to the millions of mobile apps you can buy or download from app stores, you practically have your mailbox, office, photo album, TV, game console, shopping cart and much more at your disposal any time you like.

read more

1 min

How we develop

We can only expect to get better at what we do if we open it up to criticism. And in that spirit of openness I thought I would share a bit about Mokriya’s software development process. Maybe I can inspire some of you to try this at your workplace.

read more