Tech Stacks and StackShare
When I started out to build this website I really had no idea how it could be done or what different technologies and tools I would need to get started. In this current tech environment with so many new tools coming out all the time and tons of tutorials, videos, and blog posts each recommending different options, it's difficult to choose the right technology for your particular application.
I knew I wanted to work in Python, as my interest lies in data science and machine learning, and Python is very strong in that ecosystem. That left me with pretty much two choices in terms of web frameworks, either Django or Flask. I started out by checking out Miguel Grinberg's Flask Mega Tutorial, which was an in-depth look at building your first app with Flask.
While doing that I spoke to an old friend of mine about potentially working on some web apps together in Django, a project that never materialized, but that pushed me to look at Django as an alternative. I went through both the Django Getting Started Tutorial and the MDN Local Library Django Tutorial to get a sense of how to create the website that I wanted. I really enjoyed Django's template engine and straightforward model and view creation. I can't say that I fully understand the differences between Flask and Django on a deep level even now though.
Next I had to think about how I could deploy my app to the web, as I didn't have my own webserver nor the slightest clue how to set one up. I remembered that I had access to the GitHub Student Developer Pack, which happened to offer some credit on Heroku and DigitalOcean. It turns out that these two are similar, but don't have exactly the same offering.
I ended up going with Heroku, as their Platform as a Service (PaaS) model seemed to fit with what I wanted to accomplish, and they had a super easy to use API that integrates nicely with Git, meaning I could easily run everything I wanted from my PyCharm PowerShell console. Heroku also nicely has a very simple to follow Getting Started on Heroku with Python guide that really makes it easy for newbies to publish a web app using their free dynos in no time.
For the database I knew I wanted something more sophisticated than SQLite, so I went with the free hobby version of Heroku Postgres. Once again, Heroku's great documentation made setting it up fairly easy.
When it came time to finally get a domain name and move off of Heroku's free dynos and onto the hobby dynos that come with a GitHub Student Developer Pack registration, I looked around at many of the different domain registration websites available, finally settling on Namecheap, since it's also part of the GitHub Student Developer Pack, although I did not end up using the free domain for a year for this particular site, and plan on using it later on to launch a personal blog where Nancy and I can write things unrelated to work or studying.
I also needed an easy-to-use front-end framework that would give the site a decent appearance without too much investment from me in terms of learning web design, since as you can see I'm a little aesthetically challenged and I'd rather spend time on putting up content and getting the backend functionality working properly. I prefer entity-relationship modelling to figuring out what the best color combination is for my site theme. I ended up using Bootstrap, since I'd taken a brief Django course on Udemy that used Bootstrap to quickly make a functional site that didn't look like something from the 90s.
Now, that was my personal journey of building up my current stack, and I'm sure it will continue to evolve in the future as this website changes and my needs evolve. This is where I wish I'd known about StackShare, as I'm sure it would have saved me a lot of time in figuring out what the best aspects of each potential tool are.
StackShare is a site where top companies post their tech stacks, and individual tools are also nicely summarized, with information about their GitHub repo, as well as votes and reviews from people who use those tools in their own stacks. The site allows for side-by-side comparison of similar tools, and even has a nice "apples to oranges" warning that pops up if you decide to do something like compare Heroku and DigitalOcean.
What is nice is that they allow users to add one-liners that describe what they like about a particular tool, and users can then vote on those one-liners, so you can easily see the benefits of a particular technology at-a-glance based on real reviews. They also have the top comparisons by popularity so you can easily see the comparisons people are most likely to need help with.
In addition, there are rankings of the most popular languages and frameworks, which is useful if you're unsure as a developer which technologies you should be learning to stay in-demand. There are plenty of YouTube videos on this topic, but this is a more empirical approach, just like searching for job postings for those technologies and seeing which ones have the most available positions.
StackShare also has a Trending section that shows what tools are hot each week, so it's a good place to go if you're interested in keeping current. Plenty of the tools are verified by the actual parent companies, as are complete stacks from companies like Airbnb and Dropbox.
Probably the most interesting thing are the so-called Stack Stories, featured articles written by companies describing their tech stacks and the rationale behind why they chose the tools they use, and how it helps them scale to accommodate huge amounts of traffic. Some examples of this include SendGrid, whose stack allows them to send over 40 billion emails per month for large companies, or Shopify, that manages to serve over 80,000 requests per second at peak traffic.
If you're interested in what tech stacks big companies use and why, or if you're just a hobbyist like me trying to decide how to build your next app, give StackShare a visit and I'm sure you'll take away some valuable insights into the world of tech stacks.