building

Building a Dictaphone Using Media Recorder and getUserMedia

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




building

Mumbai's collapsed building was tagged as dangerous to live in

The building constructed in 1980, was tagged in the C-2 category of dangerous buildings.




building

Mumbai building collapse: Death toll climbs to 61, rescue operation to be called off soon

The five-storey building, owned by the BMC had collapsed early morning on Friday.




building

Crushed families: Story of the survivors of the Mumbai building collapse

61 people were killed and 31 injured after a residential building collapsed in Mumbai last week.




building

19 buildings operating as commercial outlets sealed in Kashmir

The owners of buildings and shops have accused the authorities of selectively targeting them.




building

Infant, 2 workers killed in Bangalore building collapse

Mud walls of building may have been weakened by the recent downpour in the city, officials said.




building

The Paris Framework for Climate Change capacity building / Mizan R. Khan, J. Timmons Roberts, Saleemul Huq and Victoria Hoffmeister




building

Building adaptive capacity to climate change : contributions from Australia's Marine Adaptation Network 2009-2013 / [Neil Holbrook]

Holbrook, Neil John, compiler




building

Current and future impacts of climate change on housing, buildings and infrastructure / The Senate, Environment and Communications References Committee

Australia. Parliament. Senate. Environment and Communications References Committee




building

Environmental capacity building in APEC : policies, research & programs in cleaner production : case studies in the food industry sector / edited by Robert J. Pagan & Leslie J. Williams




building

Seven West Bengal men dead in Mumbai building collapse



  • DO NOT USE West Bengal
  • India

building

Kolkata: Security at Writers’ Building beefed up after hoax bomb email



  • DO NOT USE West Bengal
  • India

building

058 JSJ Building Accessible Websites with Brian Hogan

Use this link and code JAVAJAB to get 20% off your registration for FluentConf 2013! Panel Brian Hogan (twitter github blog) AJ O’Neal (twitter github blog) Joe Eames (twitter github blog) Merrick Christensen (twitter github) Charles Max Wood (twitter github Teach Me To Code Rails Ramp Up) Discussion 00:55 - Brian Hogan Introduction HTML5 and CSS3: Develop with Tomorrow's Standards Today by Brian Hogan tmux: Productive Mouse-Free Development by Brian Hogan Web Development Recipes by Brian P. Hogan, Chris Warren, Mike Weber, Chris Johnson, Aaron Godin Development Editor with Pragmatic Bookshelf Professor at Chippewa Valley Technical College 01:48 - What Accessibility Means 02:56 - Making Websites Accessible YSlow People vs Users 06:06 - “The Right Things” VersaBraille Responsive Web Design 09:00 - Tools & Techniques Fahrner Image Replacement (FIR) Web Fonts ⌘+ 14:56 - Manipulating the DOM ARIA - HTML5 Ember.js 16:54 - Screen Resolution 19:24 - Typeahead 20:58 - Testing Jaws VoiceOver 23:11 - Resources WebAIM Web Content Accessibility Guidelines (WCAG) Section 508 25:00 - Dealing with different kinds of impairments Transcripts Text Color 28:08 - Ease of Accessibility & Empathy 31:41 - Interactive Pages 35:26 - Making things accessible vs not making things accessible Making experiences better for everyone, period 42:09 - Resources Cont’d Web Content Accessibility Guidelines (WCAG) Pro HTML5 Accessibility by Joe O Conner Design Accessible Web Sites: 36 Keys to Creating Content for All Audiences and Platforms by Jeremy Sydik 42:46 - Understanding Others’ Difficulties Picks Leviathan: Warships (Joe) Star Command (Joe) That Conference (Joe) Lowes (AJ) Friends (AJ) Ticket to Ride (Chuck) 4 Pics 1 Word (Chuck) Continuum (Chuck) AngularJS (Brian) Presentation Manager from Woojijuice (Brian) Next Week JavaScript Jabber: jQuery Mobile with Todd Parker Transcript MERRICK:  Fine, don’t come to my talk. CHUCK:  I won’t. I won’t even come to the conference. [Hosting and bandwidth provided by the Blue Box Group. Check them out at Bluebox.net.] [This episode is sponsored by Component One, makers of Wijmo. If you need stunning UI elements or awesome graphs and charts, then go to Wijmo.com and check them out.] CHUCK:  Hey everybody, and welcome to Episode 58 of the JavaScript Jabber Show. This week on our panel, we have AJ O’Neal. AJ:  Coming at you semi-live from ORM. CHUCK:  Joe Eames. JOE:  Hey everybody. CHUCK:  Merrick Christensen. MERRICK:  What’s up? CHUCK:  I’m Charles Max Wood from Devchat.tv. And this week, we have a special guest. And that is Brian Hogan. BRIAN:  Hello. CHUCK:  Since you haven’t been on the show before, do you want to introduce your self really quickly? BRIAN:  Sure, my name is Brian Hogan and I’m a web developer and I like to spend a lot of time hacking on code in Ruby and JavaScript. I also am an author. I’m a development editor with The Pragmatic Bookshelf. And I have a fabulous new gig where I get to teach brand new programmers how to get started programming now. So, that’s what I’m doing myself. CHUCK:  So where’s that at? AJ:  Cool. BRIAN:  That’s at a little technical college in Eau Claire, Wisconsin called Chippewa Valley Technical College. CHUCK:  Oh, cool. Yeah, speaking of your reviewing books for The Pragmatic Bookshelf, Ruby Rogues, we actually interviewed Bruce Williams and John Athayde about The Rails View this morning. They mentioned you, and I was like “Oh, we’re talking to him in a couple of hours.” BRIAN:  Oh, those are some great guys and that’s a great book. CHUCK:  Yup. So, the reason we brought you on the show is because, at least in my case, I know absolutely nothing about building accessible websites.




