All posts by Luka Gabric

ESP8266 Relay Smart Socket with iOS App Remote Control

es8266-thumbESP8266 is a family of inexpensive full TCP/IP stack Wi-Fi chips and microcontrollers that can be programmed using Arduino IDE. It can work as a standalone microcontroller or interfaced with an Arduino microcontroller via AT commands. I decided to try it out by itself on a simple relay project with an ESP-01 module. The program is a simple web server that can be used by a client to turn a power socket on and off using a 5V relay module.

Continue reading ESP8266 Relay Smart Socket with iOS App Remote Control

LGStackView – Swift iOS8 control similar to UIStackView

lgstackview-logoLGStackView is a control that is a simplified version of UIStackView supporting iOS8. It is used to stack dynamic subviews constrained with autolayout constraints in Interface Builder based on their hidden or alpha property. Once the constraints are set up for all views, there are two IBInspectable properties in Interface Builder to set up. First is the orientation (vertical/horizontal), and the seconds is padding among views. The order of the views is determined by their z index, which is set by reordering subviews list in Interface Builder.

Continue reading LGStackView – Swift iOS8 control similar to UIStackView

Arduino USV Robot with GPS and Compass

rover_thumbThe goal of this project was to create a robot that would be able to reach a goal geolocation from any starting position while avoiding obstacles. Performing this operation with multiple goal locations, the robot is able to travel a predefined path. Robot operation is based on two modes: Cruise and Wall follow (for obstacle avoidance). Cruise mode uses readings from GPS and Compass while the wall follow mode uses distance information acquired from 5 ultrasonic sensors as well as compass readings. The main operation loop runs at 20Hz.

Continue reading Arduino USV Robot with GPS and Compass

Workflow models, GitFlow and Code Review

git-pull-requestFor years I’ve been working with many different teams using various workflows and version control systems. There is a great overview of different workflows (Centralized Workflow, Feature Branch Workflow, Gitflow Workflow and Forking Workflow) on Atlassian website. My experience is that Centralized Workflow is mostly used by very small teams working on small projects. The projects are usually developed using the Waterfall model.  The independent requirements of the project are divided among developers and they are followed through the development stage. Developers use some of the core application layers (e.g. data layer), but other than that, most of the code a developer writes is not seen by other developers. The process is very simplified and there is not much overhead cost as in other workflow models, but it can have flaws in lower software quality due to the lack of code review.

Continue reading Workflow models, GitFlow and Code Review

iOS 7+ UIStackView port

UIStackViewPortUIStackView is introduced in iOS 9 and is very useful for laying out dynamic collection of views in horizontal or vertical axis. Whenever one of it’s managed view’s hidden property changes, the layout is updated to show/hide the managed views. To checkout more about UIStackView see the Apple Class Reference. There is also a great tutorial about UIStackView at tuts+.

It would be very nice to have a control like UIStackView that is available for iOS7 and above. I needed a way to create a dynamic collection of views so I found an interesting port of UIStackView – OAStackView.

Check it out:

If you liked this blog post I’d appreciate if you followed me on Twitter

PromiseKit and Cancellation with Deferred

pmkPromiseKit ( is an Objective C and Swift implementation of Promises/A+ specification ( By definition, promise represents the eventual result or error of an asynchronous task. Interaction with the result or error is done using the then method with the block that result or error is passed to as a parameter.

Continue reading PromiseKit and Cancellation with Deferred

iOS Mogenerator and MagicalRecord

mogenerator_magicalrecord_thumbMogenerator is a very useful command line tool used to generate NSManagedObject subclasses. For a given .xcdatamodel file Mogenerator will generate two classes for each entity. The first class, _MyEntity contains attributes and convenience methods of the entity and will be continuously overwritten to stay in sync with the data model. The second class MyEntity (subclasses _MyEntity) will never be overwritten and is a place to put custom implementation for that entity.

Continue reading iOS Mogenerator and MagicalRecord