Diving into Cryptography

Cryptography is an art that has a rich history spanning over 2,000 years.  It has evolved from simple letter swapping algorithms called transposition ciphers, to using a key to shift multiple letters in the text with the Vigenère cipher, to modern day symmetric-key cryptography that uses advanced mathematics.  With this evolution the art has transformed itself into a science powered by mathematics.

The problem with cryptography is that it is extremely intimidating if you don’t already have a strong mathematical background.  While I enjoy math I am far from a strong candidate in the subject.  When I began to get really interested in the subject I started looking for a good book to break down the concepts into something easily understood and entertaining.  While there are plenty of books that deal with the raw subject the one I’ve found that walks the reader through the history and explains both how the algorithms work and how to crack them is The Code Book: The Science of Secrecy from Ancient Egypt to Quantum Cryptography.  It even has a section at the end of the book that challenges the reader to break the codes for several different types of algorithms.

It is hard to imagine that a book which dives into the mathematical properties of cryptography could be a fun read but somehow the authors nailed it.  The first chapters start off explaining the basic forms of encryption and then build up to the advanced quantom cryptography that is being researched by some of the topped mathematicians.  The challenges at the end of the book have their answers available online.  When the book was published there was a challenge to see who could crack the codes first.  After just over a year the prize was claimed.  You can read about the challenge on the authors page, Simon Singh: Cipher Challenge.

If you have any interest in the subject I highly recommend picking up the book.  After you complete the book you’ll have a great grasp on the subject and maybe an itch to dive even deeper.

Tag all of your music with MusicBrainz Picard

For the last decade I’ve been half-heartedly trying to clean up and organize my collection of music.  This collection has duplicate, triplicate, quadricate? copies of songs.  Some songs are tagged with no name or artist while others have the completely wrong information associated with them.  In addition to this hole of chaos I could never figure out a good way to get updates made on my phone over to my computer without a huge hassle.  All that changed after I decided to pick up a new Micro SDHC for my phone that can more than handle my entire collection.

My saving grace turned out to be MusicBrainz Picard.  Not only is it free but it took my piece of chaos and fixed it.  The software has a great way to fix all of the ID3 tags in my MP3 and M4A files.  The application will tag songs based on the names of the files as well as lookup the fingerprint of the song.  Since the software is lets developers create their own plugins you can extend the application to incorporate information from Last.fm or try your own hand at writing a customing plugin.

After playing around with Picard over the weekend I was able to cleanup over 90% of the music on my machine.  In looking at the music that wasn’t fixed I’m seeing a trend of duplicate songs and some that appear to have been corrupted.  Most likely I’ll be deleting the untagged files once I’ve verified they aren’t worth saving.  As always, if you find this software useful consider donating some money towards its development at MetaBrainz.

Speed up an old laptop

I just realized the other day that my laptop was over four years old.  I bought it a few months before our first daughter was born with the hope that it would last for a long time since money would be getting tight.  When I was looking I stuck with a brand and model that I knew could take some spills and getting thrown around, Lenovo Thinkpad. Specifically I picked up the T520 model that came with a decent processor and enough memory to easily handle Windows 7.  Well fast forward four years and the laptop was starting to show some sluggishness when it came to developing apps in Android Studio or running Firefox with a bunch of tabs open.

The easy solution to fixing the problem would be to spend another $1,500 and pickup a new laptop.  But like I said, money can get tight when you have a kid or two running around.  So to hold me over for a few more years I decided to upgrade the hard disk from a traditional spinning drive to a new Solid State Drive (SSD).  I picked up a new Samsung 850 EVO  500GB for $149 which is an amazing price, great specs, and a worthwhile five year warranty.  The drive came with software that transferred everything from the main drive to the new one so that I could easily swap out the old drive and boot the machine right up.  One other item you’ll need is a way to attach the drive to your machine when copying all of the files and operating system over.  I used a drive enclosure similar to this Vantex NexStar.  Once you’ve installed the new SSD you can put your old drive into the enclosure and use it as a backup drive or to transfer files between computers.

After making the drive change the computer is noticeably faster.  Booting up took just a few seconds and starting up applications is quicker than before.  To help out even more I later upraded my machine to Windows 10 by doing a clean install of it from Microsoft which cleared out all of my old applications and basically gave me a new machine.  I’m loving it and hoping I can get another two or three years of development out of the machine.

Picked up a new phone

A few weeks ago I had a post about which phone I was considering given that my BlackBerry Z10 was showing its age after over two years of use.  I thought I’d stick with BlackBerry and pick up the Priv since I had grown accustomed to the virtual keyboard and Hub concept.  After finally getting my hands on one I realized that the phone was bigger than I wanted.  The size was equivalent to the iPhone 6+ which is in no way a one-handed use phone.  Instead the Samsung Galaxy S7 came out and blew me away with its specs.  12MP camera with a sensor capable of f/1.7, expandable storage, great screen, and an impressive battery.  Add to it the ability to get wet and not die and I was sold.

