22 posts tagged with "progress"

View All Tags

Week 18 Frontend Progress

Jeff Taylor-Chang

Jeff Taylor-Chang

Frontend Dev for Actually Colab

Frontend#

  • Darkened the user colors to make them more readable
  • Display a connecting modal when reconnecting to the socket client
  • Show a popover list of users when more than 3 users are active to conserve editor header space
  • Added user avatars and names to the kernel selector to make it more obvious who users are
  • Simplified the UI by reducing clutter in the left sidebar and moving the kernel and profile to the header

Kernel Selector

Kernel Modal

Week 17 Frontend Progress

Jeff Taylor-Chang

Jeff Taylor-Chang

Frontend Dev for Actually Colab

Frontend#

  • Rewrote the editor header to improve performance
  • Improved the UI for the kernel selector to make it more intuitive and obvious to the user when they are viewing another user's outputs
  • Replaced Ace with Monaco as the underlying code editor used for cells
  • Added code completions powered by the Jupyter Kernel
  • Send running status to collaborators so that you can see when a cell is running as a viewer
  • Released a new version of desktop-launcher that allows the token to be generated on demand and persists across sessions
  • Remember the kernel token on the frontend to easily reconnect to the kernel across sessions
  • Added status indicators and separated active and inactive users in the kernel selector
  • Added a view source / render markdown option to the cell action menu for markdown cells
  • Added a run cell option to the cell action menu for python cells
  • Auto reconnect to the editor socket client when connection times-out

Kernel Selector

Code Completions

Week 16 Frontend Progress

Jeff Taylor-Chang

Jeff Taylor-Chang

Frontend Dev for Actually Colab

Frontend#

  • Redesigned the kernel panel to be more intuitive and performant
  • Fixed bug where the editor would continuously poll the kernel even if auto connect was disabled
  • Added a dropdown menu to each cell for advanced actions
  • Remember the user's auto connect settings across sessions

Kernel Panel

Week 15 Frontend Progress

Jeff Taylor-Chang

Jeff Taylor-Chang

Frontend Dev for Actually Colab

Frontend#

  • Display error message notifications
  • Show the collaborator's name on their cursor when they are typing
  • Auto render markdown on unlock
  • Move code execution queue to the ReduxKernel middleware instead of the useKernel hook
  • Deterministically choose a color for each user for their cursor, cell borders, and avatar borders
  • Use the jupyter notebook server instead of jupyter kernelgateway in the desktop-launcher
  • Use the @jupyterlab/services package instead of the deprecated jupyter-js-services package

Cursor labels

  • Released v0.2.0 of @actually-colab/desktop-launcher with automatic cryptographically secure random tokens and the jupyter notebook server under the hood

Desktop launcher

Organizational#

  • Got accepted to ACM and our funding request was approved to provide access to the platform until December 2021

Week 14 Frontend Progress

Jeff Taylor-Chang

Jeff Taylor-Chang

Frontend Dev for Actually Colab

Frontend#

  • Remember recently used gateway URIs so that the user can select them automatically from a dropdown
  • Used conditional overflow-anchors to prevent scrolling from DOM updates when multiple users are typing (before, your cell could move down if someone was typing in a cell above you)
  • Major performance improvements as large as 10x faster UI updates from typing, locking, and unlocking
  • Much faster chat experience especially when there is a large number of messages

Organizational#

Week 13 Frontend Progress

Jeff Taylor-Chang

Jeff Taylor-Chang

Frontend Dev for Actually Colab

Frontend#

  • Refresh notebooks and workshops when a workshop is released
  • Automatically open a created notebook or workshop
  • Auto scroll to the selected cell
  • Added Sentry for error monitoring in production

Website#

  • Built a completely new website
  • Added a waitlist form to the website

New website

Organizational#

  • Got accepted to Sentry's Open Source Sponsored plan
  • Got accepted to Netlify's Open Source Sponsored plan

Week 11 Frontend Progress

Jeff Taylor-Chang

Jeff Taylor-Chang

Frontend Dev for Actually Colab

Frontend#

  • Built the collaborators panel so users can now share their notebooks and view who has access
  • Profile images are now supported for user avatars
  • Stopped hardcoding lock owners, replaced with actual live data
  • Render profile pictures from Google accounts
  • Allow users to view outputs live from other users on the notebook
  • Prevent users from editing or sharing a notebook when they have read only access
  • Render cursor positions of active users
  • Send cell contents on unlock to fix race condition
  • Track connection status to the client to prevent sending socket messages until client is ready
  • Sort notebooks by name or last modified
  • Filter notebooks using search field
  • Built workshops that have instructors and attendees
  • Rebuilt redux store to use immutable maps instead of lists
  • Use row/column to identify cursor position instead of converting to index
  • Added support for deleting cells from a notebook
  • Users can upload existing ipynb files to create notebooks or workshops
  • Implemented a chat feature to allow users to message each other
  • View workshop attendee notebooks under the instructor notebook

Week 10 Frontend Progress

Jeff Taylor-Chang

Jeff Taylor-Chang

Frontend Dev for Actually Colab

Frontend#

  • Logs are now displayed in an easier to read timeline format
  • Replaced the auto connect button with a toggle to be more intuitive
  • Users can now download their projects as .ipynb, .py, and .md

Week 8 Backend Progress

Bailey Tincher

Bailey Tincher

Backend Dev for Actually Colab

Backend#

  • Fixed issues with the authorizer policy that didn't properly cache per function
  • Deployed a demo server to AWS
  • Added support for changing a cell's language

Week 8 Frontend Progress

Jeff Taylor-Chang

Jeff Taylor-Chang

