Setting Up A Development Workstation

What Is This?

I wrote this primarily for myself – sometimes I don’t remember everything I do when setting up a workstation for development purposes…it may be of interest to others.

You’ll note that there are several areas missing from this arena – no build automation, task runners, etc. Maybe I’ll get around to adding them once I settle on some…but in the meantime, this still works for me.

[See bottom of this document for a list of revisions to this document]

Everybody Uses…

Version Control

  • Install Git for Windows for version control, ensure that Windows PATH is selected during the install so that you can use git from the command-line without needing to use Git’s special CLI.
  • I’d recommend also getting yourself a GUI to manage Git. Personally, I prefer that the editor I’m working in provide Git integration, but sometimes this isn’t available – in which case Atlassian’s SourceTree seems to do a good job.

Editor / IDE

IDE stands for Integrated Development Environment. This software offers numerous tools to expedite code development.

Editors on the other hand are much simpler, yet some people prefer them. We’ll look at a few of each of these.

Editors

  • NotePad++ – This is my base editor. The User Interface isn’t amazing, but it works beautifully. Especially awesome when it comes to working with large files.
  • Brackets – An open source project by Adobe, has a number of useful extensions. UI is attractive, I use this one over NotePad++ usually, except for note files (NotePad++ remembers the text you enter even if you don’t save the file) and large files.
  • Visual Studio Code – Another open source option by Microsoft.

IDEs

There are a huge number of options, Wikipedia has a fairly extensive list.

  • JetBrain’s phpStorm – JetBrain makes a number of different IDE’s and unfortunately isn’t the clearest on which IDE one should purchase. phpStorm handles most web-based languages, but lacks a clear emphasis on JavaScript that webStorm has (but which lacks some of the php integration).
    • See Gary Hockin’s Debugging VVV Vagrant Setup with PhpStorm for helpful instructions on integrating one’s VVV setup into PhpStorm for interpreter and xdebug purposes.
      • If you are wondering where your xdebug.so file lives: /usr/lib/php/20151012/xdebug.so
      • And Code Sniffer:
        /usr/local/bin/phpcs
      • And PHPUnit:
        /usr/local/src/composer/vendor/phpunit
      • And Composer:
        /usr/local/src/composer/vendor/
      • And www folders:
        /srv/www/
      • And PHP:
        /usr/bin/php/
  • Microsoft’s Visual Studio – An IDE with a long and venerable history, more recently integrating a number of Xamarin cross-development features into the IDE. The Community Edition is free.
    • WARNING: Depending upon options selected, this installs Hyper-V; if you are running another virtualization technology (Virtual Box) expect to experience BSoD errors. Unfortunately, I know this from personal experience and I am not alone.
    • Supports Visual C++, Visual F#, Python, C#/.NET, Android/iOS.
  • Google’s Android Studio – For the creation of Android apps.

Interacting with Databases

  • You’ll want something that provides a handy way for interacting with databases, in which case I recommend HeidiSQL.
  • If you don’t have a database server currently, you’ll need one. A couple options include MySQL, MariaDB, Microsoft SQL Server, and PostgreSQL.

Virtualization

Image Management

  • You’ll need something to create/edit images with, I recommend paint.net. Despite its connection to a very basic predecessor (Windows Paint), this software can work miracles.
  • JPEGmini – Usually I wouldn’t recommend using lossy means of reducing image data footprint, but JPEGmini manages to offer significant lossy compression without any visible deterioration to the image, unfortunately it only works on jpeg files.
  • FileOptimizer – Offers compression for numerous different file formats in a lossless manner.

File Transfer

  • FileZilla is a good FTP client.
  • However, FTP is a plain-text protocol, so I’d look at using something SSH based like SFTP. In this case I’d recommend WinSCP or built-in functionality in your IDE (phpStorm for example).

Other Tools

  • You’ll also want a copy of ConEmu or another command line interface (CLI). This software is so much better than the default Windows console.
  • A good archive/compression application will make life much easier, and 7-Zip is the perfect application.
  • Hosts File Editor – While it hasn’t been updated since 2011, I find this software extremely handy when I want to make edits to the hosts file. It offers a nice GUI front-end for the hosts file and enables a number of different nifty features not built into the file itself.

Revisions To Document

  • 10/18/16
    • Added location of www pages on Vagrant.
  •  10/16/16
    • Moved VVV under Vagrant.
    • Added link to Louie R.’s article on using Vagrant/VVV.
    • Changed Basics for Developers to Version Control.
    • Added link to VVV Wiki Article about Connecting to MySQL.
    • Added section on database servers.
    • Added link to article on integrating with PhpStorm, location of xdebug.so.
    • Added location of Code Sniffer; PHPUnit, Composer.