So I went and ordered the device on the 4th and had it in my hands by the 9th.  After just a few days of use I’m pretty happy with the decision.  To replace the Hub feature in BlackBerry I went with Microsoft Outlook and found the app to be a respectable replacement.  With it I can have all of my email accounts in one place with the ability to easily filter and search through emails.  The virtual keyboard on the S7 isn’t bad either.  I’ve grown accustomed to not having the suggested words above the letters.  I’m no where near as fast as before but it still works.  Haven’t had a chance to really use the camera so I can’t say much about it.  The sound quality for phone calls is excellent, and yeah, the phone can send and receive text messages 😉

I’ll try to post some more in a few months to let you know more about how the phone is holding up.  But as it stands now it is a great new phone.

Making phone easier to crack

I was walking around the office the other day thinking about the whole iPhone and FBI fiasco going on and a question crossed my mind.  If a phone is locked by a users fingerprint will there still be the same problem when it comes to unlocking the phone after a user passes away?  Could authorities not use the persons finger to unlock it or if they have a record of their fingerprint use a recreation of it on the sensor?  If this is true then wouldn’t having your phone protected by a pin code be better than the convenience of using the fingerprint sensor?  If anyone knows of any research articles about this let me know.

Starting a company when you have a family, part 2

It might sound strange but I didn’t create my company because I expected to make much money.  To make money you need to be able to dedicate a significant portion of your time to researching a potential product and developing a solution.  In working two jobs and starting a family time isn’t a readily available resource.  Instead I created the company as an organization to launch any home grown products under, use as a learning resource for future endeavors, and general legal protection should anything happen.

One of the hardest realities I’ve found is maintaining focus on a product and technology.  There are constantly ideas popping into my head on a new app or service that I could develop or framework I could use to make development quicker.  If you’ve done anything with JavaScript then you are all to familiar with this problem; a new day brings a new framework that makes all other frameworks inadequate.  Amazingly enough this is where have limitted time has really helped.

Instead of jumping into a new pool of ideas and technologies every month my limited time has forced me to focus on a small subset.  Now when I have an idea I jot it down and let it simmer for a few months or even years.  If the idea has real potential then I’ll revisit the idea and start to research it further.  If it doesn’t then it will eventually go the island of misfit ideas.  Technologies are handled the same way.

Because I started off developing for BlackBerry phones I had only a few options, HTML/JavaScript for BBOS and Playbook devices or Java for BBOS only.  Since I wanted the most visibility in the app store I went with HTML/JavaScript and developed a WebWorks application.  The first run at the app I wrote all of AJAX and DOM manipulation calls by hand in JavaScript, no frameworks were used.  I took this route so that I could get a better idea of how raw JavaScript worked and understand how much a framework really helped simplify coding.  For the next iteration I used the JQuery Framework and was amazed at how much code could get ripped out and replaced with cleaner looking JQuery.

I’m not going to say that I have since dedicated my life to JavaScript and rank myself as an elite JavaScript coder with my own framework on GitHub that is used by the latest startups because quite frankly that isn’t the case.  The biggest lesson I learned from that experience was that JavaScript was an imateur language that had a lot of growing up to do.  I continued to use it for various projects but never dove in head first into it.

Since that foray I’ve focused on C++ development for BlackBerry 10 devices and Java for Android.  Up until the middle of this month I’ve always carried around a BlackBerry Z10 so any development was geared around BlackBerry 10 platform.  But given the demise of their operating system I’ve changed focus and started diving into two pools.  Android Java development and Angular/Ionic cross-platform development.  I’ll go into those in a future post as I’m still working my way through two online courses that will hopefully get me back up to speed.

Starting a company when you have a family

At the end of 2014 I decided to create a company that I could launch any personal projects under commercially.  I’m by far no Silicon Valley hot shot programmer who has companies knocking at their door.  Instead I’m someone who enjoys writing code.  The first application I release commercially was Weather Pilot for BlackBerry and Android.  When I first developed the app I was only married.  Since then we’ve had two kids and my free time has dropped off significantly.  No, it is probably more like an exponential drop that nearly resulted in the disappearance of free time.  Still, as I adjusted to the change I was able to get back to working on my projects.

Over the next few weeks I’m going to write about what it has been like creating a company while having a family and a full-time job.  I’ll go over how I’ve managed my time, family, integrated learning into different aspects of life, and my goals for the next few years.

Is global warming real?

Ocean view with clouds

Sunny day on the Atlantic

It doesn’t matter whether global warming is real or not.  The way I look at the atmosphere is much like a lake.  It is fairly self-sufficient on its own and short term changes are dealt with as long as things go back to normal.  But when a short term change becomes the norm the lake changes.