building

JSJ 247 Building a Development Environment with Cory House

On today's episode, Charles Max Wood, AJ O'neal, Joe Eames, and Aimee Knight discuss Building a Development Environment with Cory House. Pluralsight recently added a course on this. Tune in to know more!




building

JSJ 268 Building Microsoft Office Extensions with JavaScript with Tristan Davis and Sean Laberee

JSJ 268 Building Microsoft Office Extensions with Javascript with Tristan Davis and Sean Laberee

This episode is live at the Microsoft Build 2017 with Charles Max Wood and AJ O’Neal. We have Tristan Davis and Sean Laberee from the Office Team at Microsoft. Tune in and learn more about what’s new with Microsoft Office Extensions!

[00:01:25] – Introduction to Tristan Davis and Sean Laberee

Tristan Davis and Sean Laberee are Program Managers on the Microsoft Office team, focused on Extensibility.

Questions for Tristan and Sean

[00:01:45] – Extending Office functionality with Javascript

Office isn’t just an application on Windows that runs on your PC. It is running on iPhone, iPad, Android tablet, and apps on the browser with Office Online. The team needs a new platform, add-ins, which allow you to build apps that run across all places. It’s HTML and Javascript. HTML for all the UI and a series of Javascript module calls for the document properties. Sometimes we call it OfficeJS.

[00:03:20] – This works on any version of Office?

It works on Office on Windows, Mac, Online and iPad.

[00:03:55] – HTML and CSS suck on mobile?

There are things that you’re going to want to do when you know you’re running on a mobile device. If you look at an add-in running on Outlook for iPhone, the developer does a lot of things to make that feel like part of the iPhone UI. Tristan believes that you could build a great add-in for Office using HTML and JavaScript.

[00:05:20] – Are these apps written with JavaScript or you have a Native with WebView?

Office itself is Native. All of it is Native code but the platform is very much web. The main piece of it is pointing at the URL. Just go load that URL. And then, you can also call functions in your JavaScript.

[00:06:35] – Why would you do this? How does it work?

The add-in platform is a way to help developers turn Word, Excel and PowerPoint into the apps that actually solve user’s business problems. The team will give you the tools with HTML and JavaScript to go and pop into the Word UI and the API’s that let you go manipulate the paragraph and texts inside of Word. Or in Excel, you might want to create custom formulas or visualizations. The team also let people use D3 to generate their own Excel charts.

And developers want to extend Office because it’s where a lot of business workers spend their days 0 in Outlook, Teams, Word, Excel.

[00:10:00] – How did this get delivered to them?

