My Development Setup
I'm a self-taught fullstack web developer who has been working professionally in the field since 2017. Most of my work revolves between software engineering/computer science and geographic information systems. I'm going to write about the setup, programs, and plugins I use on a daily basis with some brief descriptions and alternate options.
It doesn't matter if you use a Mac, Linux, or Windows. Vim or Emacs, tabs or spaces. QGIS Server or GeoServer, Python or NodeJS etc. If none of the ideas were valid, there wouldn't be a dispute. This list does not serve as a recommendation cast on stone for or against anything; it only serves as a representation of my own web and GIS development methodology. Learn. Be open-minded. Try something new. Research. Find out what best suits your needs. This is my brief list.
List of Items
Here are the list of items we shall have a look at:
- Geographic Information Systems
- Artificial Intelligence
- Operating System
- Text Editor / IDE
- Hosting / Cloud Computing
- Version Control Hosting
- Content Management System (CMS)
- Performance and Search Engine Optimization (SEO)
Geographic Information Systems (GIS)
Open source GIS tools provide users with the ability to create, analyze, manage, and visualize geospatial data without any proprietary restrictions. Having a backgound in GIS, I have been making use of multiple software and tools so achieve various goals, either for clients or for my personal projects. I would recommend browsing through the internet to find out what would work for you if you are to dip your fingers into the GIS world.
- HCMGIS - Basemaps, data formats, data download etc.
- QuickMapServices - Working with basemaps and geoservices
- Plugin Builder 3 - Creating QGIS plugin bolierplate code
- qgis2web - Map generation in various formats
- Semi-Automatic Classification Plugin - Remote sensing processes
- mmqgis - Supports manipulating vector layers
- OSMDownloader - Supports download of OSM data
- Importer - Uploading and configuring new layers
- Vector Tiles - For georeferencing and clipping vector data etc.
- libjpeg-turbo Map Encoder - Supports JPEG raster encoding and rendering performance
Artificial Intelligence (AI)
I use: ChatGPT
Professionals, including myself, are experimenting with AI chatbots and creation tools to see if they can simplify their work. OpenAI's ChatGPT has undergone considerable public testing when it comes to automating jobs, producing content, and coming up with solutions for specific projects. OpenAI is not the only chatbot available, though. Bard, Bing, and more ChatGPT substitutes are currently available on the AI market. Up to this point, ChatGPT has dominated the news, but you can also explore some other ChatPGT options.
Try out these tools, please. Keep in mind that some have restricted functionality in the free version.
I use: Ubuntu
I only used Windows from 2006 until 2012. I'm currently using Jammy (Ubuntu 22.04 LTS) to work on. Linux comes in many flavours well referreed to as distros in which you can see what best works for you. Using the terminal, which is done through the Terminal application in Ubuntu, was one of the major game changers for my development path. I would suggest Linux or macOS for software development based on my experience.
Text Editor / IDE
I use: VSCode
I occasionally switch between VSCode and JetBrains (PyCharm and WebStorm). I personally find VSCode to be light-weight and consists of many developer tools thanks to contributions from the community. For Python, I prefer using PyCharm in which JetBrains have heavily invested into and comes with specific in-built and installable language-specific plugins. The only drawback with JetBrains that I have encountered so far is that it may be memory intensive in computers with low specs but they have a workaround for such.
VS Code Extensions
- Python - For Python IDE support
- Prettier - For prettifying JS, HTML and CSS
- Pylance - Addtional support for Python i.e DocStrings and Semantinc highlighting
- Live Server - Development server
- ESLint - IDE support for ESLint
- Docker - Containerization using Docker
- YAML - YAML language support
- WakaTime - Metrics, insights, and time tracking
- .ignore - Ignore files support
- AsciiDoc - Text document format similar to MarkDown
- CSV Editor - IDE JSLint support
- Requirements - Requirements file for Python support
- Makefile Language - GNU Make language support:
- JSLint - Integration with JSLint
I use: Firefox
My main reason for Firefox is the efforts in which their developers have put when it comes to privacy and security. However, Google Chrome is the most widely used browser and also common among the developer community. One can make a choice based on their preferences.
- Adblock Plus - Blocking ads
- Privacy Badger - Blocking trackers
- CORS Everywhere - Bypass CORS restrictions
- DuckDuckGo Privacy Essentials - Private search and track blocking
- Wappalyzer - Uncovering technology behind websites
- Translate Web Pages - Translate web pages
Hosting / Cloud Computing
I use: Digital Ocean
Managed hosting is an option, or you can create your own Virtual Private Server (VPS) in the cloud using solutions like Digital Ocean and AWS. With managed hosting, there is a trade-off between security and simplicity and total management and the ability to regulate costs with a VPS. Since I have some expertise with both, Digital Ocean and Render have shown to be a preferred compromise. I have more control over it than with conventional shared hosting, and I don't have to worry about server security or maintenance. In the future, I might have a different opinion, but for the time being, I like it.However, it is best to check out what best works for you or your business model.
I use: GitHub
The most popular location to host both public and private Git repositories is undoubtedly GitHub. Other options can be more advantageous or less expensive depending on what you intend to accomplish with private repositories. GitHub serves as a portfolio, résumé, and industry-specific social media site for web developers. Please check out my GitHub profile for more on the projects that I am working on.
Content management System
I use: Custom CMS
I have leveraged on Django's functionality to create a custom CMS however, one can save themselves the hassle by making use of available frameworks and tools. Although WordPress is the most popular Content Management System (CMS), there are other options that are gaining ground. The CMS you choose will rely on your unique needs, level of technical proficiency, and the kind of website you want to create. It is advised to investigate these alternatives and contrast their qualities to choose which one best meets your demands.
Search Engine Optimization (SEO)
I use: Custom Django-meta
Search engine optimization, or SEO. It involves improving a website to raise its standing and visibility in search engine results pages (SERPs). By improving a website's relevance and authority in the eyes of search engines, SEO aims to increase organic (non-paid) traffic to the site. Complex algorithms are used by search engines like Google, Bing, and Yahoo to decide where to rank webpages in their search results. To make a website compatible with these algorithms and increase its chances of ranking higher, SEO requires a number of strategies and techniques.
Steps Towards Improving SEO:
- Use SSL/TLS to improve security
- Use structured data to help Google understand content
- Use CDN to improve speed and performance e.g CloudFlare
- Use compressed images or light formats e.g. webp, SVG etc.
I've only touched the surface of what goes into being a GIS and fullstack developer; there is a lot more. From the operating system you use to the CMS and SEO of the website, I've tried to clarify and simplify all the layers required in creating maps in GIS and an interactive personal or organization website here. Most of these ideas have tutorials scattered around the internet. I hope this article gives you a better understanding of how to design, develop, and maintained a website.
There are no comments yet.
Hi, thanks for visiting! My name is Joseph Kariuki, a software developer and this is my website. I am consistently seeking solutions to various problems using coding. This site does not contain ads, trackers, affiliates, and sponsored posts.
Published: April 6, 2023