Skip to content

Commit

Permalink
Hacktoberfest 2024 (#68)
Browse files Browse the repository at this point in the history
* ✨ Add draft of the Hacktoberfest post.

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

* Apply suggestions from code review

Co-authored-by: Alex Dewar <[email protected]>
Co-authored-by: Saranjeet Kaur <[email protected]>

* Add RSE Competencies Toolkit details

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

* Apply suggestions from code review

Co-authored-by: Dan Cummins <[email protected]>
Co-authored-by: James Paul Turner <[email protected]>
Co-authored-by: Saranjeet Kaur <[email protected]>

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

* Apply suggestions from code review

Co-authored-by: Alex Dewar <[email protected]>

* ✨ Simplify post and add some missing bits.

* Explain acronym

* Add unknown words to the list.

* Remove Crystalbot.

* 🐛 Ignore Clockify URL

* 🐛 Update BEn's picture.

* 🐛 Fix tags.

* 🐛 Fix header.

* Apply suggestions from code review

Co-authored-by: Dan Cummins <[email protected]>

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: Alex Dewar <[email protected]>
Co-authored-by: Saranjeet Kaur <[email protected]>
Co-authored-by: Adrian D'Alessandro <[email protected]>
Co-authored-by: Dan Cummins <[email protected]>
Co-authored-by: James Paul Turner <[email protected]>
  • Loading branch information
7 people authored Oct 29, 2024
1 parent 579ed99 commit 207ba57
Show file tree
Hide file tree
Showing 8 changed files with 145 additions and 6 deletions.
3 changes: 3 additions & 0 deletions .vscode/settings.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"cSpell.language": "en-GB"
}
34 changes: 33 additions & 1 deletion .wordlist.txt
Original file line number Diff line number Diff line change
Expand Up @@ -190,6 +190,39 @@ Zenodo
Zsh
zsh
Álvarez
Hacktoberfest
SALC
Crystalbot
TBC
Clockify
TUI
UI
timesheet
Dobson
WSIMOD
hydrological
modularity
SWMManywhere
DEMs
SWMM
UDMs
Codecov
repo
downloader
PyCSVY
CSV
CSVY
DataFrames
YAML
numpy
polars
formatters
linters
Dependabot
UTF
Validator's
repositoryr
README
OOP
UML
Vlissides
Expand All @@ -215,7 +248,6 @@ european
dataclass
dataclasses
np
numpy
scipy
cdf
PV
Expand Down
2 changes: 1 addition & 1 deletion docs/.authors.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ authors:
HarmonicReflux:
name: Benjamin J Scharpf
description: HPC and RSE Experience Programme
avatar: https://pxl-imperialacuk.terminalfour.net/fit-in/428x572/filters:upscale()/prod01/channel_2/media/images/people-list/Benjamin_Scharpf.png
avatar: https://pxl-imperialacuk.terminalfour.net/fit-in/428x572/filters:upscale()/prod01/channel_3/media/images/people-list/Benjamin_Scharpf.png
cc-a:
name: Chris Cave-Ayland
description: RSE Technical Lead
Expand Down
100 changes: 100 additions & 0 deletions docs/posts/20241021_hacktoberfest24.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,100 @@
---
date: 2024-10-21
authors:
- dalonsoa
- alexdewar
- SaranjeetKaur
- AdrianDAlessandro
- dc2917
categories:
- Events
tags:
- Open Source
- Hacktoberfest
---

# Hacktoberfest 2024: Bring your own code

![The Hacktoberfest Logo](images/hacktoberfest24/logo.png){: .no-caption style="display:block;margin:auto;width:69%" }