There are 2 ways to get this delivered. One, there’s an Office Store. Second, if you go into Word, Excel, and PowerPoint, there’s a store button and you can see tons of integrations with partners.

For enterprises, IT can deploy add-ins to the users’ desktops without having stress about deploying MSI’s and other software deployments that the web completely rids off. The add-ins make a whole lot of pain the past completely go away.

[00:11:00] – Everybody in the company can use a particular plug-in by distributing it with Office?

That’s right. You can go to Office 365 add-in experience. Here’s the add-in and you can to specific people or everyone who’s part of a group.

For the developer’s perspective, if you have the add-in deployed to your client, you could actually push updates to the web service and your users get the updates instantly. It’s a lot faster turn-around model.

[00:14:20] – What about conversations or bot integrations?

There’s the idea of connectors at Teams. You can subscribe to this web book and it’ll publish JSON. When the JSON is received, a new conversation inside of Teams or Outlook will be created. For example, every time someone posts on Stack Overflow with one of the tags that team cares about, it posts on Outlook.

It’s a great way to bring all the stuff. Rather than have 20 different apps that are shooting 20 different sets of notifications, it’s just all conversations in email, making do all the standard email things.

And in the connector case, it’s a push model. The user could choose what notifications they want.

You’d also learn things like bots. You can have bots in Teams and Skype. The users can interact with them with their natural language.

[00:18:40] – How about authentication?

As long as you’re signed into Office, you can call JavaScript API to give you an identity token for the sign in user and it will hand you a JWT back. That’s coming from Azure Active Directory or from whatever customer directory service. That’s standard.

If you want to do more, you can take that identity token and you can exchange that for a token that can call Microsoft graph. This app wants to get access to phone, are you okay with that? Assuming the user says yes, the user gets a token that can go and grab whatever data he wants from the back-end.

[00:20:00] – Where does it store the token?

That’s up to the developer to decide how they want to handle that but there are facilities that make sure you can pop up a dialog box and you can go to the LO-flow. You could theoretically cache it in the browser or a cookie. Or whatever people think is more appropriate for the scenario.

[00:20:55] – What does the API actually look like from JavaScript?

If you’re familiar with Excel UI, you can look at Excel API. It’s workbook.worksheets.getItem() and you can pass the name of the worksheet. It can also pass the index of the worksheet.

[00:22:30] – What’s the process of getting setup?

There’s a variety of options. You can download Office, write XML manifest, and take a sample, and then, side loads it into Office. You can also do that through web apps. There’s no install required because you can go work against Office Online. In the Insert menu, there’s a way to configure your add-ins. There’s upload a manifest there and you can just upload the XML. That’s going to work against whatever web server you have set up.

So it’s either on your local machine or up in the cloud. It’s as much as like regular web development. Just bring your own tools.

[00:24:15] – How do you protect me as a plug-in developer?

There’s an access add-in that will ask your permission to access, say, a document. Assume, they say yes, pipes are opened and they can just go talk to those things. But the team also tries to sandbox it by iframes. It’s not one page that has everybody’s plug-ins intermingle that people can pole at other people’s stuff.

[00:27:20] – How do you support backward compatibility?

There are cases where we change the behavior of the API. Every API is gated by requirement set. So if a developer needs access to a requirement set, he gets an aggregate instead of API’s that he can work with but it isn’t fixed forever.

But it’s not at that point yet where we end up to remove things completely. In Office JS, we’ve talked about API’s as one JavaScript library but really, it’s a bootstrap that brings in a bunch of other pieces that you need.

[00:30:00] – How does that work on mobile? Do they have to approve download for all components?

You can download components by using the browser that the operating system gives. It’s another one of the virtues of being based on the web. Every platform that has a web browser can have JavaScript execution run-time. It allows for the way that their app guidelines are written.

[00:33:15] – How about testing?

It’s a place where there’s still have work to do. There’s a bunch of open-source projects that partners have started to do that. What they’ve done is they’ve built a testing library. Whatever the mock is, it's just a thing on Github. It is open-source friendly. So the team could be able to contribute to it. “Here’s an interesting test case for this API. I want to make sure that it behaves like this.

[00:35:50] – Could you write it with any version for JavaScript e.g. TypeScript?

