diff --git a/www/img/osc-clicker-thumb.webp b/www/img/osc-clicker-thumb.webp new file mode 100644 index 0000000..731893b Binary files /dev/null and b/www/img/osc-clicker-thumb.webp differ diff --git a/www/img/osc-clicker.png b/www/img/osc-clicker.png new file mode 100644 index 0000000..1d1d653 Binary files /dev/null and b/www/img/osc-clicker.png differ diff --git a/www/img/osc-pairing-thumb.webp b/www/img/osc-pairing-thumb.webp new file mode 100644 index 0000000..6e5d498 Binary files /dev/null and b/www/img/osc-pairing-thumb.webp differ diff --git a/www/img/osc-pairing.png b/www/img/osc-pairing.png new file mode 100644 index 0000000..35b97c5 Binary files /dev/null and b/www/img/osc-pairing.png differ diff --git a/www/index.html b/www/index.html index 236ba6b..252104d 100644 --- a/www/index.html +++ b/www/index.html @@ -60,6 +60,58 @@

Projects

+
+

Web Presentation Clicker (2024)

+ Website - Download for Firefox - Download for Chrome - Github +

A browser extension that lets you control your slideshow presentation from your phone, in the simplest way possible.

+
+ More details +

+   Web Presentation Clicker is a browser extension that a fellow classmate and I worked on for the Web Applications course. It allows you to control your Google Slides or Office 365 slideshow presentation in your browser with your phone without having to download an app. The extension displays a QR code when opened, which both acts as a convenient link to the clicker webpage and contains the necessary pairing data. Once scanned, you are presented with two left and right arrow buttons that can be used to control your slideshow. +

+

+   To relay the slide change events to the browser extension, a server is used. The extension opens a websocket connection with the server, and the clicker (currently) sends REST API calls to the server to switch slides. A websocket-based clicker API has been implemented in the server but I have yet to add it to the client. The actual "clicking" of the presentation is done by simulating the arrow keys with javascript in the browser window. +

+

+   The server is written in python and consists of two components. A multiprocess uWSGI application that opens and maintains the websockets and accepts the REST API calls, and a multithreaded "session server" which keeps track of the presentations and routes the "click events" between the multiple uWSGI processes. The two communicate using unix domain socket connections, ensuring minimal overhead. +

+

+   I worked on the server and the extension while my classmate David worked on the landing page and the project reports. You can view our work on the github org. You can even host your own server if you want. +

+
+
+
+ + + +
+
+ + + +
+
+ click image to view in full resolution +
+

PeerCord (2023)

An end-to-end encrypted client/server messaging application.

diff --git a/www/style.css b/www/style.css index 1885f98..2cc3fa2 100644 --- a/www/style.css +++ b/www/style.css @@ -408,6 +408,18 @@ body:has(.project-image > input:checked) { /* full-res images */ +#oscp-fr { + background-image: url(/img/osc-pairing.png); + --width: 1260; + --height: 798; +} + +#oscc-fr { + background-image: url(/img/osc-clicker.png); + --width: 1551; + --height: 3284; +} + #lpcl-fr { background-image: url(/img/peercord-login.png); --width: 2004;