The example I like to use is a bit vulgar but gets the point across.  If one person defecates into the lake it isn’t a big problem.  The lake can handle the contamination and not impact the rest of the ecosystem.  When there are two, still not a problem, but when there are hundreds or even thousands of people all defecating into the lake the impact can be felt across the entire lake.  The water becomes contaminated, if not poisonous, and the species that used to rely on the lake either die or move to another lake.

What I see is the burning of fossil fuels and release of large amounts of methane into the atmosphere as the equivalent as defecating in the lake.  Whether it will cause global warming or not isn’t the problem.  We are literally poisoning the air we breath and not worrying about the future generations that will deal with our ignorance.  Just look to the large factory centers in China for an example of how bad things could be if there aren’t any meaningful regulation.

We can add natural cleaning filters by replanting forests and even look towards technological solutions for scrubbing the air.  But we can only clean so much before the system is overwhelmed.  We have to change our lives, how we make money, and how we grow our food.

As to whether I believe global warming is real or not, I do believe it is real.  I find it impossible to believe that you can pump large amounts of energy trapping gasses into the atmosphere for over a hundred years with no increase in ways to remove said gases and expect the planet not to warm.

We need A.I. powered traffic signals

How often have you been at a stoplight waiting for it to turn green and there is no one else on the road?  It is 3am and every soul for fifty miles is sleeping except for you and the local police and there you are waiting for the light to change.  This waiting shouldn’t be happening.

We should have traffic signals that utilize multiple sensors to see what traffic is currently at the lights as well as the traffic coming down the road from a farther distance.  If the traffic lights for a local area are all connected then they can communicate with each other to pass along details about the number of vehicles, speed of travel, and size of the vehicles to the lights nearby.  With this information traffic should be able to flow more efficiently by timing the lights so that lanes with more vehicles will have longer green light times.  And when a signal senses that there are no other vehicles on the road except for the single person waiting to turn left at 3am it will turn all other lights red except for that person.

The technology is here.  By using thermal, video, LIDAR, and many other types of sensors the signals can get a good understanding of the road.  May signals are already wired up to communicate with each other so that they stay in sync so there shouldn’t be a need to lay down new wires for the communication.  If anyone knows of research already being performed in this area let me know.

Why I became a Software Developer

Why I became a Software Developer is something that I get asked often at interviews and persons looking to get into the career field.  Some people started working with computers and coding early in life, others fell into it after their original career path didn’t pan out as expected.  For myself I took more of a middle ground.

Growing up I always wanted to be a weather forecaster.  The power of the atmosphere amazed me and grabbed my attention.  As a kid I was glued to The Weather Channel, this was back when they actually focused on weather, caught the Penn State University Weather World channel whenever I could, and listed to the NWS Weather Radio broadcasts anytime a big storm was forecasted for the area.  I even had my own map of The United States on a chalk board that I would update with the latest front placements.  As you can guess I wasn’t necessarily the most popular kid in school.

Meuse Argonne American cemetary

Army patches on the stained glass window in Meuse Argonne American cemetary

So after high school I joined the Air National Guard as a meteorologist.  I always wanted to be in the military and loved learning about weather so the two seemed like a great fit.  Once boot camp was completed I then proceeded to study forecasting, observing, and briefing weather for nearly a year with the Air Force.  Eight hours a day, five days a week, my job was the learn everything they threw at us.  Once that year was completed I had come to the realization that weather was not a career choice for my civilian life.  College would have to focus on my backup plan.

While I was negating any cool points I had earned studying weather in high school I also started learning how to program.  Coding was amazing, you could take a blank screen, write some lines of code and create whatever you imagined.  You became a god, the Alpha and Omega of your application, your limit was knowledge and imagination.  This feeling grabbed hold of me and stuck around while I was training with the military.  Once my training was done I started college and changed my major over to Computer Science immediately.

From the first class I knew it was the right choice.  The professors and faculty in the department made me feel at home.  It was a small department, about half a dozen professors, but they all genuinely cared about the progress of the students.  The classes they taught kept me hooked with the constant revelations of new concepts and with the burst of interest in Internet technologies going on outside the classroom the future looked bright.

Since graduation I’ve stuck with the career.  I’ve worked in various fields ranging from finance to government research to defense.  The problems being solved have never been the same and the field has changed drastically since I first started my studies.  This career is one where success can only be had if you are willing to continually learn.  You don’t have to pick up every new language or framework that comes out but you do need to atleast dig deeper into the technologies you already know.  For myself I initially tried to learn about all of the latest concepts coming out.  It was great reading about them but at the same time drained my energy as I tried to learn them all.  To combat the potential burnout I’ve changed my tactic and now focus on a few specific technologies.  The change couldn’t have come at a better time and has kept me excited about what the future holds.