📚 whoami 🚲
(2010..Time.now) dev: ThoughtWorks -> Braintree -> Breadcrumb (Groupon) -> ThoughtWorks ->
Square -> Sempre Health -> Parachute Health
Healthtech
🪂 Parachute Health 🪂 better ordering for Durable Medical Equipment (we are hiring)
A lead of the Ruby for Good CASA project 2019 - 🚀
I have been a developer since 2010.
I started my career at ThoughtWorks, and
I've worked in a variety of industries including airlines and payment processing.
And now I work in healthtech.
I work in healthtech because I have figured out what I want to do with the rest of my life,
which by the way is terrifying,
I plan to spend my forseeable future taking my revenge on the USA healthcare system
by trying to improve it.
My open-source-supportive employer is Parachute Health.
WE help patients get their prescribed Durable Medical Equipment like wheelchairs and CPAPs.
I have been A lead of the CASA project since it started in 2019.
Fast Definitions
⚖ CASA is a nonprofit which trains volunteers to help foster youth
✨
💎❤ Ruby for Good is a nonprofit which builds software for other nonprofits
(mostly in ruby)
✨
The Ruby for Good CASA project ✨🛠 is software written by Ruby for Good to help
CASA
Some fast definitions- CASA is a nonprofit which trains volunteers to help foster youth
Ruby for Good is a nonprofit which builds software for other nonprofits
The Ruby for Good CASA project is software written by Ruby for Good to help CASA
This talk is about
✨
https://github.com/rubyforgood/casa
✨
creating
an ecosystem
for writing OSS
SaaS OSS
serving volunteers
who serve foster youth
This talk is about creating an ecosystem for writing open source software, specifically software as a
service open source software, to serve volunteers- who serve foster youth.
raise your hand if
you have ever thought about the USA foster care system
(raise your hand if) you have ever thought about the USA foster care system? - Thank you, you can put
your hands down.
Many people know somebody, have worked somewhere, have volunteered somewhere, have read something about
the foster care system. When I started on this project, I was not very familiar with it. What you need
to know today
(USA specific) foster system
Details differ per state. There are over four hundred thousand youth in the foster care system on any
given day.
These youth are ages zero thru eighteen (or twenty-one, depending on circumstances) who are not under
their original parental guardianship. A youth exits foster care through reunification OR adoption OR
emancipation. You can learn more from the links here.
~50 years ago
"Every child placed in foster care must have court oversight to ensure that both the
child’s and the parents’ legal rights are protected until the child reaches a safe, permanent home"
"The first CASA Program was founded in 1977 by Judge David Soukup, a Juvenile Court judge in Seattle,
Washington who felt that he was making critical decisions
about children’s lives without adequate information. He began recruiting volunteers from the community
to work one-on-one with children in foster care. The volunteer advocate, or “CASA,” is appointed by a
juvenile court judge to a child in foster care. The CASA then gets to know their assigned child, gathers
information from everyone in the child’s life (including the child’s biological parents, foster parents,
medical and mental health professionals, social workers, therapists, teachers, and attorneys) and
prepares a written report giving the judge in the child’s court case detailed information about the
situation and the child’s needs."
Fifty years ago in the seventies there was a judge who felt that he didn't know enough about the
situations of foster youth to make informed decisions about their care. Decisions like
who the legal guardian of the youth will be and what the rules around visitation
are. To fix this, he created the organization that grew into CASA.
The CASA organization
Today, CASA is a national organization with many local chapters, corresponding to the organization of
the courts where the volunteers serve. Over ninety thousand volunteers in almost all states, each go
through
over thirty hours of training plus ongoing continuing education. They are sworn in by a judge and commit
to serve for several years. Each volunteer is assigned to one youth- sometimes two when there are
siblings- and follow up on the youth's care by talking to everyone involved.
Some volunteers are law students, some are retired, and they are very good at what they do, but doing
the paperwork is sometimes hard.
The court report is due every six ish months depending on court schedule, and has a specific format.
CASA Funding 💵 📊
"CASA [of Southwest Missouri] relies on a diverse revenue base, foundations and the United Way,
individual and corporate contributions, public grants"
casaswmo.org/who-we-are/frequent-questions
"The DFA awards two types of CASA grants (...) To be eligible to
receive a CASA Grant, an applicant must-"
courts.state.md.us/.../casaspecialconditions.pdf
"In California, most CASA programs are non-profit organizations and receive funding from a variety of
other sources."
courts.ca.gov/documents/CASA.pdf
Different CASA regions are funded in different ways. In general they find and manage their own funding.
Existing processes
CASA volunteer talks to people
biological parents, foster parents, medical and mental health
professionals, social workers, therapists, teachers, attorneys
Take notes
Don't forget any involved parties! 🤔
📝 Court Report .docx / 6 months
💼 Supervisor of volunteers helps!
🚘 Mileage reimbursement
📖 Ongoing training
💰 Grant proposal evidence
How do they do what they do, currently?
A CASA volunteer communicates with the youth, parents, health professionals, teachers, and many others.
They take notes and help with reminders and accountability.
There are several supervisors per CASA organization.
They help the volunteer
craft the court report and keep up with the youth's situation.
Volunteers are unpaid but
can sometimes get mileage reimbursements.
The volunteer attends ongoing training on a regular basis.
The volunteer's notes, if they have been submitted to the CASA organization through the supervisor, are
useful contributing documentation when CASA organizations are providing evidence for their usefulness,
like when applying for grants.
Prior art 🎨
SimplyOptima
CasaManager
Salesforce.org (nonprofit)
Paper forms hand-delivered to CASA regional office
Personal email
SMS text message
Fax
There are other software tools that CASA organizations tend to use. We are not competing with them.
Our work complements and coexists with these solutions. Our uniqueness is we are maximally simple for
the volunteer, free, and we work closely with the CASA organizations to implement changes they want.
Volunteer retention
✨ volunteer - supervisor communication 1⃣
📞 Volunteer - Supervisor Communication 2⃣
🚀 VOLUNTEER - SUPERVISOR COMMUNICATION 3⃣
Volunteer retention is very important.
The biggest predictor of volunteer retention is their relationship with their supervisor.
Our goal is to supplement, enhance, and ease that relationship, NOT replace it or distance it.
💎❤ Ruby for Good
A nonprofit writing software (primarily in ruby) for many nonprofits
Human Essentials, Terrastories, Circulate Tool Library for Chicago and beyond, Shelter Assist,
Mutual Aid, Abalone, and others!
Project list rubyforgood.org/our-work/impact
A friendly place to start doing OSS + learn by doing
2 yearly conferences (east/west USA)
Slack rubyforgood.herokuapp.com
What is Ruby for Good? Who are WE? How do WE help?
There have been many Ruby for Good projects- some of the currently active ones include:
Human Essentials, Terrastories, Circulate Tool Library for Chicago and beyond, Shelter Assist, Mutual
Aid, Abalone, and others!
You can see more historical projects at this Impact link.
Ruby for Good want to grow the tech community broader than it otherwise would be,
by helping people in, especially people from groups who are typically unrepresented in the tech
community, and regardless of skill level! Again, regardless of skill level!
We host two yearly events, where people can show up, contribute to one or many projects, hang out and be
social with other contributors, pair program, and feel inspired.
💎❤ Ruby for Good -> CASA
A former Prince George County (MD) CASA volunteer joined Ruby for Good
2019 - I signed up for a conference!
Team lead? Sure! ✅ ("Details TBD")
Assigned to CASA 👍
Planning, UI mockups, DB schema...
2020 surprise 😱 remote 😱 conference 💎❤
How did Ruby for Good and CASA meet up? A former CASA volunteer joined Ruby for Good and said-
hey, I know some people who could use some software...
I came in, in 2019 when I signed up for the conference. I checked the box that said are you willing to
be a Tech Lead- I felt confident. I was assigned to CASA.
We did a lot of planning, stakeholder discussions, UI mockups, database schema design...
Then 2020 came and we had a surprise remote Ruby for Good conference!
It went very well actually thanks to the flexibility of the attendees, and some spreadsheets,
and lots of Zoom breakout rooms for pair programming.
So what did we build?
So what did we build?
So what did we build? Here is our login page.
The photo from CASA marketing- we chose one with only a youth, as a reminder of what we're here for.
The webapp is fully responsive for mobile, so that volunteers can easily use it from whatever device
they have with them, in whatever place they are. We have an Android app which is a thin shell over our
responsive webview.
This is the most important page in the app, where a volunteer enters a case contact.
A case contact is when the volunteer talks to someone about the youth's case.
These categories and contact types are fully customizable for each CASA organization and for each case-
for example, a youth might not have a sibling, so a supervisor would de-select Sibling from the contact
type list for this case, so that the volunteer can look at their contact checklist without distractions.
Contact made means- did they pick up the phone, did they answer the door.
Here is the second half of the most important page, and the most important field on the most important
page, which is notes. Notes in production average 400 - 1000 words. The vast majority of all case
contacts have notes.
When a case contact has been created, you come back to the case details page.
Every button here was a github issue- there are dozens of pull requests showing on this page.
The butterfly emoji is a visual representation of a transition aged youth- i.e. teenaged.
The Court Mandates are front and center- those come from the judge.
Up top, there's a button to generate the court report document.
There is also a button linking to the Emancipation Checklist-
emancipation is where you age out of the foster care system, containing things like- does the youth have
a drivers license? Do they have a place to stay?
A supervisor can send an email reminder to a volunteer through the website. or an in-app notification
Here is where an admin can export a CSV of mileage reimbursement requests,
or use our flexible data exporter to get any data out of the system.
Import is one of the technically trickier parts of the system. It's used for importing all the
supervisors, volunteers, and cases when a new CASA joins the system, and when a new batch of CASA
volunteers complete training, are sworn in, and are assigned to youth cases. They can also be added one
at a time but this is more efficient for streamlining onboarding.
We have a great UI pattern. If you need a user to upload a file in a partiular format, give
them a downloadable file in taht same format for them to follow and fill in. Also very cool, when an
error occurs with a line of an uploaded file here- like a duplicate or invalid data- then the user gets
a downloaded file with line by line errors that they can edit and re-upload.
After importing a volunteer, they can be edited, assigned to a case, assigned to a supervisor.
Our users love our UI because it is simple, and user friendly, and has nothing that they don't
need.
Why do volunteers volunteer?
meta
Why do (our) contributors volunteer?
Job credibility 👩🏽💻
Open Source Software 👨🏽💻
Meet the kind of people 🙋🏻 who put time into helping other people 🙋🏻
(Why do volunteers volunteer?) Why do contributors contribute?
This is on my mind a lot.
Our contributors each have their own reasons. Some themes I see are- they want to learn, they want to
learn by doing. They want to contribute to something, and they want to learn how to contribute to
something. They want to "DO" open source software, because everyone should DO open source software- the
zeitgeist says so, the zeitgeist requires it. All developers know that you should do open source work.
And- our contributors want to meet the kind of people who want to help people.
Theory of maintenance
(my) maintaining is 80% making it easy for OTHER people to do work 💪 🛠
Be a safety net ⚡⚕
So why do maintainers maintain? And how? For me, most of what I do is making it easy for other people to
do work. I love other people doing work.
I like coding, I do it for work and I do it for fun. When I want extra fun I do it for CASA, but that's
not the
core value I provide. The core value that I provide is encouragement and being a safety net.
I say- "It's ok if the PR is bad, if it's really bad I won't merge it. We'll improve it together. You
should open that PR. Ask in slack if you have questions- there's always someone around.
Yes that looks like a bug, you should make an issue for it.
SAAS
🔒 You are holding someone’s data; keep it safe! 😰
⛔🔨🛠 non technical stakeholders
📞 customer support + uptime
What you're not holding, you can't drop
Our non-technical stakeholders and users speak a different language. Having an expert translator is very
useful. This role is often called a PM or analyst.
our priorities
Data safety 🔒
Empower CASA volunteers 💖
Improve CASA organizational efficiency 💖
Help contributors grow skills 🌱
Don’t give the foster youth’s data to people who shouldn’t have it
User friendly to our users, the volunteers, supervisors overviews, and admins to do their job
Healthy open source software first stop (need work to do!).
Be a place where software developers can make their first open source pull request and feel happy about
it. We have to keep a pipeline of work that needs doing in order to serve this need.
What works?
✅ ✅ ✅ ✅ ✅ ✅ ✅
(for us)
Human impact && stakeholder interactions
Cadence and breaks
Ruby for Good Conferences
🎃😱😭🚀
Calendar
Slack
GitHub
Deployment
Code
Fast PR merge
Community
💻🌱
What works? I have a LIST!
This is inspiration, not a guide.
✅ Human impact
Clear & simple causal chain to human impact
Some contributors have a personal connection
Stakeholder contact increases connection
The path between this work and helping someone is a short causal chain and that helps attracts and
retain contributors.
Some contributors are already specifically interested in improving this particular ecosystem.
Others become more invested as they meet our stakeholders and hear about the daily work of our users.
✅ Stakeholder interactions
Regular short check-ins for ideation
Notes doc 2019-present 📝
CASAs talk to each other 🎙
Weekly progress email
Always CC<EMAIL_ADDRESS>Smart typeform bug reporter 💡🐞
YouTube playlists
of product walk-throughs ▶
We talk to our stakeholders regularly to hear about bugs, questions, and desired features.
We usually take notes in slack and drop the highlights into a a shared public doc-
I've been editing and reading the same document since 2019, which is an unusual feeling.
The stakeholders also enjoy sharing best practices with each other and listening to them helps us
understand what they do.
Whenever we send email to stakeholders we try to cc the main casa@rubyforgood account so that nothing
gets trapped in an individual person's inbox and any one contributor is not the only one who knows
something
Another useful technique is a smart bug reporting form made by a previous PM that guides the user to
make a clear bug report and then auto-posts to a private slack channel (because users can type anything
into a form...)
✅ Cadence and breaks
Weekly stakeholder sync
Weekly office hours (same day)
Weekly deploy
Slow/lean times between big events
Having a regular cadence for important tasks makes them easy to remember for everyone.
We skip one now and then for special events.
We have weekly office hours on the same day as the stakeholder sync, which is convenient for
transcribing notes into coherent units of work.
Office hours are casual and social- we usually debug something, and discuss upcoming work and events,
and co-work.
We deploy weekly on friday evenings because frequent deploys are safer than infrequent big deploys, and
if something goes wrong we have more contributors available to take a look at it than during the work
week.
We have chill times between big events which is great- rest periods help with sustainability.
✅ Ruby for Good Conferences
2x / year (east / west coast USA)
New friends!
Speedrun onboarding
Project level deep direction setting
Speaking of big events, Ruby for Good's East coast event happened last week near DC.
At events like these, new joiners pick a project and make great contributions while enjoying
pair programming (optional but popular) and non-coding social events also.
These development sprints help us make enormous progress and set us up for success.
Most contributors choose one project to work on, but some try to get one PR into every project
which is fun too.
✅ Company "offsite" visitors
🏝⛱
"Power Week" with powerhrg.com
Various Ruby for Gooders' entire work teams
Non-developer work is a precious commodity in OSS
Contact<EMAIL_ADDRESS>if you/r team are interested
💪💖
We are also happy to be a destination for companies who want to give back to their community,
and several companies have scheduled a day or a week to have their teams work on external code
as a team activity.
Power Home Remodeling is interesting in that they build a lot of software and they have a lot of
developers, enough to lend every r4g project to get a full team for a week.
If you're interested, email us.
✅ Calendar
To track special events like these and our regular events, we keep a public calendar,
owned by the shared account to prevent access issues as contributors come and go.
And it helps us to reserve time on our stakeholder's schedules to send then calendar invites with zoom
link
✅ Slack
Part of Ruby for Good slack
Active public channel
Channel reminders
Leads private channel
Bot channel (PRs, issues, errors, deploys)
We are part of the ruby for good slack which is great for cross-pollination between projects.
They provide moderation and invite management so we don't have to.
We have an active public channel with channel reminders for our meetings.
We also have a private channel for maintainers and that is also where our bug reporter form outputs.
We have a bot channel for PRs, issues, bugsnag errors, and heroku deploys. It's noisy and a good
heartbeat and historical record.
✅ Continuous Integration
Our continuous integration runs all our tests on every pull request and on the main branch on every new
PR merge. It is split into PARALLEL named build sections- it's convenient to be able to see which small
part failed for fast feedback on a red build. Our CI runs on Github Actions
✅ GitHub
Continuous integration split into named build sections
Dependabot 💖
Project management 📊
Workflows (auto-comment, auto-unassign) via github actions
Wiki
PR templates
Issue templates
PR merging strategy ➡✅😱 (TBC)
Dependabot opens PRs to keep your dependencies up to date, which is much better than ignoring them until
you need to upgrade and something strange broke long ago.
We use github Projects for work management in a vaguely kanban style, and newly created issues auto-add
themselves to the board. It's simple but you can automate it, and it's nice to not need an extra login
for contributors to look at to claim an issue.
Workflows ticket management to comment on and then unassign claimed but inactive issues reduces
repetitive emotional labor. Workflows also auto-tag our new issues
We use github wiki for project-level information on processes and historical record
PR templates and issue templates are great to gently guide contributors to give you essential
information.
✅ GitHub permissions
🔒 Protect your main branch!
🌳 Branches - maintainer-merger convenience
🍴 Forks - more educational
No one should be able to force-push to your main branch. If you really need to, remove the permission
blockage, do the needful, and then put your protective gear back on.
I prefer contributors to branch rather than forking when possible because that makes it easy for a
maintainer to push to a branch to
clean up PR issues pre-merge. In order to enable branching over forking, we give excessive permissions
to contributors who made made a fwe PRs or come to office hours.
However, forking teaches contributors how to contribute in general. Git is one of the hard parts of
getting
started in OSS
Issue Templates
You can tell by the emoji that I have been here!
Building a template is an art
This is built of the best pieces of many excellent artifacts.
We want the minimum that will make for better user contributions.
We want to guide new contributors without discouraging them
✅ Deployment
PR merge -> auto-deploys to QA 🛺
Manual deploy to staging
Manual deploy to prod 🚀
Deploy checklist ✉
Check on DB backups 📀
Check on email health
Heroku teams + pipelines
Heroku scheduler (cron) 🕒
Papertrail (logs) 📄
Bugsnag 🐞
When a PR is merged, it automatically deploys to the QA environment.
Then there is a button in heroku to press to manually deploy to staging, and from there to prod.
Deploying to staging shortly before prod gives us a chance to see migrations and data migrations run
together realistically rather than piecemeal. Because code that deployed together successfully does not
always deploy successfully together.
We have a deploy checklist, which includes checking on db backups and email bounce rates.
We have a few cronjobs to do things like send a monday morning email to each supervisor telling them
everything their volunteers have done that week
✅ Code
Test LOTS
Limit javascript
Readme!
Dependencies: stick to standards, stay basic and picky e.g. devise, pundit, draper,
bootstrap, factorybot, letter_opener, sablon
StandardRB linting
Realistic seed data
Docker or not 🐋
Thin android app for better user experience
We have code. We have lots of tests, because our only defence against ourselves is tests.
A PR without sufficient testing may be merged, but we'll ask the contributor for a follow-up PR with
improvements, or file a chore to add more tests.
To reduce conceptual complexity, we try to minimize our javascript and rely on server-side rendering.
Our readme is very important to help new contributors understand the value and setup flow of the
project.
Minimum configuration, maximum predictability, test everything, value refactoring.
We have a docker development environment, which runs in CI but not everyone uses locally
✅ Fast PR merge!!!
Retention & growth 🌱 📈 ✨
Lead approves, lead merges 💨
Merging deploys, but not to production
Deployment pipeline as safety net ⚽ 🥅
Test LOTS 💯
Fast merging increases contributor stickiness. We need contributor stickiness!
People stick around because they feel their work is valued.
cultural expectation: maintainer approves and merges. Requests changes in follow-up PR or create chore.
Reduces chances of merge conflicts. We started doing it during conferences, and
continued because we like the way it feels. Not all r4g projects do that, just us.
This is extra safe because merging does not equal deploying.
Learning to write new tests is a skill that many new contributors value and want to practice.
Test-only tickets are popular.
this is slide 44
✅ Community
Ruby for Good negotiates for compute resources for *all* projects
Cross-project help squad
Second-order backup for AFK maintainers
r4g is my safety net like I am the contributor's safety net
A big community of technically capable people who can respond to urgent
needs even if they don’t otherwise contribute often (and a way to reach them)
I have a lot of faith in this system because we've used it several times
TODO tune it, repetitive
Keep doing
✅ 💖
Be people at each other
Chill sometimes ☃
Group events! 🎳
Use powerful tools 🛠
Deploy often and carefully 💪
Wary code choices 🔮
Accept PRs joyfully 🙏
Community
✨ 💎 ❤
This is custom advice. It may not apply to your situation.
Hard things
❌ 😰 😭 😱 ❌
(for us)
Need more issues
System edges
Historical records
Testing is hard
Feedback
❓
This is custom advice. It may not apply to your situation.
❌ More issues, please!
Small bites 🍪
2-10 / week
ALL / 3 days (during conferences)
This is a great problem?
Writing issues takes effort
Unlike many other open source projects, the majority of our issues are created by maintainers based on
discussions with stakeholders. Which takes work. We go through a few issues a week during regular weeks,
and we run out of 150+ issue backlogs during big events.
This is a great problem to have, but it is still a problem that we have.
We have a strong contributor appetite for small bites and intro issues.
Write issues for the people who you want to solve the issues- not yourself. When I make an issue for
myself, it says "fix the button on the edit page" but which edit page? Which button? What does fix mean?
❌ System edges - Import
(table-based data)
Volunteers, cases, supervisors, and the linkages between them
Override existing data by unique key? 🔨
De-duplicate duplicate rows? 🤦🏻
Partial error - row 1 succeeds, row 2 fails 🛑 ➡ 🛑 ↩
Row dependencies- row 3 references row 2 and 1. Keep it? ⏭⏮
Display per-row errors 🛠
What do we import? Volunteers, cases, supervisors, and the linkages between them.
Bugs happen around the edges- for us, data imports are a continual struggle even with lots of tests.
Import is easy to do, hard to get right.
❌ System edges - Export
Word documents are hard
User supplied court report template format with header logo (one per CASA organization, + a
default)
User-created data (case contacts)
Slice and dice date-based data
Yay sablon (rubygem)
Stakeholders need Word. Not many contributors have it. Nice formatting in something you can't see is
hard.
❌ Memory
Search Slack history
Search old github issues
Meeting notes doc 2019-present
Wiki
Architectural Decision Records
Verbal history
It's never enough
I don't think we can fix this
All projects have this issue and we do too
❌ What is a good test?
Good testing is a skill not as easy to specify in acceptance criteria as visible functionality
How do you teach good testing?
fill in later? do more of? flakiness, cypress. minimum js because few contributors, turns into a cycle-
no js contrib because little js. avoiding frameworks, leaning hard on erb as much as possible.
❌ Missing-contributor feedback
The people who leave don't say why. Measure what happens . Hear the concerns of the people who
stay
Some people show up one time and leave and we never hear from them again. We will never know what
happened.
Some other people leave the project in the best way- they get a new job, in part from connections and
encouragement and knowledge
Number and lifespan of contributors - ~100 committers in the last year, ~8.5k commits
Never say "if that makes sense."
Working on
📈 💪 😅 🛠
Backlog
System edges 🐉
Future Archaeology
Testing
Contributor feedback
❓
We have lots of fun and interesting work to do. If this work sounds like good work to you, come and
bring your friends and coworkers
💡 Encouraged contributors... 💡
💡 ...become strong contributors 💡
Many of our contributors come in because a friend tells them that we are the kind of project that will
let them work!
Contributors bring Energy. They can Grow knowledge. They can spend their apparently extra time & energy
onboarding even more contributors for you + pitching you to their friends
How do you encourage someone? Say the words "You can do it! You got this! That idea sounds good, please
do it."
📝 A note on purpose
What is your project's purpose?
Improve the world! ✨
What are your contributors' purposes?
OSS skills, job credibility, learn 👩🏽💻
What are your users' purposes?
Serving CASA youth 💪
What is your purpose as a maintainer?
Smooth the path 🛣
What are you here for? What is someone else here for?
Tips 💡
When you want users to upload a spreadsheet, provide a downloadable sample spreadsheet
Use github workflows to automate polite stale issue un-assignment to replace maintainer emotional
labor
PRs that each deployed cleanly may not deploy cleanly together
Word documents save edit history- check for sensitive info before attaching one to a github
issue
spreadsheet
github workflows to automate polite stale issue un-assignment to replace maintainer emotional labor
PRs that each deployed cleanly may not deploy cleanly together
Word doc edit history
to recap...
Multi-level safety nets 🥅⚽✨
Serve stakeholders 📈 and grow contributors 🌱
Strong cadence 📅
Sustainable ♻ maintainership requires rest 💤 and a community 👋 (for me)
Our safety nets are: multiple maintainers, a deployment pipeline, lots of tests, a backing organization
like
ruby for good, cross-talk with other projects. Safety nets allows people to move faster.
Clear priorities reduce total effort. Talk about why you do things like have a deployment pipeline, or
why you have specifically Word docs. Arbitrary decisions and requirements are a transparency problem.
Cadence and breaks are key (for me). Your mileage may vary. Multiple maintainers are great to have.
I hope you have liked this case study.
Send halp
More CASA regional organizations - we're at ~4/900+ We're free and friendly!
PM, QA, design!!! 📊 🐞 🎨
PRs, especially testing & refactoring 🍦
🚲 @goldlindastein
✨
@rubyforgood 💎
<EMAIL_ADDRESS>✨<EMAIL_ADDRESS>Join us on slack!
rubyforgood.herokuapp.com
What I want most is more CASAs on the platform! We are free and friendly and we want to be useful.
If you know someone who is involved in the foster care system we would love an introduction! Please
email us.

