Michael Yagudaev

Posts

Testing On Mobile Devices the Easy Way

Testing On Mobile Devices the Easy Way

If you ever worked with React Native’s Expo, you know what a great mobile development experience feels like. But what about Mobile Web? Is there anything more annoying than trying to find your IP or creating an SSH tunnel with ngrok just to load a website on your phone?

Emojination - Create fun and engaging visuals 💡

Emojination - Create fun and engaging visuals 💡

After being inspired by a few indie-hackers on Twitter, I wanted to create a fun weekend project. I recalled the trouble I had creating a graphic for a job ad to help us standout on social media and s...

Search on Rails - Learn to build a search engine 🔎

Search on Rails - Learn to build a search engine 🔎

After working on a search engine for a previous company and having to re-write it several times, I knew there was a problem. Building a good search is difficult and few people understand how to do it....

.NET Blazor for Rails Developers

.NET Blazor for Rails Developers

This past weekend, I decided to explore .net’s Blazor. I’ve heard a lot of good things about the Entity Framework and had a great time playing with LINQ years ago. When I heard about Blazor, a C# web assembly library, it blew my mind how much it seemed to do for you.

Re-Imagining the World with AR

Re-Imagining the World with AR

Like many of you I watched Apple’s Key Notes on June 5, 2017 and saw the introduction ARKit. It seemed cool, but no more than an entrainment toy. I’ve also played around with Oculus, Microsoft Holo Le...

Renovating Our Office: Distributed => Co-located Team

Renovating Our Office: Distributed => Co-located Team

Nano 3 Labs started as a distributed team of skilled developers. I was still unsure whether I would stay in Vancouver or move away elsewhere. The idea of being a digital nomad appealed to me and I wan...

PictureThat - Visualize art on your walls at home 🖼

PictureThat - Visualize art on your walls at home 🖼

