How to create git like command line interface in Scala

Recently I’ve been building a small application that exposed only command line interface to the user. While I found some solutions that suggested to use plain Scala for this task (which was pretty straighforward) I wanted something that is more suitable. For example I wanted to make sure that –help will be auto-generated so I don’t have to define it manually.

After little research I found scopt which had all the features I needed. Syntax may be a bit confusing at first especially for people new to Scala (myself included) but after a while you will appreciate it’s simplicity.

As an example of what scopt can do I decided to implement a demo app resembling GIT CLI with branch and commit child commands. This will allow for executing commands like git commit [options] or git checkout <branch> [options].

Continue reading “How to create git like command line interface in Scala” »

Finding shortest path using Dijkstra’s algorithm and weighed directed graph

One of the first known uses of shortest path algorithms in technology was in telephony in the 1950’s. The problem was in finding alternate routing in case shortest route became blocked. In today’s world shortest path algorithms are used in plethora of applications. You can find them when calculating driving directions, airline travel routing, network communications, linguistics, social networks – they all use graphs to represent relationships between object.

In this particular post, I wanted to implement a weighed directed graph data structure. Because of its properties, weighed digraph is commonly used in mapping applications. I will use this graph in conjunction with the well-known Dijkstra’s algorithm to find shortest path between two points on a map. In order to do this, I will map intersection points on a small section of city map, then calculate shortest distance between those sets of points using our algorithm. Finally, I will use Google Maps driving directions on the same point sets to validate our experiment.

Continue reading “Finding shortest path using Dijkstra’s algorithm and weighed directed graph” »

Basic Data Structures and Their Properties

Knowledge of data structures is fundamental for any software engineer.
Why data structures are so important? The goal of data structures is to organize and store information in an efficient manner. But there is no one perfect data structure that can/should be used everywhere. You have to pick the right tool for the job. While you can use a hammer to drive both nails and screws into a piece of wood, using a screw driver for latter would most likely be a better choice. In this post I wanted to focus on most basic data structures and their properties. In later articles I will go over implementation of those basic data structures.
Continue reading “Basic Data Structures and Their Properties” »

How to use IPython notebook with Dropbox

Recently I fell in love with IPython notebook. I installed it on my PC, laptop and my station at work. Very quickly I realized that sometimes I need to access notebook files from work pc at home and vice versa. Since all notebook files are saved locally you have to copy it over to another machine in order to access it.
One way to fix the problem is to setup IPython notebook on remote server and that way all your notebooks are in one place. Another way is to tell your local notebook to look into remote location for files.
Since Dropbox integrates well with Linux by mounting its resource into filesystem it is and ideal service for this purpose. It may be possible to use Google Drive as well but as far as I know it is a little bit more involved.
Continue reading “How to use IPython notebook with Dropbox” »

How to export MySQL database or single table into a file and load it back in

Recently I was working on optimising our internal application at work that is heavily MySQL driven. I was focusing on reworking SQL statements and making sure we are utilizing indexes properly. Modyfing and toying around with tables on live server is less than ideal so I needed a way to reliably and quickly move the data elsewhere so I can steadily experiment and fine tune sql statements and tables. Instead of using available phpmyadmin export options I decided to work directly with mysql which gives you more controll.
Continue reading “How to export MySQL database or single table into a file and load it back in” »

Editing your website files live in Linux/Ubuntu without FTP client

Whenever I work on small web projects I tend to edit files live to speed up the process. I used to use Filezilla FTP client for this purpose although every time you’re saving the file, Filezilla asks you if you want to overwrite the file. This becomes a little bit annoying over time.
On another note, If you’re developing on Windows I suggest you look at WinSCP free FTP client that will let you edit file live and won’t bug you every time you’re saving it.
Continue reading “Editing your website files live in Linux/Ubuntu without FTP client” »

Web Project: Zywiec USA

Zywiec USA

Zywiec USA

Client: Amtec Intl of NY

Project description:
While working for Amtec in the advertising department, my manager asked me if I could create a website for them. The objective was to create a clean and slick website for Polish Beer fans. The website was to contain information about beers from Zywiec Brewery, user registration and a listing with upcoming events related to the product. The website also has a simple and custom-made Content Management System (CMS) to provide administration over registered users and gives the possibility to send HTML formatted e-mails.

Used Technologies:
XHTML, CSS, XML, Flash, jQuery, PHP, MySQL

Web Project: Orent Design

Orent Design

Orent Design

Client: Orent

Project description:
Orent is a design and renovation company located in NY. Initially they hired me to take photos and make panoramas of some of the apartments they worked on. Soon after, they asked me if I could work on the website too. Wojtek and Adam, the brains of the firm are both amazing guys. The first time we met, they already knew what they were looking for. The idea was to bring a very clean and bright web design to focus more on their accomplishments in the portfolio section of the site.

Used Technologies: