Git Product home page Git Product logo

Hi there 👋

  • 🔭 I’m currently working on: Hobu development
  • 🌱 I’m currently learning/using: TypeScript, React, NodeJS & NPM package management
  • 🔓 Open Source projects: COPC Validator
  • 📫 How to reach me: [email protected]
  • 🐘 Mastodon: @[email protected]
  • 🌐 Personal site: cameronwoodbury.com
  • 😄 Pronouns: he/him/his
  • ⚡ Fun fact: Vegetarian and practicing Buddhist
  • 🎮 Favorite hobbies: Gaming and camping
  • 🏢 Current job: Junior Geospacial Software Engineer at Hobu, Inc.

Cameron Woodbury's Projects

16bitvirtualmachine icon 16bitvirtualmachine

Originally an assignment from my Computer Systems class at Coe College, it's one of the largest individual projects I've worked on.

cesium-martini icon cesium-martini

On-the-fly meshing of raster elevation tiles for the CesiumJS virtual globe

geotiff.js icon geotiff.js

geotiff.js is a small library to parse TIFF files for visualization or analysis. It is written in pure JavaScript, and is usable in both the browser and node.js applications.

lwspp icon lwspp

The Lightweight Subscribe and Publish Protocol (LWSP1.1) We envision a system that allows users to engage in real-time, synchronous chats with any number of users. In this environment, a central server maintains connections and relays messages to the appropriate clients. Multiple independent conversations (i.e. chatrooms) can be maintained by the server simultaneously, but users can only see the messages associated with the chatroom they to which they are currently a member. This protocol uses the Transmission Control Protocol (TCP) on port 2028. The service works as follows: 1. The client initiates a persistent connection to the server by sending a JOIN message. The JOIN message includes two strings: chatRoomName and UserName. The chatRoomName is the name of the chatroom to subscribe to. The username is a string intended to identify the client to other subscribers. a. If the chatRoomName does not exist on this server, the server will establish a new room and respond with the message “OK \t” + chatRoomName +“ created” b. If the client attempts to join a chatroom with a UserName that is not unique to that chatRoom, the server will respond with a message “Denied \t username not unique”. The server will then terminate the connection. c. If the chatRoomName already exists and the username is unique, the server will respond with the message: “OK \t joined ”+chatRoomName. d. The server will associate the username and chatroom with the client’s IP address 2. Using a connection established by a JOIN message, the client can terminate the session using the EXIT message. The EXIT message has no additional parameters. a. Upon receiving the EXIT command, the server will publish the message to all members of the chatroom: “LEFT” “\t”+ username b. The server will then remove this client from a chatroom and close the connection. c. If there are no remaining clients in a room, it will be closed permanently. 3. The client can create a transient connection to the server using the SEND command. The SEND command is accompanied by a message of no more than 250 ASCII characters. Upon receiving SEND, the server will: a. Use the IP address from the client to confirm that the client is registered with a chatroom. b. If the client is registered, the server will relay the message string to all members of that chatroom with the format: “SENT” +”\t”+ username +”\t”+ message and then end the connection. c. If the server is unable to confirm this registration, it will reply: “REJECTED: No registered chatroom” and end the connection. d. If the server is unable to send a message to a registered member of the chatroom, it will behave as if the member sent an EXIT command. 4. The client can request to know the members of their chatroom by sending the WHO message. This creates a transient connection to the server and has no additional parameters. a. Upon receiving the WHO message, the server will use the IP address from the client to confirm that the client is registered with a chatroom. b. After confirm that the client is a member of a chatroom. the server will reply with a list of the usernames that are in the chatroom with the client. The response will take the format: “MEMBERS\t” + [csv list of usernames] c. If the server is unable to confirm membership, it will reply: “REJECTED: No registered chatroom” d. The server will end the connection after a reply has been sent. 5. A client can establish a transient connection to request a list of active chatrooms by sending a LIST message to the server. The LIST message has no additional parameters a. Upon receiving a LIST message, the server will respond with the message: “ROOMS/t”+ [csv list of rooms] b. After sending the reply, the server will terminate the connection. Any messages received that are not in compliance with this protocol should result in a response from the Server: “HUH?”. 1. If the deviant message occurs while in an active session (i.e. after the client has JOINED, but before they have EXITED), the connection should be maintained 2. If the deviant message occurs outside of an active session, the server should terminate the connection after sending the status message.

martini icon martini

A JavaScript library for real-time RTIN terrain mesh generation. Forked for use with cesium-martini

resium icon resium

React components for 🌏 Cesium

wabbit-ts icon wabbit-ts

Compiler for Wabbit to LLVM, created for David Beazley's Write a Compiler course (March 2024)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.