[Hacktoberfest](https://hacktoberfest.com/) is a month-long annual event that encourages people to contribute to open source throughout October. The motivation of Hacktoberfest is to celebrate all things open source, especially the people that make open source so special.

This year the central RSE team at Imperial planned two in-person events during Hacktoberfest on the 1st and the 23rd of October. The events were open to anybody interested in participating in open source software, either coding or with non-code contributions. Everybody was welcome to join the events and bring their own code along for a discussion with the central RSE team members. This included [low code and non-code contributions](https://hacktoberfest.com/participation/#low-or-non-code) - a big chunk of what surrounds good open source software has nothing to do with code!

<!-- more -->

The first event took place on the 1st of October 2024 in the Chemistry Building, in the South Kensington Campus. Most of the attendees were there in person, but a few also joined online. We tried together to work in groups when dealing with the same piece of software, but we were so much in the flow, that we forgot and ended up hacking intensely with our own thoughts. Before we realised, it was already lunch time and then the wrap-up session.

![In person attendees _in the flow_.](images/hacktoberfest24/attendees_day1.jpg){: .no-caption style="display:block;margin:auto;width:69%" }

The second event, on the 23rd of October, took place at the Seminar and Learning Centre (SALC-10), with several participants in person related to on-going projects of the RSE Team. On this occasion, we had pizza for lunch, because what a better companion to coding than pizza?

## Projects

The following projects were pitched at the start of the event and chosen by the attendees to work on:

### Clockify TUI – Alex Dewar​

[Clockify](https://clockify.me/) is a free time tracker and timesheet app, which can be accessed via the web or graphical apps for various platforms. We use it within the RSE team to track the time spent on different projects. [Clockify TUI](https://github.com/alexdewar/clockify-tui/) is a project which aims to provide a simple interactive terminal app to provide basic functionality such as starting/stopping the timer and viewing the most recent time entries. It will do this with the help of [a Python package](https://pypi.org/project/clockify-api-client/) which provides an interface to the [Clockify REST API](https://docs.clockify.me/). The terminal UI will be built using the cross-platform [`blessed`](https://pypi.org/project/blessed/) library.

As the project is still in very early development, the goals for Hacktoberfest were to produce a minimal working prototype, i.e. something which can send/retrieve basic data to the Clockify API and display it within the interactive terminal UI.

### WSIMOD – Barnaby Dobson​

The terrestrial water cycle is a highly interconnected system where the movement of water is affected by physical and human processes. Thus, environmental models may become inaccurate if they do not provide a complete picture of the water cycle, missing out on unexpected opportunities and omitting impacts that arise from complex interactions.

[WSIMOD](https://imperialcollegelondon.github.io/wsi/) is a modelling framework written in Python to integrate these different processes. It provides a message passing interface to enable different subsystem models to communicate water flux and water quality information between one other, as well as self-contained representations of the key parts of the water cycle (rivers, reservoirs, urban and rural hydrological catchments, treatment plants, and pipe networks).

The main work done for Hacktoberfest was related to [refactoring some bits of code](https://github.com/ImperialCollegeLondon/wsi/pull/106) to improve its modularity.

### SWMManywhere – Barnaby Dobson​

[SWMManywhere](https://imperialcollegelondon.github.io/SWMManywhere/) is a tool to synthesise urban drainage network models (UDMs) using publicly available data such as street networks, digital elevation models (DEMs), and building footprints, across the globe. It also provides tools for generating SWMM input files and performing simulations for the synthesised UDMs.

One issue was tackled during the event by our colleague Tom Bland, [setting up Codecov in the repo](https://github.com/ImperialCollegeLondon/SWMManywhere/pull/304), but it brought up a lot of trouble due to a bug in Codecov, apparently. The lessons learnt have been used for other projects, so it was still time well spent!

Another job was tackled by our colleague James Turner, where the map data downloader was enhanced to [only download a box-bounded subset of buildings data](https://github.com/ImperialCollegeLondon/SWMManywhere/pull/334), rather than all data, significantly reducing the final download size. This involved interfacing with the [Overture Maps Foundation](https://overturemaps.org/)'s public API to filter and download the map data.

### PyCSVY – Diego Alonso Alvarez​

[CSVY](https://github.com/ImperialCollegeLondon/pycsvy) is a small Python package to handle CSV files in which the metadata in the header
is formatted in YAML. It supports reading/writing tabular data contained in numpy
arrays, pandas DataFrames, and nested lists, as well as metadata using a standard python
dictionary. Ultimately, it aims to incorporate information about the [CSV
dialect](https://specs.frictionlessdata.io/csv-dialect/) used and a [Table
Schema](https://specs.frictionlessdata.io/table-schema/) specifying the contents of each
column to aid the reading and interpretation of the data.

There was a lot of activity in this project, which included:

- [Adding support for polars Dataframes](https://github.com/ImperialCollegeLondon/pycsvy/pull/94)
- Give the [first steps to support CSV Dialects](https://github.com/ImperialCollegeLondon/pycsvy/pull/93)
- [Modernising the linters and code formatters](https://github.com/ImperialCollegeLondon/pycsvy/pull/95), using `ruff`
- Improving the [continuous integration workflows](https://github.com/ImperialCollegeLondon/pycsvy/pull/95) and [the use of Dependabot](https://github.com/ImperialCollegeLondon/pycsvy/pull/89)
- [Setting UTF-8 as default encoding when reading and writing](https://github.com/ImperialCollegeLondon/pycsvy/pull/124)
- [A Validator's registry](https://github.com/ImperialCollegeLondon/pycsvy/pull/123) was also added, setting the basis for data validation in the future.

Further work was started during Hacktoberfest and will hopefully see the light soon!

### repositoryr – Saranjeet Kaur Bhogal

[repositoryr](https://imperialcollegelondon.github.io/repositoryr/) is a step by step guide for creating an R package repository. The corresponding [repository](https://github.com/ImperialCollegeLondon/repositoryr) itself is structured as an R package that is installable from GitHub. It showcases how `devtools` can be used in RStudio for package development. It also provides steps to create a website for an R package using `pkgdown`.

The activities completed in this project as a part of Hacktoberfest include:

- [Describing the use of `devtools` in package development](https://github.com/ImperialCollegeLondon/repositoryr/pull/5)
- [Adding steps to create a website for the package](https://github.com/ImperialCollegeLondon/repositoryr/pull/6)
​- Included steps to [update the `DESCRIPTION` file](https://github.com/ImperialCollegeLondon/repositoryr/pull/11)
- Steps to [set up `.R` files and unit testing files](https://github.com/ImperialCollegeLondon/repositoryr/pull/12)
- Added a section on [how to build the README](https://github.com/ImperialCollegeLondon/repositoryr/pull/13)

### RSE Competencies Toolkit – Adrian D'Alessandro​

[The RSE Competencies Toolkit](https://rsetoolkit.github.io/rse-competencies-toolkit/) is a community resource to support RSEs (Research Software Engineers) in tracking and managing their professional development. It is in the very early days of development for the interactive web app. This hack day was used to kick start the development of the tool.

The activities are captured in [this umbrella issue on the Django project setup](https://github.com/AdrianDAlessandro/rse-competencies-toolkit-webapp/issues/6).

## Summary

The events were a nice opportunity to dive into other projects beyond our daily routine, learn how things are done in other places, as well as tools and techniques. Attendance was not brilliant and it would have been nice to be a bigger crowd but, nevertheless, it was a good experience. Now, the challenge for everyone is to keep going and finish up what they started!
9 changes: 5 additions & 4 deletions docs/posts/20241031_design_patterns_2024.md
Original file line number Diff line number Diff line change
@@ -1,15 +1,16 @@
---
date: 2024-10-31
author:
authors:
- HarmonicReflux
categories:
- Technology
tags:
- Design Patterns / Gang of Four
- Object Oriented Programming (OOP) / Functional Programming
- Design Patterns
- Object Oriented Programming (OOP)
- Functional Programming
- Python
- Option pricing
- Software Engineering principles
- Software Engineering
---

# An example of a software design pattern for European option pricing using UML diagrams
Expand Down
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/posts/images/hacktoberfest24/logo.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
3 changes: 3 additions & 0 deletions mlc_config.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,9 @@
},
{
"pattern": "^https?://sqlitebrowser.org/.*"
},
{
"pattern": "^https?://clockify.me/.*"
}
],
"timeout": "180s",
Expand Down

0 comments on commit 207ba57

Please sign in to comment.