The Cryptocurrency Elephant

For the last 6+ months, cryptocurrencies have been the news over and over again. Ranging from the highs of Bitcoin at the end of last year through hacking of cryptocurrencies during the last week; cryptocurrency news has been everywhere. But with all the buzz about cryptocurrencies, the elephant in the room seems to be completely ignored: the huge waste of energy.

During the last several decades, there have been growing concerns about climate change, global warming, green technologies, etc. Al Gore insisted that we lower our green house gasses (ironically while traveling around the world in a private jet creating more green house gasses in a year than many of us will in our lifetime). Car companies want us to use electric cars to lesson our usage of fossil fuels. Wind and solar farms are showing up all over the place to decrease the nation’s carbon footprint. We’re asked to heat our houses to 66 at night and cool them to 75 or 80 in the summer. Turn lights off when not in use, ride a bike to work, shut off your computer when not in use, don’t idle your car in the winter to warm it up, on and on the list goes. But that’s not enough – the environmentalists say – we need to stop using all the earth’s natural resources on cell phone components, batteries, etc. Use rechargeable batteries, recycle your cell phones, don’t throw computers in the trash because they contain hazardous parts.

Then, cryptocurrency hits the market. No longer do we care about energy consumption. Cryptocurrency is intentionally designed to use as much power as possible – increase the difficulty of a block and the power consumption goes up. Mining generates huge amounts of heat, and then air handling systems need to be installed to keep machines cool. Cryptocurrency is both directly and indirectly causing global warming! To make matters worse, miners spend huge sums of money buying special chips (whether video chips or specialized ASIC chips) which require more mining to retrieve the necessary minerals. From an environmental perspective, cryptocurrency may be one of the biggest disasters of the 21st century. Yet, nobody wants to talk about it. A few years ago, it was suggested that I get rid of my Dodge Ram truck because it used too much gas. Now, the world is on fire for crypto mining.

Let me be clear, I think blockchain is an amazing technology. The potential is mind boggling. However, if it continues to grow like it currently is, how will we handle the energy requirements? How will we reduce green house gasses? How will we achieve any goals that involve using less energy when cryptocurrency is based on wasting energy? I think this is a problem the cryptocurrency community needs to resolve. The technology is great, but I doubt the global community is willing to sell out the entire planet for a few bitcoin.

I’d really love to hear thoughts from the blockchain community on how this can be resolved!

Technology from the Arab World

As Americans, we tend to learn history from a very Eurocentric perspective. We study the ancient world, the middle ages, and then move through the history of Europe. We may briefly learn about Asia or Russia, but rarely do we dig deeper into non-European history, which is truly a shame. While our European ancestors were trudging through the Middle Ages, the Arab world was a flourishing haven of technology and science. In fact, some of their technology is still alive and well today. Three technologies in particular from the Arab world have greatly impacted modern society. While some may argue that these technologies were initiated earlier by the Greeks, they were certainly mastered by Arab scholars.

One of the most well-known technologies of the Arab world is algebra. While it may be hated by many students, algebra is without question the basis for all complex math. Without algebra, none of the technologies that exist today would have ever been created – it is truly among the most influential branches of mathematics in history.

A second technology, the astrolabe, also holds great significance. While most modern Americans are likely unfamiliar with the astrolabe, it is one of the most amazing computers of the ancient world. An astrolabe is a tool allowing the user to see a chart of the night sky. But it’s utility goes beyond that – you can use it to determine the angle to any star, the sunrise and sunset times, the current time based on star position, or for navigational purposes – among other uses. In fact, some scholars have indicated that you can use an astrolabe to solve over a thousand different problems. Today, astrolabes are usually only found in museums. But for hundreds of years, they were used for navigation, to better understand the night sky, and so much more. Without tools like the astrolabe, the age of exploration would have been far more difficult.

Cryptography serves as a third influential Arab technology. Indeed, basic cryptography has been known far back into the ancient world. The Muslims, however, took it to the next level. While Muslim scholars were copying the Koran, they were also paying attention to how many times each letter was used. This counting of letters ultimately led to cryptanalysis and even changed the course of European history.  Ever hear of Mary, Queen of the Scots? She was executed because of Arab codebreakers who were centuries ahead of European cryptographers.

While I could undoubtedly find countless other technologies from the Arab Golden Age, these technologies stand out above the rest. During a time of immense trial and despair for Europeans, Arabs were pulling world history into the next chapter through the efforts of their brightest minds! Though many will look in awe at the technology of today, I would urge others to take the time to look into the rich history of technology around the world. The technological innovations of the past often hold just as much excitement!

The Shoulders of Giants

This week saw the passing of a giant in the world of astronomy with the death of Stephen Hawking. His work has forever changed the landscape of the science realm. Throughout history, men and women of every era have driven our collective future to where it is today. As a computer programmer, who do I look to as the giant in my realm? Many people might point to Bill Gates or Steve Jobs. Indeed, both have made an impact – but their skill was in their ability to merge technology with their astute business sense. No, for me there is a much more important man who has had an impact on virtually everything in the technology world today. I am referring to Dennis Ritchie. For most Americans, the name couldn’t be more foreign. Yet, his impact could not possibly be more profound. Dennis Ritchie was responsible for the C programming language as well as the Unix operating system. Much like his name, his projects are unknown to most outside of technology. But just about everything in computer programming owes much to C. The C programming language is considered to have impacted C++, Java, ObjectiveC, C#, Go, JavaScript, PHP, and countless others. These languages run most computers, cell phones, and websites in existence today. His Unix operating system was the inspiration for Linux and numerous operating system variants. Today, Apple uses BSD (a Linux variant) as the core for both OS  X and iOS. Android is a Linux variant too. If I could meet any person – living or dead – Dennis Ritchie would be high on my list. As a programmer, he is an demonstration of the power one man can have to impact the world with technology. It is humbling to consider how much further I can see simply because I have the benefit of standing on the shoulders of giants like Dennis Ritchie.

 

 

 