Using the UI, finding bugs, asking questions, and opening github issues is wonderful.
And of course we welcome pull requests for new features, bugfixes, testing, and refactoring!
# seed realistic case numbers
@case_number_sequence = 1000
CASE_TYPES = ["CINA", "TPR", ""]
def generate_case_number # format different per region! PG CASA
# CINA-YY-XXXX Child In Need of Assistance
# TPR-YY-XXXX Termination of Parental Rights
years = ((DateTime.now.year - 20)..DateTime.now.year).to_a
yy = years.sample(random: rng).to_s[2..3]
@case_number_sequence += 1
"#{CASE_TYPES.sample(random: rng)}-#{yy}-#{@case_number_sequence}"
end
Case numbers are meaningful. When we show data to our Subject Matter Experts, SMEs, it's important that
the data be realistic because many SMEs are hyper-sensitive to invalid or unrealistic data. For example,
occasionally one of our users points out that in our test data, a case with a number starting in 00
should have emancipated by now, and a case with a YY field of 20 cannot reasonably be a transition aged
youth because they are 1 year old, not a teenager.
Fictive Kin
Fictive Kin – children are placed with an individual, unrelated by birth or marriage, who has personal
or emotional ties with the children or their family prior to the placement (e.g. family friends, school
staff, babysitters, etc.). Someone who is known to, and trusted by, the child(ren).
The Kinship Care and Fictive Kin Reform Act ... allows the Department to place the child with a relative
or individual not related by birth,
adoption, or marriage, but who maintains an emotionally significant relationship with the child.
https://en.wikipedia.org/wiki/Fictive_kinship
https://www.childwelfare.gov/topics/outofhome/kinship
https://www.alec.org/model-policy/the-kinship-care-and-fictive-kin-reform-act/
https://www.cdss.ca.gov/inforesources/foster-care/kinship-care
### What github issue is this PR for, if any?
Resolves #2XXX
### What changed, and why?
### How will this affect user permissions?
- Volunteer permissions:
- Supervisor permissions:
- Admin permissions:
### How is this tested? (please write tests!) 💖💪
### Screenshots please :)
### Feelings gif (optional)
What gif best describes your feeling working on this issue? https://giphy.com/
How to embed:
`![alt text](https://media.giphy.com/media/1nP7ThJFes5pgXKUNf/giphy.gif)`
A balance between too much and too little - too much work vs too little information
What github issue is this PR for, if any? Resolves #2XXX
What changed, and why?
How will this affect user permissions?
How is this tested? (please write tests!) 💖💪
Screenshots please :)
Feelings gif (optional)
Working with Word docs
Not all developers have Word
Google Drive does not render the same
LibreOffice does not render the same
Deleted content is still present- watch out for invisible sensitive data
Not all developers have Word
Google Drive does not render the same
LibreOffice does not render the same
Deleted content is still present- watch out for invisible sensitive data
gem "after_party" # post-deployment tasks
gem "amazing_print" # easier console reading
gem "azure-storage-blob", require: false
gem "bootsnap", ">= 1.4.2", require: false # Reduces boot times through caching; required in config/boot.rb
gem "bugsnag" # tracking errors in prod
gem "devise" # for authentication
gem "devise_invitable"
gem "draper" # adds decorators for cleaner presentation logic
gem "faker" # creates realistic seed data, valuable for staging and demos
gem "filterrific" # filtering and sorting of models
gem "image_processing", "~> 1.12" # Set of higher-level helper methods for image processing.
gem "jbuilder", "~> 2.11" # Build JSON APIs with ease. Read more: https://github.com/rails/jbuilder
gem "lograge" # log less so heroku papertrail quits rate limiting our logs
gem "noticed" # Notifications
We use after_party to run data migrations to backfill data- runs automatically after deploy.
We use amazing_print to have better rails console logging
We use azure to store some files like logos and more in the future
We use devise for authentication + invites
We use draper for decorators- for use in views, like a serializer but for serverside rending
We use faker to genreate test data
We use filterrific for UI filtering in tables
We use noticed for our in-app notifications
gem "paper_trail" # tracking changes
gem "paranoia", "~> 2.2" # For soft-deleting purpose
gem "pg", ">= 0.18", "< 2.0" # Use postgresql as the database for Active Record
gem "puma", "~> 5.4" # Use Puma as the app server
gem "pundit" # for authorization management - based on user.role field
gem "rack-attack" # for blocking & throttling abusive requests
gem "request_store"
gem "sablon" # Word document templating tool for Case Court Reports
gem "skylight" # automated performance testing https://www.skylight.io/
gem "webpacker", "~> 5.4" # Transpile app-like JavaScript. Read more: https://github.com/rails/webpacker
We use paper_trail to track object changes for later audit trails
We use paranoia to prevent deletion of sensitive objects
We use pundit for authorization (what user is allowed to take what action)
We use rack to detect and prevent repeated calls from unexpected IP ranges
We use sablon for generating Word docs
We use skylight for performance tracking
Our maintainer selection
Informal
🛠 Do work ->
🎉 Get invited ->
💪 Get permissions ->
🛠 Do more work ->
😅 [Optional] fade away
💡 ...maybe we should change this?
Our pipeline and safety net- looks a lot like Jenkins if you squint.


