Autocomplete

trie_diagramYesterday evening I was talking with a software manager about an algorithm to autocomplete words. The idea was to build a data structure that could help (hint) users with the available words that would match what has been entered so far. For example, if someone would be looking for my phone number in a company directory application and would have entered “can” then the autocomplete feature could display “cane” and “canessa”. Continue reading “Autocomplete”

Binary Heap or Priority Queue

binary_heapIt is a beautiful Sunday morning in Minneapolis, MN part of a long Labor Day weekend. Spent some time in the past couple days working on solving a HackerRank problem named QHEAP1. I want to discuss my approach and the reason I solved the problem twice. No, it was not get double points solving the same problem. I do not believe you can do that. Once a problem is solved it is flagged.

I always tend to refresh my knowledge (in this case) or learn about a new topic in order to better understand it before attempting to design a solution. You would be surprised how many people just looks for a solution on-line and never understand what they did or the ramifications if it is not just a standalone problem (i.e., HackerRank) but it is part of an application or system. Continue reading “Binary Heap or Priority Queue”

Process, Thread and Fiber

andrew_tanenbaumIn the past few months I have been asked about the differences between a process and a thread. No one so far has mentioned a fiber even though fibers are related to threads. Let me describe them and later give some examples on how I have and continue to use threads in my work.

I searched for different descriptions / definitions on-line and combined / distilled them into single and simple sentences. Of course, as one continues to talk about each topic, the definitions expand. Continue reading “Process, Thread and Fiber”

AVL Tree

binary_search_treeYesterday I was looking at a problem on the HackerRank web site. The title is “Self Balancing Tree”. The challenge is to write the insert() function / method in such a way to insert new elements and keep the binary search tree balanced. As usual, no matter how familiar the subject might be, I always research the subject before planning a solution. By doing so I refresh my knowledge and in many cases learn one or more things.  To research I try to use Google research and go for Wikipedia articles.  Based on what I find I tend to go into different on-line articles or books. Continue reading “AVL Tree”

Static versus Dynamic Polymorhism

spring-by-pivotalAs I have mentioned on different blog entries, I always try to read books, watch videos, take courses and experiment with technologies that I will be using in a project. For example, I have been developing software using the C and C++ programming languages for a long time. That said, I have read a couple dozen books on the subjects. It amazes me that every time I learn something new or question a way I view some concept. In this case I am starting a project using the Spring Framework. The first version was written by Rod Johnson, who released the framework with the publication of his book Expert One-on-One J2EE Design and Development in October 2002. A lot has changed in the past 14 years including new enhancements and tools. Continue reading “Static versus Dynamic Polymorhism”

Interesting Tweet

tweeterI tend to wake up early morning and spend some time reading on my phone. Today was not different. I browse my Tweeter account about three times a day. Typically I do not reply or re tweet. I am a firm believer that software engineering and understanding the inner works of computers and how operating systems run applications is extremely important in producing quality software.

The following is a tweet from David Mwathi (re tweeted by Marcus Biel):

“Good programmers are good because they make a diagram before they start coding”

Continue reading “Interesting Tweet”

Huffman Coding

trieAs I have mentioned in a previous blog, it is very important to reduce as much as possible distractions (i.e., email, phone, texting) while at work and to dedicate a percentage (i.e., 10% to 15%) of your daily workday to learn something. On occasions I decide to learn a new technology (e.g., Spring). Sometimes I decide to spend time polishing on topics I know (e.g., Java) while sometimes I need to refresh concepts (e.g., Huffman Codes and Tries) that I learned in school but seldom use at work. Continue reading “Huffman Coding”

Multiple Programming Languages

prog-languagesI have dedicated my professional career to different disciplines (i.e., graphics, software engineering) within Computer Science. In this blog entry I would like to summarize some observations regarding computer languages. At different stages in life (e.g., college, work, self study, and business owner) most developers are required or just decide to learn different programming languages. An issue that frequently comes up with project managers is: “Knowing and using multiple programming languages is better or worse for a software developer?” In this blog entry I would like to provide some insights on how to respond to this question. Continue reading “Multiple Programming Languages”

Coding Exercise

cubeEarlier this week I was talking with a colleague about sites that are becoming quite popular with software developers (e.g., HackerRank https://www.hackerrank.com). The format is quite similar between sites. A problem is described. You need to write correct code to solve it.

All have a window in which you can write the necessary code. Most of the constraints for the problem are described. The better sites provide some sample data sets to test your solution. Continue reading “Coding Exercise”

Top Dozen Qualities

software_developmentThis past week I read a couple articles about what hiring managers are looking for. Having co-owned and managed a software development business for over a decade and worked for small, medium and large size companies, encouraged me to write this post. Continue reading “Top Dozen Qualities”