Python Web Server

As a software developer, I often write HTML files or JavaScript code that I would like to see in my web browser. I could just open the file in my browser, but if I’m testing JavaScript I would rather run from a real server. I could start up an Apache server, or create an instance of NGINX using Docker. But both of those options require too much effort for simply testing an HTML file.  What I really want is just a command that will allow me to start an HTTP server in the folder where the HTML or JavaScript files are saved. Well, thanks to Python, such a option exists. Simply go to the directory where you want the server to run from and execute the command:

python -m SimpleHTTPServer 8080

This will start up a simple HTTP server running on port 8080. Now, point your web browser to localhost:8080 and you can see your web page! Nothing could be simpler for quick testing of web pages or websites!

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!

Five Technologies for 2018

It’s a new year, and new years mean new challenges. And how can those challenges be faced? By staying up-to-date with technologies and ensuring you have the skills to turn those challenges into opportunities. But there are so many technologies out there, which ones do you learn? I have selected 5 technologies that I think everyone should learn in 2018. These are not necessarily new technologies. In fact, most of technologies listed have been around for awhile and I believe developers can no longer afford to ignore them.

For the last decade, virtual machines have been used to startup new servers. This work great, but is very wasteful of resources. Not only that, it’s very time consuming to both setup and configure. Docker is much simpler and less resource intensive. Want an Apache server, or a MySQL database? Start a Docker instance with that service. Need to experiment with nginx for a new project? Spawn a Docker server to tinker with your new technology. With thousands of images for a sorts of services, it’s likely that you can find what you need. I run my Jenkins and Artifactory services using Docker – it took minutes to setup and has been running for a year or more. There is simply no faster way to setup servers than using Docker.

The JavaScript world is in constant flux. Technologies come and go, and it’s hard to keep track of them all. As such, many are reluctant to dive too deep into JavaScript technologies for fear of their pending obsolescence when a new framework come out. However, if you look at job openings for web architectures, you will see over and over the desire for Angular developers. And there’s good reason for that – Angular is a great framework. The best thing about Angular, in my opinion, is how easily it is to write reusable components. In a world where businesses solve the same problems over and over, reusability saves time and money. Outside of the web world, Angular is also used by the Ionic framework for creating cross-platform mobile applications. Thus, if you know Angular you can not only develop cutting-edge web applications, but you can easily move into the realm of Android and iOS development.

This one is a bit more speculation the the other technologies on my list. However, since it’s supported by Android, I expect to see it grow in popularity this year with the possibility of overtaking Java in popularity for native Android development at some point in the future. The Android Developer page for Kotlin lists a variety of reasons to switch to Kotlin – including safer code, concise data classes and lambda expressions, default and named arguments (something very popular in a variety of other languages), as well as being fully interoperable with Java. Numerous JVM languages, such as Groovy and Scala, have failed to gain wide-spread usage, but Google’s support for Kotlin code in Android may just change the game.

Linux is anything but new. In fact, it’s been around for decades now. However, it’s sad to see how many people in the tech world are still uncomfortable with the Linux command line. With all the technologies available today that use Linux, it’s time to learn it now! What are those technologies? Docker, Raspberry Pi, AWS, Google Cloud, and Android, all use Linux. Mac OSX has, in large part, become amazingly popular with Linux-savy developers because it uses BSD (A Linux variant) under the hood. Countless other technologies run on Linux or simply run better on Linux. For example, setting up a LAMP stack, running Python, or setting up Node is a breeze in Linux – but can be far more painful on Windows. Connectivity tools such as SSH and SCP run natively too – making deployment and configuration of servers and services easier. If you’re not familiar with Linux, you’re probably working too hard to get your solutions working on Windows.

.NET Core
After just enumerating the benefits of Linux, it may be odd to see a Windows technology on the list. However, The .NET Core framework runs on non-windows machines – and that’s exactly why it’s great! Microsoft’s Entity Framework and their MVC implementation both make for greatly streamlined web development. Running it on a Linux server is icing on the cake. I expect to see growth in .NET Core this year as developers exploit the simplicity of .NET development with the control and deployment power of Linux and Docker servers.