Posts

Showing posts from 2017

SCTE35 Parser

The SCTE (Society of Cable Telecommunications Engineers) defines the SCTE-35 as "SCTE 35, Digital Program Insertion Cueing Message for Cable, is the core signaling standard for advertising and distribution control (ex. blackouts) of content for content providers and content distributors"  SCTE-35 CUEs are signals that can be used to identify AD breaks, program chapters etc in a VOD, DVR or live streams contents. While creating the original content, encoders uses SCTE-104 messages to insert appropriate SCTE-35 info in the stream. This usually will be packaged as separate stream with other video, audio streams. The downstream packager can use this info to create appropriate SCTE-35 CUEs on the end user metadata, for example HLS manifest, DASH manifest etc.  Sample manifest with SCTE-35 cues: #EXTM3U #EXT-X-TARGETDURATION:10 #EXT-X-VERSION:3 #EXT-X-MEDIA-SEQUENCE:00001 http://server-host/path/file44.ts http://server-host/path/file45.ts SCTE 35 2016 SCTE STANDARD ©SCT

Bart Knols: Cheese, dogs and a pill to kill mosquitoes

Image
                       http://www.in2care.org/

Probability Density Distribution Graph for CPU usage analysis

Image
The normal distribution is useful to understand the probability density of a large sample data set. There are many real world application of this theory. The example in this article shows how this can be used for analyzing the CPU usage of a particular process or individual core or overall CPU usage over a period of time. There may be occasional spikes up to 100%, but that may not necessarily an indicator of an issue for the overall system as long as the normal operating mode is utilizing less than the threshold. A graphical representation of probability density distribution combined with cumulative distribution will help to visualize the overall usage. Probability density function is represented as  The above simplifies to:   - Standard deviation  - Mean This can be implemented in a programming language, I've used javascript and DyGraph chart library to create visualization of the data. Sample data set: var testData = [2,0,95.9,37.9,55.9,71.9,69.9,71.9,93.8,8,6,4,

HTTPS requests using org.springframework.web.client.RestTemplate

RestTemplate class is useful to make synchronous client-side HTTP access. It also allows you to make HTTPS calls with same interface. When you use HTTPS urls, the framework switch to a different path to take care of the SSL handshake behind the scene so that as a user you don't have to explicitly provide a truststore and keystore to support the protocol. Here are some helpful info to understand the SSL flow better in this case. CA Cert Validation when using org.springframework.web.client.RestTemplate This example uses org.springframework.web.client.RestTemplate to make http requests. This make use of the SSLSocketFactoryImp, and SSLContextImpl$DefaultSSLContext classes, through which get access to the default cacert store file (loaded through X509TrustManagerImpl). Code references: http://www.docjar.com/html/api/sun/security/ssl/SSLContextImpl.java.html  - (DefaultSSLContext-> getDefaultTrustManager) http://www.docjar.com/html/api/sun/security/ssl/TrustManagerFactoryI

IoT: Intel Edison as Bluetooth Low Energy (BLE) peripheral

Image
Intel Edison is one of the best IoT hardware suitable for rapid prototyping. If you are new to IoT world, you can easily setup a simple demo app by using Intel® Edison Kit for Arduino* Box (shown in the picture below). This setup is specifically to create Bluetooth Low Energy (BLE) peripheral with the Intel Edison board. 1. Intel Edison Setup For a new board set up you can follow the step by step instructions given here:  https://software.intel.com/en-us/assembling-intel-edison-board-with-arduino-expansion-board One of the issue I faced with this set up is that, when used the board with USB power mode I had trouble connecting to the box. So its advisable to use a standalone power adapter to avoid intermittent connectivity issues. Some times the Windows 7 will not let you manual/auto install a new build through the USB interface. So you could switch to MAC OS in order to complete the installation process, and then switch to windows if you prefer to. Make sure that the PC is up