Saturday, October 15, 2016

Lightweight Software Development Life Cycle with Aptana and Github

Like many of us, I suspect, the software development life cycle (SDLC) for my personal projects is quite different from that of my work.  Obviously, I have complete autonomy when it comes to deciding what tools and processes to use for my personal projects.  Much less so at work.  I recently took a fresh look to identify opportunities to standardize and simplify my personal projects' process.

I was able to distill my process down to the use of just two (free) tools:
  1. Aptana IDE
  2. GitHub
With just these two tools plus some first time setup and a little coding (which I will explain in more detail below), I am able to do all of the following:
Aptana has been my favorite Windows IDE for a number of years now.  It is closely linked and mostly compatible with Eclipse, the de-facto standard IDE at my work.  However, unlike Eclipse, Aptana is targeted more at general web development and less at Java.  Both tools offer tight integration with Git, providing rock-solid version control.  GitHub provides a SaaS-based, highly intuitive UI layer around Git.  However, it also offers so much more, including simple but effective ways to manage your issues, releases, and portfolio.

My simplified process flow looks like this:


 

First Time Aptana Project and GitHub Repos Setup


  1. Launch Aptana
  2. Select Remote tab
  3. Select Transfer Files and copy entire directory representing project to local machine
  4. Select Project Explorer tab
  5. Select Import... -> Git Repository as New Project
  6. Select URI and input corresponding URL for that repository as displayed in Github website (for example, https://github.com/yourid/your-new-project)
  7. Select Project Explorer tab
  8. Copy entire directory representing project to the new Aptana project
  9. Select Team -> Commit...
  10. Select Team -> Push
Your local Aptana project and Git repository is now linked to your GitHub repository.

 

Create Release in GitHub

  1. Refer to:

https://help.github.com/articles/creating-releases


IMPORTANT: Before deploying the release to your remote host, be sure to save off the directory representing the replaced release (i.e., don't simply overwrite).  This provides you with an easy way to toggle back to your "working version" if you encounter issues during your sanity checks.  It also ensures that any post-deployment customization is retained and available to copy to the new release.

 

Generate Portfolio/Project List from GitHub

Use GitHub API to build your portfolio or list of projects.
Refer to:
https://developer.github.com/v3/

You can see my implementation of this at
http://www.logixware.com

 

Bonus Tips

If you are like me, you often need to move issues from one GitHub repository to another.  This tool provides a simple and easy way to do it:
https://github-issue-mover.appspot.com/

Do you like to receive digest emails reminding you of the outstanding issues in your GitHub queue?  If so, IFTTT has a "recipe" for that. 




Thursday, August 18, 2016

Acting Jobs

I just watched the Danny Boyle directed movie Steve Jobs.
It left me wondering what makes a good boss? Are these the same characteristics needed to be a good leader?
More on those questions later. First, though, my review of the movie itself.


The film is essentially a three act play centering around product events:
  • The launch of the Macintosh
  • The launch of the Next
  • The launch of the iMac
Aside from these 3 product launches, the movie includes a sprinkling of flashbacks.  Some depict Steve Jobs and Steve Wozniak in the iconic garage, pre-fame and long before Apple became "the most valuable company in the world". I like the pared down scope of the movie. It reminded me of Apple's legendary clean design. The focus on (mostly) just 3 events is a significant departure from many of the other books and movies about Apple and/or Jobs, which typically join many more of the dots for us. The latter approach includes Walter Isaacson's excellent book and biography, also titled Steve Jobs. However, for a 2 hour movie to cover all of that ground would, by definition, lead to dilution and lack of depth.  I also appreciated the choice of Michael Fassbender in the title role.

Fassbender (right) plays Jobs

The actor does not look much like Steve Jobs but he (and the film) manages to convince you that you are watching the opinionated genius himself. The other main character in the movie is Joanna Hoffman.  Coming in, I knew little about her, but I am now interested in better understanding her role in the Apple/Jobs legend.  According to the movie, Hoffman was Jobs's closest confidant at both Apple and Next, and he actually respected her forthright personality.
The movie also does a nice job of representing the Jobs-Wozniak dynamic.  Somehow managing to be best friends despite possessing seemingly opposing value systems.  The story does this without picking a winner.  Jeff Daniels is memorable as John Sculley, a father figure who tragically, in Jobs' view, betrays him.  Finally, the movie riffs on Jobs denial of, and subsequent relationship with, his out-of-wedlock daughter.  The film succeeds in presenting each of these relationships as nuanced, allowing the viewer to empathize with -- and  dare I say understand -- each party.

In summary, a very good movie which I expect to see again.

Genius?  Tyrant?  Both? 

So should we view Steve Jobs as "a good boss"?  Should he be considered "a great leader"?
He seemed to break -- with relish in some cases -- the conventionally held rules about leadership.  For example he would regularly:
  • Humiliate subordinates (both publicly and privately)
  • Display an extreme lack of flexibility
Yet despite that, he seemed to be able to inspire many around him.  There is also no question that he was genuinely passionate.  Clearly that inspired some around him.
Do we judge a person's "ability to lead" based solely on his/her results and/or legacy?  By that measure, Jobs is, without question, one of the best.  Or must we factor in the methods used to obtain those results?  If so, surely he could not be considered "great".  My theory is that his personality was so polarizing that it resulted in two phenomena.  The first was that he effectively chased away good people who realized they could not work with him.  As a result, many of those that remained were steadfastly loyal, even while recognizing his "quirks".  The Apple/Jobs phenomenon was also, perhaps, largely a result of the place and time (post-hippie, pre-Silicon Valley Palo Alto).

We have not seen a tech visionary or leader like Jobs since his death, almost 5 years ago.  I suspect that we never will.