A Huge chunk of the team is big TypeScript fans. They’ve done a lot of work to make sure that TypeScript experience is excellence.

Type is basically a collection of typing files for TypeScript. There’s a runtime process that parses your TypeScript, gives you feedback on your code, and checks for errors. You can also run it in the background.

There’s an add-in called Script Lab. Script Lab is literally, you hit the code button and you get a web IDE right there. You can go start typing JavaScript code, play with API’s, and uses TypeScript by default. It’ll just actually load your code in the browser, executes, and you can start watching.

[00:39:25] – Are there any limitations on which JavaScript libraries you can pull in?

There a no limitations in place right now. There are partners that use Angular. There are partners that are big React fans. If you’re a web dev, you can bring whatever preferences around frameworks, around tools, around TypeScript versus JavaScript.

[00:45:20] – What’s the craziest thing you’ve seen done with this API?

Battleship was pretty cool. There’s also Star Wars entering credits theme for PowerPoint.

[00:46:40] – If a developer is building a plug-in and get paid for it, does Microsoft take credit for that?

There are 2 ways that folks can do it. You can do paid add-ins to the store. Either you do the standard perpetual 99 cents or you can do subscriptions, where it’s $2.99/month. Tristan encourages that model because integrations are just a piece of some larger piece of software.

But Microsoft is not in the business of trying to get you to pay me a little bit of 10 cents a dollar. It’s really in the business of making sure that you can integrate with Office as quickly as possibly can.

When the users go to the store, they can use the same Microsoft account that you use to buy Xbox games or movies in the Xbox, Windows apps in the Windows store.

[00:52:00] – The App Model

If folks are interested in the app model, they should go to dev.office.com to learn more about it because that’s where all the documentation is. Check out our Github. Right there in the open, there’s the spec. Literally, the engineers who are coding the product are reading the same marked-down files in the same repo that you, as a developer, can come and look at. And you can comment. You can add issues like you could have a dialogue with that PM. Under the OfficeDev, you’ll find a tunnel repository that contains samples. Our docs are there.

Picks

AJ O'Neal

  • Lithium

Charles Max Wood

Tristan Davis

Sean Laberee




building

JSJ 322: Building SharePoint Extensions with JavaScript with Vesa Juvonen LIVE at Microsoft Build

Panel:

Charles Max Wood

Special Guests: Vesa Juvonen

In this episode, the JavaScript Jabber panel talks to Vesa Juvonen about building SharePoint extensions with JavaScript. Vesa is on the SharePoint development team and is responsible for the SharePoint Framework, which is the modern way of implementing SharePoint customizations with JavaScript. They talk about what SharePoint is, why they chose to use JavaScript with it, and how he maintains isolation. They also touch on the best way to get started with SharePoint, give some great resources to help you use it, and more!

In particular, we dive pretty deep on:

Links:

Sponsors

Picks:

Charles

Vesa




building

JSJ 323: "Building a JavaScript platform that gives you the power to build your own CDN" with Kurt Mackey

Panel:

  • Charles Max Wood
  • AJ ONeal

Special Guests: Kurt Mackey

In this episode, the JavaScript Jabber panel talks to Kurt Mackey about Fly.io. At Fly.io, they are "building a JavaScript platform that gives you the power to build your own CDN." They talk about how Fly.io came to fruition, how CDN caching works, and what happens when you deploy a Fly app. They also touch on resizing images with Fly, how you actually build JavaScript platforms using Fly, and more!

In particular, we dive pretty deep on:

  • Fly.io
  • Building a programmable CDN
  • High level overview of Fly.io
  • How did this project come together?
  • CDNs didn’t work with dynamic applications
  • Has been working on this since 2008
  • Extend application logic to the “edge”
  • Putting burden of JavaScript “nastiest” onto the web server
  • Fly is the proxy layer
  • Getting things closer to visitors and users
  • CDN caching
  • Cache APIs
  • Writing logic to improve your lighthouse score
  • Have you built in resizing images into Fly?
  • Managing assets closer to the user
  • Can you modify your own JavaScript files?
  • What happens when you deploy a Fly app
  • Having more application logic
  • DOM within the proxy
  • Ghost
  • React and Gatsby
  • Intelligently loading client JavaScript
  • How do you build the JavaScript platform?
  • And much, much more!

