Filling Jars

It has been a week or so since I tried a challenge in HackerRank. Between work and holidays not much spare time available. BTW Happy Holidays!!!

The URL for the challenge follows:  https://www.hackerrank.com/challenges/filling-jars?utm_campaign=challenge-recommendation&utm_medium=email&utm_source=24-hour-campaign

Before proceeding reading this blog I would suggest to go to the web site and solve it on your own. Continue reading “Filling Jars”

Agile Design

As I have already mentioned in a previous post, I purchased and are currently reading the book “Agile Software Development Principles, Patterns and Practices” by Robert C. Martin. I am about to start reading section 2 titled “Agile Design”.

The author lists the following seven symptoms of poor design which on their own are very important to observe (I believe they are called code smells): Continue reading “Agile Design”

Prime Numbers

The motivation for this entry is based on chapter 5 of the book Agile Software Development Principles, Patterns and Practices by Robert Martin. In that chapter the author writes an initial program with correct output. The issue is that it is not as simple to follow (and possibly maintain) as the final one. The final one is longer but much easier to follow.

I was not able to find the source code in the URL specified by the book: www.objectmentor.com/PPP (the domain is up for grabs). I wanted to determine if the performance would be different (better) for the short program when compared against the longer one, which also outputs the same results. Continue reading “Prime Numbers”

Test Driven Development

What is Test Driven Development? Is it useful? Should I and my team make use of it?

According to Wikipedia (I have edited the following paragraphs):

“Test-driven development (TDD) is a software development process that relies on the repetition of a very short development cycle: Requirements are turned into very specific test cases. The software is improved to pass new tests, only. This is opposed to software development that allows software to be added that is not proven to meet requirements. Continue reading “Test Driven Development”

Should One Start a Project Without Requirements?

A week or two ago, a couple engineers and I were discussing software engineering topics and the following question came up: “Would you start a software development project without requirements”? As you might expect, this is a loaded question that has no single correct answer.

What follows are my thoughts on how to put the question and answers in perspective. Continue reading “Should One Start a Project Without Requirements?”

Java Native Interface (JNI)

In today’s world most systems are architected as a set of services implemented in different programming languages deployed on multiple hardware platforms. Often it is required for a piece of software written in a different programming language than the module it needs to interface with. I have been in situations when modules written in C# or Java had the need to interface with code written using the C programming language (typically for performance, separations of concern reasons or to allow the Java program access functionality written in a different language). Continue reading “Java Native Interface (JNI)”

Sherlock and The Beast

Sherlock and The Beast is a HackerRank challenge. The name is good and the description quite amusing. Please take a look at it at the following URL: https://www.hackerrank.com/challenges/sherlock-and-the-beast?utm_campaign=challenge-recommendation&utm_medium=email&utm_source=24-hour-campaign

A screen capture, using the sample input from the challenge, from the console of the Eclipse IDE follows: Continue reading “Sherlock and The Beast”

TensorFlow(tm) on Windows

As you might already know, TensorFlow(tm) could not run natively on Windows. At the time you had to run it on a VM or a Docker container. Earlier this month Google released a native version for Windows. This morning I woke up around 04:00 AM and decided to install it on my computer to have it available over the weekend. The installation is quite simple and it works as I will show.

Initially I ran into problems due to different versions of Anaconda and Python on my machine. The instructions from Google call for Python 3.5 (or higher). I had installed different versions (i.e., Python 2.7) plus Python Tools 2.2 for Visual Studio 2013. I decided to remove programs in order, leaving Python for VS towards the end. I really wanted to avoid removing such package. Continue reading “TensorFlow(tm) on Windows”

Hibernate

What is Hibernate? No; it is not that time of the year when people in the Twin Cities of Minneapolis and St. Paul bunker in their homes until early spring. In this blog entry I will attempt to provide a simple definition and a simple example using Java, Hibernate and the MySQL database.

Hibernate ORM (Object-Relational Mapping) is an object-relational mapping framework for the Java language. It provides a framework for mapping an object-oriented domain model to a relational database. Hibernate solves object-relational impedance mismatch problems by replacing direct, persistent database accesses with high-level object handling functions. Continue reading “Hibernate”

Down to Zero II

This post is related to HackerRank challenge “Down to Zero II” which seems to require dynamic programming to get it solved. I tried a top down (which I modified into a bottom up) approach. Sorry but I overwrote the code for my first approach. Should have started a new method or saved it in Git.

Please take a look at the challenge at:  https://www.hackerrank.com/challenges/down-to-zero-ii

The idea of Dynamic Programming is to attempt to use existing solutions instead of computing them again each time a similar problem needs to be solved. For example, if you have computer a factor for 32 = 2 * 2 * 2 * 2 * 2 (or 2^5), then when you are computing 64 = 32 * 2 (or 2^6) you could just look up the result associated with 32 and incorporate it into the solution of 64. Continue reading “Down to Zero II”