--- layout: post title: When you're loosing your marbles...... date: 2010-11-24 11:03:21.000000000 -05:00 categories: - Family Life tags: - Family Life status: publish type: post published: true meta: _edit_last: '1' _wp_old_slug: '' dsq_thread_id: '1188560066' author: login: cint email<EMAIL_ADDRESS>display_name: Jacinta first_name: Jacinta last_name: '' ---
give them to the kids! Well actually, we have had a lovely evening, just had a lot of spare time before bed. I looked at the clock and it was only 5.55pm, we had eaten, kids were in their pjs and teeth were brushed (I somehow gained an hour!). I gave Scarlett some marbles to share with Jairah and before long they were playing beautifully together, putting marbles into cups and emptying them out again. Tenneille joined in too.
The girls went off to trade marbles and I am proud to say, they shared them without any issues. One very happy family indeed! I love these kind of days.


This same Abbot Palladius also related to us that a certain lover of Christ once lived in Alexandria, intensely religious and a giver of alms and a protector of both the poor and of monks.  And they had a single daughter, six years old. Now one day this man wished to sail to Constantinople; for he was a merchant. And he left his wife and son at home with a single servant.  And he replied, saying: "In the care of your holy mistress, the mother of God and virgin, Mary."
 So he took a sword and climbed up from the kitchen to the dining room, where the mother and daughter were. And when he had drawn near to the door to the dining room, this most wicked servant was struck blind, and was helpless to either climb up to the dining room or to go down to the kitchen. But when, after an hour, he had gathered up his strength to enter and could not, he began to call his mistress to come to him. But she fell to astonishment about how he was standing in the middle of the doorway and did not proceed to her. And she told him: "You come to me; for that's what is proper." For she didn't realize that he had become blind. Indeed the servant began the more to call her and to implore her to come and draw near to him. But she swore that she would by no means go to him. And he said: "At least send the girl to me." And the woman replied to him: "Neither the girl nor I will come to you. I already told you, if you want to come, then come; but if not, then stay there." Then he saw that he availed nothing of the things that he had intended to do, and seized the sword and stabbed himself in the guts. But his mistress, when she saw that the wicked servant had done to himself, cried out. When the neighbors heard this they came running, together with the guards, and found him nearly dead but still breathing. And when they asked him why he had done this thing, he confessed before them all what he had wanted to do; and then expired. Then everyone praised God, who had saved the mother and daughter and who saves everyong through the aid of his holy mother. Amen.