As soon as ARKit beta came out, I knew I wanted to create something useful that takes advantage of it. [PictureThat](https://www.picturethat.io/) was born out of a need to show what different print si...

Building an App, Part I: Research + Design

Building an App, Part I: Research + Design

Creating an app can be a scary endeavour to undertake, especially if you don’t fully understand the entire process and life cycle of software. This post is designed to answer questions and concerns we...

Death of the indie web developer

Death of the indie web developer

Back in the 80’s when video games were still new, games were often developed by a single person. Fast forward to the 90’s and we start getting small teams of game developers with the introduction of 3...

The 4-Hour Code Week

The 4-Hour Code Week

This post wasn’t written for you. It was written for me, future me that is. Yes, the me that one year ago had a 50-day github streak. The same me who said “ok, its the weekend I’ll take it easy with o...

2017 The Year of Mobile Shopping

2017 The Year of Mobile Shopping

[Mobile shopping](https://en.wikipedia.org/wiki/Mobile_commerce) first emerged in 1997. Ten years later, in 2007, we were introduced to the original iPhone. This year (2016) [Mobile traffic finally su...

Creating our company logo

Creating our company logo

#### Creating our company logo **_nano3labs_** was first conceived almost four years prior to us becoming a “real” company. In 2013, after handing in my resignation to one of the first startups I work...

Building sticky products users love with Google Chrome

Building sticky products users love with Google Chrome

In product design circles you will often hear talk about making products sticky, addictively useful and ingrained in our lives. We want users to wonder how on earth did they exist before discovering o...

Chrome Extension tip: never cache current tab

Chrome Extension tip: never cache current tab

Chrome Extensions typically use a background.js script which runs in a separate process that is shared across all tabs. Therefore it is important to know which tab we are currently viewing to be able ...

Chatbots are just command line interfaces

Chatbots are just command line interfaces

Chatbots are all the craze nowdays, but did you know you already wrote one without even realizing it? Lets lookup the definition of a chatbot: > _a computer program designed to simulate conversation w...

Ruby Debugging Tip: Vendor-in Your Gems

Ruby Debugging Tip: Vendor-in Your Gems

Coming to Ruby from Node.js, I was used to always having all my code at the tips of my fingers, right inside my sweet project. When I first came to Ruby, I was glad to have that distraction removed at...

FitnessKPI - Tracking What Matters

FitnessKPI - Tracking What Matters

Over the last few months I have been working with Swift to bring a new app to help keep track of my fitness. [FitnessKPI](http://fitnesskpi.com) is designed to replace the workout journal and make tra...

Stubbing without RSpec

In `rspec` you can typically call the `stub` method to stub something out. However, this method only works inside an `example` or a `before(:each)` block. Try using rspec stubs anywhere else and you g...

0idle: A marketplace where Event Organizers find Venues

0idle: A marketplace where Event Organizers find Venues

My roommate (Anton Kishchenko) and I started working on a marketplace to help event organizers find venues called [0idle](http://www.0idle.com). After initial market research, we received great feedba...

Quickly find where an asset is in Rails

Rails AssetPipeline is a great feautre. However, sometimes it gets really confusing as to where a resource is located. Imagine you had to upgrade a basic library like jQuery UI on an older Rails proje...

Introduction to Backbone Part 2 - Server-side

I finally found the time to complete the second part of my introduction to backbone. <iframe width="700" height="394" src="https://www.youtube.com/embed/hHlqisQeERk" frameborder="0" allow="acceleromet...

Introduction to Backbone Part 1 - Client-side

I decided to do a screencast showing off how to use [backbone.js](http://backbonejs.org/). There are two parts to the screencast, the second of which will be posted next week. The first part covers th...

Winnipeg.js

Winnipeg.js

I collaborated with one of my favoriate designers [Vadim Brodsky](http://www.vadimbrodsky.com/) to create a website for the [Javascript User Group in Winnipeg](http://winnipegjs.com). Needless to say ...

Comparing Object in Javascript

Comparing Object in Javascript

As you start writing unit-test you will undoubtedly discover the challenges of comparing object in Javascript. In this short article we will look at how to do object comparison in Javascript to make o...

Quick Tip: Customizing your chrome dev tools

<iframe width="700" height="394" src="https://www.youtube.com/embed/-YBMlnNwr6Y" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></ifram...

SnippetSky: Store, manage and share bits of code

SnippetSky: Store, manage and share bits of code

We are thrilled to announce [SnippetSky](http://snippetsky.com) is now available for public beta. We have poured our hearts and souls into it to make it the best experience possible. We used SnippetSk...

Reborn: Simplicity and Focus

Reborn: Simplicity and Focus

As you may have noticed the site has a fresh new look now. But it is more than that, much more. I now have a more focused approach to the content and a simpler website to navigate through. Many of my ...

StudioKW - StudioKW.com

StudioKW - StudioKW.com

[Simple is beautiful](http://www.studiokw.com) and that is exactly what we have done with the new design of StudioKW. Built on the powerful wordpress platform this website is not only beautiful but, i...

Getting Reliable z-index Cross-Browser

Getting Reliable z-index Cross-Browser

Turns out it is not as easy as one might think to get the correct z-index of an element using a javascript call like $(element).css(‘z-index’). The problem is how browser vendors apply the z-index to an element. But, no worries I have created a jsfiddle page to demonstrate the problem and more details on how it works will follow below.

Asian Cabana - asiancabana.com

Asian Cabana - asiancabana.com

A friend of mine owns and runs a store in Winnipeg under the name: "Asian Cabana". He asked me if I could build a website for his store to help him attract more customers. After meeting with him to discuss it further, I accepted and immediately&nbsp;started working on it. It went live yesterday with still some polishing left to do, but is very stable and useful already.

Multiple Popup Windows Workaround

Pop-up window management poses a challenge in itself, but with an elusive Firefox bug effecting this process, it may seem impossible to do it well. I will present you with an account of my struggle with this issue and the simple solution I found for it. I will demonstrate the problem, the inspiration for the fix, improvements to this early fix and a short discuss of how this can be applied to other areas of web development.

Snow in JavaScript

Snow in JavaScript

Winter is finally over, but we can still make nice digital snow to cool us down during hot summer days. We will start by considering the path snow flakes take before they hit the ground, then we will find out how to implement it using&nbsp;mathematics. Finally we will implement this idea using Object Oriented Programming in&nbsp;JavaScript.

Resolving PHP Relative Path Problem

Resolving PHP Relative Path Problem

In this tutorial I will talk about the problem of using relative paths with the four following function: include(), include_once(), require() and require_once().

Escaping HTML in Java

Escaping HTML in Java

HTML uses some special characters to control how a page is displayed. These characters need to be escaped before placed on a page if they are to be displayed as part of the page content (and not just to control how the page appears). This is similar to the way double quote characters in a C/C++ string have to be escaped in order for code to compile properly. Therefore, a web application needs to escape all user input before rendering HTML back to the user.

UMSAE Website - umsae.com

UMSAE Website - umsae.com

Designed and developed the University of Manitoba Society of Automotive Engineers [website](http://www.umsae.com). I started with a few simple paper sketches, choose the sketch I liked best. Then it w...