How to see livestream video for your unbranded chinese CCTV/IP camera

Many unbranded cameras from AliExpress etc comes with bad or close to no instructions so you’re sometimes left to yourself to figure it out. As I just went through this painful process myself, I’ve written down some notes till next time. Scroll down if you wish to see the easy solution, or continue reading for a little more in-depth process.

Livestream CCTV/IP camera with VLC using RTSP

Luckily most of the unbranded IP cameras use standard protocols so we can stream the picture directly in VLC by using rtsp (Real Time Streaming Protocol).

First step would be to get the cameras IP address. Login to your router and find the device in your DHCP list. If it’s configured to use a static address, check the instructions or use an IP scanner utility to find it.

Once you have the IP address, verify and try to login the usual way at (i.e. The camera will typically have a web server running giving you some administration/settings. Sometimes you must also enable media streaming / RTSP.

Anyway, I’m gonna pretend everything works out of the box. You have the IP address. Now you can open it in VLC (keyboard shortcut CTRL+N to open a Network media stream).

Enter the URL and click Play. If necessary, a password prompt will ask for admin/password combination. Default login tends to be admin/admin or admin/123456 etc.

If you’re not sure what the URL should be, try one of the following. One of them will hopefully work:


Obviously replace <ipaddress> with the cameras IP address, and <username>/<password> with… yes, the username/password. You could also try switching the channel=1 to 2.

Hopefully one of the URLs will work, and voila! You can stream the camera!!

Let’s continue on with the easy solution:

Find IP address and stream directly using ONVIF Device Manager

ONVIF Device Manager is a great open source project which offers plenty of features for managing your IP cameras/CCTVs including network discovery, live stream and PTZ controls. It’s pretty much plug n play, just install the software and let it find your cameras automatically.

Left column shows all available cameras found on the network. Middle column shows various settings. Right column shows preview/live stream.

Zoom stuck at 70% in MS Word 365

So this little ridiculous issue has been haunting me for two days until I finally got a moment to troubleshoot it.

My Word page zoom has been stuck at 70%-something the last few days, even though I had plenty of white space (or gray space) on both sides of the document.

Turns out the page view layout was setup to use “Page-to-page” instead of “Vertical”.

No matter how hard I try to zoom out, nothing happens.

Change layout to “Vertical” and the issue is resolved!

Finally… I can read the text again.

New PC stuck in Windows 10 S mode? Here’s how to unlock it

So a colleague just bought a new PC and it came pre-installed with “Windows 10 in S mode”. This is a locked down version of Windows where you can only install apps from the app store. Regular exe files etc are blocked.

Luckily you can disable the locked down mode rather easily. However, as of today, there’s no way to reactivate it again, so keep that in mind. Your 85 y/o grandma might be better off having it enabled as it’s a good way to block potential viruses.

The annoying thing is that in order to disable S mode, you actually have to “download” or run an app from the app store, and this requires a Microsoft account. So, for those of us who likes to use a local user account instead of logging on with a Microsoft account, we still have to login in order to run the app from the Microsoft Store.

Steps for disabling Windows 10 S mode:

1: Open Settings

2: Go to Updates & Security

3: Open the Activation tab.

You will see that your current Windows edition is set to “Windows 10 X in S mode” (where X is probably Home or Pro).

4. Click on the Go to the Store button. This will open the necessary “app” you need to run in order to unlock the regular Windows mode.

5. Run the app. Login with your Microsoft account when prompted (or create a throwaway account). Your PC is now unlocked.

6. Alternative step: Install Ubuntu

Creating an email censoring filter in Vuejs

This is a neat little function you can use as a filter in Vuejs to partially censor emails so for instance will show as m****l@e*********m. In other words, show the first and last letter before and after the @ delimiter.

filters: {
    censorEmail(val) {
        try {
            let arr = val.split("@");
            let wrd = arr[0][0] + "*".repeat(arr[0].length-2) + arr[0].slice(-1);
            let wrd2 = arr[1][0] + "*".repeat(arr[1].length-2) + arr[1].slice(-1);
            return wrd + "@" + wrd2;   
        } catch (error) {
            return "Not a valid email";

There’s not really any validation for a proper email address happening, we just check if the input value contains a @. If not, it simply returns “Not a valid email”.

v-model in child components

If you’re having trouble using v-model for input elements in child components then welcome to the club. Here’s a quick way to solve it by using $emit to pass data back to parent:



export default {
    name: "App",
    components: {
    data: function() {
        return {
            myvar: "foo"
    methods: {
        myfunction(val) {
            this.myvar = val;


    <input :value="myvar" @input="$emit('myfunction', $">

export default {
    name: 'ChildComponent',
    props: {
        myvar: String,

Idle Mobster – Simple game made in Vuejs

So to learn Vuejs I decided to make a simple idle game. You know, one of those games that kinda plays itself by upgrading stuff and increasing your income etc.

This game is inspired by the old school mafia text-based browser games, so you’ll find the usual stuff like petty crime, upgrading weapons and managing businesses.

Current state of the game is very simple and there’s no prestige system implemented yet, but I have many features planned ahead. It’s still a work in progress, but I released it on (which is also my first time so learning by doing):

The code will eventually be available at my github site (probably (will update this post when it’s published).

Format number in Javascript for Integer and Float types

I was stuck trying to format a Number variable when creating an output filter in Vuejs.

Originally I used

filters: {
    filterNumber(val) {
        if(typeof(val) == "number") {
            return new Intl.NumberFormat().format(val);
        return val;

That will output a number like “123456” as “123 456”. But I also want it to skip decimals. Using .toFixed(0) doesn’t work as that only accept Float variables. Casting the Intl variable to Float using parseFloat() around it didn’t work either.

The solution was to use .toLocaleString() instead, like this:

filters: {
    filterNumber(val) {
        if(typeof(val) == "number") {
            return val.toLocaleString('US', {minimumFractionDigits: 0, maximumFractionDigits: 0});
        return val;

Consuming a REST API in C# WPF

When consuming REST APIs in C# I like to use the Newtonsoft.Json library which is available as a NuGet package.

Start by adding the package to your library. Right-click on your project in the Solution Explorer (if using Visual Studio) and click on “Manage NuGet Packages…”

Search for Json and add Newtonsoft.Json.

Add a reference by typing using Newtonsoft.Json.Linq;

For connecting to the API you can use many options. To keep it simple we’ll use System.Net.WebClient. Ref example code below:

var apiUrl = "";
using WebClient wc = new WebClient();
var jsondata = wc.DownloadString(apiUrl);
JArray jsonarray = JArray.Parse(jsondata);
foreach (var item in jsonarray)
    JObject jsonobject = JObject.Parse(item.ToString());

Another example without looping through the items and using WebClient in another way:

var apiUrl = "";
using (WebClient wc = new WebClient())
    var jsondata = wc.DownloadString(apiUrl);
    JObject jsonobject = JObject.Parse(jsondata.ToString());