Decisions, DecisionsDeciding on a Platform and a Framework |
I’d love to tell you that I am fully persuaded of the correctness of all of the technical decisions made with regards to this website, but in truth, analogies to coin flipping are not too far off. There are many great articles out there on the pros and cons of a given approach and ones that compare and contrast technologies. However, a lack of practical experience makes it difficult to confidently weigh these options. Its a catch 22 scenario. Without experience, it's difficult to choose and without choosing no real experience can be obtained.
So to move past the analysis paralysis that threatens to sidetrack development indefinitely, some decisions had to be made; a path had to be selected and pursued. What follows is the thought process (or lack thereof) behind these choices. The expectation is that over time some of these decisions will be revisited and revised.
Cloud Services Provider
AWS vs. Azure vs. Google vs. IBM
In truth, serious consideration was only given to Amazon Web Services and Microsoft Azure. AWS won easily simply because I have significantly more experience with it than any of the others; having taken a class on cloud technologies that referenced it extensively. Additionally, AWS offers a one year free trial on many of its lower-tier services and has the greatest market share which usually correlates to available resources for learning and more robust community of users to refer to for help.
Server Side Language & Framework
PHPServer-side scripting language for web development. MVC vs. JSF vs. Ruby on Rails vs. Python Django
Despite having taken a class in web development using JavaServer Faces, JSF seemed like overkill for most of what I have planned. Currently, the idea is to place most of the interactive behavior on the client side using JavaScriptA language that can run in the browser to make websites interactive. and associated libraries. This left the server side primarily to provide customized content. There are future plans for more complex applications at which point Java services may come into play. (In the end, though Java may lose out to Python as I have an interest in this language for data analysis purposes.)
What convinced me to go with PHPServer-side scripting language for web development. was a Udemy class “Write PHPServer-side scripting language for web development. Like a Pro: Build a PHPServer-side scripting language for web development. MVC Framework from Scratch” taught by Dave Hollingworth. While there are many popular PHPServer-side scripting language for web development. frameworks available, frameworks can at times be “auto-magical” black boxes, particularly if you are unfamiliar with the underlying technology. I really wanted to understand what was happening behind the scenes and this tutorial was a big help. I’m not averse to eventually moving to something like Laravel (or abandoning PHPServer-side scripting language for web development. altogether for Python) but for now, I like being able to inspect and modify the inner workings of the site.
GitCommand line tool for keeping track of changes in source files. Remote Host
GitHub vs. BitBucketWeb-based service for hosting and sharing Git repositories. vs. AWS CodeCommit
If there are open source alternatives to GitCommand line tool for keeping track of changes in source files. for version control they rarely popped up in discussion boards or Google search results. GitCommand line tool for keeping track of changes in source files. seems to be the defacto standard. There are however a couple of options on where to host a remote GitCommand line tool for keeping track of changes in source files. repository. The most popular by far is GitHub but I decided against it. It may not be completely rational given that I intend to expose all of the site’s code but I disliked that free accounts had to be public.
Both BitBucketWeb-based service for hosting and sharing Git repositories. and CodeCommit offer free private repositories and while ultimately the code will be made public I like the ability to control how and when. CodeCommit had the opposite problem, there did not seem to be a way to make a repository public. So BitBucketWeb-based service for hosting and sharing Git repositories. won.
Development Machine
PC vs. Mac
Both. My desktop is a PC using Windows 10 and my laptop is a MacBook on OS X Yosemite. So far I’ve tried everything in both environments and have been satisfied with the results. I’m starting to favor the MacBook because of portability but still often perform research and experiments on the pc because of the larger screen. (In the future I hope to experiment with virtual machines.)
Conclusion
It's a starting point. Only time will tell where it goes from here.