I found it’s really helpful to do screen recording or screen casting while learning and practicing new technologies and tools. Instead of doing sophisticated note to document every detail, a screen cast can show every detail about what you had worked on, without the effort of documenting.
The tool I use is OBS Studio, it’s quite popular for gaming screen casting.
I had evaluated several different settings for balancing the quality and file size and here is my result.
My setup is a standard 1920×1080 resolution. The recording FPS is 10, to reduce file size. It looks quite limited but actually works well for recording coding process. We are not doing games which has dramatic screen changes all the time here.
FPS setting, see the screenshot below:
Then the next thing is to select a proper encoder and configure it. I selected software encoder x.264, the key thing is rate control. CBR is definitely not recommended, because it recording at a const level of bit rate. Our coding screen has little change between frames and even won’t change for a few seconds. Recording at CBR is a waste of storage for our case.
I had tried several settings and finally selected CRF as rate control method and CRF value of 23 to control the quality. Here is a very informative document explained CRF rate control method.
Encoder and Rate Control settings, see the screenshot below:
The result is that I can record my coding process at 10 FPS under a 1920×1080 resolution with 5 ~ 6 MB video size.
If you have better software and settings, please let me know. I just love to do screen casting on coding.
One problem I found in Chapter 5 BUILDING COLLABORATIVE FILTERING RECOMMENDATION ENGINES is the sample code in python doing recommendation on Movie Lens 100k data is that the RMSE values are as high as 11.
A quick google can find some tutorials on the web, doing the same thing on ml-100k data set, using SVD or ALS algorithm have a RMSE lower than 1.0, commonly 0.9x.
In the Chapter 7 of the book, BUILDING REAL-TIME RECOMMENDATION ENGINES WITH SPARK, author using Spark ALS reached 0.9x RMSE on same data set.
It looks the author did not put too much effort polishing Chapter 5’s code sample.
I would recommend following articles and samples over Chapter 5 of this book:
The requirement is simple, to sync my calendar from my company email account, which runs on Exchange Server and client is Outlook, to the Microsoft account on my Windows Phone.
This KB article stated that on Outlook 2010 or 2007, one can use the Outlook Connector software to do this, which is not my case as I am using Outlook 2013. The article also gives a silly solution for Outlook 2013, which simply need I copy meetings manually from the two calendar.
May I create a little application to do this automatically?
Get the Ionic package from NuGet, drag ‘script/ionic-bundles.js’ and ‘content/ionic.css’ to index.html to create script references
Use command ‘ionic start myApp sidemenu’ to create a project scaffold
Copy ‘www/templates’ folder from scaffold project to VS project, let it be the same level of existing ‘scripts’ folder
Create a ‘app’ folder inside ‘scripts’ folder, move index.ts from /scripts into /scripts/app, update reference of index.js in index.html. Copy app.js and controller.js from www/js of that scaffold project to /scripts/app folder.
Add or adjust references of js/ts files to index.html, create a ng-app directive.
Install angularjs.TypeScript.DefinitelyTyped by right click on angular.js in scripts folder and select “Search for Typescript Typings”.
Create a services.ts file in scripts/app folder, create service and inject to Angular
Create a controller.ts file, register service to controller.
Modify template data binding to fetch data from the service
For building failure of “The certificate specified has expired” on Windows platform, it’s a bug of Cordova tools. See: http://www.spritehand.com/2014/11/visual-studio-cordova-certificate.html