Links:

Sponsors

Picks:

Charles

AJ

Kurt




building

JSJ 381: Building a Personal Brand with John Sonmez

Sponsors

Panel

  • Charles Max Wood

  • Christopher Beucheler

  • AJ O’Neal

With Special Guest: John Somnez

Episode Summary

John is the founder of Bulldog Mindset andSimple Programmer, which teaches software developers soft skills, and the author of a couple books. He specializes in creating a personal brand and marketing. He addresses the rumors of him leaving software development and gives an introduction to marketing yourself as a software developer and its importance. The panel discusses their experience with consulting and how marketing themselves has paid off. John talks about the importance of having soft skills. In his opinion, the most important soft skills for programmers are communication, persuasion and influence, people skills and charisma. He talks about highlight those soft skills. The truth is, more and more people are hiring for people skills rather than technical skills. The panel discusses more about the importance of people skills.

John talks about ways to build your personal brand. One of the easiest ways is blogging but he talks about other methods like podcasts YouTube, writing books, and others. A key to building a personal brand is choosing something that you can become the best at, no matter how small it is. The panel shares their experiences of what things have gotten them attention and notoriety and talk about how other influential programmers got famous. They talk about interacting with central platforms like Medium and Github. Building a personal brand for software developers is the same as any other personal brand, such as having a consistent message, consistent logos and color schemes, and repeated exposure). Most people in the software world aren’t willing to do what’s necessary to build a personal brand, so it makes you stand out when you do it. John talks about the importance of controlling your image so that companies want to hire you. John gives a brief overview of his course How to Market Yourself as a Software Developer. 

Click here to cast your vote NOW for JavaScript Jabber - Best Dev Podcast Award

Links

 

Picks

Charles Max Wood:

John Somnez:

Christopher Beucheler:

AJ O’Neal




building

You, the people [electronic resource] : the United Nations, transitional administration, and state-building / Simon Chesterman

Chesterman, Simon




building

Your first thirty days [electronic resource] : building a professional image in a new job / Elwood N. Chapman and Robert B. Maddux

Chapman, Elwood N




building

Youth and nation-building in Cameroon [electronic resource] : a study of National Youth Day messages and leadership discourse (1949-2009) / by Churchill Ewumbue-Monono

Ewumbue-Monono, Churchill, 1961-




building

Youth peacebuilding [electronic resource] : music, gender, and change / Lesley J. Pruitt

Pruitt, Lesley J




building

Zenana [electronic resource] : everyday peace in a Karachi apartment building / Laura A. Ring

Ring, Laura A., 1968-




building

Process of building a civilisation




building

Anthranils: versatile building blocks in the construction of C–N bonds and N-heterocycles

Org. Chem. Front., 2020, 7,1177-1196
DOI: 10.1039/D0QO00163E, Review Article
Yang Gao, Jianhong Nie, Yanping Huo, Xiao-Qiang Hu
This review article provides an overview of the recent progress in the transformations of anthranils, which have emerged as versatile building blocks in the assembly of various C–N bonds and medicinally active heterocyclic systems.
The content of this RSS Feed (c) The Royal Society of Chemistry




building

Nanoparticles : building blocks for nanotechnology / edited by Vincent Rotello




building

Nanotechnology for biology and medicine : at the building block level / Gabriel A. Silva, Vladimir Parpura, editors




building

Increasing the durability of paint and varnish coatings in building products and construction / Loganina Valentina Ivanovna

Online Resource




building

The talent equation [electronic resource] : big data lessons for navigating the skills gap and building a competitive workforce / Matt Ferguson, Lorin Hitt, Prasanna Tambe, with Ryan Hunt and Jennifer Sullivan Grasz

Ferguson, Matt




building

Time-cost optimization of building projects [electronic resource] / by Uzair Waheed, B.E., PMP

Waheed, Uzair, author




building

CSS Animation Timelines: Building a Rube Goldberg Machine

Lately I've been using variables to plan out pure CSS timelines for complex animations. I built an SVG and CSS Rube Goldberg machine to put this technique to the test!




building

Lessons from the Clean Air Act: building durability and adaptability into US climate and energy policy / edited by Ann Carlson, Dallas Burtraw

