Introduction meeting summary, guidance & materials

Introduction meeting summary, guidance & materials

NOTE: I highly advise you using a Linux/Unix-based (hence macOS is also fine) system for your development needs. As a B.Sc. student, you have received the school laptop that runs Ubuntu. Try to do the development on it. If you insist on using Windows you can use WSL.

Installation guide and pointers for the necessary tools.

Shell

  • A shell is already installed on your system. When you launch the terminal, by default, you are interacting with the shell already. Unless you have changed it yourself, on Linux, it will most likely be the bash shell. You can check which one you are using by running ps -p $$
  • Run man to learn about any command in depth. The CLIs themselves often feature a –help or -h flag to print a short overview of the most basic functionality. Try to emerge yourself in the shell. Instead of dragging files from one location to another, try using the mv command. To copy files use cp command. To move between directories, use cd etc. Try to get creative and think of ways you are using your computer and instead of the regular, use the command line. Need to convert an image from JPG to PNG? Don’t use some website to do so, use the convert command. Transcoding from mkv to mp4? Use ffmpeg. Using overleaf to work on your LaTeX? Try to compile the document yourself using pdflatex from the texlive package. Unarchive a zip file? Use unzip. You get my point. Anything that you do on your computer, can be done using the command line utilities and try to force yourself to do it that way.

Git

SQLite

  • sudo apt install sqlite3 - to install sqlite3
  • When you run sqlite3 filename.db you start modifying the database file. If it’s not present already, the file’s going to be created.
  • Honestly, nothing really worth recommending if you know postgresql you know sqlite with the minor difference that you connect more easily and there are fewer features available. Google things as you need them.

Golang

  • Note: The project uses modern golang primitives which require golang version 1.23 or higher.
  • sudo snap install go --classic - to install golang as the snap package manager keeps the most up-to-date version of golang. If you already have an installation of go (if you have used sudo apt install golang) you have to get rid of it using sudo apt remove golang and all the related packages. At the end, running go version should yield at least 1.23.
  • Learn how to write go by following: https://gobyexample.com/hello-world

Gin-specific documentation

Architecture client-server

Learning svelte

  • Check if you have the node package manager npm by running npm version and if it lists a bunch of items and not some command not found error, you’re good. If you don’t have it, run sudo apt install nodejs npm and it should get installed. Instead of that, you can also try installing bun by following https://bun.sh/docs/installation It’s a faster alternative to nodejs.
  • https://learn.svelte.dev/tutorial/welcome-to-svelte

Learning jetpack compose android dev

Project overview and setting up the dev environment

We are developing “codename SplitBit”. An app to help with cost keeping with friends and family. Similar to Splitwise but better as it is open source, free to use and written in a modern, lean and scalable technologies.

Read more

Introductory Meeting Agenda

Introductory Meeting Agenda

Agenda for Introductory Club Meeting 16.09.2024:

  1. Interactive Surveys & Hands-on Demos
  • Anonymous surveys to assess familiarity with SD tools/languages
  • Live demos of: • Command-line basics • Git overview • Sqlite3 quick intro • Golang hello world
  • Pointing to the resources where you can learn more about those tools
  1. Overview of Client-Server Architecture
  • General introduction and explanation of the client-server model
  1. Project Introduction & Architecture Walkthrough
  • Overview of the project we will be working on
  • Board drawings of the relations between each moving part in our system
  • Hands-on live coding session demonstrating how the client-server architecture is applied
  1. Joining Our Github & Mattermost Organizations
  • Guide on how to join and collaborate within our development platforms
  1. Development Environment Setup
  • Package managers run-down and choosing one for your platform
  • Compiling and running the golang server
  • Running the web-client
  • Running the android-client (time permitting)
  1. Sample Assignment Walkthrough (time permitting)
  • Going over a sample Github Issue
  • Creating a git branch addressing the Issue
  • Creating a merge request
Read more

Welcome message

Welcome message

Dear All, Thank you so much for joining, I’m astonished by the amount of you that got interested. You got the memo, we are building useful software, now here goes the how, when and why.

How?

Every semester we hold talks and decide on building some piece of software (or decide to extend the development time of the current one if it is not yet feature complete). GitHub is the main hub of our collaboration, there we host our project files and track the feature implementation statuses via Github Issues. I’d want to avoid the overly bureaucratic processes experienced in many software companies where before you even start your coding work, you need to file 10 Jira tickets. Github Issues is the ultimate source of truth, and we use individual issues for tracking progress and discussing the assignments. Furthermore, we make use GitHub Wikis to document project structure, development environment setup prerequisites, guides and certain code quirks. The idea of such organization is largely inspired by No Boilerplate’s video https://www.youtube.com/watch?v=WgV6M1LyfNY which seems to address most of the painpoints I experienced during my work as a software dev.

Read more