Week 1. Principles and practices¶
Assignments¶
- Principles and Practices
- Plan and sketch a potential final project
- Project Management
- Read, sign, and upload the student agreement
- Set up
git
- Build personal website
Final Project¶
I considered four idea concepts, settling on a final one.
Splitflap counterWhile I am fascinated with split flap displays for text (having often being used in airports and train stations), I determined this might prove too challenging to start. There would be lots of 3d printing, and some of the electronic and mechanical needs would be demanding.
Desk Productivity ToolI work from home, and would like a device to increase my productivity. The starting tool would be a pomodoro timer. Rough ideas for an extension would be an indicator that I am in a video meeting (due to interuptions from my daughter). I didn’t find a fully flushed out concept here, and abandoned the idea.
Quiz BuzzerI enjoy playing games, and led a pub quiz for many years. I would make a buzzer system with player buttons (4 to start) that would lockout other players once a first one had pushed. To start, the individual buttons would be wired, but eventually modified to be wireless. Also would work to expand the number of buttons supported. I strongly considered this idea before settling on my final idea.
- Playing card dealer
- I frequently play card games, and dealing isn’t always enjoyable. I plan to make an automatic card dealer. Further details can be found in my final project overview.
Project Management¶
Setting up git
¶
I routinely work with git
in conjuction with scientific programming work. As I want to work locally on my computer, setting up the remote connection to gitlab.fablab.org proved to be the only tricky part.
git
enables source code tracking, which allows many edits and seeing the work over time. Though I am currently working individually, it also can be used collaboratively to see changes from individuals working on a communal project.
Critical steps needed
- Generate SSH key
ssh-keygen -t ed25519 -C 'EMAIL_ADDRESS'
- Take the public key output, and add to the gitlab settings
- For local ssh access, add the configuration to
.ssh/config
Host gitlab.fabcloud.org
IdentityFile SSH_KEY_FILE_LOCATION
IdentitiesOnly yes
AddKeysToAgent yes
This enabled access of my gitlabs repo via SSH
Set up personal website¶
I have some experience setting up websites. For personal use, I have made some very simple HTML pages. In various previous work positions, I have contributed to dynamic scientific websites as part of teams. In various ways, these have allowed scientists to interact with data dynamically. For Fab Academy, this will be my first experience making a detailed website individually.
To gain experience beyond simple HTHML I want to work with mkdocs
, so I need to set up my local repository and also move to mkdocs. mkdocs
allows me to work with Markdown, which I have great experience with. For scientific work, I have worked extensively with RMarkdown and RStudio, which allows for R code for data analysis embedded in Markdown text.
I have no previous experience with mkdocs.
Critical steps for website setup:
- Clone my gitlabs repo locally
git clone git@gitlab.fabcloud.org:academany/fabacademy/2025/labs/reykjavik/students/albert-smith.git
- To move to mkdocs, remove everything in this repository
- Replace with all files from https://gitlab.fabcloud.org/academany/fabacademy/templates/student-template-mkdocs.
- Commit this template and begin editing
- To work and view locally, install mkdocs on my mac via homebrew
brew install mkdocs
- To view local version of web site (and live edits) active the mkdocs server.
# The following command starts a server at http://127.0.0.1:8000/.
# Default is localhost (IP address 127.0.0.1)
# Default port is 8000
mkdocs serve
- Edit and have fun
git push
sends local edits to the fabacademy site
I have been excited to work with mkdocs so far. It has enable rapid creation of a very attractive website. As noted below, it has allowed me to work locally before pushing to the Fab Academy site. I have been testing additions to the basic mkdocs, for example the ability to add captions to inserted images.
Work environment¶
I choose to work in an IDE, and I prefer to use Panic Nova. This Mac specific application has integrated git support, syntax highlighting for a number of languages. In my screen shot, there is a file listing column, the next area with the file being edited, and lastly a terminal window which allows me to issue git commands.
Website work viewed in Nova IDE
Because I have started mkdocs via the serve
command, I can view the current website via http://127.0.0.1:8000/. Any edits on the files are instantly viewable in the local web browser.
Critical workflow steps¶
While I have worked with git
previously, I have ended up using the same primary commands.
To check the project for any file updates, I used git status
. If there are files to add, this is accomplished by git add FILE_TO_ADD
which stages files for committing. When ready to commit, the git commit -m "COMMIT MESSAGE"
will commit files.
I might do these steps for several files and edit rounds, and once I am ready to put these on gitlab, I use the git push
command to send it to my Fab Academy gitlab site.
If I need to track specific changes and look for a specific commit, the git log
command will show a listing of all changes starting from the most recent. This includes the commit messages, which help if looking for a specific change. For example ‘git diff COMMIT_IDENTIFIER’ will show changes between the current and the noted version.
I should note that my IDE gives indicators for file updates, and I can do most of the above steps in the IDE. However, I do sometimes use the command line commands, and I always do the push via the terminal command.