Hi, we’re again having labs this week. Sorry for the late annoucement, hope you can still make it cause as usual, we are going to have a blast! From some fun news, splitbit now uses sqlbs to generate plausible sample data for the database. This not only helps the UI team prototype the layout when it actually has some data but also help the backend developers test the queries they are writing.
4th November Labs
Once again, I invite you to join the labs class where we’ll be working on the assignments. We’ve got new assignments as well as changes to the existing ones:
- https://github.com/ISDC-Helsinki/splitbit/issues/23 - mega issue that spun out as an iteration of issue number 8.
- https://github.com/ISDC-Helsinki/splitbit/issues/22 - issue that is meant to introduce changes to the database schema to account for the friends functionality.
- https://github.com/ISDC-Helsinki/splitbit/issues/21 - we want splitbit’s groups functionality to account for various scenarios. If one is taking a trip with with friends and would want to track the expenses for just a week and then be done with it and not have it displayed at the main screen is a nice functionality to have.
- https://github.com/ISDC-Helsinki/splitbit/issues/18 - finished description of the task. Although mildly vague, the finer details will be given during the class.
- https://github.com/ISDC-Helsinki/splitbit/issues/12 - slight modification to the create group task
In other news I will be having a talk with a TEK representative on additional funding of the club and announce what we’ll be getting. Hopefully, we’re gonna get increased grape rations!
31th October Labs
Hello, we’re having another club labs session this Thursday! We’ll commence forth with working on the assignments now that you have acquainted yourself with the architecture a bit better. Excited to see you there again!
28th October Labs
Hi! Hope you’re starrving for some software development because we’re having a lab session this week on Monday at 16:15. I’ve made some exciting architectural changes and I’m really excited to share them with you!
For the super curious, check out issue #14 and issue #16 to learn more.
Moreover, we’re beginning our iOS development efforts for our client app, so people with MacBooks will form a team to establish a fresh new codebase. See you there!
14th October Labs
We’ll be working on the assignments again. Please read the description of yours beforehand and come in semi-prepared. We will again have some snacks sponsored by Integralis!
7th October Labs
This time you’ll continue working on the assignments you got assigned last meeting + (there will be more added soon). This session won’t start with my yap (unless you want some about some piece of tech stack of our project).
Remember to revise sveltekit, gin and sqlboiler.
We will again have some snacks sponsored by Integralis!
30th September Labs
The labs start with ensuring everyone’s set up with their environment. Next, we go over a sample assignment for demonstration purposes. Each one of you then, decides on what issue you’d like to work on. During that time I’ll be help you understand the code and guide you on how to implement your features. We will again have some snacks sponsored by Integralis!
23th September Labs
The labs start with going over a sample assignment for demonstration purposes. Each one of you then, decides on what issue you’d like to work on. During that time I’ll be offering you my assistance so that hopefully, by the end of the session, we’ll have plenty of pull requests ready! We will again have some snacks sponsored by Integralis.
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
sudo apt install git
- to install git- https://learngitbranching.js.org/
- https://git-scm.com/book/en/v2/Git-Basics-Getting-a-Git-Repository
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 usedsudo apt install golang
) you have to get rid of it usingsudo 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
- https://fitech101.aalto.fi/web-software-development/2-internet-and-http/4-architecture-client-server-model/
- https://immich.app/docs/developer/architecture/
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, runsudo 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
sudo snap install android-studio --classic
to install Android Studio for Android development.- https://developer.android.com/develop/ui/compose/tutorial - especially view the samples page.
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.
Introductory Meeting Agenda
Agenda for Introductory Club Meeting 16.09.2024:
- 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
- Overview of Client-Server Architecture
- General introduction and explanation of the client-server model
- 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
- Joining Our Github & Mattermost Organizations
- Guide on how to join and collaborate within our development platforms
- 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)
- Sample Assignment Walkthrough (time permitting)
- Going over a sample Github Issue
- Creating a git branch addressing the Issue
- Creating a merge request