Dewey Library - KF3812.L47 2019




building

Building and System Integrator: Belgian Nuclear Research Centre (SCK-CEN)

€Attractive: Belgian Nuclear Research Centre (SCK-CEN)
For more latest jobs and jobs in Belgium visit brightrecruits.com





building

Building a firm foundation in vacuum technology

Sponsored article: One company's evolution from a small component manufacturer to a major supplier of precision vacuum equipment highlights the importance of expert knowledge for winning customer trust




building

Building climate-resilient cities

Innovative materials will keep growing urban populations safe from heat, floods, and other natural disasters




building

Turning wood scraps into strong, structured building material

Wooden nacre nearly matches mother-of-pearl in strength and toughness




building

Amy Prieto is building safer, more powerful batteries

With Prieto Battery, the Colorado State professor has redesigned the lithium-ion battery from the bottom up




building

Frances Arnold on founding a company: &#8216;Building the right teams is critical'

Nobel Prize winner wants to solve real-world problems with directed evolution




building

Video: Chemistry turns backyard clay into a 3-D printable building material

Technology could lessen the environmental impact of 3-D printed buildings by adapting locally harvested soils




building

Jen Heemstra on building your resilience

C&EN advice columnist offers 4 tips on adapting to times of uncertainty




building

Video: Chemistry turns backyard clay into a 3-D printable building material

Technology could reduce the environmental impact of 3-D printed buildings by adapting locally harvested soils




building

Merdad Parsey on building a case for remdesivir amid the coronavirus pandemic

Gilead's Chief Medical Officer talks about the challenges of clinical design in the time of COVID-19




building

Colorful paints could keep buildings cool

Paintable polymers help surfaces reflect sunlight




building

Tracking copper, chlorine, and occupancy in a new, multi-story, institutional green building

Environ. Sci.: Water Res. Technol., 2020, Advance Article
DOI: 10.1039/D0EW00105H, Paper
Rain Richard, Kerry A. Hamilton, Paul Westerhoff, Treavor H. Boyer
Water quality deterioration in buildings poses risks to human health and infrastructure.
To cite this article before page numbers are assigned, use the DOI form of citation above.
The content of this RSS Feed (c) The Royal Society of Chemistry




building

Bacterial community structure correlates with Legionella pneumophila colonization of New York City high rise building premises plumbing systems

Environ. Sci.: Water Res. Technol., 2020, 6,1324-1335
DOI: 10.1039/C9EW01084J, Paper
Xiao Ma, David Pierre, Kyle Bibby, Janet E. Stout
Several bacterial taxa were found enriched in L. pneumophila culture positive water samples, demonstrating a potential association between Legionella colonization and the premises plumbing bacterial community.
The content of this RSS Feed (c) The Royal Society of Chemistry




building

Field testing of an onsite sanitation system on apartment building blackwater using biological treatment and electrochemical disinfection

Environ. Sci.: Water Res. Technol., 2020, 6,1400-1411
DOI: 10.1039/C9EW01106D, Paper
Open Access
  This article is licensed under a Creative Commons Attribution 3.0 Unported Licence.
Siva Kumar Varigala, Meghan Hegarty-Craver, Srinivas Krishnaswamy, Prakash Madhavan, Milan Basil, Praveen Rosario, Antony Raj, Viswa Barani, Clement A. Cid, Sonia Grego, Michael Luettgen
Demonstration of an electrochemical toilet wastewater treatment and disinfection technology at the scale of an apartment building and translation of the system into a commercial product.
The content of this RSS Feed (c) The Royal Society of Chemistry




building

ED attaches part of AJL Mumbai building worth Rs 16.38 cr; charges Moti Lal Vora

A portion of a nine-storey building in Mumbai's tony Bandra area, valued Rs16.38 crore, has been attached by the Enforcement Directorate in connection with its money-laundering probe against the Congress-party promoted Associated Journals Limited (AJL).




building

CERN and the Higgs boson: the global quest for the building blocks of reality / James Gillies

Hayden Library - QC793.16.G55 2018




building

Rethinking third places: informal public spaces and community building / edited by Joanne Dolley, Caryl Bosman

Rotch Library - HT185.R48 2019