Tag Archives: Perl

Simple Email Notifications With Perl

I’m working on an application that needs to send email notifications using a Perl-based back end.  In my spare time, I’m developing a scheduling platform for yard service/lawn care applications.  In prototyping solutions on a Godaddy shared hosting server, my ability to install Perl packages in the hosted environment is very limited, so I am forced to work with what is available to me.  For sending email, the available Perl packages include Net::SMTP.  Luckily, using Net::SMTP to send email is easy and straight-forward, however I had some difficulty figuring out how to correctly send the Subject part of an email, primarily because most of the documentation on the web is not correct.  Net::SMTP is a relatively low level package, so all you need to understand for the correct usage of this package is how to send email by hand.  Here’s a good tutorial for using telnet on port 25 of a known SMTP Server to manually craft an email.

Here’s how to send an email with Perl, using Net::SMTP, which contains a proper Email Subject:

use strict;
use warnings;

use Net::SMTP;

my $smtp = Net::SMTP->new("localhost", Hello => 'mydomain.com', Timeout => 30, Debug => 1);
$smtp->datasend("Subject: Email Test");
$smtp->datasend("Hallo Welt!");


Building An Android App

The App Idea

I have not built an Android App in years, so one of my New Year’s Resolutions is to build at least one Android App and get it in the Google Play Market by the end of the year.  To that end, I’ve started working on an application (which will be mobile and web) that helps rowing teams (a niche I am somewhat familiar with) manage themselves better.  Rowing is a team sport and individuals on the team are highly reliant on one another.  This application will help rowing coaches and rowers alike communicate better and practice more efficiently.

The application name is ‘Herding Rowing Cats‘.  The software is distributed under the terms of the GNU Public License v3 and is being developed in the open at Github.  It’s a learning experience for me and the journey’s the thing.  Hopefully, it will all turn into something beautiful and usable, improve people’s lives, and make rowers and coaches happy.

The Development Environment

My only computer at the moment is a $250 Acer Chrome Book that I installed chrUbuntu ( 64 bit v. 14.04) on.  This laptop has 4GB of RAM, a 270GB hard disk, and an Intel® Celeron(R) CPU 847 @ 1.10GHz × 2.  It’s reasonably fast for my purposes and for the price.  I told myself I would upgrade to a more capable machine once I figured out a way to start making money on the side with my tech skillz.

I use Android Studio v1.0.2 to do the main Android Application development.  I’ve only been using this IDE for about a month now, but so far I really like it.  It integrates pretty easily with my github account and makes code commits fairly straight forward (albeit with lots of dialog pop-ups, which get annoying).  All in all,  though, it’s a great IDE especially considering the price.

I am using a Virgin Atlantic Kyocera Event Android Phone I got free at Wally World (Walmart) during a Black Friday Sale a couple of years ago.  Using a real device for local testing, I find, is faster than using an emulator.  I don’t think this will be sufficient for real-world testing, but I’ll cross that bridge when I get there…Android Application testing scares me, actually, given the large assortment of screen sizes, device types, carriers, etc…

Kyocera Event Android Phone

So my total development cost so far, including laptop, phone, hosting and domain name purchase are all probably under $500 at this point (hosting and domain(s) for a year are around ~$160).

Server Side Development

As mentioned in a previous post, I am hosting my server-side web application on Go Daddy and dealing with the associated constraints by prototyping the web application using HTML/JavaScript/CSS for the front-end, Perl CGI as the middle-tier connectivity, and MySQL as the back-end database.  I am doing the server-side development directly on the server using vim.  I usually secure copy (scp) files down to my local computer so I can check them into git before I go to bed.  I’d prefer to use git directly from my shared hosted Linux server, but I think Go Daddy blocks github access from their servers (anyone know something different)?

Software Development Life Cycle (SDLC)

I installed a white board in the bedroom in my apartment.  I actually drew swim lanes on the board to indicate the backlog, in-progress and complete swim lanes so I could track my user stories.  I have written a bunch of user stories on stickies, estimated the stories (with Story Points, not Hours), and stuck them in the backlog swim lane.  I am doing two week sprints, and gave my girlfriend a demo of the Android App running on the phone at the end of the first sprint.  It was fun and she was impressed.  I got a kiss just before I started the second Sprint.  Can’t wait to complete all of the story development now, but I digress…

I’m tracking the number of hours I spend on this project just to get a rough idea for how to estimate similar projects moving forward.  I will share the hours on this blog as I progress.

Go Daddy Shared Hosting – They Do It Their Way…

During my drive home from work tonight I thought I might try to see if I could get some simple JSON REST services running on on my Go Daddy Shared Hosting Account.  I’ve never used Sinatra before and wanted to see if I could build something useful with it and have it running on the internet…for realz.  Unfortunately, Go Daddy appears to have discontinued all Ruby Support as of January 2014.  The curious thing, however, is that I have ruby on the command line on my server, and could even install Sinatra (‘gem install sinatra’), but I cannot get the simplest ruby script to run as a CGI script without getting a 500 Server Error.

Conclusion?  I will stick with Perl scripting (currently Go Daddy supports Perl, PHP and Python) for now since I am too cheap to upgrade to a Virtual Private Server (VPS) just for this reason.  However, If I build something substantial and/or mildly popular at some point in my life, I would like to maybe use Sinatra based web services in support of my application.  But by then, I may be using a different hosting service provider so I can do things MY way.

JEE Is Dead! Long Live Perl!!

I’ve been using Perl off-and-on for a long time (circa 1999?).  Most programmers today might scoff at my love of Perl.  Today, the cool kids might use Python or Ruby or Groovy or something else like that.  I don’t care.  I say use whatever scripting language you want to solve the problems you are faced with – just don’t try to convert me to your ‘religion’.

When hosting a website at godaddy.com, your options are often limited as far as the server-side technologies you are allowed to use to build-out your application.  Your options are limited with regard to node.js, for example, or JEE, or even Ruby on Rails.  In my case, my knowledge of Perl allows me to save money in terms of prototyping applications I am interested in building, as Go Daddy supports Perl (and Python, PHP and Ruby, etc) in the shared hosting environments.  CGI is alive and well!

Besides, Larry Wall is an amazing programmer, and human being to boot, and I like the syntax of the Perl scripting language very much.  As long as Go Daddy and other Web Hosting Providers support Perl, Perl will probably always be my go-to scripting language for building quick server-side application prototypes for my billion dollar ideas.  Besides, building quick web prototypes with JavaScript, AJAX and Perl are like a breath of fresh air compared to building similar applications using JEE.  Die, JEE, die!