Geeking Out: I Love Cloud9!

Introduction

LOVE Cloud9.

For the unGeeky

Me: Cloud9 is a development environment.

You: Great, that was singularly unhelpful.

Me: A development environment is the way one configures one’s computer to run the various applications used in programming (writing an application).

You: And this is so great because?

Me: Because setting up a development environment can be time consuming. There are usually a number of different applications you need to install and configuration changes that need to be made before the development environment is ready to use. For example, if you want to develop a PHP application (Wikipedia and WordPress are built on this) you’ll need an application to write code in as well as a web server to run the application. Most likely you’ll also need a database server to store all the data your PHP application works with.

In addition, programming can be messy and you may mess up your development environment and want to reinstall your Operating System (e.g. Windows, Mac OS X, Linux) – in which case you’ll have to do a bunch of work all over again to setup your development environment.

Personally, I like to have separate “workspaces” (aka development environments) for different projects. I may be writing a WordPress plugin in one development environment, experimenting with Node.js (currently one of the “hot” technologies), and have another project or two floating around. It helps me to keep things organized when my “workspace” only has the files related to the project I’m working on currently – and if I make any changes to configurations (e.g. to the web server) they will only effect this one project and not any other projects I am working on.

If you are looking to try out programming I’d recommend codeacademy and once you’ve got the swing of things, use Cloud9.

For the Geeky

Cloud9 provides a dockerized instance of Ubuntu preconfigured for development and a web-based IDE. It has prebuilt configurations for Node.js, LAMP, Python/Django, Ruby, C++, WordPress, Meteor, and HTML5.

Cloud9 IDE Screenshot
Screenshot from the Cloud9 IDE. Don’t be scared, you don’t have to have this many windows open at once.

For free you can create multiple workspaces, each workspace having 1 CPU, 512 MB of RAM, and 1 GB of HDD.

The IDE includes code completion, a JS/Node.js debugger, and a number of other features you can read about on their site.

It integrates seamlessly with Github and Bitbucket, allows you to share workspaces with others, provides a publicly accessible URL (if desired) so you can show off your application, and so on.

Looking to do a little WordPress development? You can have a workspace setup in under five minutes!

Ohh, and did I mention that the Code9 IDE is available via GitHub?

FreeBasic (Programming)

Commodore 64 computer (1982)
Image via Wikipedia

My first experiences programming where on a Commodore 64 and an Apple II+. In both cases there was no separation of the end user interface and the development interface…you could just start entering code at the command line and it would begin building. Things have come a long ways since then – this is good and bad. It is no longer quite as easy or essential to get involved in programming, on the other hand one can much more rapidly build complex applications.

If you ever long for the throw back days you may think of QBasic, which became ubiquitous due to its inclusion with Microsoft DOS…but all these concepts are so from yesteryear – in computer terms they are almost millennia away.

So what if you want to do some simple programming these days with a BASIC feel to it? One good option is FreeBasic. FreeBasic was built to be largely backwards compatible with Microsoft’s QBasic and thus can run many old QBasic programs with only minimal modifications, but FreeBasic has also gone far beyond this and delivers a fairly powerful development environment.

If you do decide to use FreeBasic I recommend downloading a free copy of FbEdit as well. See development usually consists of at least two components – the compiler and the editor. A compiler is the program that takes your code and turns it into an executable program while an editor is what you write the code in. Granted, you can write your code in any plain text editor – but trust me, FbEdit will be a big help.

The FreeBasic forums have a very friendly and active community that will help you along through the learning process. Just take some time to explore the entire site and community, it is pretty impressive.

All this said, FreeBasic isn’t the language I primarily use for development – or the language I would recommend. In general, I’m a Microsoft .NET guy – mainly ASP.NET and VB.NET. Microsoft offers free copies of the lite versions of these applications as well, and while I say kudos to the FreeBasic team and hope they keep up the great work, if you are looking for a job in technology, you might be better off starting with a Microsoft .NET technology. Actually, probably C#.NET instead of VB.NET as I do (old habits die hard).

ASP.NET Components List

