ap Building a Dictaphone Using Media Recorder and getUserMedia By feedproxy.google.com Published On :: Tue, 17 Dec 2019 12:00:00 +0000 Chris Mills brushes up his shorthand and shows how the MediaStream Recording API in modern browsers can be used to capture audio directly from the user’s device. Inching ever closer to the capabilities of native software, it truly is an exciting time to be a web developer. The MediaStream Recording API makes it easy to record audio and/or video streams. When used with MediaDevices.getUserMedia(), it provides an easy way to record media from the user’s input devices and instantly use the result in web apps. This article shows how to use these technologies to create a fun dictaphone app. A sample application: Web Dictaphone To demonstrate basic usage of the MediaRecorder API, we have built a web-based dictaphone. It allows you to record snippets of audio and then play them back. It even gives you a visualisation of your device’s sound input, using the Web Audio API. We’ll just concentrate on the recording and playback functionality in this article, for brevity’s sake. You can see this demo running live, or grab the source code on GitHub. This has pretty good support on modern desktop browsers, but pretty patchy support on mobile browsers currently. Basic app setup To grab the media stream we want to capture, we use getUserMedia(). We then use the MediaRecorder API to record the stream, and output each recorded snippet into the source of a generated <audio> element so it can be played back. We’ll first declare some variables for the record and stop buttons, and the <article> that will contain the generated audio players: const record = document.querySelector('.record'); const stop = document.querySelector('.stop'); const soundClips = document.querySelector('.sound-clips'); Next, we set up the basic getUserMedia structure: if (navigator.mediaDevices && navigator.mediaDevices.getUserMedia) { console.log('getUserMedia supported.'); navigator.mediaDevices.getUserMedia ( // constraints - only audio needed for this app { audio: true }) // Success callback .then(function(stream) { }) // Error callback .catch(function(err) { console.log('The following `getUserMedia` error occured: ' + err); } ); } else { console.log('getUserMedia not supported on your browser!'); } The whole thing is wrapped in a test that checks whether getUserMedia is supported before running anything else. Next, we call getUserMedia() and inside it define: The constraints: Only audio is to be captured for our dictaphone. The success callback: This code is run once the getUserMedia call has been completed successfully. The error/failure callback: The code is run if the getUserMedia call fails for whatever reason. Note: All of the code below is found inside the getUserMedia success callback in the finished version. Capturing the media stream Once getUserMedia has created a media stream successfully, you create a new Media Recorder instance with the MediaRecorder() constructor and pass it the stream directly. This is your entry point into using the MediaRecorder API — the stream is now ready to be captured into a <Blob>, in the default encoding format of your browser. const mediaRecorder = new MediaRecorder(stream); There are a series of methods available in the MediaRecorder interface that allow you to control recording of the media stream; in Web Dictaphone we just make use of two, and listen to some events. First of all, MediaRecorder.start() is used to start recording the stream once the record button is pressed: record.onclick = function() { mediaRecorder.start(); console.log(mediaRecorder.state); console.log("recorder started"); record.style.background = "red"; record.style.color = "black"; } When the MediaRecorder is recording, the MediaRecorder.state property will return a value of “recording”. As recording progresses, we need to collect the audio data. We register an event handler to do this using mediaRecorder.ondataavailable: let chunks = []; mediaRecorder.ondataavailable = function(e) { chunks.push(e.data); } Last, we use the MediaRecorder.stop() method to stop the recording when the stop button is pressed, and finalize the Blob ready for use somewhere else in our application. stop.onclick = function() { mediaRecorder.stop(); console.log(mediaRecorder.state); console.log("recorder stopped"); record.style.background = ""; record.style.color = ""; } Note that the recording may also stop naturally if the media stream ends (e.g. if you were grabbing a song track and the track ended, or the user stopped sharing their microphone). Grabbing and using the blob When recording has stopped, the state property returns a value of “inactive”, and a stop event is fired. We register an event handler for this using mediaRecorder.onstop, and construct our blob there from all the chunks we have received: mediaRecorder.onstop = function(e) { console.log("recorder stopped"); const clipName = prompt('Enter a name for your sound clip'); const clipContainer = document.createElement('article'); const clipLabel = document.createElement('p'); const audio = document.createElement('audio'); const deleteButton = document.createElement('button'); clipContainer.classList.add('clip'); audio.setAttribute('controls', ''); deleteButton.innerHTML = "Delete"; clipLabel.innerHTML = clipName; clipContainer.appendChild(audio); clipContainer.appendChild(clipLabel); clipContainer.appendChild(deleteButton); soundClips.appendChild(clipContainer); const blob = new Blob(chunks, { 'type' : 'audio/ogg; codecs=opus' }); chunks = []; const audioURL = window.URL.createObjectURL(blob); audio.src = audioURL; deleteButton.onclick = function(e) { let evtTgt = e.target; evtTgt.parentNode.parentNode.removeChild(evtTgt.parentNode); } } Let’s go through the above code and look at what’s happening. First, we display a prompt asking the user to name their clip. Next, we create an HTML structure like the following, inserting it into our clip container, which is an <article> element. <article class="clip"> <audio controls></audio> <p>_your clip name_</p> <button>Delete</button> </article> After that, we create a combined Blob out of the recorded audio chunks, and create an object URL pointing to it, using window.URL.createObjectURL(blob). We then set the value of the <audio> element’s src attribute to the object URL, so that when the play button is pressed on the audio player, it will play the Blob. Finally, we set an onclick handler on the delete button to be a function that deletes the whole clip HTML structure. So that’s basically it — we have a rough and ready dictaphone. Have fun recording those Christmas jingles! As a reminder, you can find the source code, and see it running live, on the MDN GitHub. This article is based on Using the MediaStream Recording API by Mozilla Contributors, and is licensed under CC-BY-SA 2.5. About the author Chris Mills manages the MDN web docs writers’ team at Mozilla, which involves spreadsheets, meetings, writing docs and demos about open web technologies, and occasional tech talks at conferences and universities. He used to work for Opera and W3C, and enjoys playing heavy metal drums and drinking good beer. More articles by Chris Full Article Code apis
ap A Modern Typographic Scale By feedproxy.google.com Published On :: Thu, 19 Dec 2019 12:00:00 +0000 Rob Weychert reaches for the top notes to sing us a song of typographic scale. A little attention to scale and to the mathematics will help you to hit a high note with your designs this Christmas and beyond. I’ve been studying music theory this year. While some of its core concepts were already familiar to me, much of their specifics were not. Or so I thought. A funny thing happened when I was learning the major scales. While playing through a song I had written some years before, I started picking it apart to see how it correlated with the theory I was learning. I had composed the melody without any thought to what the specific notes were, but as I started to transcribe them, a pattern quickly emerged: all the B’s and E’s were flat and the rest of the notes were natural. Lo and behold, long before my music theory studies began, I had written a song in B♭ major. My ears already knew how the major scales worked even if my brain didn’t. (If you know how “do re mi fa so la ti do” is supposed to sound tonally, then your ears know, too.) When music is composed to a scale, it sounds “right” to us. And just as our ears appreciate harmony and melody with a rational basis, our eyes can appreciate the same concepts applied to spatial relationships. Have you ever struggled with sizing type in a design project, especially when you need more than just one or two sizes? Have you ever despaired at the number of ad-hoc type sizes on your site spiraling out of control over time? It could be that you’ve been composing the typographic equivalent of a cacophonous symphony. And the first thing any composer will tell you to do is to get that thing on a scale. Meet the typographic scale You don’t need to know music theory to work with a typographic scale. You only need to know that a scale is a range of values with an established mathematic relationship. For a typographic scale, that relationship is frequently a steady interval between type sizes. Depending on what you need your type to do, the interval might be fixed (e.g. each size is two pixels bigger than the size before it) or it might be proportional (e.g. each size is twice as big as the size before it). I personally rarely find fixed intervals useful, so I’ll be focusing on proportional intervals. The most important thing to understand about proportional intervals is thankfully not complicated: The bigger the intervals are, the more drastic the size differences will be in your scale. If your layout calls for contrast, a bigger interval might be the way to go. If you’re aiming for something more nuanced, go smaller. But keep these things in mind: There is such a thing as too much nuance: if a size on your scale is virtually indistinguishable from the sizes adjacent to it, it defeats the purpose of using a scale. On the flip side, too much contrast renders the sizes’ proportional relationship moot. At a certain point, massive display type is arguably more graphic than textual. More is less. The more sizes you use, the less they’ll mean. A small interval (left, 1.1) offers a smoother range of sizes; a large interval (right, 1.8) offers more contrast. Setting up the scale variables The quickest way to get a scale up and running when working on the web is to drop its values into some CSS variables. The naming convention I typically use begins with --scale0, which is the body text size. The size below it is --scale-1 (as in “scale minus one”), the size above it is --scale1, and so on. Keeping the names relative to each other like this helps me move around the scale intuitively as I use it. If, say, --scale4 isn’t big enough for my h1, I can move up to --scale5 or --scale6, and I always know exactly how many steps away from the body text I am. Here’s a first pass at a simple set of scale variables using an interval of 1.5: :root { --scale-2: 7.1px; /* 10.7 ÷ 1.5 */ --scale-1: 10.7px; /* 16 ÷ 1.5 */ --scale0: 16px; /* body text */ --scale1: 24px; /* 16 × 1.5 */ --scale2: 36px; /* 24 × 1.5 */ } I can use these variables with any CSS property that accepts a numeric value, like so: p { font-size: var(--scale0); } Rooting around in rems I’m off to a good start. However, those px values are a little too absolute for my liking. If I convert them to rems, it’ll give my scale more flexibility. rem stands for “root em.” 1rem is equivalent to the html element’s text size, which in most browsers defaults to 16px. Crucially, though, users can adjust that size in their browser settings, and using rems in my CSS will respect those preferences. :root { --scale-2: 0.4rem; /* 0.7rem ÷ 1.5 */ --scale-1: 0.7rem; /* 1rem ÷ 1.5 */ --scale0: 1rem; /* body text */ --scale1: 1.5rem; /* 1rem × 1.5 */ --scale2: 2.25rem; /* 1.5rem × 1.5 */ } Another benefit of the relative nature of rems: I tend to use larger text sizes on large viewports and smaller text sizes on small viewports. Rather than adjusting dozens or hundreds of typographic CSS declarations per breakpoint, I can shift the whole scale up or down merely by adjusting the font-size on the html element: html { font-size: 100%; } /* 1rem = 16px */ @media screen and (min-width: 25em) { html { font-size: 112.5%; } /* 1rem = 18px */ } Calculating with calc() My scale is coming along. Its variables’ intuitive names make it easy for me to use, and its rem values respect the user’s browser preferences and allow me to easily shift the size of the entire scale at different viewport sizes. But my setup still isn’t optimized for one very important adjustment: the interval, which is currently 1.5. If 1.5 isn’t quite working for me and I want to see how an increase or decrease will affect the scale, I need to do the math all over again for every step in the scale every time I adjust the interval. The bigger the scale, the more time that will take. It’s time to put down the abacus and get calc() involved. :root { --int: 1.5; --scale0: 1rem; --scale-1: calc(var(--scale0) / var(--int)); --scale-2: calc(var(--scale-1) / var(--int)); --scale1: calc(var(--scale0) * var(--int)); --scale2: calc(var(--scale1) * var(--int)); } My interval now has its very own variable, called --int. calc() determines each scale size by multiplying the preceding size by --int. Now that every size is ultimately dependent on --scale0’s value, --scale0 must appear first in the list. Since the sizes smaller than --scale0 are going down rather than up, their values require division rather than multiplication. Scaling the scale I can now quickly and easily tweak my scale’s interval by adjusting --int until the proportions are just right, but if I want to add more sizes to the scale, I need to add more variables and calc() values. This isn’t too big of a deal, but if I want to double or triple the number of sizes, it’s kind of a headache. Luckily, this is the sort of thing Sass is really good at. In the following code, adjusting the first four Sass variables at the top of :root will quickly spin up a set of CSS variables like the scale above, with any interval (proportional or fixed) and any number of scale sizes: :root { $interval: 1.5; // Unitless for proportional, unit for fixed $body-text: 1rem; // Must have a unit $scale-min: -2; // Unitless negative integer $scale-max: 2; // Unitless positive integer --int: #{$interval}; --scale0: #{$body-text}; @if $scale-min < 0 { // Generate scale variables smaller than the base text size @for $i from -1 through $scale-min { @if type-of($interval) == number { @if unitless($interval) { --scale#{$i}: calc(var(--scale#{$i + 1}) / var(--int)); } @else { --scale#{$i}: calc(var(--scale#{$i + 1}) - var(--int)); } } } } @if $scale-max > 0 { // Generate scale variables larger than the base text size @for $i from 1 through $scale-max { @if type-of($interval) == number { @if unitless($interval) { --scale#{$i}: calc(var(--scale#{$i - 1}) * var(--int)); } @else { --scale#{$i}: calc(var(--scale#{$i - 1}) + var(--int)); } } } } } Go forth and scale Typographic scales have been an indispensable part of my work for many years, and CSS variables and calc() make setup, adjustments, and experimentation easier than ever. I hope you find these techniques as useful as I do! About the author Rob Weychert is a Brooklyn-based designer. He helps shape the reading experience at ProPublica and has previously helped make books at A Book Apart, games at Harmonix, and websites at Happy Cog. In his free time, he obsesses over music and film. Despite all this, he is probably best known as a competitive air guitarist. More articles by Rob Full Article Design css
ap Flexible Captioned Slanted Images By feedproxy.google.com Published On :: Sat, 21 Dec 2019 12:00:00 +0000 Eric Meyer gift wraps the most awkwardly shaped of boxes using nothing but CSS, HTML and a little curl of ribbon. No matter how well you plan and how much paper you have at your disposal, sometimes you just need to slant the gift to the side. We have a lot of new layout tools at our disposal these days—flexbox is finally stable and interoperable, and Grid very much the same, with both technologies having well over 90% support coverage. In that light, we might think there’s no place for old tricks like negative margins, but I recently discovered otherwise. Over at An Event Apart, we’ve been updating some of our landing pages, and our designer thought it would be interesting to have slanted images of speakers at the tops of pages. The end result looks like this. The interesting part is the images. I wanted to set up a structure like the following, so that it will be easy to change speakers from time to time while preserving accessible content structures: <div id="page-top"> <ul class="monoliths"> <li> <a href="https://aneventapart.com/speakers/rachel-andrew"> <img src="/img/rachel-andrew.jpg" alt=""> <div> <strong>Rachel Andrew</strong> CSS Grid </div> </a> </li> <li> <a href="https://aneventapart.com/speakers/derek-featherstone"> <img src="/img/derek-featherstone.jpg" alt=""> <div> <strong>Derek Featherstone</strong> Accessibility </div> </a> </li> <li> … </li> <li> … </li> </ul> </div> The id value for the div is straightforward enough, and I called the ul element monoliths because it reminded me of the memorial monoliths at the entrance to EPCOT in Florida. I’m also taking advantage of the now-ubiquitous ability to wrap multiple elements, including block elements, in a hyperlink. That way I can shove the image and text structures in there, and make the entire image and text below it one link. Structure is easy, though. Can we make that layout fully responsive? I wondered. Yes we can. Here’s the target layout, stripped of the navbar and promo copy. So let’s start from the beginning. The div gets some color and text styling, and the monoliths list is set to flex. The images are in a single line, after all, and I want them to be flexible for responsive reasons, so flexbox is 100% the right tool for this particular job. #page-top { background: #000; color: #FFF; line-height: 1; } #page-top .monoliths { display: flex; padding-bottom: 1em; overflow: hidden; } I also figured, let’s give the images a simple basis for sizing, and set up the hyperlink while we’re at it. #page-top .monoliths li { width: 25%; } #page-top .monoliths a { color: inherit; text-decoration: inherit; display: block; padding: 1px; } So now the list items are 25% wide—I can say that because I know there will be four of them—and the links pick up the foreground color from their parent element. They’re also set to generate a block box. At this point, I could concentrate on the images. They need to be as wide as their parent element, but no wider, and also match height. While I was at it, I figured I’d create a little bit of space above and below the captioning text, and make the strong elements containing speakers’ names generate a block box. #page-top .monoliths img { display: block; height: 33rem; width: 100%; } #page-top .monoliths div { padding: 0.5em 0; } #page-top .monoliths strong { display: block; font-weight: 900; } It looks like the speakers were all cast into the Phantom Zone or something, so that needs to be fixed. I can’t physically crop the images to be the “correct” size, because there is no correct size: this needs to work across all screen widths. So rather than try to swap carefully-sized images in and out at various breakpoints, or complicate the structure with a wrapper element set to suppress overflow of resized images, I turned to object-fit. #page-top .monoliths img { display: block; height: 33rem; width: 100%; object-fit: cover; object-position: 50% 20%; } If you’ve never used object-fit, it’s a bit like background-size. You can use it to resize image content within the image’s element box without creating distortions. Here, I set the fit sizing to cover, which means all of the img element’s element box will be covered by image content. In this case, it’s like zooming in on the image content. I also set a zooming origin with object-position, figuring that 50% across and 20% down would be in the vicinity of a speaker’s face, given the way pictures of people are usually taken. This is fairly presentable as-is—a little basic, perhaps, but it would be fine to layer the navbar and promo copy back over it with Grid or whatever, and call it a day. But it’s too square and boxy. We must go further! To make that happen, I’m going to take out the third and fourth images temporarily, so we can see more clearly how the next part works. That will leave us with Rachel and Derek. The idea here is to clip the images to be slanted, and then pull them close to each other so they have just a little space between them. The first part is managed with clip-path, but we don’t want to pull the images together unless their shapes are being clipped. So we set up a feature query. @supports (clip-path: polygon(0 0)) or (-webkit-clip-path: polygon(0 0)) { #page-top .monoliths li { width: 37.5%; } } I decided to test for both the un-prefixed and WebKit-prefixed versions of clip-path because Safari still requires the prefix, and I couldn’t think of a good reason to penalize Safari’s users for the slowness of its standards advancement. Then I made the images wider, taking them from 25% to 37.5%, which makes them half again as wide. Thanks to object fitting, the images don’t distort when I change their parent’s width; they just get wider and scale up the contents to fit. And now, it is time for clipping! @supports (clip-path: polygon(0 0)) or (-webkit-clip-path: polygon(0 0)) { #page-top .monoliths li { width: 37.5%; -webkit-clip-path: polygon(25% 0, 100% 0, 75% 100%, 0 100%); clip-path: polygon(25% 0, 100% 0, 75% 100%, 0 100%); } } Each coordinate pair in the polygon() is like the position pairs in background-position or object-position: the horizontal distance first, followed by the vertical distance. So the first point in the polygon is 25% 0, which is 25% of the way across the element box, and no distance down, so right at the top edge. 100% 0 is the top right corner. 75% 100% is on the bottom edge, three-quarters of the way across the element, and 0 100% is the bottom left corner. That creates a polygon that’s a strip three-quarters the full width of the element box, and runs from bottom left to top right. Now we just have to pull them together, and this is where old tricks come back into play: all we need is a negative right margin to bring them closer together. #page-top .monoliths li { width: 37.5%; margin-right: -7.5%; -webkit-clip-path: polygon(25% 0, 100% 0, 75% 100%, 0 100%); clip-path: polygon(25% 0, 100% 0, 75% 100%, 0 100%); } The separation between them is a little wider than we were originally aiming for, but let’s see what happens when we add the other two images back in and let flexbox do its resizing magic. Your browser doesn’t support HTML5 video. Here is a link to the video instead. Notice how the slants actually change shape as the screen gets narrower or wider. This is because they’re still three-quarters the width of the image element’s box, but the width of that box is changing as the screen width changes. That means at narrow widths, the slant is much steeper, whereas at wide widths, the slant is more shallow. But since the clipping path’s coordinates were all set with percentage distances, they all stay parallel to each other while being completely responsive to changes in screen size. An absolute measure like pixels would have failed. But how did the images get closer together just by adding in two more? Because the list items’ basic sizing added up to more than 100%, and they’re all set to flex-shrink: 1. No, you didn’t miss a line in the CSS: 1 is the default value for flex-shrink. Flex items will shrink by default, which after all is what we should expect from a flexible element. If you want to know how much they shrunk, and why, here’s what Firefox’s flex inspector reports. When there were only two list items, there was space enough for both to be at their base size, with no shrinkage. Once we went to four list items, there wasn’t enough space, so they all shrank down. At that point, having a negative right margin of -7.5% was just right to pull them together to act as a unit. So, now they’re all nicely nestled together, and fully responsive! The captions need a little work, though. Notice how they’re clipped off a bit on the left edge, and can be very much clipped off on the right side at narrower screen widths? This happens because the li elements are being clipped, and that clipping applies to all their contents, images and text alike. And we can’t use overflow to alter this: clipped is clipped, not overflowed. Fortunately, all we really need to do is push the text over a small amount. Inside the feature query, I added: #page-top .monoliths div { padding-left: 2%; padding-right: 26%; } This shifts the text just a bit rightward, enough to clear the clip path. On the right side, I padded the div boxes so their contents wouldn’t fall outside the clipped area and appear to slide under the next caption. We could also use margins here, but I didn’t for reasons I’ll make clear at the end. At the last minute, I decided to make the text at least appear to follow the slants of the images. For that, I just needed to shift the first line over a bit, which I did with a bit more padding. #page-top .monoliths strong { padding-left: 1%; } That’s all to the good, but you may have noticed the captions still overlap at really narrow screen widths. There are a lot of options here, from stacking the images atop one another to reverting to normal flow, but I decided to just hide the captions if things got too narrow. It reduces clutter without sacrificing too much in the way of content, and by leaving them still technically visible, they seem to remain accessible. @media (max-width: 35rem) { #page-top .monoliths div { opacity: 0.01 } } And that, as they say, is that! Fully responsive slanted images with text, in an accessible markup structure. I dig it. I did fiddle around with the separations a bit, and found that a nice thin separator occurred around margin-right: -8%, whereas beefier ones could be found above -7%. And if you crank the negative margin value to something beyond -8%, you’ll make the images overlap entirely, no visible separation—which can be a useful effect in its own right. I promised to say why I used padding for the caption text div rather than margins. Here’s why. #page-top .monoliths div { padding-left: 3%; padding-right: 26%; border-top: 2px solid transparent; background: linear-gradient(100deg,hsl(292deg,50%,50%) 50%, transparent 85%); background-clip: padding-box; } It required a wee bit more padding on the left to look decent, and an alteration to the background clipping box in order to keep the purple from filling the transparent border area, but the end result is pretty nifty, if I do say so myself. Alternatively, we could drop the background gradient on the captions and put one in the background, with a result like this. I have no doubt this technique could be extended, made more powerful, and generally improved upon. I really wished for subgrid support in Chrome, so that I could put everything on a grid without having to tear the markup structure apart, and there are doubtless even more interesting clipping paths and layout patterns to try out. I hope these few ideas spark some much better ideas in you, and that you’ll share them with us! About the author Eric A. Meyer (@meyerweb) has been a burger flipper, a college webmaster, an early blogger, one of the original CSS Samurai, a member of the CSS Working Group, a consultant and trainer, and a Standards Evangelist for Netscape. Among other things, Eric co-wrote Design For Real Life with Sara Wachter-Boettcher for A Book Apart and CSS: The Definitive Guide with Estelle Weyl for O’Reilly, created the first official W3C test suite, assisted in the creation of microformats, and co-founded An Event Apart with Jeffrey Zeldman. Eric lives with his family in Cleveland, Ohio, which is a much nicer city than you’ve probably heard. He enjoys a good meal whenever he can and considers almost every form of music to be worthwhile. More articles by Eric Full Article Design css
ap Vicious games [electronic resource] : capitalism and gambling / Rebecca Cassidy. By darius.uleth.ca Published On :: London : Pluto Press, 2020. Full Article
ap Drug courts [electronic resource] : a new approach to treatment and rehabilitation / James E. Lessenger, Glade F. Roper, editors By darius.uleth.ca Published On :: New York : Springer, [2007] Full Article
ap Reluctant warriors: Germany, Japan, and their U.S. alliance dilemma / Alexandra Sakaki, Hanns W. Maull, Kerstin Lukner, Ellis S. Krauss, Thomas U. Berger By library.mit.edu Published On :: Sun, 22 Mar 2020 07:44:49 EDT Dewey Library - UA710.S135 2020 Full Article
ap Leadership decapitation: strategic targeting of terrorist organizations / Jenna Jordan By library.mit.edu Published On :: Sun, 22 Mar 2020 07:44:49 EDT Dewey Library - HV6431.J674 2019 Full Article
ap Homeland security and public safety: research, applications and standards / editors, Philip J. Mattson and Jennifer L. Marshall By library.mit.edu Published On :: Sun, 29 Mar 2020 07:44:51 EDT Barker Library - UA23.H538 2019 Full Article
ap 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
ap Monsters to destroy: understanding the "War on Terror" / Navin A. Bapat By library.mit.edu Published On :: Sun, 29 Mar 2020 07:44:51 EDT Dewey Library - HV6432.B364 2019 Full Article
ap 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
ap 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
ap 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
ap Security and terror: American culture and the long history of colonial modernity / Eli Jelly-Schapiro By library.mit.edu Published On :: Sun, 26 Apr 2020 09:04:30 EDT Dewey Library - HV6432.J445 2018 Full Article
ap Strategy, evolution, and war: from apes to artificial intelligence / Kenneth Payne By library.mit.edu Published On :: Sun, 26 Apr 2020 09:04:30 EDT Dewey Library - U162.P39 2018 Full Article
ap Responsible parties: saving democracy from itself / Frances McCall Rosenbluth and Ian Shapiro By library.mit.edu Published On :: Sun, 26 Apr 2020 09:04:30 EDT Dewey Library - JF2051.R67 2018 Full Article
ap Clearer than truth: the polygraph and the American Cold War / John Philipp Baesler By library.mit.edu Published On :: Sun, 26 Apr 2020 09:04:30 EDT Dewey Library - JK468.L5 B34 2018 Full Article
ap 21st century Prometheus: managing CBRN safety and security affected by cutting-edge technologies / Maurizio Martellini, Ralf Trapp, editors By library.mit.edu Published On :: Sun, 26 Apr 2020 09:04:30 EDT Online Resource Full Article
ap Borders and margins: federalism, devolution and multi-level governance / Guy Lachapelle, Pablo Oñate, [editors] By library.mit.edu Published On :: Sun, 26 Apr 2020 09:04:30 EDT Dewey Library - JC355.B67 2018 Full Article
ap 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
ap The infamous Harry Hayward: a true account of murder and mesmerism in gilded age Minneapolis / Shawn Francis Peters By library.mit.edu Published On :: Sun, 26 Apr 2020 09:04:30 EDT Hayden Library - HV6248.H3 P47 2018 Full Article
ap December 16 Gangrape case: High Court to hear trial court reference on Monday By archive.indianexpress.com Published On :: Sun, 22 Sep 2013 13:38:28 GMT All four accused were found guilty and awarded death sentence by the sessions court. Full Article
ap Thiruvananthapuram: Dead snake found in soft drink tetrapack By archive.indianexpress.com Published On :: Mon, 23 Sep 2013 09:48:29 GMT The two and a half year old girl was later rushed to a hospital, condition stated to be stable. Full Article
ap ED set to attach assets of former Karnataka CM B S Yeddyurappa, family By archive.indianexpress.com Published On :: Thu, 26 Sep 2013 20:22:48 GMT Development comes even as BSY readies to rejoin the BJP before the Lok Sabha election next year. Full Article
ap Court junks plea for brain mapping test on Lashkar 'bomb expert' Tunda By archive.indianexpress.com Published On :: Thu, 26 Sep 2013 20:40:10 GMT Alleged Laskhar-e-Toiba bomb expert refused to give his consent for it. Full Article
ap Mumbai's collapsed building was tagged as dangerous to live in By archive.indianexpress.com Published On :: Fri, 27 Sep 2013 10:21:28 GMT The building constructed in 1980, was tagged in the C-2 category of dangerous buildings. Full Article
ap Entrance gate of Asaram Bapu's Indore ashram razed By archive.indianexpress.com Published On :: Sat, 28 Sep 2013 13:50:59 GMT Action taken after ashram's authorities failed to produce permission certificate for construction of the gate. Full Article
ap 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
ap Mumbai building collapse: Death toll climbs to 61, rescue operation to be called off soon By archive.indianexpress.com Published On :: Sun, 29 Sep 2013 05:38:21 GMT The five-storey building, owned by the BMC had collapsed early morning on Friday. Full Article
ap Rahul Gandhi should apologise for his remarks on ordinance: Shivraj Singh Chouhan By archive.indianexpress.com Published On :: Sun, 29 Sep 2013 08:53:08 GMT "By making such a statement, Rahul has lowered the country's image" Full Article
ap Tense Meerut erupts, six hurt in clash with police at banned mahapanchayat By archive.indianexpress.com Published On :: Mon, 30 Sep 2013 14:53:21 GMT Angry mob, started pelting stones and damaged nine vehicles of police and administration. Full Article
ap TRS President for Hyderabad as Telangana capital, warns stir By archive.indianexpress.com Published On :: Sun, 29 Sep 2013 16:36:43 GMT KCR's statement came against the backdrop of reports of proposals making Hyderabad a UT. Full Article
ap Out of jail, Jagan appreciates Modi as an administrator By archive.indianexpress.com Published On :: Mon, 30 Sep 2013 13:47:09 GMT 'Religion should not be politicised and my party is committed to secularism', Jagan said. Full Article
ap Crushed families: Story of the survivors of the Mumbai building collapse By archive.indianexpress.com Published On :: Tue, 01 Oct 2013 18:51:09 GMT 61 people were killed and 31 injured after a residential building collapsed in Mumbai last week. Full Article
ap Srinagar encounter ends, militants escape By archive.indianexpress.com Published On :: Thu, 03 Oct 2013 07:00:41 GMT Four more cops sustained minor injuries in the exchange of fire between the two sides. Full Article
ap Cong MP Rajagopal to move SC against AP bifurcation decision By archive.indianexpress.com Published On :: Fri, 04 Oct 2013 06:02:17 GMT Move violates the federal principles and structure of the Constitution, Rajagopal said. Full Article
ap AP law minister quits over state bifurcation decision By archive.indianexpress.com Published On :: Fri, 04 Oct 2013 08:15:54 GMT Erasu was one of the dozen ministers who had submitted resignations to CM Reddy. Full Article
ap 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
ap Delhi: Durga Puja's capital shift celebrates 100 years By archive.indianexpress.com Published On :: Sat, 05 Oct 2013 19:26:29 GMT Bengali families have the colonial rulers to thank for suggesting that they hold Puja celebrations. Full Article
ap December 16 gangrape case: Two convicts file appeal in HC By archive.indianexpress.com Published On :: Mon, 07 Oct 2013 16:31:40 GMT Trial court had last month awarded death penalty to all four accused in the case. Full Article
ap Mayawati has captured Dalit movement, doesn't allow others to rise: Rahul Gandhi By archive.indianexpress.com Published On :: Tue, 08 Oct 2013 09:30:06 GMT Rahul urged Congress to "systematically" prepare Dalit leadership at every level. Full Article
ap SC disapproves gun firing to celebrate marriage ceremonies By archive.indianexpress.com Published On :: Wed, 09 Oct 2013 14:14:56 GMT Guns must be carried with a sense of responsibility and caution, SC stated. Full Article
ap Jammu terror attack: Govt admits 'lapses' in dealing with infiltration information By archive.indianexpress.com Published On :: Thu, 10 Oct 2013 14:15:56 GMT Shinde said his Ministry has sought a report from the JandK govt on the possible lapses. Full Article
ap Naveen Patnaik asks for IAF, Navy help as cyclone Phailin approaches By archive.indianexpress.com Published On :: Thu, 10 Oct 2013 20:48:50 GMT Cyclone Phailin, the strongest to form on the Indian seas this year, moved closer to Orissa coast. Full Article
ap Odisha evacuates 2.5 lakh people as Phailin approaches By archive.indianexpress.com Published On :: Sat, 12 Oct 2013 06:51:22 GMT Cyclonic storm Phailin is currently positioned just 260 km off the coast of Gopalpur. Full Article
ap Cyclone Phailin: Jharkhand govt alerts districts as storm approaches By archive.indianexpress.com Published On :: Sat, 12 Oct 2013 08:52:52 GMT MeT said the cyclonic storm is expected to enter the state on Sunday morning. Full Article
ap Odisha, Andhra brace for devastation as Cyclone Phailin approaches By archive.indianexpress.com Published On :: Sat, 12 Oct 2013 10:16:10 GMT Filling most of the Bay of Bengal, Cyclone Phailin is expected to hit between 6-8pm. Full Article
ap AP CM takes stock of cyclone situation; officials on alert By archive.indianexpress.com Published On :: Sat, 12 Oct 2013 10:33:32 GMT He enquired about the cyclone situation and directed officials to be on high alert. Full Article
ap Kapil Sibal flags jurisdiction issue in cyber security laws By archive.indianexpress.com Published On :: Mon, 14 Oct 2013 12:27:38 GMT Sibal stated that there should be "accountability and responsibility" in the cyber space. Full Article
ap Jaganmohan Reddy appears before CBI court in disproportionate assets case By archive.indianexpress.com Published On :: Thu, 17 Oct 2013 09:15:39 GMT Case relates to alleged investments made by various companies in Jagan's firms. Full Article