2024 Liam Donaher portfolio

Page 1

LIAM DONAHER 2024 portfolio

(978)-846-2834

LIAM DONAHER

SKILLS

JavaScript | TypeScript | HTML | CSS | Sass | React | Node | Express | Webpack | PostgreSQL | MongoDB/NoSQL

EXPERIENCE

Software Engineering | Reactime (contributor to open source dev tool maintained by OSLabs)

dec 2023 - jan 2024

- Used Webpack’s hot module reloading in watch mode when testing our chrome extension to near-instantly refresh and review updates

- Controlled theme with Materials UI and Sass to allow for global color variables and an organized nested approach to styling

- Utilized React Fiber to reliably inject our own chrome extension’s script into any react site and locally save React state data

- Used VisX and D3 as libraries for their ready-made code to build node trees. Refactored existing code to not have overlapping nodes

- Developed modules in TypeScript to allow for type-checking before runtime and ensure variables and functions had expected return values

Landscape Architecture | Stimson Studio

- Used AutoCAD, Rhino, and Adobe Creative Suite to design University campus masterplan projects throughout the Northeast

- Built custom scripts in the language Grasshopper which use parametric inputs to assist in building complex generative 3d models

SOFTWARE ENGINEERING PROJECTS

Leebo.io (website for visualizing overlaid GPS routes recorded with excercise-tracking app Strava)

- Created a Single Page App centered around a Mapbox component that can display GPS routes fetched from the Strava API

2019 - 2023

mar 2024

- Currently functioning as coding sandbox to experiment with UI/UX features like animated routes and displaying other kinds of GeoJSON data

Turn Off My Lamp (website that allows users to remotely control my smart lamp)

- Utilized Firebase due to serverless architecture and ability to create a live snapshot link between each client and the Firestore database

- Accessed my smart lamp’s API through a proxy server that intercepts traffic from my phone’s smart home app

GigaWattMap (website for comparing visualized renewable energy generation data between states)

- Used React to create a single-page app and allow for component-based html page building and easy debugging

- Used Redux to manage a centralized shared state of all components and to minimize unnecessary re-renders of page elements

- Downloaded a public database to our server to serve as a locally-accessible SQL database to avoid asynchronous calls to an external API

feb 2024

dec 2023

BrewMaster (website for searching for nearby breweries) jan 2024

- Used Authentication to securely save users and passwords and provide custom site components based on previous saved states

- Followed a TDD strategy with Jest to ensure accurate, type-sensitive expected outputs for functions and asynchronous calls to databases and APIs

TALKS / PUBLICATIONS

Reactime - medium article covering our teams open source work dec 2023 - jan 2024

Tech Talk - 15 minute deep dive video presentation about network protocols jan 2024

EDUCATION

State University of New York College of Environmental Science and Forestry - Bachelors of Landscape Architecture may 2019

Codesmith Full-Stack Software Engineering Immersive oct 2023 - jan 2024

INTERESTS

Ceramics - I use the visual language Grasshopper to create scripts that produce custom 3d geometry that I can 3d print and then cast in clay.

Undergraduate Thesis - created a 50-page book summarizing my studies in Copenhagen, Denmark. Would love to go back one day.

Biomimicry Global Design Challenge finalist - built a prototype product for algal bloom phytoremediation. Invited to startup incubator in Panama.

p.3
| lia m.donaher@gmail.com
| linkedin.com/in/liamdonaher
github.com/leebology

Web Dev Projects

turnoffmylamp

I have a lamp in my bedroom that is plugged into a smart outlet, and it can be controlled remotely by anyone who visits the website (currently hosted at turnoffmylamp.com). Users can leave their name and it will record it alongside the current time and whether they turned the lamp on or off.

Challenges

- Security: I had to be careful to not allow users to directly access my smart home account, so any interaction with the actual smart home API were behind a server I set up to manage those requests. Allowing text input also runs the risk of SQL injection into the database where I store the log of names, and I had to take measures to secure that database.

- Hosting: setting up a cloud server with Amazon AWS to deliver web pages to client browsers was an interesting challenge.

leebo.io

Over the last 5 years or so, I have been recording every walk, run, and bike ride on a GPS tracking app. The sole purpose of this was to eventually make a fun web app that visualized all these routes compiled together into a kind of heatmap. This is currently hosted at leebo.io and is also serving as my personal website as I work on it!

Challenges

- Interfacing: Mapbox was a new library I haven't worked with before, and finding ways to take a response from the Strava API and display it properly on a map was a creative excercise.

- SPA: Since the site was based around a single map, it needed to be a Single Page App and not require re-rendering the page everytime a link was clicked. Keeping data states and visual components organized and seamless in their transitions was very important for the UI experience.