I was recently looking for ASP.NET components and figured I’d share some of the resources I came across. I’ve attempted to only include some of the big name / best out there. Hope these are helpful!

  • Obout – Offers a large variety of controls, several for free. They also offer free licenses to students. A few of their controls are: Grid, TreeView, HTML Editor, Spell Checker, Calendar, Easy Menu, AJAX Page, and Splitter.
  • ComponentArt – Offers a large variety of controls for ASP.NET AJAX, MVC, Silverlight, WPF, etc. A few of their controls are: Calendar, Chart, Editor, DataGrid, Snap, and Splitter.
  • Karamasoft – Offers a large variety of controls for ASP.NET including UltimateAJAX, UltimateCalendar, UltimateEditor, UltimateEmail, and UltimateTabstrip.
  • Telerik – A huge variety of controls for ASP.NET AJAX, MVC, Silverlight, WinForms, and WPF. Also have a number of other productivity tools for development. Some of their controls include Calendar, Captcha, Compression, Editor, FileExplorer, Grid, SkinManager, and StyleSheetManager.
  • DevExpress – Offers a set of sixty controls for free. Has a large variety of premium controls available for ASP.NET, WinForms, WPF, and Silverlight. Some of their controls include Charting, Grid, Data Editors, Calendar / Scheduler, Gauges / Dashboards, and Utility Components.
  • ComponentOne – Large variety of controls and tools. Includes calendar, expander, formdecorator, gridview, headercontent, splitter, superpanel, and tooltip amongst others.
  • (Added: 5/21/10) Infragistics – Large variety of controls.
  • (Added: 5/21/10) GrapeCity.

Stackoverflow – A Great Resource for the Budding Programmer.

Image representing Stack Overflow
Image via CrunchBase

Stackoverflow is a niche site, but for its niche it is absolutely amazing. The site features a tremendous community of developers who ask and respond to questions. This creates both a huge knowledge base of existing information and a quick way to get additional information. It is very similar in concept to Aardvark or Yahoo! Answers but differentiates itself in its tight focus on development related topics. If you are a developer or are considering becoming one this site is an absolute must.

If you do sign up – say hi – I’m davemackey on stackoverflow. 🙂

My Platform as a Service (PaaS) List.

Some people are going to be up in arms over this list – because it isn’t truly a PaaS (platform as a service) list. I’m sure some noticeable entries are missing and some non-noticeable entries are present. The order is random. I’ve just been evaluating PaaS solutions and figured I’d post most of what I’ve found thus far. I had a hard time finding any good lists – so perhaps this will ease someone else’s research. I’d love to hear what PaaS solutions I am missing!

  • WaveMaker – Build rich internet applications (RIA) using a WYSIWYG interface. Community edition is open source. Creates Java applications. Wikipedia Article.
  • Visual Web GUI – Build RIA’s using visual development interface. There is a free/open source express edition with regular pricing beginning slightly under $350 for a license. Creates .NET applications. Can deploy to Windows Azure.
  • SalesForce – The Force platform is the defacto standard PaaS. Significant free offering included with up to 100 users, etc. Also, free licenses for non-profits with majority price discount on additional licenses.
  • nuBuilder – A open source project that allows for rapid development of web database applications. Wikipedia Article.
  • BungeeConnect – Uses an Eclipse-based IDE.
  • Web Fuser (Inuvia Technologies) – IDE and hosting. Hosting starts at $20/mo.
  • WinDev – Free lite IDE for rapid development of JAVA/.NET applications. Wikipedia Article.
  • Wolf Frameworks – Has a free starter plan (2 users, 100 MB storage, unlimited apps/entries). Wikipedia Article.
  • LongJump – Pricing starts at $30/user/mo.
  • WorkXpress – No pricing, thirty-day free trial. Does offer the ability to host with them, a third party, or your own. Claims to require no programming.
  • SpringBase – Fairly impressive free account for those looking to create a small database application. Appears they no longer offer a free trial. Pricing starts at $99/year.
  • TrackVia – Pricing is expensive ($249/mo., starts at $99/mo.). Online database platform
  • DBstract – Offers free accounts and low-cost premium accounts ($20/mo.) for creating database applications/hosting.
  • Caspio – Starts at $40/mo. Claims to require no programming. Wikipedia Article.
  • Zoho – Free account for up to two users, $5/ea./mo. additional users.
  • Hyrdo4GE – Still in closed beta.
  • HyperBase – Part of HyperOffice. (thanks: Jean Churchill).
  • MyTaskHelper – UI is pretty basic, but it is free.

Microsoft’s Free Development Tools.

Image representing Microsoft
Image via CrunchBase

I remember as a teenager programming for years in QBASIC – a free, lite version of QuickBasic Microsoftbundled with DOS and early versions of Windows. It was great fun – but I yearned to get my hands on the full QuickBasic so I could compile my applications and give them to others without giving away all my source code (okay, OSS was barely known back then).

