Current stack for side fun projects
Thought I would update with what my current setup looks like for typical side projects that I code just for fun. Also, to get it out of my system since I can’t code as much at work because I am generally busy clearing roadblocks for my team or iterating on strategy.
I like the simplicity of this since AppEngine keeps it always up and generally my site doesn’t get much traffic so it is largely free. I just have to pay for domain. Now, to generate those html and JS, I am still using Pelican site generator which allows me to write these posts in markdown and then it generates html + JS out of that.
I check in all the markdown files in git and have written script that generates site pages using pelican and then copy to “publish” directory and then deploy to AppEngine in one step. So, largely I just keep writing markdown and run a command to add content on my site. For images, I upload to imgur and then link it in markdown.
Now, for complicated setup where I need things like database, queues, scheduling script runs, caches, etc., I have started using:
- docker for packaging code
- kubernetes for cluster management and deployment, allows flexibility to be able to move to different servers, scale up, etc.
- python – since text processing, machine learning, etc. is so easy in it.
- flask framework – for app framework since it simple
- angular – once something gets complicated in UI, otherwise stick to flask jinja
- jupyter for explore and quick prototyping/trying something quickly and interactively. There is online in your browser version by Google called Colaboratory for others starting new. But, I like my local jupyter setup.
- virtualenv for sandboxing per project
- pip for dep management of python projects
- PyCharm IDE for coding if not using vim.
- git for version control
That’s the update about current setup. I like how pelican survived years with me for simple use cases. Of course for complicated projects, stack will keep changing so I don’t expect above list to remain stable. 🙂
Hope this helps someone who is curious!