Passion

Recently, I read an article on LinkedIn questioning the notion that good developers are those who write code outside of business hours – not for their job, but for their own interests. The article suggested that you could be a great developer and go home and pursue other endeavors – that it was unfair to expect that your best developers are writing code at home. I could not disagree more. Sure, a person can be a competent developer and only write code during business hours. But I assure you that such a developer will never be considered a “rock star” programmer. Those who are the best in their field are always those with passion – and passion is not a 9-5 job. The article tried to compare programming to carpentry. It asked if we would expect a carpenter to be engaged in woodworking at home to to be considered competent. That seems silly to me. If I’m looking for someone to create a complex piece of wooden cabinetry with hand carvings, I can assure you I’m looking for an artisan with a passion for his work – one who has honed that skill through years of hard work outside his 9-5 job. I have a good friend who is a musician – a highly skilled performer who makes everyone he plays with sound better because of the mastery of his art. Music is his passion. He didn’t get that skill working 9-5 – it’s what he loves and it shows when you hear him perform. Listen to any business leader talk and what do they all talk about? Passion. It’s passion that brings forth the best in humanity. It’s a deep love of what we do that allows us to become a rock star in our field. In every corner of life, those with passion are the ones we remember – Steve Jobs, Mother Theresa, Grandi, Tom Brady – people passionate about their work. Want to be remembered by history and admired by your peers? Be passionate about what you do and remember that passion is not a 9-5 job.

Scamming the Scammer

Day after day, I receive calls from thieves in India. For several months, they said they were with Microsoft and that my computer had a virus that they wanted to help me fix. Now, they claim to be with a credit card company wanting to lower my interest rate. What’s sad is that people fall for these tricks all the time. Often, the elderly are the most  vulnerable – not only because they tend to have a fixed income, but because they are also more easily confused and duped. Because of this, I have made it my civic duty to waste as much time as possible on the phone with the scammers. After all, the more time they waste talking to me, the less time they have to scam an elderly grandmother.

Just a few days ago, I received two calls in a single afternoon from hackers –  and I took them both for a ride. When they asked for a credit card number, I gave them one of the test credit numbers typically used by developers for application testing – just google ‘test credit card numbers’ for a list. They asked for a bank name, I said Wells Fargo. They asked for birthday, last four of SSN, and other information. I provided false – but believable – answers. Then, after providing the information, they asked me to stay on hold while they verified my data. After another minute or so, the scammer got back on the phone: “We contacted your bank and found out that you are an *********” and hung up on me. Few things are quite as fun as having a scammer call you names or swear at you because you wasted their time!

Slow and Steady Wins the Race

One of my hobbies is game development. I have been tinkering with Unity for several years now; and I’ve also experimented with  Java, Android, C++, and a few other platforms. Unity is, without a doubt, my favorite. The ease of developing 3D games coupled with their outstanding framework makes it an easy platform for developing games. So, when I was asked to help teach a Unity game development class at the high school a few years back, I was excited and gladly took the opportunity. I teach C# scripting to the students every Friday, and it’s great fun.

This last week, I was going over some simple code on creating projectiles and applying the scripts for their movement and destruction. I had started a project a few weeks before, and most of my code was there. However, when I went to continue the project I found that my code was no longer on the computer. Given that the class is only 50 minutes long, this was a real showstopper. I frantically tried to recreate the project I had before and get it to a point where I could continue with my lesson. Unfortunately, circumstances worked against me and my presentation was less than stellar. This experience reinforced two important lessons from computer programming that I will be sharing with the class next week.

First, I have been busy the last few months with my own business and have not been doing as much game development as I would like. This kept me from being on top of my game at class. I made some noob mistakes, and was unable to perform at my peak since my skills were a little rusty from months of under usage. In the tech world today, this is easy to have happen. The world of software development has so many tools, frameworks, languages, and platforms. Developers are increasingly expected to know countless technologies, and it’s almost impossible to be an expert in them all. For example, I have written plenty of Python code over the years, but I still have to pull up my sample code when I need a new script. Why? Because I don’t use python on a daily basis and I quickly get rusty. To stay up-to-date on skills requires constant effort.

Second, rushing to complete something will cause errors. This is as true in software as it is in any other endeavor in life. As I rushed to complete my code by the end of class, I caused more errors. And, in the end, nothing worked the way I wanted. Had I slowed down, I would have been better able to ensure that what I was doing worked the way I wanted.  However, the imposed deadline made me work without paying attention to the details. This happens in real world projects too. Unrealistic deadlines force programmers to pound out code without paying attention to the details. Errors are made, code is left undocumented, test cases are not written. Then, when the code is released, it doesn’t work as desired. Of course, deadlines are a part of the real world. But if we are rushed to meet unrealistic deadlines, we can be certain that the result will be less than desirable.

In the end, this experience shows some very real truths about software development. Much like the story of the tortoise and the hare, we see that slow and steady wins the race. We have to constantly reinforce the skills we want to use, we can’t let them get rusty. And, we need to take our time to ensure that the code we produce meets more than just timelines – it must be developed so that it is solid and stable.