Doing leg exercises using weights is a totally different world than the aerobic exercises. You will notice
again a feeling that you thought was forgotten (the laces). If you do not believe it, give it a try and leave us a comment.
Whatever your case, if you notice that during the exercise, there is something that "goes wrong" (for example, you notice that some muscle is being forced way too much, or that your pain in some part of the body that normally does not hurt), we recommend that you stop and finish exercising.


We have a sea of internet traffic, and there be pirates looking for your ports
port and url scanning
Know your friends, close thine commoners and the revolt your enemy
fuzz testing
Dropping the ball
SQL injection
The Good, The Bad and The Very Very Cross
XSS attacks
Crazy horses and warewolves
trojans, malware, hijackware, ransomware, casualwear
Your only as <strong> as your weakest url_for
social engineering and weak link devices


0.7.5
Installable via npm install --save cids
, it can also be used directly in the browser.
The source is available for download from GitHub. Alternatively, you can install using npm:
$ npm install --save cids
You can then require()
cids as normal:
const cids = require('cids')
Cids should work in any ES2015 environment out of the box.
Usage:
<script type="text/javascript" src="index.js"></script>
The portable versions of cids, including index.js
and index.min.js
, are included in the /dist
folder. Cids can also be found on unpkg.com under
Type: Object
The CID as a Buffer
Buffer
:
Get the prefix of the CID.
Buffer
:
Convert to a CID of version 0
.
CID
:
Convert to a CID of version 1
.
CID
:
Encode the CID into a string.
(string
= this.multibaseName
)
Base encoding to use.
string
:
CID(QmdfTbBqBPQ7VNxZEYEj14VmRuZBkqFbiwReogJgS1zR1n)
String
:
Serialize to a plain object.
SerializedCID
:
Compare equality with another CID.
(CID)
bool
:
Test if the given input is a valid CID object. Throws if it is not.
(any)
void
:
Class representing a CID <mbase><version><mcodec><mhash>
, as defined in ipld/cid.
Test if the given input is a CID.
(any)
bool
:
Test if the given input is a valid CID object. Returns an error message if it is not. Returns undefined if it is a valid CID.
(any)
string
:


|
||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object com.gracenote.gnsdk.GnAssetFetch
public class GnAssetFetch
Experimental: Fetch asset raw data. The raw data is fetched during object construction and may result in lengthy network access if accessing from online.
| Constructor Summary | |
|---|---|
GnAssetFetch(GnUser user,
java.lang.String url)
|
|
GnAssetFetch(GnUser user,
java.lang.String url,
IGnStatusEvents pEventHandler)
Perform the fetch of the data from the provided URL. |
| Method Summary | |
|---|---|
byte[] |
data()
Raw data buffer |
void |
delete()
|
IGnStatusEvents |
eventHandler()
Get the event handler provided on construction |
long |
size()
Raw data size in bytes |
| Methods inherited from class java.lang.Object |
|---|
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Constructor Detail |
|---|
public GnAssetFetch(GnUser user, java.lang.String url, IGnStatusEvents pEventHandler) throws GnException
GnException
public GnAssetFetch(GnUser user, java.lang.String url) throws GnException
GnException
| Method Detail |
|---|
public void delete()
public byte[] data()
public long size()
public IGnStatusEvents eventHandler()
|
||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |


Light years, star stuff harvesting star light not a sunrise but a galaxyrise across the centuries stirred by starlight globular star cluster worldlets inconspicuous motes of rock and gas extraplanetary, Orion's sword take root and flourish Flatland shores of the cosmic ocean, realm of the galaxies at the edge of forever another world. From which we spring colonies. Something incredible is waiting to be known! Apollonius of Perga network of wormholes venture science another world galaxies.


{% extends "base.html" %} {% block content %}
Sílvia Pinto Bachmann
Philipp Vítor
Manuela Milheiro
We have been enthusiastically teaching for many years in Hamburg: at the VHS Hamburg, at other language schools and in private classes. During that time we have gotten to know many people, as well as their motives for learning Portuguese and their needs along the way.
We see ourselves as companions on an exciting journey and also as a bridge between people of different backgrounds, cultures and countries.
Listening and understanding is always an essential skill when learning a language, but even more so in Portuguese because pronunciation is especially challenging.
From this development and the desire to provide our participants and everyone with something of high quality, Acoustic Portuguese was born.


See: Description
| Interface | Description |
|---|---|
| QueryNodeListener |
Objects that want to be notified of changes to the Query Model structure
have to implement this interface.
|
| Selection |
A selection of members from an OLAP dimension hierarchy.
|
| Class | Description |
|---|---|
| Query |
Base query model object.
|
| QueryAxis |
An axis within an OLAP
Query . |
| QueryDimension |
Usage of a dimension for an OLAP query.
|
| QueryEvent |
Describes which changes were performed to the query model.
|
| Enum | Description |
|---|---|
| LimitFunction |
Defines the function used to limit an optionally sorted set.
|
| QueryDimension.HierarchizeMode |
Defines in which way the hierarchize operation
should be performed.
|
| QueryEvent.Type |
Describes the nature of the event.
|
| Selection.Operator |
Defines which selection operators are allowed, relative to
a root member.
|
| SortOrder |
Defines in what order to perform sort operations.
|
NOTE: This package is experimental. Classes may be renamed or removed in a future release of olap4j.