p.4
2024
[1] Previous version's color scheme (left) and our new theme (right). Organization of styling behind the scenes was completed overhauled as well. (below) (right)
p.5 well.

Open Source Project - Reactime

In collaboration with Open Source Labs, I worked alongside a team of 3 in contributing to the open source product Reactime. It is a developer tool that brings the functionality of Redux devtools to React projects - being able to jump forwards and backwards in time to see how the app state changes between any renders.

Our main accomplishments were:

1. Reorganizing the node diagram tab - making the structure of the react project a lot more legible.

2. Restructured stlying of Reactime - color pallete was changed, but the behind-the-scenes organization of theme colors was completely overhauled to put all styling parameters in the same place.

3. Updated Dependecies - downsized from 124 to just 70 dependency packages, and updated the remaining ones to current versions.

For more information, we published a medium article about our work with Reactime: https://medium.com/@liam.donaher/reactimerenovation-updates-coming-in-version-23-037b2ef2a2771

The Reactime extension on the Chrome Web Store: https://chromewebstore.google.com/detail/reactime/ cgibknllccemdnfhfpmjhffpjfeidjga?pli=1

The Github repo: https://github.com/open-source-labs/Reactime

p.6
2024
[1] node diagam (before [2] Previous version's
p.7
(before - left) was awful. Our improved system (after - right) spaced out components and allowed for scrolling around to view full structure version's color scheme (left) and our new theme (right). Organization of styling behind the scenes was completed overhauled as well.

Copenhagen undergraduate thesis project

The landscape architecture program at SUNY-ESF was unique, in that we had a 5th year where an off-campus study was required. I picked enclosure as a topic of study, and chose to go to Copenhagen. This was not affiliated with any Danish university, so we wouldn't be taking any classes. It was purely self-directed, which really allowed us to immerse ourselves in the city and learn how other countries and cultures live (and hopefully apply those lessons to the landscapes we design back in the US). It was the most influential 3 months of my life.

Intimate Enclosure

- A smaller enclosed space

- 5 to 10m wide

- comfortably fits 1 to 3 people

The main purpose of this type of enclosure is security

A person goes here to be separated from the greater landscape, and to be protected from the elements or from the eyes of others. This space fosters a stronger relationship with oneself

Social Enclosure

- A medium sized enclosed space

- 10 to 35m wide

- comfortably fits 10-20 people

The main purpose of this type of enclosure is theater

A person goes here to talk to friends and to be around strangers. Notably less enclosed than an Intimate Enclosure, but allows for greater observation of one's surroundings by sacrificing some security. This space fosters a stronger relationship with others.

2019

read the full book online:

.com/liamdonaher/docs/issuu

I chose to present my thesis in the form of a book. It breaks down what I believe to be the 3 types of enclosed space (see diagrams below), goes into detail about the main elements I thought contributed to a good enclosure, and examines a few case studies of parks in Copenhagen that exemplified those elements.

Monumental Enclosure

- A large space

- 35 to 100m wide

- fits hundreds of people

The main purpose of this type of enclosure is awe

A person goes to this space with the intent of enjoying the landscape for itself, as opposed to just a backdrop for some other activity. This space fosters a stronger relationship with the landscape itself.

p.8
p.9
[1] GPS map of all the places I went during the 3 months I studied in Copenhagen. I downloaded the gpx data from Strava and used illustrator to overlay it onto a street map.
p.10
project - Osterville,
Residential
MA
2020
[1] Illustrative masterplan of property. I wasn't involved in site design, but created all of the graphics.

Newport, RI residence

We had a great client for this project, who really liked the 3d digital renderings. This allowed us to produce an entire 60 second video, instead of just still images. It was a great multimedia project. Watch at the QR code here:

https://youtu.be/ZyU3XBDYaTI

p.11
[1] rendered perspective of residence looking over warm season grass meadow
2021
[2] rendered perspective looking over infinity-edged pool terrace and to the bay beyond

Hardberger Park Landbridge - San Antonio, TX

I was part of a team that designed a landbridge over a highway in Texas. Both people and animals can cross the landbridge, so we built a pair of blinds to screen visitors and allow them to see the wildlife without being seen themselves. They are made of weathering steel and perforated with a waterjet-cutter in a pattern designed by a local artist.

I was given the opportunity to design how the blind was constructed, and through the design and manufacturing process, I communicated with the local artists, waterjet cutter, steel manufacturer, and contractor to have all of the parts built and shipped to the site.

p.12
[5] Details of attachment brackets between the steel frame and roof panels. Almost every part of the blind was custom made.
2020
[1-4] 3d rendered views and site photo of final field welding.
ROOF PANEL B ROOF PANEL D ROOF PANEL F ROOFPANEL A ROOFPANELC ROOF PANEL E 4"x4" STEEL FRAME (BY OTHERS) 3 WEATHERING STEEL ROOF PANEL FRAME A FRAME D ROOF BRACKET A, SEE DTL 12/L300 ROOF BRACKET B, SEE DTL 11/L300 ROOF BRACKET F, SEE DTL 7/L300 ROOF BRACKET E, SEE DTL 8/L300 L300 4 L300 6 L300 FRAME B FRAME C ROOF BRACKET C, SEE DTL 10/L300 ROOF BRACKET D, SEE DTL 9/L300 5 L300 3 L300 3'-6" 4'-4" 6'-0" 4"x4" STEEL FRAME " WEATHERING STEEL ROOF PANEL WELD ROOF PANEL TO BRACKET 23 32 ROOF PANEL B ROOFPANELC WELD BRACKET TO FRAME " BRACKET (ASTM A588) 100.71° 86.73° SECTION 1" 16 2@12 SECTION 4"x4" STEEL FRAME " WEATHERING STEEL ROOF PANEL WELD ROOF PANEL TO BRACKET " BRACKET (ASTM A588) ROOFPANELE ROOF PANEL D 16 81.39° 71.35° WELD BRACKET TO FRAME 1",TYP. 16" 2@12 4"x4" STEEL FRAME " SS BRACKET WELD ROOF PANEL TO BRACKET VARIES 86.75° ROOF PANEL B ROOFPANELA WELD BRACKET TO FRAME 1", TYP. " WEATHERING STEEL ROOF PANEL 16 2@12 SECTION 4"x4" STEEL FRAME BRACKET (ASTM A588) WELD ROOF PANEL TO BRACKET ROOFPANELF 16 80.24° WELD BRACKET TO FRAME 1",TYP. WEATHERING STEEL ROOF PANEL SECTION 4"x4" STEEL FRAME " WEATHERING STEEL ROOF PANEL WELD ROOF PANEL TO BRACKET 79.61° ROOFPANELA WELD BRACKET TO FRAME 1",TYP. SECTION " BRACKET (ASTM A588) 1 8 AXONOMETRIC 4 BRACKET (ASTM A588) WELD BRACKET TO FRAME 4"x4" STEEL FRAME SEE DTL 7/L200 STEEL FRAME 4 BRACKET (ASTM A588) ROOF PANEL SECTION WELD BRACKET TO FRAME 2 16 23 32 2" 2 23 32 4 BRACKET (ASTM A588) WELD BRACKET TO FRAME 4"x4" STEEL FRAME AXONOMETRIC SEE DTL 6/L200 2 " 16 AXONOMETRIC BRACKET (ASTM A588) WELD BRACKET TO FRAME 4"x4" STEEL FRAME SEE DTL 5/L200 2 13 16 AXONOMETRIC " BRACKET (ASTM A588) WELD BRACKET TO FRAME 4"x4" STEEL FRAME SEE DTL 4/L200 AXONOMETRIC 2 23 32 2 16 2 13 32 2 2 1'-3" 4"x4" STEEL FRAME BRACKET (ASTM A588) WELD ROOF PANEL TO BRACKET ROOFPANELE VARIES 80.24° FIELD WELD BRACKET TO FRAME 1",TYP. WEATHERING STEEL ROOF PANEL SECTION ROOF PANEL B ROOF PANEL A SHOP WELD 165.2° ROOF PANEL D ROOF PANEL C 177.6° SHOP WELD ROOF PANEL ROOF PANEL E SHOP WELD 170.8° AXONOMETRIC 2 11 16 2 15 3 8 3 32 1'-8 96.2° 15 32 11 16 4"x4" STEEL FRAME 2" BRACKET (ASTM A588) WELD BRACKET TO FRAME ROOF PANEL ROOF PANEL B ROOF PANELC 172.3° SHOP WELD ROOFPANELD ROOFPANELE 153.6° 96.2° 3 11 32 4"x4" STEEL FRAME 2" " BRACKET (ASTM A588) WELD BRACKET TO FRAME SECTION ROOF PANEL STEEL FRAME 4 BRACKET (ASTM A588) ROOF PANEL SECTION WELD BRACKET TO FRAME 2 2 13 32 2" 8 7 5 4 3 2 ROOF BRACKET C 6" = 1'-0" 10 ROOF BRACKET D 6" 1'-0" 9 ROOF BRACKET A 6" = 1'-0" 12 ROOF PLAN 1/2" = 1'-0" 1 ROOF BRACKET E 6" = 1'-0" 8 ROOF BRACKET B 6" 1'-0" 11 ROOF BRACKET F 6" = 1'-0" 7 ROOF SECTION PANELS A-B 6" = 1'-0" 6 ROOF SECTION PANELS C-D 6" = 1'-0" 4 ROOF SECTION PANELS E-F 6" = 1'-0" 2 ROOF SECTION PANELS B-C 6" = 1'-0" 5 ROOF SECTION PANELS D-E 6" = 1'-0" 3 GAP VARIES SECTION

Perforations in the roof were studied to increase airflow and decrease the structure's weight. Inspired by the surrounding landscape, the following 3 patterns were considered:

SNAKESKIN

SUNFLOWER

CRACKED EARTH

p.13
[1] image bitmap is mapped to hexagonal grid where perforations expand in size based on black-value of the pixel. [2] intersecting spirals with a rounded voronoi shape at each intersection, imitating the golden spiral found in flower inflorescence. [3] voronoi pattern, with each shape scaled down based on its proximity to the edge of the roof panel.

Northeastern University EXP Building - Boston, MA

This building is one of the newest projects on Northeastern's campus. On the 8th floor, a large outdoor deck is proposed, with enough space to support cocktail parties, and enough vegetation to feel like you're enclosed in an alpine garden.

p.14
[2] Illustrative plan of the 8th floor roof deck. [1] Framing plan showing beam and joist layout.
2020
[3] Illustrative section of wood decking against a raised planter. White geofoam used to mound soil without adding additional weight. Trees placed above structural building pillars and alpine species chosen for adaptation to windy, exposed conditions.

Providence Riverwalk Masterplan- Providence, RI

Under Providence's Unified Vision Plan, the central city plaza (Kennedy Square) and the historic riverwalk area are being redesigned to become a better functioning and connected public space. The new masterplan involves building walkways on stilts over the old riverwalk to avoid flooding during future storm events and allowing accessible travel along the entire waterfront. I spent a week building the 3d model for this huge urban project and also created these illustrative section drawings.

p.15
[1,2,3] Illustrative
of
2021
sections
proposed riverwalk structure. Existing profile is shown in a dashed line below grade.

Lasercut topography study models

p.16
2019
[1,2,3] Topography models made of lasercut paperboard, 3d printed black ABS plastic, and laser cut clear acrylic. Each one is 1" x 3" and are all modeled from the same topography (exaggerated vertically).

Lasercut coaster set

p.17
2019
[1,2] Lasercut coasters I built at a fabrication lab. They all puzzle together into a 3x3 grid showing a map of my hometown. 2 layers of plywood, with the top layer cut out and replaced with a rounded square of MDF. Sealed and waterproofed. Made as a Mother's Day gift.

DIY plant light

Baffle came with original light housing.

3d printed mount to friction fit between heat sink and baffle.

10W triple LED star and lens.

Cheap heat sink from Ebay. Found a 3d model online with the exact same dimensions. LEDs bolted to heat sink with thermal paste.

Power supply - biggest one I could fit in the housing, in case I wanted to add more LEDs in the future.

3d printed lower mount to hold power supply and LED driver board.

LED driver board with boost + buck functions for precise power draw.

On/Off switch accessed through backside of housing.

Track light housing purchased from facebook marketplace.

Fabric-wrapped power cable feeds through original track light mount to allowed the light to hang from ceiling and also point at an angle.

p.18
2022

Every software developer eventually has to go through their microcontroller / raspberry pi era, and I wasn't totally happy with my current plant lights anyway, so I thought it'd fun to make my own. The following are some goals of what I wanted this light to be:

1. Bright enough to grow healthy plants

2. Directional, so I won't be blinded

3. Cheaper than a store-bought light

4. Dimmable

5. Nice looking

Unfortunately, I only accomplished the last goal. This was the first time I ever ventured into the field of hobby electronics, so it also took a little longer than expected to finally finish, but I had a great time building it, and I learned a lot in the process.

p.19
[2] Plant light current location in the corner of my bedroom [1] Plant light teardown showing all of the components.
p.20
Photography
[1] Alpine view of a hike in Olympic National Park, WA [2] Plant tendril saw in the Panama Rainforest [2] Bow Market sign in Somerville MA
retreat [5] Light [6] Birb
[4] Haystack Mountain School of Crafts in Maine at work
p.21
Light reflection of a light ring sculpture in Houston, TX
Birb
seen in Olympic National Park. Tried to eat my crackers. [7] Roses in the front yard of a house in Manchester-by-the-Sea, MA [8] Rock stacks jutting out of the ocean at Rialto Beach, WA
2024
LIAM DONAHER
portfolio

Turn static files into dynamic content formats.

Create a flipbook
Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.