we Twelve Days of Front End Testing By feedproxy.google.com Published On :: Mon, 02 Dec 2019 12:00:00 +0000 Amy Kapernick sings us through numerous ways of improving the robustness and reliability of our front end code with a comprehensive rundown of ideas, tools, and resources. The girls and boys won’t get any toys until all the tests are passing. Anyone who’s spoken to me at some point in November may get the impression that I’m a bit of a grinch. But don’t get me wrong, I love Christmas, I love decorating my tree, singing carols, and doing Christmas cooking - in December. So for me to willingly be humming the 12 days of Christmas in October, it’s probably for something that I think is even more important than banning premature Christmas decorations, like front end testing. On the 12th day of Christmas, my front end dev, she gave to me, 12 testing tools, 11 optimised images, 10 linting rules, 9 semantic headings, 8 types of colour blindness, 7(.0) contrast ratio, 6 front end tests, 5 browser types, 4 types of tests, 3 shaken trees, 2 image types, and a source controlled deployment pipeline. Twelve Testing Tools axe does automated accessibility testing. Run as part of your development build, it outputs warnings to your console to let you know what changes you need to make (referencing accessibility guides). You can also specify particular accessibility standard levels that you’d like to test against, eg. best-practice, wcag2a or wcag2aa, or you can pick and choose individual rules that you want to check for (full list of rules you can test with axe). aXe Core can be used to automate accessibility testing, and has a range of extensions for different programming languages and frameworks. BackstopJS runs visual regression tests on your website. Run separately, or as part of your deployment/PR process, you can use it to make sure your code changes aren’t bleeding into other areas of the website. By default, BackstopJS will set you up with a bunch of configuration options by running backstop init in your project to help get you started. BackstopJS compares screenshots of your website to previous screenshots and compares the visual differences to see what’s changed. Website Speed Test analyses the performance of your website specifically with respect to images, and the potential size savings if they were optimised. Calibre runs several different types of tests by leveraging Lighthouse. You can run it over your live website through their web app or through the command line, it then monitors your website for performance and accessibility over time, providing metrics and notifications of any changes. Calibre provides an easy to use interface and dashboard to test and monitor your website for performance, accessibility and several other areas. Cypress is for end-to-end testing of your website. When visual regression testing may be a bit much for you, Cypress can help you test and make sure elements are still on the page and visible (even if they’re not pixel for pixel where they were last time). pa11y is for automated accessibility testing. Run as part of your build process or using their CLI or dashboard, it tests your website against various Web Content Accessibility Guidelines (WCAG) criteria (including visual tests like colour contrast). While axe is run as part of your dev build and gives you an output to the console, it can be combined with pa11y to automate any changes as part of your build process. whocanuse was created by Corey Ginnivan, and it allows you to view colour combinations as those with colour blindness would (as well as testing other visual deficiencies, and situational vision events), and test the colour contrast ratio based on those colours. Colour contrast assessment of my brand colours, testing them for issues for people with various vision deficiencies, and situational vision events. Colour Blindness Emulation was created by Kyo Nagashima as an SVG filter to emulate the different types of colour blindness, or if you’re using Gatsby, you can use a plugin based off of gatsby-plugin-colorblind-filters. Accessible Brand Colors tests all your branding colours against each other (this is great to show designers what combinations they can safely use). Accessible Brand Colors tests all colour combinations of background and text colours available from your branding colours, and checks them for compliance levels at various font sizes and weights. Browser dev tools - Most of the modern browsers have been working hard on the features available in their dev tools: Firefox: Accessibility Inspector, Contrast Ratio testing, Performance monitoring. Chromium: (Chrome, Edge Beta, Brave, Vivaldi, Opera, etc) - Accessibility Inspector, Contrast Ratio testing, Performance Monitoring, Lighthouse Audits (testing performance, best practices, accessibility and more). Edge: Accessibility Inspector, Performance monitoring. Safari: Accessibility Inspector, Performance monitoring. Firefox (left), Chrome, and Edge Beta (right) Dev Tools now analyse contrast ratios in the colour picker. The Chromium-based browsers also show curves on the colour picker to let you know which shades would meet the contrast requirements. Linc is a continuous delivery platform that makes testing the front end easier by automatically deploying a version of your website for every commit on every branch. One of the biggest hurdles when testing the front end is needing a live version of the site to view and test against. Linc makes sure you always have one. ESLint and Stylelint check your code for programmatic and stylistic errors, as well as helping keep formatting standard on projects with multiple developers. Adding a linter to your project not only helps you write better code, it can reduce simple errors that might be found during testing time. If you’re not writing JavaScript, there are plenty of alternatives for whatever language you’re writing in. If you’re trying to run eslint in VS Code, make sure you don’t have the Beautify extension installed, as that will break things. Eleven Optimised Images When it comes to performance, images are where we take the biggest hit, with images accounting for over 50% of total transfer size for websites. Many websites are serving excessively large images “just in case”, but there’s actually a native HTML element that allows us to serve different image sizes based on the screen size or serve better image formats when the browser supports it (or both). <!-- Serving different images based on the width of the screen --> <picture> <source srcset="/img/banner_desktop.jpg" media="(min-width: 1200px)" /> <source srcset="/img/banner_tablet.jpg" media="(min-width: 700px)" /> <source srcset="/img/banner_mobile.jpg" media="(min-width: 300px)" /> <img src="/img/banner_fallback.jpg"> </picture> <!-- Serving different image formats based on browser compatibility --> <picture> <source srcset="/banner.webp" type="image/webp" /> <img src="/img/banner_fallback.jpg"> </picture> Ten Linting Rules A year ago, I didn’t use linting. It was mostly just me working on projects, and I can code properly right? But these days it’s one of the first things I add to a project as it saves me so much time (and has taught me a few things about JavaScript). Linting is a very personal choice, but there are plenty of customisations to make sure it’s doing what you want, and it’s available in a wide variety of languages (including linting for styling). // .eslintrc module.exports = { rules: { 'no-var': 'error', 'no-unused-vars': 1, 'arrow-spacing': ['error', { before: true, after: true }], indent: ['error', 'tab'], 'comma-dangle': ['error', 'always'], // standard plugin - options 'standard/object-curly-even-spacing': ['error', 'either'], 'standard/array-bracket-even-spacing': ['error', 'either'], }, } // .stylelintrc { "rules": { "color-no-invalid-hex": true, "indentation": [ "tab", { "except": [ "value" ] } ], "max-empty-lines": 2, } } Nine Semantic Headings No, I’m not saying you should use 9 levels of headings, but your webpage should have an appropriate number of semantic headings. When your users are accessing your webpage with a screen reader, they rely on landmarks like headings to tell them about the page. Similarly to how we would scan a page visually, screen readers give users a list of all headings on a page to allow them to scan through the sections and access the information faster. When there aren’t any headings on a page (or headings are being used for their formatting rather than their semantic meaning), it makes it more difficult for anyone using a screen reader to understand and navigate the page. Make sure that you don’t skip heading levels on your page, and remember, you can always change the formatting on a p tag if you need to have something that looks like a heading but isn’t one. <h1>Heading 1 - Page Title</h2> <p>Traditionally you'll only see one h1 per page as it's the main page title</p> <h2>Heading 2</h2> <p>h2 helps to define other sections within the page. h2 must follow h1, but you can also have h2 following another h2.</p> <h3>Heading 3</h3> <p>h3 is a sub-section of h2 and follows similar rules to h2. You can have a h3 after h3, but you can't go from h1 to h3.</p> <h4>Heading 4</h4> <p>h4 is a sub-section of h3. You get the pattern?</p> Eight Types of Colour Blindness Testing colour contrast may not always be enough, as everyone perceives colour differently. Take the below colour combination (ignoring the fact that it doesn’t actually look nice). It has decent colour contrast and would meet the WCAG colour contrast requirements for AA standards – but what if one of your users was red-green colour blind? Would they be able to tell the difference? http://colorsafe.co/ empowers designers with beautiful and accessible colour palettes based on WCAG Guidelines of text and background contrast ratios. Red-green colour blindness is the most common form of colour blindness, but there are 8 different types affecting different parts of the colour spectrum, all the way up to complete colour blindness. Protanopia Inability to see red end of the colour spectrum. Protanomaly Difficulty seeing some shades of red. Deuteranopia Inability to see the green portion of the colour spectrum. Deuteranomaly Difficulty seeing some shades of green. Tritanopia Inability to see blue end of the colour spectrum. Tritanomaly Difficulty seeing some shades of blue. Achromatopsia Inability to see all parts of the colour spectrum, only able to perceive black, white and shades of grey. Achromatomaly Difficulty seeing all parts of the colour spectrum. Seven (.0) Contrast Ratio Sufficient colour contrast is perhaps one of the best steps to take for accessibility, as it benefits everyone. Having adequate contrast doesn’t just make the experience better for those with vision impairments, but it also helps those with situational impairments. Have you ever been in the sun and tried to read something on your screen? Whether you can view something when there’s glare could be as easy as making sure there’s enough contrast between the text and its background colour. The WCAG have defined a contrast ratio of at least 4.5:1 for normal text (18.5px) and 3:1 for large text (24px) to meet AA accessibility standards, but this should be an absolute minimum and isn’t always readable. All four below examples have sufficient contrast to pass AA standards, but you might be hard pressed to read them when there’s glare or you have a dodgy monitor (even more so considering most websites use below 18.5px for their base font size). Examples of 4.5:1 colour contrast To meet the AAA standard you need to have a ratio of 7:1 for normal text and 4.5:1 for large text, which should be sufficient for those with 20/80 vision to read. Six Front End Tests Adding default axe-core testing to Gatsby: //gatsby-config.js { resolve: 'gatsby-plugin-react-axe', options: {}, }, Running pa11y tests on homepage at various screen sizes: // tests/basic-a11y_home.js const pa11y = require('pa11y'), fs = require('file-system') runTest() async function runTest() { try { const results = await Promise.all([ pa11y('http://localhost:8000', { standard: 'WCAG2AA', actions: [], screenCapture: `${__dirname}/results/basic-a11y_home_mobile.png`, viewport: { width: 320, height: 480, deviceScaleFactor: 2, isMobile: true, }, }), pa11y('http://localhost:8000', { standard: 'WCAG2AA', actions: [], screenCapture: `${__dirname}/results/basic-a11y_home_desktop.png`, viewport: { width: 1280, height: 1024, deviceScaleFactor: 1, isMobile: false, }, }), ]) fs.writeFile('tests/results/basic-a11y_home.json', JSON.stringify(results), err => { console.log(err) }) } catch (err) { console.error(err.message) } } Running pa11y tests on a blog post template at various screen sizes: // tests/basic-a11y_post.js const pa11y = require('pa11y'), fs = require('file-system') runTest() async function runTest() { try { const results = await Promise.all([ pa11y('http://localhost:8000/template', { standard: 'WCAG2AA', actions: [], screenCapture: `${__dirname}/results/basic-a11y_post_mobile.png`, viewport: { width: 320, height: 480, deviceScaleFactor: 2, isMobile: true, }, }), pa11y('http://localhost:8000/template', { standard: 'WCAG2AA', actions: [], screenCapture: `${__dirname}/results/basic-a11y_post_desktop.png`, viewport: { width: 1280, height: 1024, deviceScaleFactor: 1, isMobile: false, }, }), ]) fs.writeFile('tests/results/basic-a11y_post.json', JSON.stringify(results), err => { console.log(err) }) } catch (err) { console.error(err.message) } } Running BackstopJS on a homepage and blog post template at various screen sizes: // backstop.json { "id": "backstop_default", "viewports": [ { "label": "phone", "width": 320, "height": 480 }, { "label": "tablet", "width": 1024, "height": 768 }, { "label": "desktop", "width": 1280, "height": 1024 } ], "onBeforeScript": "puppet/onBefore.js", "onReadyScript": "puppet/onReady.js", "scenarios": [ { "label": "Blog Homepage", "url": "http://localhost:8000", "delay": 2000, "postInteractionWait": 0, "expect": 0, "misMatchThreshold": 1, "requireSameDimensions": true }, { "label": "Blog Post", "url": "http://localhost:8000/template", "delay": 2000, "postInteractionWait": 0, "expect": 0, "misMatchThreshold": 1, "requireSameDimensions": true } ], "paths": { "bitmaps_reference": "backstop_data/bitmaps_reference", "bitmaps_test": "backstop_data/bitmaps_test", "engine_scripts": "backstop_data/engine_scripts", "html_report": "backstop_data/html_report", "ci_report": "backstop_data/ci_report" }, "report": [ "browser" ], "engine": "puppeteer", "engineOptions": { "args": [ "--no-sandbox" ] }, "asyncCaptureLimit": 5, "asyncCompareLimit": 50, "debug": false, "debugWindow": false } Running Cypress tests on the homepage: // cypress/integration/basic-test_home.js describe('Blog Homepage', () => { beforeEach(() => { cy.visit('http://localhost:8000') }) it('contains "Amy Goes to Perth" in the title', () => { cy.title().should('contain', 'Amy Goes to Perth') }) it('contains posts in feed', () => { cy.get('.article-feed').find('article') }) it('all posts contain title', () => { cy.get('.article-feed') .find('article') .get('h2') }) }) Running Cypress tests on a blog post template at various screen sizes: // cypress/integration/basic-test_post.js describe('Blog Post Template', () => { beforeEach(() => { cy.visit('http://localhost:8000/template') }) it('contains "Amy Goes to Perth" in the title', () => { cy.title().should('contain', 'Amy Goes to Perth') }) it('has visible post title', () => { cy.get('h1').should('be.visible') }) it('has share icons', () => { cy.get('.share-icons a').should('be.visible') }) it('has working share icons', () => { cy.get('.share-icons a').click({ multiple: true }) }) it('has a visible author profile image', () => { cy.get('.author img').should('be.visible') }) }) describe('Mobile Blog Post Template', () => { beforeEach(() => { cy.viewport('samsung-s10') cy.visit('http://localhost:8000/template') }) it('contains "Amy Goes to Perth" in the title', () => { cy.title().should('contain', 'Amy Goes to Perth') }) it('has visible post title', () => { cy.get('h1').should('be.visible') }) it('has share icons', () => { cy.get('.share-icons .share-link').should('be.visible') }) it('has a visible author profile image', () => { cy.get('.author img').should('be.visible') }) }) Five Browser Types Browser testing may be the bane of our existence, but it’s gotten easier, especially when you know the secret: Not every browser needs to look the same. Now, this may differ depending on your circumstances, but your website doesn’t have to match pixel for pixel across all browsers. As long as it’s on-brand and is useable across all browsers (this is where a good solid HTML foundation is useful), it’s ok for your site to look a little different between browsers. While the browsers you test in will differ depending on your user base, the main ones you want to be covering are: Chrome/Chromium Firefox Safari Internet Explorer Edge Make sure you’re testing these browsers on both desktop and mobile/tablet as well, sometimes their level of support or rendering engine will differ between devices – for example, iOS Chrome uses the Safari rendering engine, so something that works on Android Chrome may not work on iOS Chrome. Four Types of Test When it comes to testing the front end, there are a few different areas that we can cover: Accessibility Testing: doing accessibility testing properly usually involves getting an expert to run through your website, but there are several automated tests that you can run against various standard levels. Performance Testing: performance testing does technically bleed into the back end as well, but there are plenty of things that can be done from a front end perspective. Making sure the images are optimised, our code is clean and minified, and even optimising fonts using features like the font-display property. No amount of optimising the server and back end will matter if it takes forever for the front end to appear in a browser. Visual Regression Testing: we’ve all been in the position where changing one line of CSS somewhere has affected another section of the website. Visual regression testing helps prevent that. By using a tool that compares before and after screenshots against one another to flag up what’s changed, you can be sure that style changes won’t bleed into unintended areas of the site. Browser/device testing: while we all want our users to be running the most recent version of Chrome or Firefox, they may still be using the inbuilt browser on their DVD player – so we need to test various browsers, platforms and devices to make sure that our website can be accessed on whatever device they use. Three Shaken Trees Including (and therefore requiring your users to download) things that you’re not using affects the performance of your application. Are you forcing them to download the entire lodash library when you’re only using 2 functions? While a couple of unused lines of code may not seem like a huge performance hit, it can greatly affect users with slower devices or internet connections, as well as cluttering up your code with unused functions and dependencies. This can be set up on your bundler – Webpack and Parcel both have guides for tree shaking, and Gatsby has a plugin to enable it. Two Image Types While there are several different types of images, most of the time they fall into one of two categories: Informative The image represents/conveys important information that isn’t conveyed by the content surrounding it. Decorative The image only adds visual decoration to a page. From these two categories, we can then determine if we need to provide alternative text for an image. If an image is purely decorative, then we add alt="" to let screen readers know that it’s not important. But if an image is informative, then we need to be supplying a text alternative that describes the picture for anyone who’s using a screen reader or isn’t able to see the image (remember the days when a standard internet connection took a long time to load a page and you saw alt text before an image loaded). <img src="./nice-picture.jpg" alt="" /> <img src="./important-graphic.png" alt="This is a picture of something important to help add meaning to the text around me" /> If you have a lot of images with missing alt text, look into services that can auto-generate alt text based on image recognition services. One Source Controlled Deployment Pipeline While front end tests are harder to automate, running them through a source control and deployment pipeline helps track changes and eliminates issues where “it works on my computer”. Whether you’re running tests as part of the PR process, or simply against every commit that comes through, running tests automatically as part of your process makes every developer’s life easier and helps keep code quality at a high standard. We already knew that testing was important, and your project can’t be run unless all your unit and integration tests are written (and pass), but often we forget about testing the front end. There are so many different tests we need to be running on the front end, it’s hard to work out what your need to test for and where to start. Hopefully this has given you a bit of insight to front end testing, and some Christmas cheer to take you into the holidays. About the author Amy wears many hats as a freelance developer, business owner and conference addict. She regularly shares her knowledge with her peers and the next generation of developers by mentoring, coaching, teaching and feeding into the tech community in many ways. Amy can be found volunteering her time with Fenders, ACS, SheCodes (formerly Perth Web Girls) and MusesJS (formerly NodeGirls). She also works as an evangelist for YOW! Conferences, is a Twilio Champion and has been nominated for the WiTWA awards for the last 2 years. In her spare time Amy shares her knowledge and experience on her blogs and speaking at conferences. She has previously given keynotes at multiple events as well as speaking at several international conferences in the US and Europe. More articles by Amy Full Article Code testing
we Gift Giving to the World (Wide Web) By feedproxy.google.com Published On :: Wed, 11 Dec 2019 12:00:00 +0000 Frances Berriman asks us to give the gift of consideration to those who are using the web on constricted devices such as low-end smart phones or feature phones. Christmas is a time of good will to all, and as Bugsy Malone reminds us, you give a little love and it all comes back to you. If I was given the job of Father Christmas with all my human limitations, apparently it would take me something like 6 months at non-stop full speed to deliver gifts to every kid on the planet. The real Father Christmas has the luxury of magic when it comes to delivering millions of gifts in just one night, but the only magical platform at my disposal is the world wide web, so I propose switching to digital gift cards and saving the reindeer feed. 300 million people are set to come online for the very first time in 2020, and a majority of those will be doing so via mobile phones (smart- and feature-phones). If we want those new users to have a great time online, spending those gift cards, we need to start thinking about their needs and limitations. Suit up We might not be hopping on the sleigh for these deliveries, but let’s suit up for the journey and get the tools we need to start testing and checking how our online gift-receivers will be enjoying their online shopping experience. Of course, the variety of phones and OSs out there is huge and varied, but we have a few options out there to get a sense for the median. Here’s a few suggestions on where to start: Never has there been a better time to advocate at your workplace for a device testing suite or lab. You can also just pick up a low-end phone for a few bucks and spend some real time using it and getting a sense for how it feels to live with it every day. May I suggest the Nokia 2 or the Moto E6 - both very representative devices of the sort our new visitors will be on. You’ve also got WebPageTest.org at your disposal, where you can emulate various phones and see your sites rendered in real-time to get a sense of what an experience may look like for your users. You’ll also want to set yourself some goals. A performance budget, for example, is a good way to know if the code you’re shipping hits the mark in a more programmatic way. Gift wrap Many of us began our internet lives on desktop machines, and thanks to Moore’s law, these machines have been getting ever more powerful every year with more CPUs and memory at our disposal. The mobile phone landscape somewhat resets us on what hardware capacity is available on the client-side of our code, so it’s time to lighten the load. What we see in the landscape of phones today is a huge spread of capabilities and CPU speeds, storage capacity and memory. And the gap between the haves and the have-nots is widening, so we have a huge task to deal with in meeting the needs of such a varied audience. As far as possible, we should try to: Keep processing off the client - do anything you can server-side. Consider a server-side render (hold the <script>, thanks) for anything relatively static (including cached frequent queries and results) to keep client-side JavaScript to the minimum. This way you’re spending your CPU, not the user’s. Avoid sending everything you have to to the end user. Mobile-first access also means data-plan-first access for many, which means they may be literally paying in cold-hard cash for everything you send over the wire – or may be experiencing your site over a degraded “4G” connection towards the end of the month. Aggressively cache assets to prevent re-downloading anything you’ve sent before. Don’t make the user pay twice if they don’t have to. Progressively load additional assets and information as the user requests them, rather than a big upfront payload, that way you’re giving the end user a little more choice about whether they want or need that extra data set. This is all to say that as web developers, we have a lot more control over how and when we deliver the meat of our products - unlike native apps that generally send the whole experience down as one multi-megabyte download that our 4G and data-strapped users can’t afford. Make a wish Finally, it’s time for your gift recipients to go out onto the web and find whatever their greatest wish is. For many, that’s going to begin when they first turn on their phone and see all those enticing icons on their home screen. Opening a browser may not be their first port of call. They’ll be primed to look for sites and information through the icon-heavy menu that most mobile OSs use today, and they will be encouraged to find new experiences through the provided app store interface. The good news is that web experience can be found in many modern app-stores today. For example, if you build an app using Trusted Web Activities, the Google Play Store will list your web site right alongside native apps and allow users to install them on their phones. Samsung and Microsoft have similar options without the extra step of creating a TWA - they’ll list any Progressive Web App in their stores. Tools like Microsoft’s PWA Builder and Llama Pack are making this easier than ever. If your users are primed to search for new experiences via a search engine instead, then they’ll benefit from the work you’ve put in to list them in app stores regardless, as PWAs are first and foremost about making websites mobile-friendly, regardless of point of sale. A PWA will provide them with offline support, service works, notifications and much more. We do have a grinch in this story, however. Apple’s iOS explicitly does not allow your website to be listed in their app store, so sadly you’ll have a harder time reaching those users. But it is possible! Fortunately, iOS isn’t as all-dominating world wide as it is in the tech community, selling only around 10-15% of smartphones out in the world. The best present The WWW is a wonderful gift that we received over 30 years ago and, as web developers, we get to steward and share this truly global, open, platform with millions of people every day. Let’s take care of it by building and sharing experiences that truly meet the needs of everyone. About the author Frances Berriman is a San Francisco-based British-born designer and web developer who blogs at fberriman.com. She’s done all sorts of things, but has a special soft spot for public sector projects, and has worked for the Government Digital Service, building GOV.UK, Code for America, Nature Publishing and the BBC and is currently Head of UX and Product Design at Netlify. More articles by Frances Full Article Process mobile
we The evolving consequences of OxyContin reforumulation on drug overdoses [electronic resource] / David Powell, Rosalie Liccardo Pacula By darius.uleth.ca Published On :: Cambridge, Mass. : National Bureau of Economic Research, 2020 Full Article
we FLOWERS, CURTIS G. v. MISSISSIPPI. Decided 06/21/2019 By www.law.cornell.edu Published On :: Fri, 21 Jun 2019 00:00:00 EDT Full Article
we Power to the people: how open technological innovation is arming tomorrow's terrorists / Audrey Kurth Cronin By library.mit.edu Published On :: Sun, 22 Mar 2020 07:44:49 EDT Dewey Library - U39.C76 2020 Full Article
we #MeToo, Weinstein and feminism / Karen Boyle By library.mit.edu Published On :: Sun, 22 Mar 2020 07:44:49 EDT Dewey Library - HV6250.4.W65 B69 2019 Full Article
we Human rights in twentieth-century Australia / Jon Piccini By library.mit.edu Published On :: Sun, 22 Mar 2020 07:44:49 EDT Dewey Library - JC599.A8 P53 2019 Full Article
we Faithful fighters: identity and power in the British Indian Army / Kate Imy By library.mit.edu Published On :: Sun, 22 Mar 2020 07:44:49 EDT Dewey Library - UA668.I49 2019 Full Article
we No visible bruises: what we don't know about domestic violence can kill us / Rachel Louise Snyder By library.mit.edu Published On :: Sun, 22 Mar 2020 07:44:49 EDT Dewey Library - HV6626.2.S59 2019 Full Article
we The sovereignty game: Neo-Colonialism and the Westphalian System / Will Hickey By library.mit.edu Published On :: Sun, 29 Mar 2020 07:44:51 EDT Online Resource Full Article
we Japan rearmed: the politics of military power / Sheila A. Smith By library.mit.edu Published On :: Sun, 29 Mar 2020 07:44:51 EDT Online Resource Full Article
we Freedom, peace, and secession: new dimensions of democracy / Burkhard Wehner By library.mit.edu Published On :: Sun, 29 Mar 2020 07:44:51 EDT Online Resource Full Article
we Raymond Aron and liberal thought in the twentieth century / Iain Stewart, University College London By library.mit.edu Published On :: Sun, 29 Mar 2020 07:44:51 EDT Dewey Library - JC261.A7 S74 2020 Full Article
we The suspect: an Olympic bombing, the FBI, the media, and Richard Jewell, the man caught in the middle / Kent Alexander & Kevin Salwen By library.mit.edu Published On :: Sun, 29 Mar 2020 07:44:51 EDT Dewey Library - HV8079.B62 A44 2019 Full Article
we We are indivisible: a blueprint for democracy after Trump / Leah Greenberg and Ezra Levin ; [foreword by Marielena Hincapié] By library.mit.edu Published On :: Sun, 5 Apr 2020 07:47:23 EDT Dewey Library - JC423.G74 2019 Full Article
we A republic of equals: a manifesto for a just society / Jonathan Rothwell By library.mit.edu Published On :: Sun, 5 Apr 2020 07:47:23 EDT Dewey Library - JC575.R68 2019 Full Article
we Reflections on socialism in the Twenty-First Century: facing market liberalism, rising inequalities and the environmental imperative / Claes Brundenius, editor By library.mit.edu Published On :: Sun, 12 Apr 2020 09:49:18 EDT Online Resource Full Article
we The politics of war powers: the theory and history of Presidential unilateralism / Sarah Burns By library.mit.edu Published On :: Sun, 12 Apr 2020 09:49:18 EDT Dewey Library - JK560.B87 2019 Full Article
we The politics of recall elections Yanina Welp, Laurence Whitehead, editors By library.mit.edu Published On :: Sun, 12 Apr 2020 09:49:18 EDT Online Resource Full Article
we How to be a dictator: the cult of personality in the twentieth century / Frank Dikötter By library.mit.edu Published On :: Sun, 12 Apr 2020 09:49:18 EDT Dewey Library - JC495.D55 2019 Full Article
we The light that failed: why the West is losing the fight for democracy / Ivan Krastev and Stephen Holmes By library.mit.edu Published On :: Sun, 19 Apr 2020 10:15:39 EDT Dewey Library - JC574.K74 2019 Full Article
we We decide!: theories and cases in participatory democracy / Michael Menser By library.mit.edu Published On :: Sun, 19 Apr 2020 10:15:39 EDT Dewey Library - JF799.M47 2018 Full Article
we Fight the power: African Americans and the long history of police brutality in New York City / Clarence Taylor By library.mit.edu Published On :: Sun, 26 Apr 2020 09:04:30 EDT Rotch Library - HV8148.N5 T39 2019 Full Article
we Secret empires: how the American political class hides corruption and enriches family and friends / Peter Schweizer By library.mit.edu Published On :: Sun, 26 Apr 2020 09:04:30 EDT Dewey Library - JK2249.S349 2018 Full Article
we Perilous futures: on Carl Schmitt's late writings / Peter Uwe Hohendahl By library.mit.edu Published On :: Sun, 26 Apr 2020 09:04:30 EDT Dewey Library - JC263.S34 H62 2018 Full Article
we Wartime sexual violence against men: masculinities and power in conflict zones / Élise Féron By library.mit.edu Published On :: Sun, 26 Apr 2020 09:04:30 EDT Dewey Library - HV6558.F47 2018 Full Article
we Back to America: identity, political culture, and the Tea Party movement / William H. Westermeyer By library.mit.edu Published On :: Sun, 26 Apr 2020 09:04:30 EDT Dewey Library - JK2391.T43 W48 2019 Full Article
we Gunslinging justice: the American culture of gun violence in Westerns and the law / Justin A. Joyce By library.mit.edu Published On :: Sun, 26 Apr 2020 09:04:30 EDT Dewey Library - HV7436.J69 2018 Full Article
we The end of strategic stability?: Nuclear weapons and the challenge of regional rivalries / Lawrence Rubin and Adam N. Stulberg, editors By library.mit.edu Published On :: Sun, 26 Apr 2020 09:04:30 EDT Dewey Library - U263.E557 2018 Full Article
we The Senkaku paradox: risking great power war over limited stakes / Michael E. O'Hanlon By library.mit.edu Published On :: Sun, 26 Apr 2020 09:04:30 EDT Dewey Library - UA23.O347 2019 Full Article
we Corruption in contemporary politics: a new travel guide / James L. Newell By library.mit.edu Published On :: Sun, 26 Apr 2020 09:04:30 EDT Dewey Library - JF1081.N46 2018 Full Article
we Democracy in China: the coming crisis / Jiwei Ci By library.mit.edu Published On :: Sun, 26 Apr 2020 09:04:30 EDT Dewey Library - JC423.C56736 2019 Full Article
we Anti-pluralism: the real populist threat to liberal democracy / William A. Galston ; foreword by James Davison and John M. Owen IV By library.mit.edu Published On :: Sun, 26 Apr 2020 09:04:30 EDT Dewey Library - JK1726.G35 2018 Full Article
we What we talk about when we talk about rape / Sohaila Abdulali By library.mit.edu Published On :: Sun, 26 Apr 2020 09:04:30 EDT Hayden Library - HV6558.A295 2018 Full Article
we In the ruins of neoliberalism: the rise of antidemocratic politics in the West / Wendy Brown By library.mit.edu Published On :: Sun, 26 Apr 2020 09:04:30 EDT Dewey Library - JC423.B83 2019 Full Article
we Legislative hardball: the house freedom caucus and the power of threat-making in Congress / Matthew N. Green By library.mit.edu Published On :: Sun, 26 Apr 2020 09:04:30 EDT Dewey Library - JK1319.G744 2019 Full Article
we The sexual politics of gendered violence and women's citizenship / Suzanne Franzway, Nicole Moulding, Sarah Wendt, Carole Zufferey, Donna Chung By library.mit.edu Published On :: Sun, 26 Apr 2020 09:04:30 EDT Dewey Library - HV6626.F73 2019 Full Article
we Homeward: life in the year after prison / Bruce Western By library.mit.edu Published On :: Sun, 26 Apr 2020 09:04:30 EDT Dewey Library - HV9275.W424 2018 Full Article
we Poll power: the Voter Education Project and the movement for the ballot in the American South / Evan Faulkenbury By library.mit.edu Published On :: Sun, 26 Apr 2020 09:04:30 EDT Dewey Library - JK2160.F38 2019 Full Article
we Wales and the bomb: the role of Welsh scientists and engineers in the British nuclear programme / John Baylis By library.mit.edu Published On :: Sun, 26 Apr 2020 09:04:30 EDT Dewey Library - U264.5.G7 B39 2019 Full Article
we Why liberalism failed / Patrick J. Deneen ; foreword by James Davison Hunter and John M. Owen IV. By library.mit.edu Published On :: Sun, 26 Apr 2020 09:04:30 EDT Dewey Library - JC574.D473 2018 Full Article
we Disarming Doomsday: the human impact of nuclear weapons since Hiroshima / Becky Alexis-Martin By library.mit.edu Published On :: Sun, 26 Apr 2020 09:04:30 EDT Dewey Library - U263.A44 2019 Full Article
we Party funding and corruption Sam Power By library.mit.edu Published On :: Sun, 3 May 2020 10:24:48 EDT Online Resource Full Article
we Powerful Bomb found in Manipur By archive.indianexpress.com Published On :: Fri, 20 Sep 2013 04:15:38 GMT The bomb was detonated by police bomb experts at a safe location. Full Article
we Convincing win by Trinamool in West Bengal civic polls By archive.indianexpress.com Published On :: Tue, 24 Sep 2013 09:41:54 GMT The Left were ruling Burdwan, Chakdah and Balurghat municipalities for more than three decades. Full Article
we Kiran Reddy: People's concerns must be answered ahead of Andhra Pradesh division By archive.indianexpress.com Published On :: Thu, 26 Sep 2013 10:29:14 GMT CM Kiran Reddy says that the state is more important than any political calculations. Full Article
we Weeks after Muzaffarnagar violence, women allege rape in written complaints By archive.indianexpress.com Published On :: Sat, 28 Sep 2013 23:32:30 GMT The Fugana police station has registered two cases of rape and one case of molestation. Full Article
we Three weeks after clashes, new births offer new hope in Muzaffarnagar By archive.indianexpress.com Published On :: Sun, 29 Sep 2013 00:07:34 GMT In Muzaffarnagar, three of the biggest relief camps in Kandhla, Basikala and Malakpur have seen the birth of about 27 babies. Full Article
we CPI welcomes govt's approval to create Telangana By archive.indianexpress.com Published On :: Fri, 04 Oct 2013 09:30:33 GMT Th CPI asked the govt. to take steps to allay apprehensions of people of the Seemandhra region. Full Article
we Telangana: Power supply, train services hit, protests turn violent By archive.indianexpress.com Published On :: Sun, 06 Oct 2013 15:37:13 GMT Shutdown was observed in all 13 Seemandhra districts, clashes were reported in Anantapur and Kurnool. Full Article