{% extends "global/Page.html" %} {% load otree static %} {% block title %} Task 1: Instructions {% endblock %} {% block content %}
Task 1 consists of three rounds. Your earnings from Task 1 comprises the points you received during one of the three rounds. The round that determines your points from Task 1 is randomly chosen at the end of the experiment.
In the each round, you have 3 minutes to solve problems. Each problem consists of adding three two-digit numbers. For each problem you solve correctly, you will receive {{Constants.bonus_per_round}} point. Incorrect answers do not affect your earnings.
Please try to solve as many problems as you can.
Below you can see an example of a problem screen:
You can enter your result in the box and then click the Next button to confirm your answer. During the task, after you click the Next button, a new problem will appear.
Once you submit your answer by clicking on “Next”, you cannot go back to the previous problem.
The remaining time will be displayed in the upper left corner of the screen.
You will never learn whether your answers were correct or how many problems you answered correctly, neither during nor after the round.
Please raise your hand if you have any questions, an experimenter will come to your desk.
When you press the Next button, round 1 will start.


Copyright (c) 2018 The Apache Software Foundation
Copyright (c) 2001-2018 The Apache Software Foundation. All Rights Reserved.
Copyright (c) 2001-2018 The Apache Software Foundation. All Rights Reserved.
Copyright 2013 Jake Wharton
Copyright 2013 Square, Inc.
Copyright (c) 2016-present, RxJava Contributors
Copyright 2015 The RxAndroid authors
Copyright (C) 2015 Jake Wharton
Copyright 2016 The RxKotlin authors
Copyright (C) 2015 Thomas Bruyelle


Description
Hello World 1 is the typical hello world program that is intentionally trivial to show the basics of what is needed to get started. This particular implementation uses the IFrameWindow, IStaticText, and IApplication classes to create a typical desktop window that contains the text "Hello World". You can interact with the program only by using frame window functions, for instance, minimize, maximize, and close.
Concept
Sample program demonstrates a simple graphical application.
Task
Stretch and resize the application frame. The text remains centered in the client area.
Supported
Supported
Supported


Health check configuration let you enable or disable health check service, set a frequency rate, choose an health relative path and
provide some assertions to control endpoint API's health.
By enabling health-check, all non-backup endpoints will be checked except if health-check is disabled at endpoint level.


Chart.js plugin to defer initial chart updates until the user scrolls and the canvas appears inside the viewport, and thus trigger the initial chart animations when the user is likely to see them.
Requires Chart.js 2.6.0 or later.
new Chart(ctx, {
// ... data ...
options: {
// ... other options ...
plugins: {
deferred: {
xOffset: 150, // defer until 150px of the canvas width are inside the viewport
yOffset: "50%", // defer until 50% of the canvas height are inside the viewport
delay: 500, // delay of 500 ms after the canvas is considered inside the viewport
},
},
},
});
You first need to install node dependencies (requires Node.js):
The following commands will then be available from the repository root:
> npm run build // build dist files
> npm run build:dev // build and watch for changes
> npm run lint // perform code linting
> npm run lint -- --fix // automatically fix linting problems
> npm run docs // generate documentation (`dist/docs`)
> npm run docs:dev // generate documentation and watch for changes
> npm run package // create tgz and zip archives with dist files
chartjs-plugin-deferred
is available under the MIT license.


Personal
Experience leading remote teams for large-scale projects with overlapping deadlines
New York City
- 3 years in sales
- Currently studying coding remotely
10 years in China
- 2 years in conference management
- 10 years in non-profit marketing and finance


FRIED GREEN TOMATOES A film review by Frank Maloney Copyright 1992 Frank Maloney
FRIED GREEN TOMATOES is a film by Jon Avnet, from a novel by Fannie Flagg. The film stars Kathy Bates, Jessica Tandy, Mary-Louise Parker, Mary Stuart Masterson, with a special appearance by Cicely Tyson.
FRIED GREEN TOMATOES is more like STEEL MAGNOLIAS than THELMA AND LOUISE in its setting, intentions, ensemble casting, and effect. It is a film about the friendships of women, specifically two women of the film's now, Kathy Bates and Jessica Tandy, and two women of the film's post-WW I then, Mary-Louise Parker and Mary Stuart Masterson. It is their friendships that allow these women to survive, and flourish in their own ways, their times and their male-dominated worlds. But unlike THELMA & LOUISE, there nothing of the overt rebellion and the final joyous-violent withdrawal. These women, these Southern women, mean to survive and persist, not rebel and die.
In terms of its effect on this audience of one, FRIED GREEN TOMATOES is not the radicalizing experience THELMA & LOUISE was last spring. FRIED GREEN TOMATOES is basically a comedy of manners that has nothing new to say about women, the South, or anything else. Its message is hackneyed, but may be somewhat empowering to some, and certainly uplifting for most. This is a feel-good laugher-weeper. But it is not going to threaten men the way THELMA & LOUISE did, and does.
Like STEEL MAGNOLIAS, the real strength of FRIED GREEN TOMATOES is not the story, but the cast. And the cast is wonderful. Kathy Bates, a ineffectual, class-going, 40-ish, overweight, unliberated, unsatisfied Evelyn, thrashing about for ways to refire her nearly hopeless husband and their moribund marriage, looks and comes across like a Bette Midler without the hand-waving. Her life is transformed as she get acquainted with Jessica Tandy's nursing-home character Ninny Threadgoode and gets drawn into her stories about Ruth (Mary Stuart Masterson) and her sister Idgie, the unconventional and free-thinking, pants-wearing, permanent tomboy.
Evelyn's story is mostly comedy, whereas the stories of Ruth and Idgie are high melodrama for the most part. This creates a certain dramaturgic schizophrenia, and undermines the importance of Evelyn's story, relatively unexceptional as it is. I'm assuming that Ninny is Idgie's older sister, but the film annoyingly hints time and again that she might be Idgie herself. This is one of several vague points that first-time director Avnet indulges himself in, to no good effect.
Jessica Tandy is a national treasure and with each performance becomes even better. In DRIVING MISS DAISY, she gave a finely tuned portrait of a Southern Jewish woman over a long and tumultuous period in history; it is hard to imagine anyone surpassing that performance. But she may have done so as Ninny, the ancient rememberer of vanished times, town, and people, who at first seems a little senile. But we get to understand her and love her at exactly the same pace that Evelyn does. Ninny is an 81-year-old who is not afraid of death and who is still fascinated by life and the dynamics of friendship.
Mary-Louise Parker plays Ruth, the good, conventional, nurturing woman whose life is saved by the friendship of Idgie. Parker plays Ruth with an admirable and delicate blend of strength and frailty. There is something Parker does with her upper lip and nostrils, something we saw a little of in GRAND CANYON, that completely conveys pain and willingness to survive the pain.
Mary Stuart Masterson is Idgie, who manages to avoid mannish caricatures even while being a woman who has rejected conventional femininity. It seemed pretty obvious to me that Idgie was a lesbian who loved Ruth, but somehow in the movie Ruth never seems to catch on. The latter has occasion several time to suggest that Idgie will be happy when she "settles down," even though Idgie tells Ruth "I'm as settled down as I'm ever going to be." About this and about the Idgie-Ruth relationship in general, the film seems unnecessarily coy and vague.
All in all, I think FRIED GREEN TOMATOES is pretty good flick. It's manipulative and presses all the emotional buttons with a slightly heavy touch. It makes mandatory passes at all the Southern Themes -- racism, the Klan, decay, Southern men, the plight of the black people, corruption, -- but they are strictly for the record and are not particularly heartfelt. The value of friendship, of women's friendships, specifically, is heartfelt and sincere, the sure moral center of the movie. FRIED GREEN TOMATOES has its faults, but it does some have excellences, too, the acting not being the least of them.
Therefore, I recommend that you see FRIED GREEN TOMATOES at a bargain matinee. If it really clicks for you, you can take what you save on the first ticket and apply it to the next.
-- Frank Richard Aloysius Jude Maloney .
The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews


 Please, wipe your spectacles with alcohol or spirit and carefully kick PC with hammer 3 times.');  })(); });
Bad Error - route to throw some really vicious error, that cannot be catch by error reporter middleware, but will be catch by domain, and will not stop the HuntJS.


Dashboard
| Guests Attending / Possible |
{{ guests }} / {{ possible_guests }} |
| Pending Invitations |
{{ pending_invites }} ({{ pending_guests }} guests) |
| Unopened Invitations |
{{ unopened_invite_count }} / {{ total_invites }} |
| Not Coming |
{{ not_coming_guests }} |
Guests by category
{% for category in category_breakdown %}
| {{ category.party__category }} |
{% endfor %}
{% for category in category_breakdown %}
| {{ category.count }} |
{% endfor %}
Meal choices
{% for meal in meal_breakdown %}
| {{ meal.meal }} |
{% endfor %}
{% for meal in meal_breakdown %}
| {{ meal.count }} |
{% endfor %}
Unopened Invitations
{% with party_list=parties_with_unopen_invites %}
{% include "guests/partials/party_list.html" %}
{% endwith %}
Open Unresponded Invitations
{% with parties_with_open_unresponded_invites as party_list %}
{% include "guests/partials/party_list.html" %}
{% endwith %}
Attending Guests Without Meals
{% with guest_list=guests_without_meals %}
{% include "guests/partials/guest_list.html" %}
{% endwith %}
{% endblock %}


