Porting MD5 Code

Last week my wife and I returned from a one week trip to Portugal. We had not been there in more than a decade. Some things have changed while other not. People continue to be very nice and helpful especially when you attempt to utter a few words in Portuguese.

We arrived in Lisbon and headed to the rental car office. In less than an hour from arrival we were heading south to the Algarve. We have watched a few YouTube videos by Rick Steves and had purchases one of his travel guides for Portugal. In more than one occasion Rick has mentioned that Salema is his favorite beach in the Algarve. By experience we now know why. It is a small town sitting on a relatively small bay with blue and green waters. The population is less than 300 people. My wife took a picture at a restaurant on the beach while the temperature was hitting 96 F and we were enjoying delicious fresh sea food and drinking Sagres beer. From our table we could hear people conversion and different languages. Our waiter was taking care of a few tables and was able to switch to the language spoken by the customers (English, French and German). We only spent two days and headed back to Lisbon. Continue reading “Porting MD5 Code”

Git merge vs. git rebase

Currently I am working on a 64-bit API for a storage server at work. The plan is to port a limited number of APIs in order to be able to call them directly from other applications / services without having to marshal such calls. I am trying to convert the data structures from 32 to 64 bits while keeping backwards compatibility. At some point in time we should be able to port with little additional effort the current storage server to 64-bits and still support client applications / servers running on 32-bits. Continue reading “Git merge vs. git rebase”

Docker Webinar #1

It has been a week from hell and it is only Thursday afternoon. Allow me to elaborate. On a previous post, I mentioned the events regarding a water leak in my office. That occurred last Monday and Tuesday. At this point I only have to call to return a fan and ask for reimbursement on four books that got damaged by water.

On Wednesday I stopped by the car dealer to get an oil service for my vehicle. It has a lithe over 4,000 miles. I do not drive too much since I work from home. On my way back on 494 E I exited on the ramp to get to 77S (Cedar Avenue). As I merged into Cedar I started accelerating and moving to the center lane (Cedar at that point has three lanes plus a fourth one to enter and exit). As I was reaching the bridge for Old Shakopee Road, my two right tires popped as I hit a set of potholes covered in water. It was raining and quite foggy. After stopping on the bridge over the Minnesota River, I decided drive to a nearby gas station to see if I could put some air in my tires. Lucky I have run flat tires, otherwise I would have had to call a tow. When I tried putting air, I noticed that both tires had openings of about 5 to 6 inches. The only solution was to get them replaced. After talking with my son, he suggested the closest shop which would offer a rental while they replaced the tires. Shortly before 05:00 PM I received a call that the vehicle was ready and headed out to pick it up. Continue reading “Docker Webinar #1”

RabbitMQ – Work Queues

In this post we will experiment with a work queue using the RabbitMQ middleware software on a Windows 10 machine. After we cover the basics, we will integrate RabbitMQ with Docker and a group of microservices. It is extremely important to read and experiment until all the concepts are clearly understood.

With that said, let’s talk about work queues. In this example we will create a Work Queue that will be used to distribute time-consuming tasks among multiple workers. I have been experimenting with one, two and three worker threads. Continue reading “RabbitMQ – Work Queues”

RabbitMQ – Hello World

Good morning. In this post we will explore RabbitMQ by Pivotal. RabbitMQ is a message broker. Message brokers are considered middleware. Applications subscribe to a queue to send and receive messages. Another queue broker I have used in products is MSMQ from Microsoft. In this post we will only experiment with RabbitMQ. You may decide to use message queues to communicate between microservices. Continue reading “RabbitMQ – Hello World”

Checking Docker Installation on Linux

I am starting some work using Docker containers and as usual I like to spend some time refreshing and checking all is well before starting the actual development. Such approach seems to allow me to catch up issues before they cause bugs during the software development cycle.

Last year I wrote a post with the instructions I followed while installing Docker on my CentOS 7 Linux machine. If you are about to install Docker, their website appears to have up to data instructions for different operating systems. Continue reading “Checking Docker Installation on Linux”

Partial Retrieve from Encrypted Store

In a previous post we covered the retrieval of data from a store. It was described that the data at rest and in transit were not encrypted. The reason was that the store was deployed in facilities behind the firewall. Access from the outside was not allowed.

As time changed, data was only encrypted in transit using secure sockets or HTTPS. Given that facilities had to allow remote access, it made sense to encrypt the data at rest. When a client application would request data, the storage server would decrypt the file and send it to the requesting client via a secure protocol. Continue reading “Partial Retrieve from Encrypted Store”

Encrypted Store

This post has to do with encrypting data in a storage server. When the storage server in question was architected and implemented the data at rest and in transit were raw (unencrypted). The main reason was that clients and servers where deployed in the same facility.

Years when by and the requirements called for encrypting data in transit while the data at rest was left raw. Encrypting data in transit could be performed by using HTTPS, secure sockets or encrypting the data when retrieved from the servers and decrypting by clients when received. Storing data would be the opposite. The initial decision, given that the client and server where under control, was to encrypt transmissions using the Advanced Encryption Standard (AES) which was designed by Vincent Rijmen and Joan Daemen back in 1998. Continue reading “Encrypted Store”

Neo4j and Dijkstra’s SSSP

The workday is starting to wind down slowly. I have been doing some cosmetic changes and running tests on a medical storage server. No matter what you change you must always run tests to make sure all is well.

On my last post I covered Dijkstra’s algorithm for shortest path. Shortest path implies distance and not number of vertices traversed.

Continue reading “Neo4j and Dijkstra’s SSSP”

Issues while Installing Hadoop on Windows

I am always trying to read and practice with topics / subjects that I feel learning or call my attention. I am currently taking some specialization courses on Coursera. You can never give up and stop learning. In this post I will describe how I installed Hadoop and the issues I encountered. Continue reading “Issues while Installing Hadoop on Windows”