Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
The Data & Technology Services office is at 8700 Cameron Road, Austin TX.
We have a map for that. 🙂
The Data & Technology Services team at Austin Transportation and Public Works applies user-centered design, agile software delivery, and progressive civic tech values to build impactful solutions with Austin’s mobility planners, engineers, technicians, and staff.
We use many modern tools and technologies to deliver solutions to our stakeholders. We build enterprise business systems using Knack, a no-code workflow management service, and we also have a team of developers who build custom software when out-of-the-box doesn’t cut it. We embrace mature frameworks with an eye toward maintainability and long-term stability. We love web mapping and champion open source and open data across the City of Austin.
We leverage high-quality data and modern technologies to empower Austin Transportation staff to improve operations, make data-informed decisions, and deliver excellent mobility services to the Austin community. We solve real problems for real people.
The principles that guide us as we carry out our work
Business needs change; technologies evolve. We welcome new challenges and improve by adapting to and embracing change. We are stubborn about our goals but flexible in our methods.
We build only what people need, nothing more. User needs are the driver for all decisions. We build with our users, keeping them involved in our process through ideation, sprint reviews, demos, and usability testing.
Our work empowers civil servants to discover and cultivate new skills. We aim to provide opportunities for personal and professional growth and to empower the public to engage with their government through open information and collaboration.
The residents of Austin are at the top of our org chart. We share everything we do so that we can collaborate with the public and receive critical feedback. Before restricting access to a line of code, a dataset, a design brief, or an app, we ask, “Why?”
Delivering great tech cannot come at the cost of our wellbeing. We commit to building a safe and inclusive workplace by looking out for each other, listening to each other, and advocating for each other.
Welcome to the Austin Transportation Data & Technology Services team! 👋Here's a bevy of links to get you started.
Austinmobility.io — Data & Technology Services and our work
Data and Performance Hub — Austin Transportation dashboards we build and maintain
DTS Portal — Service Requests, Data Inventory, Technician Equipment Tracker
Division intranet - SharePoint site
Private GitBook page - a handful of info that is too sensitive to include in this public wiki
These were all produced before the Transportation and Public Works departmental merger
Austin Transportation and Public Works - public-facing department site
Austin Strategic Mobility Plan - Transportation and Public Works' infrastructure roadmap
Department intranet - SharePoint site
Open Data Community - Bloomfire
GIS Community - Bloomfire
CTM service request form — or 512-974-4357 (4-HELP from a City phone)
Healthy Connections - includes PE classes
HR Portal — pay stubs, benefits, PE registration
Employee benefits (external site)
Municipal Civil Service rules - City of Austin rules regarding employee hiring, promotions, lateral transfers, reduction-in-force, disciplinary actions, and appeals
City of Austin LinkedIn Learning - available through single-sign-on
We use our shared Google Drive for most of our work, but there are a few exceptions.
Using Google within these parameters ensures we can fulfill PIRs, follow records-retention policies, and maintain access to employees' work when they leave the City.
To prevent the proliferation of different versions of multi-editor documents, all collaborative documents are stored in a single location:
Other documents can be stored in Google Drive or our G drive, whichever is most practical for the team and customer.
Be aware that anything stored on your local drive — the Windows C drive or Mac HD — is not backed up or accessible via other devices.
H drive: smb://coacd.org/home/PWDhome/[your username]
G drive: smb://coacd.org/dfs/ATD
There are a few special procedures and applications for City of Austin staff who want to work remotely using a Mac.
You need to be on the City of Austin's internal network to access resources such as shared network drives, the HR Portal, and enterprise web applications like eCombs and eCapris. You can use Cisco AnyConnect to connect to the City's Virtual Private Network (VPN) when working remotely.
2. Double-click the downloaded file to open the disk image, then double-click on AnyConnect.pkg.
3. When the installer opens, click "Continue," "Agree," and leave the defaults on for the installation type:
4. When prompted, provide the password you use to log in to your computer, and the installation will begin. It will take a few minutes to run.
5. Once told the installation has been completed successfully, click "Move to Trash" to delete the installer.
6. You should now see a Cisco folder in your Applications folder. Double-click on the Cisco AnyConnect Secure Mobility Client to open the application.
1. Open the application. In the empty field below "Ready to Connect," enter the IP address of the City's VPN server.
The IP address is sensitive information. Get it directly from your supervisor or another Mac user.
2. Click the "Connect" button.
2. A warning will appear. Do not check the "Always trust..." option and click "Connect Anyway."
3. A window asking for your username and password will appear. Use your City of Austin email address and Network password to log in.
4. The same window may reappear, just for fun. 🙃 Again, click "Connect Anyway" and leave the "Always trust..." option unchecked.
At this point, there may be a bit of a hang while the connection is made. Once the green checkbox appears, you are connected and ready to access network resources.
Streaming video or audio while connected to the City network will negatively impact the speed with which other employees can access shared drives, SharePoint, and the City’s intranet.
When troubleshooting your VPN connection, you may want to wipe all installs of AnyConnect and start fresh. You can use Uninstall AnyConnect, located in the Cisco folder in Applications.
1. From the Finder menu, select Go > Connect to Server.
2. Enter smb://coacd.org/dfs/ATD
in the Server Address field and click "Connect."
3. You will be prompted for your City of Austin Network Username and Password. Once submitted, a Finder window will open to the G Drive.
Learn how to reset your City of Austin Network password remotely from a Mac using Citrix AnyConnect.
Get set up with a PC assigned to your Citrix profile. You may have to contact Scott Reedy for assistance with this step, but you'll need a PC assigned to your Citrix profile.
Click the Settings ⚙️ icon in the top right, then "Account Settings."
Click "Change password."
Fill out the Change Password form and click "OK."
Once you change your password in Citrix, immediately log out of AnyConnect. It is possible to lock yourself out because you are logged into AnyConnect with the old password at that time. You can reach out to Scott Reedy to unlock you if that happens.
If you come across that one bug.
1. In Finder, open Applications/Utilities and open Terminal.
Type cd /opt/cisco/AnyConnect
and press Enter.
2. Type cd /opt/cisco/AnyConnect
and press Enter.
3. Type sudo nano AnyConnectLocalPolicy.xml
and press Enter.
4. Type your admin password (the one you use to log on to your computer) and press Enter.
5. Change the highlighted text from false
to true
.
6. Press ctrl+x to exit. 7. Press Y to save changes when prompted.
Please join Austin Transportation channels, prepended with atd.
These include:
atd
atd-data-tech - open to all City employees, default for team discussions
atd-data-tech-real-talk - private channel for sensitive information/conversations or those completely irrelevant to anyone else, e.g. "Turn in your timesheets"
atd-dev
atd-product
atd-standup - everyone on the DTS team posts a daily standup here
What did you do yesterday?
What are you doing today?
Any blockers?
It's helpful to cite specific Github issues you're working on.
We also have end-user documentation for , Signs & Markings Tracker, the SXSW Command Center, and
We love Google Drive, Docs, Sheets, and Slides for collaborative document editing and management. Since CTM does not have an enterprise Google subscription, we follow carefully.
-
GIS files, Visio documents, and other files that can only be used on a Windows operating system are stored on the .
You will need to be either hard-connected to the City network or . From Finder on Mac: Go > Connect to Server then type the address in the Server Address field
Per the , all City-owned computers must have up-to-date virus protection installed and active.
The TrendMicro website has Mac installers and installation instructions . You will need the serial number in CTM's doc.
1. Download the installer .
If you are running OSX Catalina, you may need to to complete the configuration.
You must access the G Drive from the City of Austin Network. If you don't have a wired connection, .
Connect to the VPN .
Log in to using your CoA username and password.
URL:
Username: coacd\
+ your last name and first initial. Ex: coacd\clarkem
Password: your CoA Network password (same as Outlook)
We use Slack to stay in touch with our teammates. Your supervisor will provide you with an invitation to the .
We keep each other up to date on our progress and blockers by posting in every day:
Complete exit interview
Turn in all hardware issued from Austin Transportation back to IT Hardware DTS Staff
We are so happy to have you here. Let's configure some tools and ensure you have access to all the resources needed to hit the ground running. 💪👟⚡
These are the high-priority tasks. Let your supervisor know if you are unable to complete any of them on your first day.
All your passwords relating to work should be stored 1Password and only in 1Password.
Let your supervisor know if you are unable to finish any of these during your first week.
Unless you are a contractor, you have a few last to-dos! The HR and DTS Portals are updated every 2 weeks with employee information from the City's enterprise HR system, so wait until week 3 for these ones.
Ask questions! Be a sponge and absorb it all! 🧽💦🌈
Bonus: Update this wiki if you find broken links or missing information! 😉
This page contains technical details related to our management of dockless mobility data (e-scooters, bicycles, etc).
We require dockless mobility operators to provide us with real-time trip reporting feeds in compliance with the mobility data specification.
We collect dockless trip records from each provider using a Python mds client which stores processed data in a Postgrest database.
We believe strongly that we do our best work when we work openly. It’s why we’ve built all of our reporting infrastructure on top of open data, and we’re continuing that practice with dockless mobility data.
We publish anonymized dockless trip records to our open data portal on an hourly basis. The dataset is here.
We have been very thoughtful about how we are approaching the release of this data. We are following the recommendations outlined in the Civic Analytics Network’s recent open letter, which was signed by Chief Data Officers and industry experts across the country.
Specifically, our trip records:
Do not include any vendor-provided identifiers. The trip IDs and device IDs in our dataset are completely arbitrary and cannot be traced to a specific operator.
Have start and end times rounded to the nearest 15 minutes.
Use latitude and longitude values rounded to three decimal degrees (roughly the area of a city block).
You can view monthly dockless trip summaries here
This is a public website that pulls directly from our public datasets. Here's the source code.
We have built an interactive web map which visualizes where dockless trips are starting and ending. We’re calling it the Dockless Data Explorer, available at dockless.austintexas.io.
The source code for our dockless mobility tools is freely available in five repositories (and counting):
Here are some handy queries for fetching dockless data summaries from the Open Data Portal
*Denotes that the query includes a filter for min/max distance (.1 miles / 500 miles) and max time (24 hours)
The where
clause can be modified to specify year and month. This selects february and march 2019 date_extract_m(start_time) in (2, 3) and date_extract_y(start_time) = 2019
Review Equipment Checkout form submitted
Schedule exit interview
Complete exit interview
Analyze interview and retrieve insights
Make sure stakeholders know who to contact, that projects and products have been re-assigned
Give stakeholders status report of all ongoing projects
Gather list of outstanding tasks
Know where important files, documents, resources are located
The Data and Technology Services team is using GitHub and Zenhub for agile project management. This is an overview of our process.
Create a GitHub account if you don't have one already.
Have someone on the DTS team add you to the City of Austin organization and the Transportation team as a Maintainer.
Add the Zenhub extension to your browser.
Log into the Zenhub web app using your normal GitHub credentials to activate your account.
The Zenhub board uses a Kanban-like format where issues are represented as cards and move across the board as they enter various stages of completion. Our workspace pipelines are:
New Issues - Awaiting triage by Level I Support or Product.
Icebox - Recorded and understood, but not committed to. Lack of evidence of overall value or applicability. We don't want to delete these and create a cycle of raising duplicate issues, so we keep them in our icebox with just enough information attached that we can pick it up sometime in the future — if and when we choose to do so.
Needs Scoping - Potential projects or features that require clarification or exploration before presenting to builders for estimation and prioritizing.
Backlog - Issues that are ready to be tackled by the team when the time comes. This pipeline is prioritized: the higher an issue is on this list, the higher the priority.
On Deck - Slated for work in the current sprint. During Sprint Planning, we pull all issues that we intend to work on during the sprint into On Deck.
Blocked - Issues that cannot be completed — often waiting on CTM or user feedback.
In Progress - This one is self-explanatory. Each Issue in this pipeline should have an assigned owner who is responsible for its completion.
Ongoing - Continually supported products and activities.
Review/QA - Proposed as complete but awaiting approval — code review and/or acceptance testing — before closure.
Ready to Deploy - Code or configuration that is ready to be deployed to production.
Closed - Done! 🙌
Tracking our work in issues not only helps us stay organized, it gives us data on where we're spending our time. To create an issue, click the green "New issue" button in the upper right corner of the "Issues" page or our Zenhub board.
You will see a list of our custom issue templates. These are handy for creating bug reports, meetings, etc. with boilerplate information and structure.
It is best practice for issue titles to begin with a verb and summarize the work to be completed. This convention improves readability and helps keep our tasks action-oriented and unambiguous.
Here are some examples:
You can apply labels when looking at an individual issue by clicking the "Labels" heading in the right-hand sidebar. You can also apply labels in bulk from on our Zenhub board.
Labels allow us to view related issues across the Zenhub pipelines. For example, during Apps Team Sprint Planning, we filter down to Service: Apps
and during our periodic meetings with AMD we use the Workgroup: AMD
label to look at all the work — across teams, of all sizes — that we're doing for them.
All to say: It's important to ensure issues are properly labeled.
Workgroup — the customer we're serving; Workgroup: DTS
for internal work and Workgroup: ATD
for department-wide work
Service — The DTS service team the work will be handled by
Project and/or Product labels
Projects refer to a substantial scope of related work that will reach a state of relative completion, such as the AGOL Audit
Products are solutions that we continue to support over time, including all in-house applications, such as the Vision Zero Crash Data System
Often, a major feature or enhancement to an existing product will require enough resources and coordination that it qualifies as a project. Warehouse Inventory, for example, was a major set of features and enhancements to AMD Data Tracker and the Finance and Inventory App, so it needed both Product and Project labels
A DTS team or individual product manager may find these additional label categories helpful
Type — The type of request or task
Impact — The effect of a bug, infrastructure failure, etc.
Impact: 1-Severe
— Severely impacts TPW service delivery
Impact: 2-Major
— Causes a major interruption of TPW service delivery
Impact: 3-Minor
— Deteriorates TPW service delivery
Impact: 4-None
— Does not affect TPW service delivery
Need — To designate priority of a potential feature or enhancement
Impact: 1-Severe
— Severely impacts TPW service delivery
Impact: 2-Major
— Causes a major interruption of TPW service delivery
Impact: 3-Minor
— Deteriorates TPW service delivery
Impact: 4-None
— Does not affect TPW service delivery
Provider — The external team or vendor executing the issue
Estimates are how we track the level of effort of issues. This is useful for
Sprint planning to see when a person or team has too many issues (or too few!) issues assigned to them
Stakeholder discussions when prioritizing features — being able to show stakeholders easily that we can accomplish, say, three small tasks, two medium, or one large
Velocity tracking, which helps us predict the likelihood we can complete things by a given date
This is a good article about the hows and whys of estimates with ZenHub.
Epics are a powerful feature that Zenhub adds to Github. They allow you to group related tasks and easily track them from one place. Here is a solid guide to how they work. Here is an example from another City of Austin project.
For ongoing tasks such as a recurring meeting, it may help to create an epic and put the individual instances of the tasks inside it. Here is an example of that type of usage for a task performed for a customer regularly.
Epics do not need estimates assigned to them manually. Instead, the effort is represented by the total of all the story points in the epic's issues.
Ultimately, epics can group whatever makes sense for you and your collaborators. Some people prefer issues with task lists inside them. That's fine as long as the issue doesn't require more effort than we can represent in our estimate scale for a single issue.
An issue should be assigned to the person/people who will tackle it. This enables team members to filter down to issues they are responsible for easily.
Here are some additional guides for some of our most relied-upon Zenhub functionality:
"Use multi-action to make bulk Issue updates" on this page
The Zenhub docs are super-solid, and we encourage you to peruse them at your leisure. Remember that some functionality—renaming and reordering pipelines themselves, for example—will affect the workspace for the whole team. We're always looking for ways to improve our process, so if you come across an approach or functionality you think is promising, add it to the agenda for our weekly Product Sync or share it in the #atd-product
Slack channel!
We use the Data & Technology Services website, Austinmobility.io, to showcase our work and communicate with stakeholders. The content is driven by Github, Zenhub, and the DTS Portal.
An issue will appear on the Projects or Products pages if it:
Has a "Product: xyz" or "Project: xyz" name
Has the "Product Index" or "Project Index" label
Each project or product is rendered as a tile using content from the index issue:
All issues with the Product:
label for a given product will be rendered on the Issues tab (example) and all comments on the project/product Index issue itself will show on the Activity tab (example).
In order for the Evaluation tab (example) to render correctly, the project must have an evaluation completed in the DTS Portal.
Once an issue is labeled Project Index
, it will automatically be added as a project in the DTS Portal.
If your project is not listed in Knack, the ETL may not yet have run. You can manually create a new entry in Knack, just make sure you provide the correct github issue # when creating the entry. The ETL will overwrite any project name you supply manually.
Product Managers work with builders—the Apps, Dev, Data Science, or Geo teams—to assess the level of effort for a project.
A project's predicted value is added to the Product Sync agenda so that the Product team can review it as a group and determine a score together.
The Jobs API is a tool for logging the outcome of ETL scripting jobs. It is designed to support the task of "incremental" data loads—i.e., loading only new or updated records from a source database to a destination database.
The typical ETL workflow using the Job API is:
At the beginning of your ETL job, query the Job API to retrieve the timestamp of the last time your job ran successfully.
Use this timestamp as a temporal filter to extract new/modifed records from the source database.
At the completion of your ETL job, register the successful outcome with the Job API.
Begin by importing the jobutil
library and creating a new job instance:
Assuming you've run this job successfully in the past, you can use the most_recent
method to return a unix timestamp from the last successful job run:
Register your new job with job.start()
. The API returns a JSON representation of newly created job record:
We have successfuly registered a new job. Note that the status was automatically set to in_progress
. If we were to call job.most_recent()
again, the results are the same as before, because the status of current job is not success
:
From here, continue your ETL process as needed. When your ETL is complete, use job.result()
to update your job status accordingly. Again, a JSON representation of the job record is returned:
Note that the end_date was populated automatically. Because the job was successful, calling job.most_recent()
now returns the timestamp of our current job:
You should also register job failures. The errror
result is availabe for such purposes:
Use this | Not this |
---|---|
We've created a Python client, , for interacting with the Postgrest API.
The test instance is available at , and it can be queried using any PostGREST route, as described in the .
We've written a Python utility to interact with the jobs interface. It's included in our pacakge. tdutils
requires Python 3 and can be installed with $ pip install tdutils
.
Name
Type
Badge access
General access
Parking sticker
General access
Laptop
Hardware
Docking station
Hardware
Monitors (if applicable)
Hardware
Desk riser
Office equipment
Chair
Office equipment
Replace the council district dataset used in Vision Zero Viewer
Outdated/inaccurate council district AGOL resource in VZV
Implement new work activity fields in the Moped editor UI
AMD not tracking funding information
Publish new CCTV camera thumbnails
CCTV map issues
Fieldname | Field Type | Description |
| SERIAL PRIMARY KEY | System-generated incremental ID |
| TEXT NOT NULL | Name descriptor of the job which uniquely identifies the ETL job |
| TIMESTAMP WITH TIME ZONE NOT NULL | The job's start datetime |
| TIMESTAMP WITH TIME ZONE | The job's end datetime |
| TEXT | Optional message |
| TEXT NOT NULL | The status of the ETL job. Use 'in_progress', 'success', or 'error' |
| INTEGER | The number of records processed by the job. |
| TEXT NOT NULL | The name source database of the ETL job. |
| TEXT NOT NULL | The name of the destination database of the ETL job |
To Do
Notes
Amenity, Chia, Diana, or Frank must complete
Amenity or Diana must complete
Vision Zero Editor
Moped
Knack Applications
Apps Team member must complete
Reassign open Github issues
Google Drive
Supervisor must complete
DTS email distribution list
Remove after SERF is processed
We use PostgREST to generate APIs for our PostgreSQL databases.
[CoA Public Safety Traffic Incident Reports)[https://data.austintexas.gov/Transportation-and-Mobility/Real-Time-Traffic-Incident-Reports/dx9v-zd7x]
Cameron Road: coa-atd-secure-wifi
— password in 1password
You need to be on the City of Austin internal network to access various resources such as shared network drives, the HR Portal, the original CitySpace, and many City of Austin Sharepoint sites.
Cisco AnyConnect VPN is the client we use to remotely connect to the City network from a Mac.
CTM Help Desk Remote Access Request Form
If you use your personal computer for work at the any CoA office be advised that you should never directly connect to the CoA Ethernet network. You can connect to the CoA internal network via VPN when necessary. CTM runs occasional security scans for devices that shouldn't be on the network and if they discover your personal computer, they reserve the right to take your computer, run scans, and review files.
We use "index" Github issues to centralize information about each of our projects and products. It is critical that these issues follow a standard labeling scheme and content format so that DTS' project data is accurate, team members work is coordinated and efficiently tracked, and we have an accessible, high-level view of the project/product on the DTS Website.
Create a new Project or Product Index by selecting the appropriate issue template from the atd-data-tech
Github repository.
All projects which have been scoped require a project index issue to be placed in the appropriate Zenhub pipeline. The issue title, description, and labels should follow the below guidelines.
The issue title should be prefixed with Project:
. For example, Project: Warehouse Inventory Management
.
Project Index
Project: xzy
— A project-specific label that you will create, following our project label conventions
Workgroup: xyz
— the project stakeholder workgroups
All DTS team members who contributed substantially to the project, including at least one product manager or team lead.
Follow the Project Index issue template.
See #index-issue-images below.
All products require a product index issue to be placed in the appropriate Zenhub pipeline. Once a product has been released, it should be placed in the Ongoing pipeline indefinitely until it is removed from service. The issue title, description, and labels should follow the below guidelines.
The issue title should be prefixed with Product:
. For example, Product: Data Tracker
Product Index
Product: xzy
— A product-specific label that you will create, following our product label conventions
Workgroup: xyz
— the workgroup(s) of the product's primary users
The product manager.
Follow the Product Index issue template.
See #index-issue-images below.
All projects and products should have at least one image so that missing thumbnails don't disrupt the website design. We prefer these thumbnails options:
A map or other visualization of the data generated in the app
Photos of the project/product's end users at work or the related hardware/service; the TPW Flickr feed is a fantastic source for these
For mobile-focused apps, we have a template to show off the application on different devices
Please avoid using
Full-screen screenshots or large diagrams as the first image - these don't render well in tiles. Include these later on in the issue if they are helpful way to communicate the work.
Vendor logos - these doesn't give any information about the platform or use case and promote a commercial companies
The image should be at least 1000px wide, with a 3:2 aspect ratio. This tool makes it easy to crop/resize as needed.
Using Google within these parameters ensures we comply with CTM's security protocols. We can fulfill PIRs, follow records-retention policies, and maintain access to employees' work when they leave the City.
Employees should not use personal Google accounts for City work since all City-related email correspondence must reside in Office 365. So you will need to create a Google account with your @austintexas.gov
email address that is not attached to a Gmail account:
Visit Create your Google Account.
Click "Use my current email address instead."
Enter your @austintexas.gov
email address.
Check your email, including your junk/spam folder, and confirm your account.
Remember, never add a Gmail address to this account! It's against City policy and creates a permissions headache for your supervisor.
All your documents should be saved within a folder owned by a shared resource account, coaatdamd@austintexas.gov. This means we can all search and access each other's files, even if someone is out of the office or leaves the team.
Under no circumstances should sensitive information be stored in Google Drive. This includes CJIS and HIPAA data, along with any personally identifiable information about individuals in the community.
From parent directory of package:
See Packaging Python Projects (python.org
)
Your python envrionment will require the following pacakges:
Update the semantic version number in the package's setup.py
.
From the same directory as setup.py
build the new version:
Upload the new version to PyPi. (You'll be prompted to enter your username/password):
This is the general process we use to release new code to one of our custom applications. The Apps team has defined a separate, specialized process for deploying custom code in Knack.
The Product Manager & Dev Lead collaboratively plan what issues will be included in the release
The Dev Lead ensures that all issues are assigned, completed, and tested before the release
After a pull request is reviewed by several devs, the PM reviews and adds any new functionality to the QA test script
The Dev Lead creates a single pull request that includes the scope of the release Example: https://github.com/cityofaustin/atd-vz-data/pull/496
The Dev Lead cleans up release notes Example: https://github.com/cityofaustin/atd-vz-data/releases
The release branch is deployed to Staging and the PM performs QA testing
The PM notifies users of scheduled downtime
Release party 🎉
PM merges pull request
Dev Lead notifies #atd-dev that the pull request has been tested, approved, and merged
PM sends release notes to stakeholders and users
Team debriefs on the process and updates the steps as needed
Dev Lead creates an issue for the next release
Application-specific versions of this process are written as issues so they can be tracked collaboratively for each release. Example: https://github.com/cityofaustin/atd-data-tech/issues/16094
Aka "8700", "Cameron"
Data & Technology Services is located at Transportation Public Works' Cameron Road location. Our offices are in 8700 Cameron Road, alongside Arterial Management offices and the Mobility Management Center.
We have an area at Ben White for DTS Staff. Ask your supervisor before attempting to work from that location.
Ben White
Permitting and Development Center (Public Spaces)
We use Docker to manage runtime environments. Our Docker Hub is https://hub.docker.com/u/atddocker.
Start docker engine
View all images
Show running containers
Show all containers
Build image from Dockerfile
Run docker container in interactive mode and mount local volume inside container:
Start docker with docker-compose:
Build the new image and tag with a new version number. Suppose your image name is atddocker/my-image
:
Push to Docker Hub:
All Austin Transportation Department employees are required to work 8.5 hours/day. That includes a mandatory 30-minute lunch. You can take a longer lunch but can’t count it as work time. You can work through lunch but still need to put in 8.5 hours.
Your start time can range between 8am and 9:30am. We ask that you work the same schedule consistently and post your daily stand-up when you log on.
When meetings get scheduled outside your regular work hours, you’re expected to attend them. Let your team lead know in advance when you cannot attend a meeting that requires your attendance.
You can occasionally flex your hours to accommodate doctor appointments, errands, etc.; give your team lead a heads-up in advance. We understand that unexpected absences can come up.
“Non-exempt,” aka "hourly" employees, can flex hours within a single work week (Sunday-Saturday), so long as you reach 40 total hours. "Exempt" employees can flex hours across the two-week pay period, so long as your hours total 80.
If you can’t or don’t want to flex, you can use sick time for doctor appointments and personal time (vacation, personal holiday hours, comp time, etc.) for anything else. You may also use leave without pay (LWP), but LWP requires pre-approval and should be discussed with your supervisor at least two weeks in advance.
Non-exempt employees can earn overtime and comp time, which require advance approval from your supervisor.
If you are a new regular employee, you, unfortunately, can’t use vacation or personal holiday leave during your six-month probation period. If you need to take time off during probation, you have three options: flex hours, use sick time, or take leave without pay.
Regardless of the leave you use, you must submit a leave request in advance through the eTimesheet system (see below).
You'll have to fill out a paper timesheet during your first two weeks. Your supervisor will help you get one from HR.
The rules govern the process for employee hiring, promotions, lateral transfers, reduction-in-force, disciplinary actions, and appeals. If any supplemental information included here conflicts with the official MCS rules, those rules take precedence.
Part 1:
Part 2:
Part 3:
Part 4:
Part 5:
Your timesheet must be submitted in the system every Thursday by 10am.
Learn how to submit your timesheet with the (on-network) and reference.
It's very important that the job server keeps from timing out.
This app takes 311 service requests from CTM ESB (Enterprise Service Bus). It acts as proxy for the Knack API since certificates don't work with ESB 🤷♂.
⚠️ If it goes down it will break the 311 integration with the data tracker which our TMC (Traffic Management Center) relies on. The flask app has never had issues (knocks on wood) but sometimes the ESB to proxy integration goes down. CTM handles the reboot. In this case, the TMC will say that they aren't getting updated Service Requests in data tracker. Omar at CTM is the person to talk to if ESB is having errors.
Data path: 311 SRs (Motorola) -> Enterprise Service Bus (CTM) -> knack-proxy (ATD) -> Knack (ATD instance)
Since we converted this code into an async Sanic app we haven't had issues with it failing. But we did previously with Flask and never really got to understand the root issues.
If it goes down, log into atd-data01 via ssh and restart the containerized app with docker restart cctv-service
.
If atd-data01 crashes, it would just need to be restarted. Insert bash command sudo reboot
. All of the data scripts are on cron jobs and will restart at various times. The two service app in docker containers on atd-data01 do need to be restarted manually. Those restart scripts live in their respective Github READMEs.
List volumes and usage:
Check the free available space in the Volume group
Extend the volume (here, adding 8GB)
Expand the volume:
All done.
run all shell scripts inside a folder
scp transfer files from local to remote directory:
connect to instance
Team leads are responsible for tracking new team members' onboarding in Github:
Create an epic "Onboard [Name]" with two issues:
"Perform [Name] onboarding tasks [Team Lead]," assigned to yourself and the new team member's supervisor—i.e. the person who will sign their timesheets. Copy and paste the checklist from this page into the issue body.
"Perform DTS onboarding tasks [Name]." You won't be able to assign this to the new team member until they have a Github username, but in the meantime you can direct them to the Welcome to DTS Gitbook page.
Add these checklists into the issue bodies. If you have issues with formatting, you can take these steps:
Copy text below
Convert it to Markdown using Paste to Markdown
Copy ☝️ and use Text Cleaner to replace bullet points with task lists. Find "- "
and replace with "- [ ]
"
If the employee is using city-issued equipment, submit a New Employee Request Form. Otherwise, use submit a Third-Party Remote Access Request Form.
For a full (18 page) explanation of this process, refer to CTM's Third-Party Remote Access Request Quick Reference Guide. In short:
After the network account is created and you have their @austintexas.gov email address:
After they've created their Google and Github accounts:
After they notify you that they've uploaded their headshot:
After they notify you that their Miro account was created:
Once HR has added regular/temp employees to the UKG timekeeping system, their supervisor—Peggy, Amenity, or Diana— must:
Some of the main functions our team does is:
Software Support
O365 (ex. SharePoint, Teams, Forms, Planner, Lists, etc..)
Socrata Open Data Portal
Solution Architecture and Configuration
Knack, AMANDA, Fulcrum
Hardware Support
AirWatch - Tablet Management
Data Management
Database design, creation, maintenance
Business Intelligence (BI)
Power BI
CliqSense
Tableau
Service Desk
DTS Request forms - triage
Wiki
Slack Channel
We have an that we manage on our DTS Portal. This inventory list will show the various applications that our department uses and that we manage.
Products are the solutions we build for our customers, including Knack apps, AMANDA apps, custom software, and data systems. We improve and extend our products over time so that they deliver continuous value to Austin Transportation as business needs evolve.
Projects are time-boxed endeavors. They accomplish a singular goal and have a defined completion date. Examples include:
Delivering the first iteration (MVP) of a new DTS product
Oftentimes, our customers initiate a project by submitting a DTS service request that is notably large and/or important.
A DTS team member may also create a project when there is significant work to be done on an internal product—such as updating Austinmobility.io, a technical refactor of the Vision Zero Database, or migrating our CCTV image service from a local server to the cloud.
In either case, we begin by verifying that all our DTS project prerequisites are met:
Dedicated product owner to support requirements gathering, user research, and user onboarding
Division Manager sponsor to champion the project at the executive level
A commitment from the customer to collaborate in DTS's iterative, user-centered development process
Then either create a new project index issue or convert the existing issue to match the project index template. Either way, make sure that the 'Project Index' label is on the issue so that an evaluation record for the project is added to the DTS Portal and it appears on the website.
Don't worry about building out a robust project index before scoping the request. Just make sure the name and description (the first 1-2 sentences) are good and that it has all the right labels. You can comment out the rest of the template to fill out when you have more information.
Move the issue to the "Needs Scoping" Zenhub pipeline.
PM schedules an intake meeting. Ideally, this will include actual users as well as the workgroup manager.
Prepare Intake Meeting Agenda.
Meet and take notes; photos/recording may also be helpful.
Add notes/photos/recording to Github issue.
If necessary, update issue description to ensure it clearly summarizes request.
PM sets up meeting with potential builders, e.g. Dev for a Vision Zero Viewer project, Apps for a ROW Portal project. If we aren't sure which route we'll go or the solution will require both, add to the Dev/Product Sync agenda to discuss.
Prepare a summary of request. Here's an example done as a presentation deck (template).
At the meeting, discuss the recommended approach and fill out the "Effort" section of the project evaluation in the DTS Portal.
Sometimes we realize that the request isn't actually project-sized during the intake meeting or the builder huddle. No worries, we had a good opportunity to learn more about our customers' work. Might make sense to organize this work as an epic, once the time comes.
After assessing effort with the builders, it's time to assess value with the product team.
Add to DTS Product Sync agenda for a "Refinement-week", i.e. the second Wednesday in a sprint. If feedback is needed sooner, or the project was initiated internally (like work on our technical infrastructure), bring it to Dev + Product Sync instead.
As a group, fill out the "Value" section of the project evaluation in the DTS Portal.
After the evaluation is complete, the Austinmobility.io script will pick them up and you will be able to see the project in relation to other projects in our backlog using the prioritization matrix.
Move the index issue into the "Backlog" pipeline.
Google presentation used for Product Ops onboarding and TPW Executive communications.
Once the time comes to work on the project:
Move the issue to the "In Progress" pipeline.
If you don't already have regular Sprint Reviews with the project's stakeholders, set up recurring meetings for the duration of the project so that you can demo work and get feedback.
Create a folder in the Projects/Products DTS Drive.
Create a Project:
label in Github. Fill out the "Description" field and use the hex code #3D3D3D
for "Color." Use this label for all issues moving forward so that they render on the projects' website page and are easy to surface on Zenhub/Github.
Fill out the rest of the project index including background, outcomes, timeline, etc. Add these headings to the issue:
Convert the project index issue into an epic and assign future issues to the epic moving forward. Zenhub allows you to nest epics or assign issues to multiple epics, so feel free to use that functionality if you find it helpful.
Ensure that everyone who has stake in the project, from potentially impacted staff to interested executives, is aware the project is moving forward. Invite stakeholders to come to sprint reviews and/or participate in user research. Ask them who else should be included.
Optionally, hold a kick-off meeting with your stakeholders.
Perform requirements gathering with users. We often begin with user interviews and store requirements either as user stories for in-house applications or in a software comparison matrix for off-the-shelf solutions.
Document bugs, feature requests, and enhancements as Github issues. You may want to encourage your users to contribute using the DTS Service Request.
When you click the "New Issue" button in the upper righthand corner of most pages in Github, you'll find issue templates for bug reports, features, and enhancements. You have to scroll to the bottom of the page and click to the "Open a blank issue" link to get a plain issue. To skip all that, bookmark the direct link to the blank issue form and add it to your browser bar.
Work with the team lead—via Github comments or in a planning/refinement/sync meeting—to assign an estimate to each issue. Zenhub's Planning Poker is also a fun way to estimate asynchronously.
Prioritize work with stakeholders during Sprint Reviews.
If practical, release versions of an application on a regular basis.
Perform usability testing to surface improvements to the user experience. Since we don't have dedicated user researchers at DTS, we love think-aloud usability testing for its simplicity and depth of insight. Here are some think-aloud test plans we've done. It's handy to record sessions on Teams so that you can expand on your notes, embed screenshots/clips in issues, etc.
A project is considered complete when the minimum viable product—captured in the "Scope and Deliverables" section of the issue's project index—is delivered to users.
For complex projects, you might consider making an "Onboarding and Stabilization" epic in the project to capture any critical bugs documentation needs that surface during roll out and keeping the project open until those issues are addressed.
Often, there are still issues in the backlog that are not actually must-haves. Remove the project label, remove them from the epic, and review them the next time you meet with stakeholders so they can prioritize those against any of their other ongoing requests.
Retire the project label by adding "[Archive]" to the "Description" field and update the hex code to #B8B8B7
.
Write a final update as a comment on the index issue and close the issue.
By default, completed projects show on "Complete" tab on the “Projects" page of the website, but you can apply the Archived Project
label to prevent that. We like to curate this page to showcase our most compelling, impactful, and well-documented work.