The contents of this wiki page have been moved to a Google Sheet and organized there. Please use it for any future updates.

Action Items:

  • Replicated in Google Sheets for sorting and cleanup
  • Categorize by completed vs. open
  • Group by type or general focus area
  • CLEAN UP
  • Good examples to show, schedule individual groups per round table

A list of potential topics for discussion.

GivenTopicDescriptionProposed byInterested in itDiscussion DateModeratorPriorityNotes
  •  
Documentation and landing pages using sphinx and jekyll
  • Basic description of each one
  • When to use one over the other
  • Examples using Clowder docs and new landing page

2020-01-22 Meeting notes



OpenAPI, too? (see end of list)
  •  
Kubernetes for dummies2020-02-05 Meeting notes


  •  
Ingress Controller on Kube (including API Gateway)
  • Investigate ingress controller technologies
  • Pick best practices and guideline to pick a right technology
  • Possibly pros and cons of each option?




  •  
Single-sign-on implementation on different platform (Kube vs VM cluster, etc) and identity management
  • Keycloak vs CI-Logon
  • OAuth 2, OIDC
  • User (identity) management: NCSA service or not?
2020-04-15 Meeting notes



  •  
Directory of NCSA's Software Expertise
  • Active software projects that could realistically be used on future projects
  • Expertise in 3rd Party Software
  • By department? By people? By software?




  •  