Frontend Dev for Actually Colab

Frontend#

  • Created a Redux middleware to support the @actually-colab/editor socket client
  • Moved the Kernel to a Redux middleware
  • Auto select the example notebook for first time users, auto open the most recently opened notebook if possible
  • Users can make edits to cells as changes are debounced in the @actually-colab/editor client
  • Keep track of execution wall time and render it under a cell
  • Automatically disconnect from the socket and kernel upon closing the window
  • Released the v0.1.0 of @actually-colab/desktop-launcher

Week 7 Backend Progress

Bailey Tincher

Bailey Tincher

Backend Dev for Actually Colab

Backend#

  • Created a client for the websocket endpoints
  • Setup Google OAuth to allow clients to sign in
  • Added an endpoint to refresh session tokens
  • Added an event emitter to properly type events from the socket server
  • Added support for opening notebooks and getting the contents
  • Added support for locking and unlocking cells and notifying clients
  • Added support for editing cell contents and notifying clients

Week 7 Frontend Progress

Jeff Taylor-Chang

Jeff Taylor-Chang

Frontend Dev for Actually Colab

Frontend#

  • Separated the notion of a "selected" cell from a "locked" cell. This allows the run button to be able to advance without locks
  • Added the ability to queue cell executions that way you can start a bunch of jobs and walk away
  • Allowed the user to interrupt a cell execution. If a cell gets carried away or you accidentally start a long process, you can stop at any time
  • Added the ability to disconnect from a kernel as well as disable auto connecting
  • Users can now export their project to the ipynb format which could be used in jupyter, Google Colab, turned in as a deliverable, etc.
  • Integrated the get/create notebook REST endpoints from @actually-colab/editor so users can create and see a list of notebooks
  • Converted the cells and outputs to nested Immutable maps and lists to improve performance and avoid mutating the redux store

Queued cells

Week 6 Frontend Progress

Jeff Taylor-Chang

Jeff Taylor-Chang

Frontend Dev for Actually Colab

Frontend#

  • Integrated @nteract's Open Source outputs component to replace my manual version. This added support for more output types at a slight trade off of speed and bundle size. The main benefit is a big boost to maintainability, don't need to reinvent the wheel for rendering complex outputs
  • Implemented the kernel panel with logs of when various actions occurred
  • Keep trying to connect to the kernel periodically in case the user doesn't start it till after
  • Detect a kernel disconnect and connect to a new kernel if it dies
  • Added support for LaTeX in markdown
  • Added a help panel that explains how to setup the kernel as well as common issues for displaying output with things like matplotlib and pandas

Kernel and Help Panels

Week 5 Frontend Progress

Jeff Taylor-Chang

Jeff Taylor-Chang

Frontend Dev for Actually Colab

Frontend#

  • Started separating the electron application into a web hosted frontend and a smaller native kernel manager. This decreases our native platform dependency because our core client is available via a browser regardless of platform. This even allows it to be run on an iPad.
  • Moved authentication directly into the client since redirects are no longer necessary with a web app
  • Added support for markdown cells with syntax highlighting and rendering as html
  • Added support for rich html outputs like pandas DataFrames
  • Stripped down the newly forked desktop-launcher into a minimal kernel process manager
  • Secured the Kernel Gateway by automatically setting the Access-Control-Allow-Origin header depending on if it is dev or prod

New Desktop Launcher

New Web Editor

Week 4 Backend Progress

Bailey Tincher

Bailey Tincher

Backend Dev for Actually Colab

Backend#

  • Created the client for all CRUD endpoints that can now be used by the frontend
  • Refactor Notebook and User tables from DynamoDB to Postgres
  • Reconfigured the environment to be ran and tested locally with ease
  • Created Lambda authorizer functions and configured authentication for local development
  • Enabled the socket connect/disconnect endpoints to track active user sessions
  • Began architecting the websocket endpoints End-to-End

Misc#

Week 4 Frontend Progress

Jeff Taylor-Chang

Jeff Taylor-Chang

Frontend Dev for Actually Colab

Frontend#

  • Implemented the auth redirects with our website
  • Added support for cell locking, creating new cells, deleting cells, and editing them locally
  • Built output component to support text, base64 images (matplotlib outputs) and renders ANSI encoded errors with tracebacks
  • Incorporated the kernel gateway into a hidden renderer that communicates via IPC and is automatically managed by the main process

Login page on website Desktop outputs

Misc#

Week 3 Progress

Bailey Tincher

Bailey Tincher

Backend Dev for Actually Colab

Backend#

An overview of the demo goals was put together here

  • Fleshed out the development environment
  • Configured DynamoDB resources in the Serverless config
  • Added connect/disconnect entrypoints for the socket server
  • Created a few CRUD endpoints for interacting with notebook configs

Frontend#

Misc#

  • Created this docs site and deployed with Netlify
  • Acquired the domains actuallcolab.org and actuallycolab.com

Week 2 Progress

Jeff Taylor-Chang

Jeff Taylor-Chang

Frontend Dev for Actually Colab

We have started working on the actual implementation. This is what we have so far for the desktop application, most of the buttons don't do anything yet and hold placeholder content

Week 1 Progress

Bailey Tincher

Bailey Tincher

Backend Dev for Actually Colab

We created a repo here https://github.com/actually-colab not much interesting yet, but @jtaylorchang got a proof of concept frontend working that you can write code into and then it will execute against the Jupyter kernel locally. This is a part we thought would be harder but Jeff persevered to get a demo of it working.

Still a ton of work to flesh that out into a fully featured notebook UI though and we haven't started on getting the actual code collaboration part working. Going to write up a doc soon to plan out the features.