Events Calendar
<<
April 2019
>>
| Sunday | Monday | Tuesday | Wednesday | Thursday | Friday | Saturday |
|---|---|---|---|---|---|---|
1 |
2 |
4 |
5 |
6 |
||
7 |
8 |
10 |
11 |
12 |
13 |
|
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
Upcoming Events
Welcoming Spring Campfire
April 3, 2019 at 6pm
Hey friends! Get your family together for our Spring welcoming celebration! We are planning a barbeque on the beach and hope that you can make it! Please RSVP!


Installation¶
The installation of subTOM is relatively straight-forward. subTOM is currently only built for 64-bit linux computers, with no plans currently to produce builds for Windows or Mac.
git clone /net/dstore2/teraraid/dmorado/software/subTOM
cd subTOM
chmod u+x install.sh
./install.sh <INSTALL_DIR> <MCR_DIR>
Since subTOM is written in Matlab, having a license to use Matlab is preferable, and makes some tasks simpler, while also allowing for doing your own scripting with the TOM toolbox. However, the effort has been made to make sure that the pipeline can run as a whole using only the Matlab Compiler Runtime, which is freely available software, and can be found here:
https://uk.mathworks.com/products/compiler/matlab-runtime.html
subTOM is currently built against the 2021b/v911 MCR so that is the one that you need to have downloaded and have access to.
At the LMB we have the MCR already installed at
/lmb/home/public/matlab/jbriggs
, which you can use for your installation.
subTOM is also distributed like most software nowadays as a Git repository, so if you do not have Git you can find out how to install and use Git here:
Step-by-Step Instructions¶
From the directory in which you want to install subTOM clone the repository.
git clone /net/dstore2/teraraid/dmorado/software/subTOM
Change into the newly created subTOM directory.
cd subTOM
Make the installation script user-executable, so that you can run it.
chmod u+x install.sh
Run the install script specifying the installation directory and the directory that contains the MCR installation.
./install.sh <INSTALL_DIR> <MCR_DIR>
example
./install.sh /net/dstore2/teraraid/dmorado/software/subTOM /lmb/home/public/matlab/jbriggs
Building¶
If you have access to the MATLAB compiler you can also build subTOM from the source simply following the steps here, beginning in the subTOM installation directory:
cd src
Edit
subtom_mcc_build.m
and change the top three variables to point correctly at:The subTOM source directory
The root folder of the TOM Toolbox
The path to the MATLAB Toolbox directory * The Statistics and Machine Learning Toolbox is needed for subtom_cluster
Run
subtom_mcc_build.m
in MATLAB and it should correctly compile all neccessary functions and place them in the correct locations.If you run into an issue with a MEX-function in TOM toolbox (such as tom_rotate), then you can recompile such a function with the command
mex -R2018a <filename>
and then recompile subTOM.


Home
GitHelp
Volunteer!
Our Team
Institutions
Darker
Brighter
Font Size
Pick the service you want to provide
Select the type of service
Name
Location & Building No.
Date and Time
Details
Phone number
Volunteer
Thanks for Volunteering
Name
*
Phone number
*
Required
*


2Expenditure shocks (such as for medical needs, or to repair a broken automobile) are usually treated in a manner similar to labor income shocks. See Merton (1969) and Samuelson (1969) for a solution to the problem of a consumer whose only risk is rate-of-return risk on a ﬁnancial asset; the combined case (both ﬁnancial and nonﬁnancial risk) is solved below, and much more closely resembles the case with only nonﬁnancial risk than it does the case with only ﬁnancial risk.


This data will allow for population estimates of the selected steriod hormones and related binding protein that can be used to assist in disease diagnosis, treatment, and prevention of disease such as, Polycystic Ovary Syndrome (PCOS), androgen deficiency, cancer, and hormone imbalances in children. An estimated 5 to 7 million women in the United States (U.S) suffer with the effects of PCOS; and PCOS can occur in girls as young as 11 years old. PCOS is the most common hormonal disorder among women of reproductive age and is the leading cause of infertility. Androgen deficiency such as hypogonadism is associated with a range of chronic diseases. The prevalence of symptomatic androgen deficiency in men between 30 and 79 years of age is estimated to be 5.6% (Araujo et al, 2007). Androgen deficiency in men and excess in women and the associated chronic diseases are a public health concern. Estradiol is the key biomarker for assessing reproductive function in females, including amenorrhea, infertility, and menopausal status. Estradiol levels decline greatly with age, and this decrease is associated with increased risk for cardiovascular disease, cognitive impairment, and bone fractures in older populations. Estrogen hormone therapy, or use of estradiol as a supplement, raises health concerns related to estradiol concentration in blood such as elevated levels in postmenopausal women increasing the risk of breast cancer.
Testosterone
Testosterone is the most important adrogenic steroid that has an anabolic effect in humans. It is synthesized in the testes of the male, and in much smaller amounts, in the ovary of the female, and in the adrenal gland of both female and male. In human males, testosterone plays a key role in the development of male reproductive tissues, such as the testis and prostate, as well as promoting secondary sexual characteristics, such as increased muscle and bone mass, and the growth of body hair. The secretion of testosterone is regulated by luteinizing hormone (LH), and is subject to negative feedback via the pituitary and hypothalamus. Most of the circulating testosterone is bound to carrier proteins (sex hormone-binding globulin [SHBG], and albumin ). In women, ncreased production of testosterone can cause hirsutism and virilization (depending on the increase). The determination of testosterone in the female is helpful in the evaluation of cengenital adrenal hyperplasia, PCOS, and when an ovarian tumor, adrenal tumor, adrenal hyperplasia, or ovarian insufficiency is suspected. Testosterone is determined in men when reduced testosterone production is suspected, e.g., in hypogonadism, estrogen therapy, chromosome aberrations (as in the Klinefelter’s syndrome) and liver cirrhosis.
Sex hormone-binding globulin (SHBG)
Sex hormone-binding globulin (SHBG) is the blood transport protein for androgens and estrogens. SHBG has a high binding affinity to dihydrotestosterone (DHT), medium affinity to testosterone and estradiol, and only a low affinity to estrone, dehydroepiandrosterone (DHEA), androstendione, and estriol. Albumin, which exists in far higher concentrations than SHBG, also binds sexual steroids – although with a clearly lower binding affinity (e.g. about 100 times lower for testosterone). Its synthesis and secretion are regulated by estrogen (Burger,et al., 2002; Davis, et al. , 2001). SHBG serum concentrations depend on the extent, duration, and the kind of estrogen applied, and how regulation takes place. In the serum, SHBG mainly takes over the transportation of steroids and the reduction/regulation of the effect of androgen (Rosner, et al. 1999; Burger, et al. 2002). Decreased SHBG serum levels are associated with conditions where elevated androgen levels are present or where the effect of androgen on its target organs is excessive. This explains the gender-related differences seen between men and women, especially during puberty.
Measurement of SHBG can be an important indicator of an excessive/chronic androgenic action where androgen levels are normal, but where clinical symptoms would seem to indicate androgen in excess. SHBG is a useful supplementary parameter in the determination of androgen where a relatively high concentration of free androgen (e.g. testosterone) is suspected (Pugeat, et al. 1996).
Elevated SHBG levels can be seen in elderly men, and are often found in patients with hyperthyroidism, cirrhosis of the liver, and some polymorphisms in the SHBG gene (Bhasin, et al 2018). SHBG levels also increase when oral contraceptives, estrogen or antiepileptic drugs are taken. Pregnant women have markedly higher SHBG serum concentrations due to their increased estrogen production.
Decreased SHBG concentrations are often seen with hypothyroidism, polycystic ovarian syndrome (PCOS), obesity, hirsutism, elevated androgen levels, alopecia, acromegaly, and some polymorphisms in the SHBG gene.
Estrogens
Estrogens are responsible for the development of the secondary female sex characteristics. Together with progestogens they control all the important female reproductive processes. The biologically most active estrogen is 17 ß-estradiol. Estrogens are produced primarily in the ovary (follicle, corpus luteum), but small quantities are also formed in the testes and in the adrenal cortex, as well as fat cells. During pregnancy, estrogens are mainly formed in the placenta. About 98% of estradiol is bound to transport proteins (SHBG and albumin). Estrogen secretion has two surges during the menstrual cycle. The determination of estradiol is utilized clinically in the elucidation of fertility disorders in the hypothalamus-pituitary-gonad axis, gynecomastia, estrogen-producing ovarian and testicular tumors and in hyperplasia of the adrenal cortex. Further clinical indications are the monitoring of fertility therapy and determining the time of ovulation within the framework of in vitro fertilization (IVF).
Examined participants aged 6 years and older were eligible.
Testosterone and estradiol are preformed via isotope dilution liquid chromatography tandem mass spectrometry (ID-LC-MS/MS) method for routine quantitation of serum total testosterone and estradiol based on the National Institute for Standards and Technology’s (NIST) reference method. This method was optimized for higher sample throughput and certified by CDC Hormone Standardization Program (HoSt) (Zhou, et al, 2017).
This method employs Liquid-Liquid extraction (LLE) of serum to isolate the steroid. Stable Isotope-labeled testosterone and estradiol are used as an internal standard to correct for sample recovery during the sample preparation process. The method is standardized through CDC’s HoSt program.
SHBG is based on the reaction of SHBG with immuno-antibodies and chemo-luminescence measurements of the reaction products that occurs after two incubation periods and subjecting to a magnetic field. The microparticles are captured on an electrode, where a chemiluminescent reaction occurs and can be measured by a photomultiplier tube. The readings are compared to an instrument- and lot-specific calibration curve.
Refer to the Laboratory Method Files section for a detailed description of the laboratory methods used.
There were no changes to the lab method, lab equipment, or lab site for this component in the NHANES 2015-2016 cycle.
Total Estradiol and Total Testosterone (November 2018)
Sex Hormone-Binding Globulin (November 2018)
Serum samples are processed, stored, and shipped to the Division of Laboratory Sciences, National Center for Environmental Health, Centers for Disease Control and Prevention, Atlanta, GA for analysis.
Detailed instructions on specimen collection and processing are discussed in the NHANES Laboratory Procedures Manual (LPM). Vials are stored under appropriate frozen (–30°C) conditions until they are shipped to National Center for Environmental Health for testing.
The NHANES quality assurance and quality control (QA/QC) protocols meet the 1988 Clinical Laboratory Improvement Act mandates. Detailed QA/QC instructions are discussed in the NHANES LPM.
Mobile Examination Centers (MECs)
Laboratory team performance is monitored using several techniques. NCHS and contract consultants use a structured competency assessment evaluation during visits to evaluate both the quality of the laboratory work and the quality-control procedures. Each laboratory staff member is observed for equipment operation, specimen collection and preparation; testing procedures and constructive feedback are given to each staff member. Formal retraining sessions are conducted annually to ensure that required skill levels were maintained.
Analytical Laboratories
NHANES uses several methods to monitor the quality of the analyses performed by the contract laboratories. In the MEC, these methods include performing blind split samples collected during “dry run” sessions. In addition, contract laboratories randomly perform repeat testing on 2% of all specimens.
NCHS developed and distributed a quality control protocol for all the contract laboratories, which outlined the use of Westgard rules (Westgard, et al. 1981) when running NHANES specimens. Progress reports containing any problems encountered during shipping or receipt of specimens, summary statistics for each control pool, QC graphs, instrument calibration, reagents, and any special considerations are submitted to NCHS quarterly. The reports are reviewed for trends or shifts in the data. The laboratories are required to explain any identified areas of concern.
All QC procedures recommended by the manufacturers were followed. Reported results for all assays meet the Division of Environmental Health Laboratory Sciences’ quality control and quality assurance performance criteria for accuracy and precision, similar to the Westgard rules (Caudill, et al. 2008).
The data were reviewed. Incomplete data or improbable values were sent to the performing laboratory for confirmation.
Refer to the 2015-2016 Laboratory Data Overview for general information on NHANES Laboratory Data.
Demographic and Other Related Variables
The analysis of NHANES laboratory data must be conducted using the appropriate survey design and demographic variables. The NHANES 2015-2016 Demographics File contains demographic data, health indicators, and other related information collected during household interviews as well as the sample design variables. The recommended procedure for variance estimation requires use of stratum and PSU variables (SDMVSTRA and SDMVPSU, respectively) in the demographic data file.
The Fasting Questionnaire File includes auxiliary information such as fasting status, length of fast, and the time of venipuncture.
This laboratory data file can be linked to the other NHANES data files using the unique survey participant identifier (i.e., SEQN).
Detection Limits
The detection limits were constant for all of the analytes in the data set. Two variables are provided for each of these analytes. The variable named ended “LC” (ex., LBDTSTLC) indicates whether the result was below the limit of detection: the value “0” means that the result was at or above the limit of detection, “1” indicates that the result was below the limit of detection. The other variable prefixed LBX (ex., LBXTST) provides the analytic result for that analyteFor analytes with analytic results below the lower limit of detection (ex., LBDTSTLC=1), an imputed fill value was placed in the analyte results field. This value is the lower limit of detection divided by the square root of 2 (LLOD/sqrt[2]).
The lower limit of detection (LLOD) for LBXTST, LBXEST and LBXSHBG are:
|
Variable Name |
SAS Label |
LLOD |
|
LBXTST |
Testosterone, total (ng/dL) |
0.75 ng/mL* |
|
LBXEST |
Estradiol (pg/mL) |
2.994 pg/mL** |
|
LBXSHBG |
SHBG (nmol/L) |
0.800 nmol/L |
* Multiply by 0.0347 to convert to SI unit nmol/L
** Multiply by 3.67 to convert to SI unit pmol/L
Total testosterone data in the 2015-2016 survey cycle were measured using the same method as in 2013-2014. For analysis involving 2015-2016 testosterone data and data collected prior to the 2013-2014 cycle, please refer to the documentation accompanying the 2013-2014 sex steroid hormone dataset (TST_H) for additional adjustments.
Please refer to the NHANES Analytic Guidelines and the on-line NHANES Tutorial for further details on the use of sample weights and other analytic issues.
| Code or Value | Value Description | Count | Cumulative | Skip to Item |
|---|---|---|---|---|
| 0.53 to 2000 | Range of Values | 7207 | 7207 | |
| . | Missing | 814 | 8021 |
| Code or Value | Value Description | Count | Cumulative | Skip to Item |
|---|---|---|---|---|
| 0 | At or above the detection limit | 7181 | 7181 | |
| 1 | Below lower detection limit | 26 | 7207 | |
| . | Missing | 814 | 8021 |
| Code or Value | Value Description | Count | Cumulative | Skip to Item |
|---|---|---|---|---|
| 2.114 to 14000 | Range of Values | 7150 | 7150 | |
| . | Missing | 871 | 8021 |
| Code or Value | Value Description | Count | Cumulative | Skip to Item |
|---|---|---|---|---|
| 0 | At or above the detection limit | 6060 | 6060 | |
| 1 | Below lower detection limit | 1090 | 7150 | |
| . | Missing | 871 | 8021 |
| Code or Value | Value Description | Count | Cumulative | Skip to Item |
|---|---|---|---|---|
| 4.81 to 1031 | Range of Values | 6959 | 6959 | |
| . | Missing | 1062 | 8021 |
| Code or Value | Value Description | Count | Cumulative | Skip to Item |
|---|---|---|---|---|
| 0 | At or above the detection limit | 6959 | 6959 | |
| 1 | Below lower detection limit | 0 | 6959 | |
| . | Missing | 1062 | 8021 |


