Every team has a favorite set of tools. Same goes for us. I will try to list them hoping that either someone will benefit, or somebody will suggest even better solutions.
The tools of the job (developer that is) can be separated to 2 categories:
- support tools (what I call the soft stack): All the services, sites and pieces of software you use for organizing your workday and work, and communicating with colleagues and clients.
- building tools (the hard stack): Whatever you use for generating / running your products (databases, frameworks, libraries etc.).
I am going to go through our soft stack and I will follow this up with the 'hard stack' on a different post.
No comment. You all know what this is about. I don't like it (not sure why - is it Microsoft - Snowden??) and we are constantly on the lookout for a better tool, but nothing has come up so far. Google Hangouts are a pain. Although it does work, I find it next to impossible to organise a call. 'organize' is the proper word in this case. It is not as simple as pressing a button (you have to organize a call), and when you want to quickly get in touch with coworkers then the last thing you need is trying to figure out why you can't achieve the obvious (place a call!). Skype for all its faults does work with ease! Exchanging files is not that great, but for a quick 10 - 20 kB file it is just fine.
Some wishful thinking: can we have a peer to peer tool (similar to qTox) with a nice interface, preferably web based? I thing you can't have both but this is just wishful thinking!
The holy grail of Rails developers. There are free alternatives but nothing beats the simplicity of basecamp. It just gets the job done. We often tried to move away but failed. All our stuff is there and also non technical people find it easy to use. Recently I was trying to communicate with a small group of people belonging to a large multinational. Our email chain conversation started a month ago. By now we had exchanged about 30 emails and the topic had completely changed. Unfortunately they were bound by their IT and could not use an external tool like basecamp. Having to deal with the email chain made me appreciated the simple beauty of basecamp.
Bug tracking is essential. Again there are free tools, but in our case we started a few years ago with Lighthouse and have remained locked in it. I am not impressed with it. It does work, but I would expect some extra development / features after all these years. I am not an advocate of adding features just for the sake of it, but as a developer I expect the products to evolve over time. Lighthouse seems to have been stuck in 2011. It smells a bit of 'if it ain't broke - don't fix it'.
The de facto service for hosting Git repositories. We use it to a limited extent. Also very good for hosting static sites (see jekyll which is what I have used for this site). I don't like the fact that there is a charge for even a single private repository (but then again, who does like to pay for services?)
Here you will also find all the open source software in the world.
version control - bug tracking - project management - wiki
What a super product! It is free for teams up to 5 people, works with Git and Mercurial, has messages, has wikis, has bug tracking: IT IS BRILLIANT. I think that we could replace basecamp and lighthouse with just bitbucket without too much trouble. We keep all the repositories there as well as wikis and bug tracking where necessary. It also has an excellent client (sourcetree) for OSX for mercurial and git. Github is an excellent alternative, but it is limited to git and any private repository will cost you. AWS will soon provide repository hosting for git (codecommit), so watch that spot.
server infrastructure - database - email and so much more
The mother of all services. This is a one stop shop for infrastructure. AWS allows you to build anything from a tiny site to a super - dooper monster with all the bells and whistles. I will try to put together a separate post on how we use AWS. It does have way to much functionality so I need to dedicate more space than I have here.
server infrastructure - database - email and so much more
An industry leader for deploying and managing rails (and not only) projects. Excellent for very fast development and also with a very interesting marketplace. Even if you don't use the services that are on offer, it is definitely worth browsing.
Heroku has often been the reason for long philosophical discussions at work. Should we go the Heroku way or the AWS way? Which is cheaper? Which is better? Do you want to spend time supporting infrastructure or do you want everything done for you (so that you can focus on development only)? I think that the conclusion we have reached is that for pretty small projects Heroku is a bit expensive. But then again, this does depend on whether you don't mind setting up EC2 servers (I don't mind!).
We have definitely agreed on the fact that for early development Heroku is invaluable. You can deploy a site and share it with a client in no time at all.
Managing your DNS records can be next to impossible once you deviate from the absolutely standard actions. Most registrars will give you limited access. So when you need to set an SPF or DKIM record or even worst a CNAME for the zone apex, then good luck. Domain.com will do it for you only after a chat with support (admittedly they are very helpful). A Greek registrar that I often use (papaki.gr) offers the tinned site that most registrars have in place (I guess there must be somewhere a 'Registrar site super-market'). Again, papaki.gr support is pretty good. But I don't want to have to talk to support to get my job done, so I prefer dnsimple . AWS also provides similar services with Route 53, but I have not tested them (not recently anyway).
mass emails and other
Your client just discovered that they need to send 10000 emails with all sorts of weird contents (account balances and points and emails and ...). You may think that sending an email is no big deal. Then you probably have never tried to send a large volume of customized emails (or even non customized). Remember that there are quite a few email clients out there (outlook, ios stuff, android stuff, mail for osx, blackberries...) and that these clients do not necessarily follow the standards that a web browser follows. A message that renders just fine on one device may look broken on another. Testing this is not easy (unless you have the resources and the patience). Falling back to plain text is also not an option. Your client has already seen beautifully formatted emails and he wants the same (and rightly so). Then, even if you have got everything right, how can you guarantee that a spam filter will not throw your email to the spam folder? After all you mention money amounts which will drive crazy even the most relaxed spam filter (remember the infamous Nigerian widow that contacted you many years ago asking for your bank account in order to reward you with 1 million dollars that belonged to her late husband ....? She spoiled it for all of us.)
Don't waste your time. Use a professional service like campaign monitor or mandrill. They have excellent templates and can guide you through the spam potholes. They will also give you excellent visibility into who / when / where opened an email. So you can go back to your client and give them some useful information:
"Out of your 10000 only 10 where opened!" At least you will know and won't live in a dream-land.
Also once you have your email list setup it will be easy to post a different newsletter at a later day.
Mandrill and Mailchimp
mass emails and more
These are grouped together since they are offered by the same company (notice the monkey theme).Mailchimp does pretty much the same as Campaign Monitor. Mandrill is a full extra SMPT service. For a low volume of emails it is free. It provides you with visibility with regards to the recipient's actions (did they see the email etc.) and it also gives you a nice view of what the actual email was.
When you are developing an application which sends emails then you need to be able to test and ideally view the email in its final form. Mailtrap.io provides a sandbox for testing emails. You can set your applications SMTP settings to point to a mailtrap server. All email will be forwarded to your private inbox at mailtrap. You can browse them and even forward them to an actual email address. This is an invaluable tool for developing and for testing.
Mailtrap.io has also got a 'spam-meter' service (we all need one of these)! It will evaluate your email against various spam triggers and give you an overall score which is a good indication about the spam quality of your email.
The eternal question of how does my page look in IE8 or some other crappy browser has finally been answered. BrowserStack saves you the pain of running a virtual windows box (unless you are unfortunate enough to develop on such a box). You can view any page (running locally) via the BrowserStack service rendered on any browser you choose. It does come at a price though....
website traffic analytics
Your eyes when your site is swimming all alone in the wide open sea. Enough said.
application / server monitoring
We use this in a couple of ways. Firstly for monitoring that our sites are up and running. Secondly for monitoring resources (memory, CPU, disk space) and even errors or heavy queries. This is an excellent tool for live coverage of the health of your application and for post-mortem information when things go wrong. It also works well with a multitude of technologies (we use it both for python and ruby projects)
If there is one tool to rule them all, then this is it. If there is one piece of software that every developer should know about then this is IT. Version control is the cornerstone of software engineering (as far as I am concerned anyway), and Git is the master (no pun intended). Spend some time reading about its history and you will see that Git was produced by those that really matter for a noble cause.
Git's twin cousin (if there is such a thing). Both at their simplest forms do the same. Once you start looking at more esoteric features then I think that Git excels. For some reason that I don't care to explore, we use both. In my daily routine, which involves commits and merges, both perform just as well. In the long term it looks like Git has more support (codecommit) so if you have a choice then go for Git.
This is probably the tool with which we have the most interaction over the course of a day. Sublime can handle everything that you throw at it. I often have to deal with very large text files (20MB) and Sublime does manage to handle them. It has a multitude of plugins and a large community which is exactly what you want from a tool. It offers excellent search and browsing capabilities and it also features a very handy 'multiple selections' feature (CTRL+CMD+G for a Mac). It does come at a cost (the trial will keep you going for a while).
vim will take you where sublime can't. Imaging a 50MB file (e.g. data that has to be imported to a database) which requires editing. For example, you need to replace the date (which is present a few thousand times) with the current date. This is a job that involves regular expression. Opening the file alone is a task for any editor (sed is also an alternative, but I find it harder to use since you don't get to see your file). Not for vim. You won't write your next novel here (unless you have some major geek issues), but you will handle the most ridiculously large files and also carry out work on remote servers. vim should be part of your arsenal since there are jobs that only it can do!
If you want to be kept up to date with the latest news (that matter) then this is the place. This is not a tool in the same way that all previous services have been. We do live in a very fast moving environment and part of the job description is that you keep up with whatever is going on. Hacker News is an excellent starting point.
One of the most amazing things about the programming community is the spirit of sharing information (referring to the open source part of the community). In my former professional life I was a physics researcher. Rest assured that if you ask a question about your latest experiment then you will probably start feeling that you are giving away valuable information rather than that you are getting in touch with your fellow physicists (asking a question in an open forum is not common at all). Developers on the other hand cherish the exchange of information and usually go out of their way to help. stackoverflow.com encapsulates this spirit and is a valuable source of information. Go use it either by asking or by answering questions!
Let's show all these archaic science / engineering communities how it is done!