Software tools for the busy professional
Quick and brainless tools to quickly create software, analyze data, create APIs, websites and quickly host them.
To get things done fast: cheaply and reliably; while using minimum brain power. This is a highly opionated list that I have ended up with over the years.
Data environment setup
- Just use Anaconda. Let it manage the packages etc and you just focus on getting work done. It's free for personal use.
- For diagrams, use diagrams.net
- It's free, and exports a highly standardized file which opens in all kinds of softwares. It's future proof and dammn easy to use.
- Make sure you know Excel. Everyone uses excel everywhere. Everything comes in Excel.
- The graphs come out beautiful enough without touching the deafults or without having to do any tweaking at all. You can always switch to something else later on for polish. Honestly, I never needed to switch.
- ggplot2. Use it so much that you get fast at it.
- Founded by the guy behind d3.js
- This takes some time to learn, but dammn it's good and beautiful. Works in the browser without installation, and you can simply drag and drop sqlite file in it and start visualizing things. Love it.
- sublime text
- If you regularly deal with huge CSVs and need to quickly zip through it.
- It zips through absolutely huge files insanely fast(even in multi-gigabyte range), even on slow/trash computers. Sublime text is a superpower.
Quickly understand datasets
- Try datasette. It's free, open source, and it's dammn simple to get good at fast.
- To share with tech literate managers
- Shiny dashboard link
- To share with top brass and people with other important things to do than tinker in your excel
- Share with anyone who is an analyst or a fellow geek being paid to monkey around with data
- To store data for archival purposes
- Sqlite is timeless, immortal and doesn't do funky magic manipulations to your data like excel. Also all softwares support reading data from sqlite. Use it. There is a reason why every android phone, embedded device, computer and also server uses SQlite.
Api and web development
- jsoneditoronline.orgto construct and visualize JSON
- hoppscotch.io to quickly try out api.
- It completely works in the browser, no need to install it or do anything.
- Great free alternative to postman.
- Static websites
- GithubPages: If you don't have a domain name registered. It's free, works without needing a domain name, and all that you have to do to update webwsite is simply push it to github. It has unlimited builds.
- CloudflarePages: JAMstack platform. If you already own a domain name. It has unlimited bandwidth etc. Only limitation is the numebr of builds. The free tier has 500 builds per months.(500 website updates per month)
- Use namecheap.com. Don't think too much. They have been in business for a long time, have a solid reputation, and don't do shady practices.
- Godaddy ios straight out scum, full of dark patterns. Go on the inetrnet and you'll find people raging on it.
- Gandi has solid services, but has had many outages and data losses.
Deploying to cloud
- To deploy code
- Takes from local code to cloud in 5 minutes. Personal favourite.
- They have such a good tooling to brainlessly deploy to cloud and get done with it. No need to think long and hard about what to service to choose etc.
- To deploy VMs
- An old player in the game. Good pricing, SOLID service.
- A competitor to Linode. Good pricing, SOLID service.
- Personally, I've only used their bare metal VMs. Don't have experience about their docker and kubernetes offerings.
Notice how I didn't mention aws? Because aws USES UP BRAINPOWER. It's a solid choice for professinals. But not in in the initial stages when you quickly ned to go from 0 to 80. And don't even ask about the amount of money I have lost simply because a service didn't get shut down properly, or some weird hidden checkbox stayed checked and aws kept charging little money every month.
Quickly creating data dashboards
- Use shiny with R.
- Holy shit this one is a superpower. Insanely fast to prototype and get results out of the door.
Quickly create crud apps
The rule of thumb is: use whatever you are right now most comfortable with. However, there are some options which help to bang out stuff really really fast.
- Language: Python
- Django. Django is python's killer app. If you know django, use django. It has a clear cut way of doing things (the django way!), and is great for crud stuff. But it will fight you if you try to do fancy stuff outside crud.
- If you don't know django, use flask with WTForms and flask-bootstrap. There's a quick start guide on this website. Look it up. It takes like an hour to quickly learn enough flask to start banging out prototypes.
- Initially build with the default jinja2 templating engine. Later on, replace components with react, vue or whatever if-and-when you find the time.
- Database: Postgres
- Rock solid, battle tested, has sane defaults, quickly meshes with django and flask, and is readily available with every cloud provider. What else do you want?
Quickly create apis
- Django rest framework
- If django is python's killer app, django rest framework is django's killer app.
- If you use it commercially, kick bakd some money and send some funds. The software is f#$^ing awesome
- Flask is still an easy choice, if you have enough common sense to decide and stick to a structure.
- Use wordpress and get started.
- Don't waste time writing a custom static website generator. Writing your own generator is a form of procrastination.
- This website is generated by a custom static website generator. I've written more code for this website than I've written actual articles, so this has been a gigantic waste of time. Dut dammn it's a fun way to waste time.
- If you have a dev environment, use jekyll and get on with it.
- There are tons of generators out there. Jekyll has a huge community and out of the box support by GitHub, so you can quickly get started without using too much brain.
- If you are a professional and understand technical things. The creator(Colin Percival) is a fucking legend on hn.
- Ideal if you do stuff like creating courses, or have huge datasets, movies etc.
- A cheap and no bullshit service: fixed price, unlimited storage. I prefer it over google drive and dropbox.
- NOT AVAILABLE FOR LINUX USERS for obvious reasons (it has a fixed price for unlimited bandwidth. Linux users have a habit of abusing services and will end up backing up entire servers to backblaze).
- Just install their client and point it to your folders. It'll do the rest. No need to pay attention to it.
Quick notes and tips
- Google has a habit of killing off random services every few years. Make sure that you don't get locked in and develop a hard dependency on google services.
It's an abusive girlfriend. Don't get too attached.
Docker, kubernetes etc
- I use docker a lot.
- In one line: It simplifies my entire dev setup and enables me to brainlessly deploy stuff to the cloud.
- If someone wants to edit my project, I just point them to my docker image.
- If I am done with dev work and want to puch to the cloud, I simply point to my docker image
- If anyone even breathes in my code's general direction, I simply point to my docker image.
- I HAVE ZERO EXPERIENCE WITH KUBERNETES.
- Ublock origin
- Because no ads.
- Helps to quickly block elements in websites. For example: I have blocked the entire twitter trending sidebar. The world is no longer outraged 24/7 and twitter is now actually enjoyable to open.
- Enhancer for youtube
- It's download screenshot feature is a KILLER FEATURE.
- EXTREMELY FAST, free, and has zero bloat. It makes you want to uninstall Adobe reader.
- The annotations, comments and highlights feature is dammn good.
- Can open a huge variety of formats list. I used it to open everything: pdf, epub, mobi etc.
Why not windows?
Windows10 is a pain to live with. The dev environment is a pain to set up: Add to path, manage registry etc. Also updating things is a pain. Just try a mainstream linux distro once(I recommend Ubuntu. Plain and simple.) and windows will suddenly become insanely painful to use.
There are very few reasons to stick to windows:
- You don't have the time to switch
- You are completely dependent on the Visual Studio ide (not Visual Studio Code)
- You are married to the Adobe software suite
My personal reason:
I don't like windows since windows 10. That thing updates a lot, constantly demands reboots to apply updates, and sometimes takes hours to apply compulsory updates. I finally stopped using it when it forcefully restarted one night while I was in flow working on something, and locked away the computer for an hour while updating it. I got very very angry and immediately downloaded ubuntu. Win7 was great, Win10 is a pain.