Final Project
Table of Contents:
- Deadline
- Introduction
- Part 1: Intro to GTSAM
- Part 2: SLAM Implementation
- Implementation Overview
- Submission Guidelines
- Collaboration Policy
## Deadline
11:59:59PM, Tuesday, December 18, 2018
- This is a strict deadline– we will not accept late submissions, with of without late days.
Submissions made by 11:59PM December 10 will receive extra credit equal to 25% of their grade on
the project.
## Introduction
Factor graphs are graphical models that are well suited to modeling complex estimation problems such as Simultaneous Localization and Mapping (SLAM) or Structure from Motion (SfM). You might be familiar with another often used graphical model, Bayesian Networks [1]. Unlike Bayesian Networks, which are directed acyclic graphs (DAG), factor graphs are bipartite graphs consisting of factors connected to variables. Variables represent the unknown random variables and factors represent probabilistic information on those variables, derived from measurement or prior knowledge.
In this project, you’ll implement a Bayesian Network-based solution to SLAM, an estimation problem that’s ubiquitous in robotics. You’ll first familiarize yourself with the algorithm in a simplified setting, before diving into the full problem. Both our “toy problem” and your project are based on the GTSAM[2] (“Georgia Tech Smoothing and Mapping”) toolbox which can be downloaded from this link.
It’s surprising how effectively the factor graph-based frameworks can solve a problem as complex as SLAM (where they provide state-of-the-art performance). Excited already?
For more details about the homework refer to the relevant course notes.
## Part 1: Intro to GTSAM
To help you familiarize yourself with GTSAM and its application to SLAM, we’ve implemented a “toy example” application. Find it here. We highly recommend that you install and run it, and gain an understanding of how the code works, before moving on to the rest of the project.
## Part 2: SLAM Implementation
Now that you’re familiar with how GTSAM can be applied to SLAM in the 2D setting, you’re ready to implement it yourself– in 3D!
We’ve recorded some videos from the perspective of a small drone. Your task is to build a map based on the observation measurements the drone makes.
You’ll use data from the DataMapping.mat
file to build a map and localize your robot on the map (Simultaneous Localization and Mapping) using the GTSAM package.
The Environment
The provided data for this phase was collected with a hand-held SLAMDunk sensor module [3] (shown in Fig. 1), manufactured by Parrot R , simulating flight patterns over a floor mat of AprilTags [4] each of which has a unique ID.
The data contains the rectified left camera images, IMU data, SLAMDunk’s pose estimates, AprilTag [4] detections with tag size and camera intrinsics and extrinsics. All units are in m, rad, rads^1 and ms^2 if not specified.
Camera Intrinsics and Extrinsics are given specifically in CalibParams.mat
and has the following parameters:
K
has the camera intrinsics (assume that the distortion coefficients in the radtan model
are zero).TagSize
is in size of each AprilTag in meters.qIMUToC
has the quaternion to transform from IMU to Camera frame (QuaternionW
,
QuaternionX
,QuaternionY
,QuaternionZ
).TIMUToC
has the translation to transform from IMU to Camera frame(TransX
,TransY
,
TransZ
).
The .mat
file for any of the sequence (in the format DataNAME OF SEQUENCE.mat
for e.g., DataSquare.mat
where Square is the sequence name) will contain the following data:
DetAll
is a cell array with AprilTag detections per frame. For e.g., frame 1 detections can be extracted asDetAll{1}
. Each cell has multiple rows of data. Each row has the following data format:[TagID, p1x, p1y, p2x, p2y, p3x, p3y, p4x, p4y]
- Here
p1
is the left bottom corner and points are incremented in counter-clockwise direction, i.e., thep1x
,p1y
are coordinates of the bottom left,p2
is bottom right,p3
is top right, andp4
is top left corners (Refer to Fig. 2).
You will use the left bottom corner (p1) of Tag 10 as the world frame origin with positive X being direction pointing from p1 to p2 in Tag 10 and positive Y being pointing from p1 to p4 in Tag 10 and Z axis being pointing out of the plane (upwards) from the Tag.
- Here
IMU
is a cell array where each row has the following data:[QuaternionW, QuaternionX, QuaternionY, QuaternionZ, AccelX, AccelY, AccelZ, GyroX, GyroY, GyroZ, Timestamp]
- You do not need the IMU readings for this project, however, if you find a creative way to use it, please feel free to use it.
LeftImgs
is a cell array where each cell is a Image.TLeftImgs
is the Timestamps forLeftImgs
. For e.g.LeftImgs{1}
was collected
at timeTLeftImgs(1)
.Pose
is an array with each row in the form:[PosX, PosY, PosZ, QuaternionW, QuaternionX, QuaternionY, QuaternionZ, EulerX, EulerY, EulerZ, Timestamp]
- Here ZYX Euler angle was used which is the default for Matlab’s
quat2eul
function.
Download the starter code and data here
Code
The starter code can be found in the code folder. There are two .m files in the folder:
SLAMUsingGTSAM.m
and Wrapper.m
. Your SLAM implementation goes in SLAMUsingGTSAM
(you may also use helper functions in additional files). The script Wrapper.m
is given for your debugging only.
The input and output for the SLAMUsingGTSAM
are given in the “Environment” section above. The SLAMUsingGTSAM
function has two return
arguments, LandMarksComputed
and AllPosesComputed
:
LandMarksComputed
is an array of landmark locations.- Each row is of the form
[TagID, p1x, p1y, p2x, p2y, p3x, p3y, p4x, p4y]
. - Note that the rows have to be sorted in ascending order by TagIDs.
- Each row is of the form
AllPosesComputed
is an array of 6DOF poses.- Each row gives the pose measurement at a single camera timestep.
- Each row is of the form
[PosX, PosY, PosZ, Quaternion, QuaternionX, QuaternionY, QuaternionZ]
.- (We use quaternions because euler angles flip near singularity conditions– similar to the ones we are operating in.)
Please note:
- Do NOT add any subdirectories.
- Comment out any visualization code or debug print statements before submitting.
## Submission Guidelines
We will deduct points if your submission does not comply with the following guidelines.
Please submit the project once for your group – there’s no need for each member to submit it.
File tree and naming
Your submission on Canvas must be a zip file, following the naming convention YourDirectoryID_proj4.zip. For example, xyz123_proj4.zip. The file must have the following directory structure:
YourDirectoryID_proj4.zip/
code/
SLAMusingGTSAM.m
- *(any dependencies of
SLAMusingGTSAM.m
)
report.pdf
Report
You will be graded primarily based on your report.
Logistics and bookkeeping you must include at the top of your report:
- The name of each group member.
- A brief (one paragraph or less) description of what each group member contributed to the project.
You must include output plots of the landmarks in 3D with the camera poses/localization, as shown in
the example below.
We want you to demonstrate an understanding of the concepts involved in the project, and to show the output produced by your code.
Assume that we’re familiar with the project, so you don’t need to spend time repeating what’s already in the course notes. Instead, focus on any interesting problems you encountered and/or solutions you implemented.
As usual, your report must be full English sentences, not commented code. There is a word limit of 1500 words and no minimum length requirement.
## Collaboration Policy
We encourage you to work closely with your groupmates, including collaborating on writing code. With students outside your group, you may discuss methods and ideas but may not share code.
For the full collaboration policy, including guidelines on citations and limitations on using online resources, see the course website.
References:
[1] Bernd Pfrommer, Nitin Sanket, Kostas Daniilidis, and Jonas Cleveland. Penncosyvio: A
challenging visual inertial odometry benchmark. In 2017 IEEE International Conference
on Robotics and Automation (ICRA), pages 3847–3854, May 2017.
[2] Michael Bloesch, Michael Burri, Sammy Omari, Marco Hutter, and Roland Siegwart.
Iterated extended kalman filter based visual-inertial odometry using direct photometric
feedback. The International Journal of Robotics Research, 36(10):1053–1072, 2017.
[3] Parrot. SLAMDunk. http://developer.parrot.com/docs/slamdunk/, 2016.
[4] Edwin Olson. AprilTag: A robust and flexible visual fiducial system. In Proceedings of the
IEEE International Conference on Robotics and Automation (ICRA), pages 3400–3407.
IEEE, May 2011.