Nest (Visual Analytics' Platform)
  • One platform to transition from Data Science experiments
    to a full web app
  • Lessons learned thus far and open problems





  •  
Upgrading large codebase from python2.7 to 3.6
  • I'm doing this right now (Nest and its projects: Knoweng, Omix, etc). 
  • Also adopted Conda for python and R dependencies
    INSIDE our docker containers.
  • Plenty of pain points along the way if anyone wants to hear about it.





  •  
Type Hints in Python3.5+
  • Visual Analytics Group wants to do this in the next few months
  • Any lessons learned would be helpful




  •  
Hosting for Collaborators Vs. Open Source releases
  • Which kind of project goes better at NCSA? 
  • Hosting a service vs. instances of open source software run by others?
Matt Berry



  •  
K8s and Autoscaling Vs. Traditional HPC jobs
  • Software Directorate seems to be moving to standardize on containers 
    with orchestration.
  • NCSA still puts Condor or similar batch management software on the
    cutting edge hardware. Can't even run a docker container.
  • This seems like a huge problem to me but maybe I'm the only one.




  •  
Seed repos for reference architecturesdeveloped internally or pointers to externalMatt BerrySantiago Nunez-Corrales



  •  
Checklists/best practices docs for common scenarios
  • Onboarding FT hires, student hires, collaborators
  • Writing proposals
  • Kicking off new projects
  • Releasing open-source software
  • Capturing UI/UX requirements, developing concepts, and arriving at final designs
  • Translating UI/UX requirements into frontend implementations
  • Lots more?
Matt Berry


what already exists within the directorate? wrong venue for this?
  •  
Custom elements w/ web components APIs
  • "frameworkless" or cross-framework interactive HTML widgets




  •  
Multi-window/tab/monitor web applicationsMatt Berry



  •  
Monitoring and alerting
  • what are we using? what do we like?




  •  
Tools for software support
  • service desks/user-facing ticketing
  • knowledge bases
Matt Berry




  •  
Jupyter notebook, lab, hub
  • custom plugin capability of jupyterlab
  • custom authenticator of jupyterhub
  • How to deploy and mantain a Jupyter Hub instance for a community
Chen Wang



  •  
Library of common web components
  • re-usable react components (e.g. login)
  • other frontend libraries (angular?)
  • visualizations?
Christopher Navarro



  •  
Swagger (OpenAPI) and maybe Connexion
from the meeting

Sandeep Puthanveetil Satheesan (interested in moderating)



  •  
Use lerna for managing multiple packages within a JS/TS projecthttps://lerna.js.org/Matt Berry



  •  
Establish best practices, guidelines, and rules for different languages.This can be in form of wiki pages and/or linting rules enforced with tools such as eslint (JS), black (python), and so on.Kaveh Karimi Asli



  •  
Ticket composition and why it matters (JIRA)
  • A look at the less technical side of software development patterns
  • Requirements-gathering, ticket composition, use cases, test plans, and CHANGELOGs
  • Not JIRA-specific, but lots of JIRA examples
  • An old slide deck




  •  
Scaling up Geoserver
  • How to create cluster of Geoserver for better scalabilty 
  • How to make Pods of Geoserver on Kube
  • How to improve Geoserver performance




  •  
How to manage Raster data on PostGIS (Postgresql)
  • How to manage Raster data on PostGIS (Postgresql)
  • What's the best practices with different options
  • Examples of geospatial query over raster data on PostGIS




  •  
OpenLayers vs Leaflet vs Mapbox GL
  • Understands the differences (pro/con) between OpenLayers vs Leaflet
  • Survey and review the JS libraries (i.e. react, bootstrap, etc.) working with OpenLayers or Leaflet 
  • What's the best practices with examples 
  • What's best practices working with Geoservers (WMS/WFS) services




  •  
Parallelization of Geospatial analysis
  • What's the options regarding parallelization of geospatial analysis (vector/raster) on HPC (CPU based) (MPI), HPC (GPU based), Cloud (i.e. dockers, kube)
  • What's the best practices or recommendation?




  •  
TypeScript
  • TypeScript vs Flow
  • When is TypeScript better than plain ES6
  • Some projects at NCSA are currently using TypeScript
  • Typescript on the backend (NestJS, Deno, tsc or ts-node w/ Node/Next/Ember/Fastify, etc.)
Luigi Marini



  •  
GridFS & other options to store large files in database
  • File types: json, tif,shp, csv etc. Mostly files uploaded from webservices
  • Pro & Cons
Vara Veera Gowtham Naraharisetty



  •  
Authorization of Data Access 
  • Roles, Groups, Users giving other users access to their data.
  • Application level? database builtins? Are there libraries?
  • Especially when querying large sets of data for analysis (but don't have permissions to all data of a type).
2020-04-29 Meeting notes


  •  
User interfaces and visualizations in jupyter notebooksMatt BerryMichael Bobak



  •  
Cloud-enabled workflow languages and execution

Identifying the options and advantages of tools related to workflow execution, especially related to deployment on public clouds

  • Workflow Languages: Common Workflow Language (CWL); Workflow Descriptor Language (WDL)
  • Execution Engines: Rabix; Toil; Cromwell; cwltool; Data Wolf; Apache Airflow; Parsl;
  • Workflow-compatible Cloud Compute Platforms: Seven Bridges CGC; Terra/AnVIL;  
  • Workflow Language Support Tools: Dockstore registry, CWLviewer, argparse2tool  
  • Support communities: GA4GH Cloud Workstream 




  •  
Maintaining projects on GitHub best practices (versus NCSA Opensource)
  • When to use GitHub vs NCSA opensource
  • What Github features to use (or not)
  • GitHub best practices
  • Plugins for automatic interaction
  • Personal experiences using GitHub

2021-01-27 Meeting Notes





  •  
Radiant
  • Benefits, price model, availability
2020-06-24 Meeting Notes


  •  
R programming language
  • When should we use it
  • How to scale
  • Integration with existing software




  •  
Yelp's Detect Secrets and TruffleHog
  • Keeping your secret safe in git and github
Sandeep Puthanveetil SatheesanRob Kooper Luigi Marini2020-08-19 SWG Meeting Notes


  •  
Data quality metrics
  • Started as a request from INCORE team member





WorkflowsBest Practices DiscussionRound Table Discussion
2020-11-16



Sphinx, docstrings and autodocMore advanced Sphinx topic, using docstrings and autodoc in SphinxMichal Ondrejcek

TBA

TBD


Basic principles of UI/UX design for developersGood resources for developers; libraries, screen size issues, storybook JSLuigi MariniWenjie Zhu



  •  
Best Practices for JS/TS Projects within the Software GroupThe goal of this round table is to discuss some best practices for JavaScript/TypeScript projects within the Software Group. We will discuss our findings and open it up to discussion. We will show project templates that can be used to start new Vanilla JS/TS and React projects. The templates will include basic configuration for processes such as testing, linting, documentation, and build. These templates will be used to improve ongoing projects within the Software Group.Kaveh Karimi AsliMichal Ondrejcek2021-02-10Michal Ondrejcek


Best Practices for Helm Chart
Rob Kooper





Workbench use cases for CHEESE/CDDR, as well as historical instances like the Workbench Public Beta, TERRAREF, EarthCube, PI4, and/or ETK among others.
Rob Kooper20221-03-24Sara Lambert


Ways to proxy services nginx, traefik
  • what is the simplest way to expose a flask service to the world
  • static web pages
  • how to auto deploy containers, static web pages, services 
    • start stop docker container
    • pull git repository






Helm charts
  • when is a project big enough to use helm chart
  • best practices, example, tutorials with helm charts 
  • standard repositories and practices




  •  
Easiest out of box user management solution
  • single sign on - Oauth vs cilogon
  • external directory - Ldap
    • identity.ncsa.illinois.edu
  • manage local users
  • (Jupyter hub authentication)
  • GitHub Auth flow and scope
7/28/2021Chen Wang

YesScientific tabular data
  • pandas, R data frames
    • performance difference between APIs
  • numpy arrays
  • hdf5 serialization
  • dask dataframes
  • fits (astronomy)
  • netcdf
  • Apache Spark
Chen Wang

9/22/2021

https://acrobat.adobe.com/link/track?uri=urn:aaid:scds:US:5544745d-4f14-498b-92e8-aa042fea3377#pageNum=1

Mikolaj Kowalik 


Asyc functions and nested call backs vs promises
  • simplifying nested callbacks
Wenjie Zhu



YesHow to give a good tech talk
  • for the kind of presentations that we give, what are best practices
  • conferences vs outreach opportunities like engineering open house
  • how to structure a talk
  • verbose slides vs diagrams
  • different audiences, technical, non-technical
  • how detailed
  • how to explain abstract ideas (diagrams, examples, code)

Round Table: Chen Wang 

1

Social Engineering and Security






Vulnerabilities in big packages repository (pypi, node, gems)
Matt Berry





What different cloud providers offer and specific services of interest to us
Luigi Marini





Singularity - different container technologies - run times and other container execution environments
Matt Berry




R notebooks and Rstudio - compared to Google Colab  and JupyterHub


Michael Bobak


Submitting to HPC - integration with external services - scientific gateways - how to submit to HPC
Luigi Marini




Introduction to HPC resources available at NCSA and on Campus - XSEDE - HAL - Campus Cluster - Options for Storage
Sandeep Puthanveetil Satheesan




API/CRUD frameworks given a database schema (like PostgRest)
  • Postgres/Supabase.io, Firebase, Python Eve, PostGraphile, (also related frameworks that go the other other way, model to schema, e.g., Django REST), etc. (maybe overview of differences)
  • Basic CRUD functions plus Auth
  • Could we offload some backend functions of our apps to these frameworks (eg build on top of a CRUD API instead of the database directly)?
  • They were primitive 5 years ago but some of them look pretty good now.
  • Graphql (e.g., PostGraphile)





Software engineering best practices for notebook development
  • Versioning
  • Code review process and commenting (e.g., better way to review diffs than in the raw json notebook source? https://www.reviewnb.com/)
  • Separating computation from presentation of results
  • Debugging
  • Latest developments with Jupyter Notebooks and JupyterHub
Charles Blatti




Keeping the design→dev link active after initial development
  • Updates to design automatically flowing to dev
  • Tools, now and coming
  • Practices
Chad Olson




Small design details that make a big difference
  • What are they (fonts, colors, padding/margin, etc.)
  • How to get them right
Chad Olson




Best practices to store and encrypt user information
  • user database tables
  • personal information






Use of SPARQL compliant stores

Michael Bobak





Best practices when picking standalone VM, Puppet Managed VM, Kubernetes clusters when deployment Radian 
Elizabeth Yanello




  •  
New Python features
  • type hints
  • data classes
  • coroutines
  • automatic code formatters (black)
Michael Bobak 




graphql
  • how to build a web service in graphql
  • autogeneration of graphql endpoint based on database (???)




  •  
Slack etiquette
  • effective and efficient use of Slack messaging
  • parsing and storing important information
  • what is expected, response time, priorities
Vara Veera Gowtham Naraharisetty





Perspectives on quantum computing: hardware, software and future perspectives
  • Basic concepts
  • Fundamental algorithms
  • Existing hardware architectures
  • Currently accessible systems
  • Open software frameworks
  • Opportunities
  • Potential for the IBM initiative on campus
  • Focus group to build capacity and knowledge
  • Look for experts (Eric Chitamber ECE)

3

Functional distributed and Web programming with Elixir, OTP and Phoenix
  • Language features
  • The Mix build system/toolchain
  • Unit testing
  • Distributed processing with OTP
  • Web development with Phoenix
  • Hands on show and tell / Demo / overview
  • Round table

3

Writing performant Python code with Pandas and Numpy
  • Pandas vs Numpy: when to use which?
  • Four Pandas optimization strategies
  • Numpy: harnessing vectorized operations
Santiago Nunez-Corrales
1

visual regression testing for frontends
  • Depends on the frontend tech
  • Web browser
  • Selenium
  • Javascript Unit Testing - Mocha, etc.
Matt Berry



Round Table


3

how to adapt agile practices when everyone on the team is assigned to multiple projects (and thus part of N simultaneous sprints)

possible complications:

  • potentially incurring N times the meeting overhead for all the associated ceremonies
  • deadline collisions
  • costs of context switching
  • potentially rebalancing time devoted to each project on a week-to-week basis according to needs thereby complicating any tracking of velocity

1

documenting software for end users
  • in-application help in various forms, manuals, video tutorials, knowledge bases
  • best practices for maintaining/updating/versioning these artifacts as part of the development process
  • gathering requirements for documentation
  • testing documentation
  • tools and other resources
  • how does this apply to scientists vs general users
    • docs for software engineers vs scientists
  • Collecting information vs how to best write it
  • Based on round table figure out focus
Matt Berry

Round Table

Mikolaj Kowalik

2
YesWhat developers need to know about project management
  • Both working with Project Managers and basic Project Management skills developers can/should learn
  • How to work closely with project managers on a bigger project 
  • Tools such as JIRA/Confluence/GitHub Projects/Zenhub
  • How to adapt agile practices when everyone on the team is assigned to multiple projects (and thus part of multiple simultaneous sprints)
  • Dos and Don'ts

Round Table

Chen Wang

2

basics of animation in web pages
  • why animate
  • when and when not, what and what not
  • css techniques
  • js techniques
  • libraries, guides, and other resources
Matt BerryKaveh Karimi Asli

Focus Group

TBD

3
Yesreactive programming
  • paradigm and mental model (callbacks, promises, observables)
  • marble diagrams
  • pros, cons, alternatives
  • implementations (RxJS and the rest of the ReactiveX family (http://reactivex.io/languages.html), many others)
  • use cases
  • testing
Matt Berry

Focus Group: Primer on Reactive Programming

Luigi Marini

2
YesKeycloak (hands on?)
  • keycloak overview
  • strengths and weaknesses
  • hands on examples
Luigi Marini

Round Table

Michal Ondrejcek


1

Flask hands on 
  • flask overview
  • flask + connexion
  • how to start a bare-minimum flask app
  • hands on excercises

Round Table

Chen Wang

2

React hands on 
  • overview of reactJs
  • participants try to create an app together
  • hooks
  • redux examples

Round Table: Introduction

Focus Group: Handson training by going throught tutorial together over several session

Chen Wang

2
YesHow to deploy services docker/kubernetes/ radiant
  • workshops where participants deploy a services using docker/kubernetes on radiant together

Focus Group

TBD


1

DevOps for Webapps
  • overall network structure and knowledge introduction
  • How to put apache/nginx in front of an existing app
  • request domain name and enable SSL at NCSA

Focus Group

Chen Wang

2

AWS hands on 
  • overview of popular components in AWS
  • AWS has many tutorials which participants can try together:
    firehose + dynamodb + lambda + S3 etc
  • Free educational accounts

Round Table First

Potential follow up focus groups to prepare materials using AWS well developed documentation

Benjamin Galewsky

3

google cloud hands on
  • similar to above


Round Table First

Potential follow up focus groups to prepare materials

TBD

3

Comparison of AWS / Google / Azure
  • a comparison between the three
  • follow up to the specific ones


Round Table First

3

Mobile app development
  • react native
  • flutter
  • other
  • how are people currently developing mobile apps for projects?
  • Rokwire / Clowder / Farmdoc
  • Tricks to make webapps easy to use on phones

Round Table

3

University policy on releasing an app

  • releasing an app

Round Table

TBD

3

Relational Database design and SQL training
  • mentioning SQL because we seem to be pretty familar with noSQL
  • frequent used SQL commands
  • maybe some quiz

Focus Group

Mikolaj Kowalik

2

Survey of Graph (nodes and edges) libraries to deal with large graphs.
  • performance
  • interoperability
  • support
  • using networkx, doesn't scale well
  • common libraries and databaset
Mikolaj Kowalik

Focus Groups

Mikolaj Kowalik

2

Other flavors of Python? CPython, microPython, circuitPython (arduino)


Focus Group

TBD

3

Github Actions? Don't we have something similar ^
  • I think we had a round table about this
  • maybe more hands on?

Focus Group

TBD

1

Tools to track web usage metrics
  • Web apps
    • HTML based analytics tools
    • Track hits, page load times and user engagement on site
    • google analytics, webvitals etc.
  • Geographic location tracking
  • Same for APIs - response times etc.
    • Tools that can used with nginx/apache or api gateways
  • Standalone? As opposed to Google Analytics?
Michael Bobak 

Round Table

TBD

2
Yes

Hands-on Machine Learning Study Materials (Beginner to Intermediate Levels) for Research Software Engineers

  • Come up with a set of good hands-on study materials that can be used by Research Software Engineers to develop and/improve machine learning skills.
  • This needs to be useful for beginners as well as people having intermediate skills.
  • Collate and adapt the collected materials if possible.

  • If needed, the focus group may look at specific areas within the machine learning spectrum to reduce the scope.

Focus Group: Hands-on Machine Learning Study Materials for Research Software Engineers

Sandeep Puthanveetil Satheesan

2

Best Practices with AirFlow

Focus Group

TBD




Best Practices with React

Chen Wang 

Focus Group

TBD




Functional programming for scientific applications
  • What makes a programming language functional?
  • Scientific code and equational reasoning
  • Immutability and correctness
  • Higher order functions
  • Algorithmic skeletons
  • Lessons for code maintainability

Round Table

TBD

Focus group

TBD



Yes

Pragmatics of computational reproducibility in scientific applications
  • What is reproducibility?
  • Conceptual models
  • The effect of the software stack
  • Architectural concerns
  • Software design practices
  • Can reproducibility become a design concern?






Go Programming Language (hackaton/hands on?)
  • Basic Introduction
  • When should we use it
  • How to scale
  • Pros and Cons
Vismayak Mohanarajan 







Optimizing your command line
  • Highlighting (Oh-my-zsh, PowerLevel10k)
  • Fuzzy search (fzf) – truly amazing.
  • Auto python env activation (PyEnv and Auto-Conda)
  • Delightful git integration (via fzf)
  • AutoJump & Z (frequent dir access)


Round Table & hands-on tutorial.


Productivity tools and tips
  • jetbrains toolbox
  • git clients
  • git workflows
  • pomodoro
  • task tracking
  • outlook viva insights
  • Trello






Automate deployment of tools
  • NCSA templates for dockerfiles, webapps,
    • boilerplate generator
  • helm charts, docker compose





YesMachine learning in practice

Tips and tricks:

  • Easy-to-remember when to use different types of ML.
  • My checklist when taking on an ML project (normalizing, feature engineering, checkpointing)
  • Intro to modern ML ops tools like WandB.ai and ModelFlow (used on Radiant).
Michael Bobak 

Round Table 

Kastan Day 




Learning a new programming language.
  • Where to look for prospective candidates?
  • What criteria use during the selection?
  • How to maximze the likelihood of betting on the future "winner"?
Michael Bobak 

Round Table

TBD



  • No labels