Later I would save for months to purchase Visual Basic 5. $100+ is a lot of money for a teenager – but I wanted to program so bad that I scraped and saved.

After that there was the ASP.NET Web Matrix – a predecessor to the great tools Microsoft now offers for free. Unfortunately, its development was abandoned and for a long period of time I was left in a painful lurch….but then Microsoft started the trend that has made me extremely happy – free lite development tools.

These development tools include Visual Basic 2008 (for desktop applications), Visual C# 2008 (also for desktop applications, but in C#), Visual C++ (just like the last two), and Visual Web Developer (for web applications) – all in the Express line. Additionally they’ve thrown out there SQL Server Express (database back-end) and SQL Server Studio Management Studio Express (for writing SQL and managing databases).

While these applications are noted as “express” that doesn’t suggest that they are majorly crippled – rather they are extremely full functioning applications which can be used to create many impressive applications. For the new, hobbyist, or small business developer many times the Express Editions will be all that you ever need.

This was a smart move on Microsoft’s part – it gets people hooked on Microsoft development young – and it works great for us as well – because we get free development tools. By the time Microsoft expects us to shell out cash – well, we are probably making some from our now decent development skills. Go grab yourself some free development applications: http://www.microsoft.com/express/.

BlueHost – Simple, Effective Web Hosting.

Its not uncommon for me to get asked, “What web host would you recommend for me to use when building a new website?” I figured now would be as good a time as any to post about one of the hosts I utilize. This host is great for beginners and advanced users alike. That said, I’ll also note right at the beginning that the instigator of this post was actually a server outage on Bluehost‘s part. Yesterday I was writing a review of the movie Amazing Grace (don’t worry, I’ll rewrite it soon) when the Bluehost server went down. But no host is perfect and this is one of only a few times I have experienced any performance problems from Bluehost’s service.

First, lets talk about Bluehost from a beginner’s perspective. If you are looking to create a website or start a blog there are a few easy ways to get started. One is to hire someone to assist you in doing so (you can always hire me). Another is to utilize any of a number of free services that allow you to create sites/blogs easily – for example in the blogging arena one can get free accounts from blogger and wordpress. The third option, and the one I personally prefer, is utilizing a shared host. This scenario gives you the most flexibility. When determining what sort of host you should utilize ask yourself these questions:

  1. Do I enjoy technology? (If no, hire someone).
  2. Do I want to learn more about web-based technologies? (If yes, utilize a shared host).
  3. Do I have time to expend on learning new technologies? (If no, hire someone or utilize a free account).
  4. Do I want a professional presence? (If yes, either hire someone or use a shared host and expect to spend a significant amount of time learning and experimenting).

Should you decide to go with a shared host you face one additional large question: Do I want a Windows or a Linux environment? If you are new to technology generally, I recommend Linux. In fact, unless you already utilize web-based technologies that are Windows specific I recommend Linux. Why? Because its built around a nice word – free. There is one exception. If you want to do custom product development rather than just building a straight-up site, you may want to consider using Windows for your development environment. Microsoft’s Visual Studio is pretty kick-butt. I really enjoy ASP.NET and think it is great for developing applications in.

Okay…So we’ve decided to go with a Linux host. In that case, open an account with Bluehost. Here’s the main factors I consider killer about Bluehost:

  • $6.95/mo. What? Yes. $6.95/mo. We eat that at McDonald’s in one lunch! That includes a free domain name (e.g. yourname.com), which is pretty huge since these usually cost around $10 in and of themselves.
  • Unlimited Hosting/File Transfer. You can store as much data as you want on their servers (okay, there are some exceptions, but generally…you’ll never run out of space) and you can also transfer as much information to and from the server as you want (again, some exceptions…but mainly apply to people who are trying to abuse the service).
  • Free MySQL Databases. MySQL Databases (or PostgreSQL) are the backbone of most modern web applications. They store data in a way that makes it extremely easy and quick to retrieve.
  • SimpleScripts. Allows you to within two minutes deploy popular web applications including WordPress (blogging), Joomla (cms), Drupal (cms), phpBB (forums), Zenphoto (photo gallery), Roundcube (webmail), and WikkaWiki (wiki) among many others. Seriously – two minutes.
  • Bluehost includes lots of other standard features like FTP, email, free advertising credits (Google, Yahoo, Miva), and automatic backups.

So what are you waiting for? There are no contracts. Even if you just want to familiarize yourself with some web-based technologies – open an account, use it for a few months, and then cancel. Its a great learning tool. No, it won’t run the next Google, but once you grow big enough and learn enough you can move to a larger host (we’ll talk about them in another post) who can handle your highest demands.