A security black box testing tool to analyze your application security
This tool propose some features like:
The goal to this tool is to be included in development life cycle to identify quickly the security isssue, keep a tracking of these issues and check the non regression of this issue in each releases.
Include it in your CI / CD pipeline to:
Collect data during the integration testing Use this tool as proxy of your integration testing The tool will analyze requests, identify server technology and identify application misconfiguration It will propose an attack plan to identify potentials issues
Run the tool to attack your web application From an an attack plan, a security check list and a defect list, select some attacks to process and run it
To install this tool, git and NodeJS tools are required. Execute the following statements to install this tool:
git clone https://github.com/kevinramage/hedgehog.git
cd hedgehog
npm install
This tool based on two importants notions SYSTEM and CHECKER. System link Checker link
To consult developper documentation Documentation link
To view and create issue, follow this link Issue link
Generated using TypeDoc


--- title: "TETON GRAVITY RESEARCH PRESENTS" date: 2000-01-01 21:09:18 -06:00 categories: - fall subtitle: "" layout: "events" event-image: "teton-gravity-research-winterland.jpg" event-dates: "2021 DATE TO BE ANNOUNCED" event-location: "Red Butte Garden Amphitheatre" button-type: "tickets" tickets-link: "https://www.ticketfly.com/purchase/event/1855605" registration-info: "Garden Members: The promo code to get a discount on tickets is the email address associated with your Red Butte Garden Membership" instructor-info: "" member-cost: "$15 / Day of Show: $20" public-cost: "$20 / Kids ages 3-16: $10" event-notes: "" tickets-button: "" published: true ---
The 2020 TGR Film event has been cancelled. Check back next summer for the 2021 TGR Premiere Film!


ca.ualberta.cs.c301_teamproject
Class R.id
java.lang.Object
ca.ualberta.cs.c301_teamproject.R.id
- Enclosing class:
- R
public static final class R.id
- extends java.lang.Object
|
Constructor Summary |
R.id()
|
| Methods inherited from class java.lang.Object |
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
GridLayout1
public static final int GridLayout1
- See Also:
- Constant Field Values
ImageButton01
public static final int ImageButton01
- See Also:
- Constant Field Values
LinearLayout1
public static final int LinearLayout1
- See Also:
- Constant Field Values
attachItem
public static final int attachItem
- See Also:
- Constant Field Values
button1
public static final int button1
- See Also:
- Constant Field Values
button2
public static final int button2
- See Also:
- Constant Field Values
button3
public static final int button3
- See Also:
- Constant Field Values
button4
public static final int button4
- See Also:
- Constant Field Values
button5
public static final int button5
- See Also:
- Constant Field Values
buttonFilter
public static final int buttonFilter
- See Also:
- Constant Field Values
description
public static final int description
- See Also:
- Constant Field Values
desiredNum
public static final int desiredNum
- See Also:
- Constant Field Values
files_attach_desc
public static final int files_attach_desc
- See Also:
- Constant Field Values
importList
public static final int importList
- See Also:
- Constant Field Values
itemType
public static final int itemType
- See Also:
- Constant Field Values
linearLayout1
public static final int linearLayout1
- See Also:
- Constant Field Values
listItemDesc
public static final int listItemDesc
- See Also:
- Constant Field Values
listItemFraction
public static final int listItemFraction
- See Also:
- Constant Field Values
listSummaryLayout
public static final int listSummaryLayout
- See Also:
- Constant Field Values
listTitle
public static final int listTitle
- See Also:
- Constant Field Values
menu_settings
public static final int menu_settings
- See Also:
- Constant Field Values
path
public static final int path
- See Also:
- Constant Field Values
privateRadioButton
public static final int privateRadioButton
- See Also:
- Constant Field Values
progressBar1
public static final int progressBar1
- See Also:
- Constant Field Values
publicRadioButton
public static final int publicRadioButton
- See Also:
- Constant Field Values
rowC
public static final int rowC
- See Also:
- Constant Field Values
rowIcon
public static final int rowIcon
- See Also:
- Constant Field Values
rowSub
public static final int rowSub
- See Also:
- Constant Field Values
rowTitle
public static final int rowTitle
- See Also:
- Constant Field Values
rowtext
public static final int rowtext
- See Also:
- Constant Field Values
save
public static final int save
- See Also:
- Constant Field Values
saveTask
public static final int saveTask
- See Also:
- Constant Field Values
save_button
public static final int save_button
- See Also:
- Constant Field Values
showAttachedItems
public static final int showAttachedItems
- See Also:
- Constant Field Values
showCurrentItemNum
public static final int showCurrentItemNum
- See Also:
- Constant Field Values
showTaskTitle
public static final int showTaskTitle
- See Also:
- Constant Field Values
taskList
public static final int taskList
- See Also:
- Constant Field Values
taskTitle
public static final int taskTitle
- See Also:
- Constant Field Values
textView1
public static final int textView1
- See Also:
- Constant Field Values
textView2
public static final int textView2
- See Also:
- Constant Field Values
textView3
public static final int textView3
- See Also:
- Constant Field Values
text_input_box
public static final int text_input_box
- See Also:
- Constant Field Values
titleTextBox
public static final int titleTextBox
- See Also:
- Constant Field Values
visibiltyChoice
public static final int visibiltyChoice
- See Also:
- Constant Field Values
R.id
public R.id()