Inspiration

News are fast and furious. Our attention span, lower than ever. This is a deadly combination when it comes to the news: we all get the initial headline but very seldom do we hear how the story really ends.

What if we had a way to have the news that matter to us tracked and updated automatically? From the data sources we trust? Being notified when there are updates? Having tamper-free traceability?

Sounds interesting? Keep reading!

What it does

So I have built an Edge extension that allows the user to select a piece of news for traceability right the moment they are reading it. It leverages Azure Cognitive services to strip the knowledge off the text and create a unique fingerprint. On a regular basis, it searches for updates to the selected news, with Bing Search News API. Those search result items that have a unique fingerprint similar to the original news will be added to its history. This history, by the way, is kept in a Blockchain stored in the browser, that guarantees integrity of the news history.

The user can optionally select their preferred news sources; they can add or remove news pieces from the list of tracked news; they can view the traceability history; they can check the validity of the Blockchain.

How I built it

Extensions are built with HTML and a fair amount of JavaScript. I've kept it light with the aim of having minimal impact on browser performance. This means that I had to forego frameworks like React.js that definitely help with state management, CSS templates like Bootstrap, which means simplicity in the user interface look and feel, and JavaScript frameworks such as jQuery, which meant a lot of manual management of the DOM.

I've used Azure Functions as a wrapper for the Cognitive Services - Text Analytics API and Bing Search News API so that secrets wouldn't be included in the extension JavaScript source code.

I wanted to leverage Azure Blockchain Services, but the no URL results storage policy for Bing API meant I had to go for a local implementation of Blockchain, that I did by hand, too.

It's been hard, but it's been fun!

Challenges I ran into

I've only allocated 10 days to build everything from scratch, with many technologies I had not used before (see What I learnt below), so the learning curve has been definitely steep, and I'm screeching development to a halt just a couple hours before the deadline.

Accomplishments that we're proud of

Pulling it off in time. I would be definitely happy if News, Updated is taken to the next level and certainly make a change in the way we keep track of our news.

On my end, family and friends will be definitely using it, and that's the awesomest feeling!

What I learnt

The question is - what have I not learnt? ;-) I've built an Edge extension that uses Azure Cognitive services, the Bing Search API, Azure Functions as wrappers and Blockchain as persistent storage, when I had never built an extension, never used cognitive services nor search programmatically, never built a Blockchain, and I had never created an Azure function.

I believe this is the equivalent of having built a cathedral (okay, a parish church then!) only knowing how to lay bricks and mortar (HTML + CSS, JavaScript, and node.js, plus some knowledge of Azure as a Project Manager, not as a developer).

A final note to my self of 10 days ago - storage.sync has a very low quota, don't try to build a persistence layer for a blockchain on it!

What's next for News, Updated

Fix a few bugs and also check with Microsoft if it would be allowed to store Bing search result URLs in a real, distributed Blockchain so that that News tracking history can be shared between users that are tracking the same piece of news.

Marketing-wise, I need to explore monetisation options that would cover the ongoing Azure costs. If I can find a way to make News, Updated sustainable, I would publish the Edge extension.

Public Repo: https://github.com/acalpixca/news_updated.git Slides: https://www.dropbox.com/s/vjjeuvs5r6gsi50/news%20updated%20final%20presentation.pdf?dl=0

Built With

Share this project:

Updates