Designing Justice + Designing Spaces is a multi-disciplinary architecture and design firm, real estate development firm, and nonprofit with the mission to end mass incarceration and structural inequity. We have specific expertise in community engagement, evidence-based design research, and designing for peacemaking and reparation.
We engage communities in the design and development of new buildings, spaces, and tools to address the root causes of mass incarceration. Our work seeks to counter the societal inequities evident in the dominant architectural models of courthouses and prisons, and we do so through the creation of new prototypes such as peacemaking centers, transitional housing, and mobile villages.
Join us, and together we can harness the power of the built environment to support the success and expansion of restorative justice, education, and workforce development programs instead of imprisonment.
This publication supersedes PEMD-10.1.4, Designing Evaluations, May 1, 1991. GAO assists congressional decision makers in their deliberations by furnishing them with analytical information on issues and options. Many diverse methodologies are needed to develop sound and timely answers to the questions the Congress asks. To provide GAO evaluators with basic information about the more commonly used methodologies, GAOs policy guidance includes documents such as methodology transfer papers and technical guides.
This methodology transfer paper addresses the logic of program evaluation designs. It introduces key issues in planning evaluation studies of federal programs to best meet decision makers needs while accounting for the constraints evaluators face. It describes different types of evaluations for answering varied questions about program performance, the process of designing evaluation studies, and key issues to consider toward ensuring overall study quality.
To improve federal program effectiveness, accountability and service delivery, the Congress enacted the Government Performance and Results Act of 1993 (GPRA), establishing a statutory framework for performance management and accountability, including the requirement that federal agencies set goals and report annually on progress towards those goals and program evaluation findings. In response to this and related management reforms, federal agencies have increased their attention to conducting program evaluations. The GPRA Modernization Act of 2010 raised the visibility of performance information by requiring quarterly reviews of progress towards agency and governmentwide priority goals. Designing Evaluations is a guide to successfully completing evaluation design tasks. It should help GAO evaluatorsand others interested in assessing federal programs and policiesplan useful evaluations and become educated consumers of evaluations.
Designing Evaluations is one of a series of papers whose purpose is to provide guides to various aspects of audit and evaluation methodology and indicate where more detailed information is available. It is based on GAO studies and policy documents and program evaluation literature. To ensure the guides competence and usefulness, drafts were reviewed by selected GAO, federal and state agency evaluators, and evaluation authors and practitioners from professional consulting firms. This paper updates a 1991 version issued by GAOs prior Program Evaluation and Methodology Division. It supersedes that earlier version and incorporates changes in federal program evaluation and performance measurement since GPRA was implemented.
Home Innovation Research Labs (Home Innovation) was tasked by HUD to develop a set of practical, actionable guidelines to assist builders and developers in designing and constructing residential buildings, neighborhoods, and accessory structures in a manner that could improve residential resilience to natural hazards and integrate resiliency throughout the community. The resilience guides provide technical content in a straightforward way that is easy for a layperson to understand, while also providing references through which design professionals, builders, developers, and public officials can obtain full details. The guide consists of five volumes. Each volume focuses on a major category of hazard that may pertain to a given project: wind, water, fire, earth (seismic, earthslides, sinkholes), and auxiliary (other hazards such as volcanoes, hail, and temperature extremes). These resilience guides are not intended to substitute for engineering or architectural project design work; rather, the technical guidance identifies components that can be enhanced or improved to achieve above-code performance to make residential buildings and other community assets more resilient.
Luckily this is empathy on easy mode. Empathy is generally hard, and this is still very hard. But at least the people that you are having empathy with, they are also other software engineers. And so while they might be very different from you, they at least have in common that they are building software. This type of empathy is really something you can get quite good at as you gain more experience.
Also, we have humans entering the field, because code splitting requires you to define bundles, and it requires you to think about when to load them, so these humans, engineers on your team, they now have to make decisions what is going into which bundle and when to load that bundle. Every time you have a human involved, that clearly impacts the programming model, because they have to think about such things.
But the title of this talk is designing VERY large JavaScript applications, and they quickly become so big that a single bundle per route might not be feasible anymore, because the routes themselves become very big. I actually have a good example for an application that is big enough.
But then I was wondering about the weather because California had a rough winter, and suddenly there was this completely different module. So, this seemingly simple route is more complicated than we thought.
And then I was invited to this conference, and was checking out how much 1 US dollar is in Australian dollars, and there is this complex currency converter. Obviously there is about 1000s more of these specialized modules, and it infeasible to put them all in one bundle, because that bundle would be a few megabytes in size, and users would become really unhappy.
But if you want to lazy load it, you get code like this where you use dynamic import, which is a new fancy thing to lazy load ES6 modules and you wrap it in a loadable component. There are certainly 500 million ways to do this, and I am not a React expert, but all of these will change how you write the application.
So, now we have two separate things, and we only ever load the application logic for a component when we previously rendered it. This turns out to be a very simple model, because you can simply server side render a page, and then whatever was actually rendered, triggers downloading the associated application bundles. This puts the human out of the system, as loading is triggered automatically by rendering.
I want to give a few examples of this general idea that you want to avoid central configuration of your application at all cost, because central configuration, like having a central CSS file, makes it very hard to delete code.
Because the router now has to import all the root components, and if you want to delete one of them you have to go to the router, you have to delete the import, you have to delete the route, and eventually you have the holiday special 2017 problem.
Looking at the dependency graph, what happens it that there are still the same components, but the arrows point in the opposite direction. So, instead of the router importing the root component, the root components announce themselves using enhance to the router. This means I can get rid of a root component by just deleting the file. Because it is no longer enhancing the router, that is the only operation you have to do to delete the component.
This might not always be possible. In that case just add a test. But this is not something that many people feel empowered to do. But please feel empowered to add tests to your application that ensure the major invariants of your infrastructure. Tests are not only for testing that your math functions do the right thing. They are also for infrastructure and for the major design features of your application.
I want to address just one more point, which is that people sometimes say that having no abstractions at all is better than having the wrong abstractions. What this really means is that the cost of the wrong abstraction is very high, so be careful. I think this is sometimes misinterpreted. It does not mean that you should have no abstractions. It just means you have to be very careful.
As I was saying at the start of the presentation: The way to get there is to use empathy and think with your engineers on your team about how they will use your APIs and how they will use your abstractions. Experience is how you flesh out that empathy over time. Put together, empathy and experience is what enables you to choose the right abstractions for your application
While this is true, the aim of the posters is to raise awareness of various conditions through good design practice. We need to be mindful of not just designing or building for our own immediate needs. For example, consider designing for keyboard use only. This is particularly helpful for users with motor disabilities where using the mouse can be quite difficult, especially with precise movements, whereas keyboard use is much easier.
The content for the posters came from our accessibility team in Home Office Digital. Led by accessibility leads Emily Ball and James Buller, we are a group of twelve, each specialising on these conditions: blind and visual impairment, dyslexia, autism and ADHD, D/deaf and hard of hearing, mental health and motor disabilities. Collectively, we learn as much of the conditions as we can to better increase our knowledge so they can be shared within and outside the team.
c01484d022