Wednesday, March 30, 2022
Notes Nokia 8.3 Android 11
Monday, January 31, 2022
Google Drive Desktop - Different modes of Syncing and Offline
A bit of background first on Google Drive:
Google Sync
Google Drive Desktop
Installation
Installation Problems
Installation Working
Syncing Warning
Syncing with Offline access
Go to the Offline section, check the Create, open and edit your recent Google Docs, Sheets, and Slides files on this device while offline.
Right-click a file and turn on Available offline.
Syncing Mode Preferences
Setting up a Secured Email Server
This article is Work In Progress....
There are lots of good info on the web about setting up email servers. So this article will start with some links to those sites.
References:
https://helpdeskgeek.com/how-to/how-to-set-up-your-own-email-server/
Mail Server - it looks like the most popular on is 'hmailserver' - https://www.hmailserver.com/download/
Wednesday, January 05, 2022
Metaverse and the Bitcoin Blockchain CryptoCurrency
Metaverse - What is it?
The metaverse has been around for a few decades in one way or another. However it is not until recently when Facebook chief - the Zuck - announced the new name Meta for his company that the Metaverse has come into heightened attention. Here are some definitions of the Metaverse typically found on Google search:
Wikipedia - "A metaverse is a network of 3D virtual worlds focused on social connection. In futurism and science fiction, the term is often described as a hypothetical iteration of the Internet as a single, universal virtual world that is facilitated by the use of virtual and augmented reality headsets"
Nvidia - "The metaverse is a shared virtual 3D world, or worlds, that are interactive, immersive, and collaborative. Just as the physical universe is a collection of worlds that are connected in space, the metaverse can be thought of as a bunch of worlds, too. Massive online social games, like battle royale juggernaut Fortnite and user-created virtual worlds like Minecraft and Roblox, reflect some ..."
Bybit - "Living, working and playing in an alternate reality requires funding, and that means cryptocurrency. Just as there are several metaverses to use, there are also multiple cryptocurrencies. Understanding the options, differences, and pros and cons f each one can help you make the best investment decision for your needs.
When I first encountered the hype about the Metaverse, it sounded very much like Virtual Reality (VR) - which was the big thing touted in the late 80s and early 90s. VR has not really taken off in the big way, although there are definitely some tangible benefits realised. Things like pilot training simulators and immersive technology certainly have their niches. There could even be a revival in the form of Google Glasses and the Oculus devices. Thinking a bit deeper, VR is usually associated with the technology that allows the 3D immersive experience. Although the implementation of the Metaverse is also dependent on technology, the Metaverse is much more than about the 3D reality aspect - but it seems to encompass all aspects of the virtual world itself, including commerce, way of life and much more in this alternative metaverse.
The life and commercial aspect of the Metaverse is where cryptocurrency comes in. The quote by Bybit above says it precisely. What currency is better suited to a virtual meta world, then a virtual meta currency embodied by the cryptocurrency blockchain?
Here are some of the up and coming cryptocurrencies that may follow the development of the Metaverse:
ALIEN WORLDS (TLM)
Atari Token (ATRI)
Bloktopia (BLOK)
Boson Protocol (BOSON)
CEEK VR (CEEK)
Chromia (CHR)
CryptoPlanes (CPAN)
DEAPcoin (DEP)
Decentraland (MANA)
inSure DeFi (SURE)
IOTEX (IOTX)
METAHERO (HERO)
MINIGAME,
MRE
METAL
NJF
Polygon (MATIC)
Radio Caca (RACA)
RMRK (RMRK)
Sandbox (SAND)
Solana (SOL)
SQUID,
Starlink (STARL)
TERRA VIRTUA KOLECT (TVK)
Theta Network (THETA)
Torum (XTM)
UFO Gaming (UFO)
Verasity (VRA)
Victoria (VR)
Vulcan Forged (PYR)
WAX (WAXP)
Friday, September 10, 2021
DVB-T + DAB +FM - Software survey
Bought an el-cheapo Digital TV (DVB-T) USB stick which also has Digital Radio (DAB) and FM Radio - what more could I ask for?
Actually I would ask for an actual software to come with that. As with all things in Ebay, there is a reason why they are cheap. The advertisement itself shows nice and flashy TV pictures on a software. It's only in the fine print of the Package contents that says the software is a Trial Version. I did read that in the ad, but subconsciously put that aside. So now, I'm left with a USB stick with drivers installed but nothing to play with. I don't think I want to touch Windows Media Center, though I guess that is an option to some people.
So the point of this post is to collect and comment of my research on the software that can work with the newly acquired DVB-T stick. Here goes..... (perhaps starting with the paid software, then saving the best free ones for last).
DVB Viewer - http://www.dvbviewer.com/en/index.php?page=features
Cost around 20Eu - which is not a bad price. However there are paid add-ons such as Media Server add-on and Video Editor add-on. On Screenshot pages shows it looks very professional. The Features pages is very comprehensive and also list a lot of TV cards that it supports. Unfortunately mine is a generic brand and I don't expect to find it on the list. The payment is by bank transfer and you put the description of the bank transfer as DVBViewer + email. So it feels quite old school and an independent developer (not a commercial company), and this is one of the positive point for me.
AltDVB - https://www.videohelp.com/software/ALTDVB
Looks like it is free and is under active development, since the last update at the time of writing is May 2021. It's meant to work with DVB-S (Satellite, meaning worldwide signals are available. The T in DVB-T stands for Terrestrial, meaning the local stations). It's 11Mb, its portable, and it has a whole list of Changelog and Release notes. It has its own YouTube subscription channel to explain how to use it.
ProgDVB - https://www.progdvb.com/progtva_download.html
There is a paid version with the title name and there is also a free version called ProgTV. The free version won't support recording and is around 11Mb. It's supposed to let you watch digital TV and listen to radio channels. The paid version supports IPTV, DVB-S/S2, DVB-C (cable) and more.
Media Portal - https://www.team-mediaportal.com/mediaportal/about-mediaportal
This looks like a very complete media center - a full fledged solution. So its ability to play DVB-(C/S/T) is almost drowned out by all the other features. Incredibly, it's not only free but it's open-source too. When it comes to popular software that non-technical people use and download, there is generally a risk of using Free software on the internet. However when a software is open source, like Media Portal, the risk is reduced because the source code is available for the world to see. (this is a general statement about truly open source software and it is not an assessment of the security and safety of using Media Portal). Only drawback is that some DAB (digital radio) functionality may not be fully supported yet.
Friday, July 09, 2021
Review - Antec C40 CPU Cooler
Why do I need a CPU cooler?
- Power Supply Unit
- Overheating CPU (either motherboard or CPU triggers a shutdown to prevent damage)
CPU Socket Type
Product Selection
- Antec seems to be a specialised brand when it comes to CPU cooling. Other brands which I seriously considered were Coolermaster and Thermaltake.
- The Copper base was an important point for me.
- The weight of the cooler - it is not the lightest but quite reasonable given the dimensions.
- The cool factor from the blue LED lighting.
Installation
Uninstalling the AMD stock standard CPU cooler:
- Switch of the PC and all connected equipment.
- Unplug everything connected to the PC.
- Open the CPU case and make sure you touch the metal from to unearth any static charge.
- Reposition the CPU case in a comfortable position, with proper lighting, so it is easy to work with.
- Gently move any wires aside.
- Unlock by pressing the lever on one side of the AMD stock standard CPU cooler. This type of cooler is extremely easy to remove. Once unlock, gently and lightly tilt both ways to let the CPU cooler unhinge from the motherboard latches. NEVER EVER use force. If anything does not move, just tilt or change some other position.
- As you lift up the old CPU cooler, you will see some old thermal paste on top of both the CPU and the base of the old CPU cooler. Clean the thermal paste on top of the AMD CPU by rolling the tip of a cotton butt on it.

Installing the new Antec C40
- Unpack the Antec C40.
- Ignore the screws and square harness. Those items are for Intel CPUs.
- Test Run Only: Gently lower the Antec C40 on top of the AMD CPU. Practice to latch one side of the CPU Cooler onto the motherboard around the CPU - just to experience any challenges or difficulties. Get a feel of how difficult or easy it is to secure the latch but DON'T do the actual attachment yet.
- Use the thermal paste supplied by Antec and squeeze a light amount on top of the AMD CPU. Gently spread the paste with the thermal paste tip, then use a small flat thin cardboard to evenly spread the paste on the CPU.
- Get the Antec C40 cooler AND REMOVE THE THIN FILM from the base of the C40 cooler.
- Lower the C40 down on top of the AMD CPU. In my case, lowering the side opposite to the latch until it hooks onto the CPU edge was actually quite easy - to this at an angle.
- When one side is latched, then very very gently tilt the CPU cooler to be horizontal, to latch on the other side, in order to clip it on. This is the hardest part. You need to apply force, but applying too much force may damage the CPU.
- When securely attached, close the PC case, attach the PC components again, restart the PC and go to BIOS screen.
Problem Solved

Friday, May 14, 2021
Online Development Tools
This post is a collection of useful tools for the programmer. The list will be updated as necessary:
https://gist.github.com/discover - Gist is a way to share codes and snippets with others. Every Gists are individual git repository and this is forkable and usable.
https://ideone.com/ - No need for any tools or installing compiler and editors. Ideone is capable to compile over 60 programming languages.
https://sqldbm.com/Home/ - go to the website and start building your database. Supported database types
SQL server
MySQL
PostgreSQL
Another main facility here is work with the term in a collaboration. Developers can work remotely on a single project through this platform.
https://www.figma.com/ - Figma is a prototyping tool. Just go to the web and start building your design and save online.
https://coggle.it/ - This is a mind mapping application also applicable for structured documents like document trees.
Friday, April 23, 2021
Review - Machine Learning For Absolute Beginners - Oliver Theobold
Oliver Theobald
ISBN-10 : 1549617214
ISBN-13 : 978-1549617218
There is a wealth of information out there on the subject of Machine Learning (ML) especially over the last 10 years. There are books with catch-phrase titles but lacking in substance. Conversely there are books which dwell too deeply into certain kinds of programming framework for ML (nothing wrong with that). For a data scientist, there are not many books out there which cover a broad spectrum of ML, yet with substance on each topic. 'Machine Learning for Absolute Beginners' by Oliver Theobold seems to be one of these rare gems that covers ML broadly and capable of explaining important concepts without too much mathematics or code snippets. Despite the title, a seasoned data scientist may yet find this as a valuable reference.
Following a pleasant introduction to ML and an overview of a typical workflow, it discusses in detail the 3 classes of ML: Supervised, Unsupervised and Reinforcement Learning. It describes a special case of Reinforcement Learning known as Q-Learning. This is followed by a chapter on ML Toolbox where it discusses the data requirements, the infrastructure, the algorithms and the visualisation options that are available. Here it explores the various programming languages (Python, C, R, etc), the cloud platforms (Azure, AWS, Google) and the algorithm frameworks (Tensorflow, Caffe, Torch, etc).
The chapters on data preparation and feature selection covers a lot of the techniques as well as the motivation behind them. These include row and column compression, one hot encoding, binning, treatment of missing data, normalization and standardization. Partitioning of data and cross validation (k-fold) are discussed as the final stages of preparing the data before model training.
The next two chapters were devoted each to Regression and Clustering respectively. These are perhaps the two foundational families of algorithms which are also known outside the context of ML. The difference between Linear and Logistic regression conceptually and applicability to real scenarios were well illustrated. A very simple hand calculation shows how linear regression really works. Logistic regression is then explained by contrasting its usage with linear regression. Similarly the concepts and application for k-Nearest Neighbours and k-Means Clustering for supervised and unsupervised learning were well explained, including the reasonings behind the algorithms.
Machine Learning For Absolute Beginners: A Plain English Introduction (Second Edition) (Machine Learning From Scratch Book 1)Bias and variance has a short chapter by itself and is enough to explain with sufficient details. Here is another example that brings this book above other ML books which just focus on coding. The understanding of the interplay between bias and variance, which is also emphasized in Andrew Ng's Machine Learning course, differentiates between a data scientist and an ML coder.
Next two chapters deal with the advanced algorithms Support Vector Machines (SVM) and Artificial Neural Networks (ANN). SVM is contrasted with Logistic regression, with explanation of the hyperplanes concept and the margins around the boundary for SVM. ANN concepts were explained from the basic components of neurons and activation functions, building up to the perceptron with mathematical examples for very simple cases. Multilayered Perceptron (MLP) and the various Deep Learning techniques were briefly discussed.
While ANN may be very effective in some cases, it is well known for its lack of explanability (except perhaps with recent developments in SHAP, ICE, LIME, etc). On the other hand Decision Trees has often been hailed for its high explainability nature. So a decent chapter is devoted to Decision Trees with simple mathematical calculations of entropy - which is key to decide on how to split the nodes of the tree. This is expanded to the advanced trees family including Boosting, Bagging and Random Forest and when to use them effectively. This is followed by a short chapter in Ensemble Modelling, where the Stacking method is also discussed.
The last three chapters, finally but rightly put, deals with introducing the development environment and the tool necessary for machine learning work. These include using the anaconda environent to program in the Python language and using the Panda library's dataframes. It also discusses the concept of model optimization and illustrated using the Grid Search technique. Towards the end there is a source code for a simple but complete Python code for an ML workflow, recommendation of other useful books, an Appendix on the introduction of Python but what I consider most useful is pointers to a few free datasets.
Saturday, March 20, 2021
Help - Ping request could not find host ... DNS problem
You may have seen this message before:
Ping request could not find host www.cnn.com. Please check the name and try again.
There could be many things that can go wrong with the networking that caused this. Ultimately it is very likely the DNS that is the problem.
Firstly, let's simply go through a few troubleshooting options - just to rule out it is not because of the them. Do one step at a time, check the WiFi and if it works, don't need to progress to the next step.
1. For older laptops, believe it or not, there is actually a slider switch to click the WiFi on or off. Check this if you have it.
2. On Windows, on the TaskBar, ensure that the Wifi (not any particular Wifi network yet) itself is turn on. The WiFi can be either On or Off or Flight Mode or something else.
3. Check that the Wifi is connected to a particular WiFi network. Make sure it says Connected and Secured. And there is no yellow exclamation mark.
4. Open up CMD command terminal, type:
ipconfig /release
ipconfig /renew
ipconfig /flushdns
5. Reboot the computer.
If all else does not work, it is now time to suspect the DNS.
The DNS, in layman's term (you can Google for the exact definition), is directory service that lookup the URL you type and translate to an IP address. Its like a Post Office that receives an address and then go to that address. Our computer need to have the address of the DNS server itself - eg. we need the POST OFFICE's address, so that we can give them our letter.
The so somehow, our computer needs to know which DNS IP address to use. Most of the time, this is hidden from the user, that is why most computer user don't have to deal with it and so don't understand it. It can be automatically set on the modem or router, and also optionally automatically set on the Windows network settings.
So why should there be a problem when the DNS working nicely behind the scenes one day, then the internet is not working the next day? There could be many answers, but a recent experience has shown that some software, including VPN software can go it to the network settings and change the DNS address.
Hence one more solution to above error message is to change the DNS address on the Windows networking level. Whichever Windows version you have,
- find your own way to the 'Network Connections' page or 'Change Adapter Settings' and you can see a page with a list of your network (ethernet, Wifi, VPN) adapters.
- Right click on the Wifi adapter, if you are using the Wifi adapter.
- Choose 'Internet Protocol Version 4', and click on the Properties
- Go to the section called 'Use the following DNS server addresses', and add 'Preferred DNS' and 'Alternative DNS'
Some of the free DNS addresses are:
Quad9 - known for security
9.9.9.9, 149.112.112.112 (Secured)
9.9.9.10, 149.112.112.10 (Unsecured)
Google - you know them
8.8.8.8, 8.8.4.4
Cloudfare - known for speed
1.1.1.2, 1.0.0.2
OpenDNS - mature and known for security,
208.67.222.222, 208.67.220.220
CleanBrowsing - known for parental filtering
185.228.168.168, 185.228.169.168
Wednesday, October 07, 2020
Notes Crypto Coin (CRO)
Saturday, September 12, 2020
Notes LinkedIn
NotesLinkedIn
=================
How to Print Messages to PDF
How to Block someone without them knowing
How to Print Messages to PDF
================================
Printing to PDF is a very simple thing, or it should be. But by default, it seems very difficult to do to get the formatting just right. It is either cut off on the right hand (maybe we can change to Landscape). But then it only prints a little bit of the message on one page.
How to we print the many items of a very long message conversation? The trick is as follows.
- Use Chrome Browser
- Click Messaging on the top horizontal panel.
- The main screen has a left panel of various people, and the middle panel has the main message history of a chosen person.
- On the left panel, click on the person whose message you want to print, and check that the correct message history is on the main panel.
- For privacy, if you want to hide the people on the left panel before printing, go to the left panel, click on the triple dots on top, and select 'Manage Inbox Request'
- On the middle message panel, scroll up to see the start of the messages you want to print.
- Press Ctrl-P, choose Save as PDF.
- In the browser Print panel, Portrait was enough for my printing. But you can change to Landscape.
- In the browser Print panel, in Scale, choose a smaller number say 70% and try a few different numbers until the size and content of messages is OK for you.
- Then click Save. This will produce a PDF file.
- Open the PDF and print as usual.
The main step above is to choose the scaling to make sure it fits enough information of the messages you want to print.
How to Block someoone without them knowing
============================================
No problem, LinkedIn does the block discreetly. It says:
"The blocked member won't receive any notification of this action."
in here: https://www.linkedin.com/help/linkedin/answer/47081
The steps are very simple and listed on the link above.
Basically you have to go to that person's page, click on More, select Report/Block.
When a few options are presented, click on the option that says "Block [user name]". Then click Block.
Note: Blocking is different from Removing a Connection. With blocking it seems you are still connected but would not be able to see their profile, updates and cannot message them anymore.
To unblock is a bit different. Go back to your main page.
On top, click Me, click Settings and Privacy, click Block and Hiding, click Block and select Change. Then choose the person you want to block.
Whaling and Social Engineering by a LinkedIn Babe
On LinkedIn, I have been recently approached by a very professional seeming young lady. Have you had that experience? Then read on......
(Google Reviewers, please do read carefully before making any decision).
Firstly, I am a male, and I am susceptible to be very friendly with females who are friendly to me (I accept not all males feel the same). Female readers are very welcome to leave your comments, but please understand our weakness.
This article is about an experience which can potentially lead to severe security compromise for the victim, their relatives, friends, colleagues and employers. This article is about a potential account of a whaling or social engineering attempt.
There are various definitions of whaling or social engineering, but let's just use the definition below as an example (not that it is the 100% correct definition), so that we have a rough idea to proceed.
https://searchsecurity.techtarget.com/definition/whaling
"A whaling attack, also known as whaling phishing or a whaling phishing attack, is a specific type of phishing attack that targets high-profile employees, such as the CEO or CFO, in order to steal sensitive information from a company, as those that hold higher positions within the company typically have complete access to sensitive data. In many whaling phishing attacks, the attacker's goal is to manipulate the victim into authorizing high-value wire transfers to the attacker."
Guys, this paragraph is for you. It's not unusual I get unsolicited invites from LinkedIn. They include bearded guys whose name I cannot pronounce, I click Ignore. Nice looking gentlemen who are headhunters, maybe I accept or ignore. Various ladies who are headhunters, again I may accept or ignore. PhD or students of various types, I may accept if they have an interesting profile, otherwise I ignore. But I have never been invited by a babe-level (non-headhunter) who wanted to strike a conversation which is non-work / non-professional related - until now.....
Initial invitation -
So this under 30s, corporate entreprenuer and executive professional who appears to be running a company, decide to invite me in LinkedIn. Let's call her LX from here. To be specific her LinkedIn profile photo is not babe-level, but instead very professional and very expensive looking high class lady. So the invitation is unusual in the sense of it being rare (I don't get invitations like this) but not enough to be suspicious initially - maybe her work or project made her see something in my professional background that may be interesting - after all this is what LinkedIn is about, thank you. On a personal level, she is also the same ethnic background as myself, so in this case, that increased my interest a little.
Interaction -
The following is an account of the interaction and so far the interaction is still on going and there is no conclusion yet.
- After connection at LinkedIn, we started with well wishes and small conversations. Nothing unusual, but I'm quite excited to have this interaction.
- Not long after, LX admits she does not use LinkedIn much, and asks if I use WhatsApp or WeChat. Immediately I too wanted to move off from LinkedIn and continue our conversation privately in a non-professional platform for chats.
- On the Chat platform, the conversation continued. The conversations was very pleasant and non-committal. We started to talk about what each other is doing. From my personal view, I enjoyed this very much because it was refreshing to have a new friend who seemed to be very interested in my routine life. She was not nosy and not at all inquisitive of what I do. So no alarm bells there.
- I asked a few questions about her professional life, ie the business that she does. The questions were in the direction of trying to see if there is any synergies between my work and her work so there is more to talk about professionally, or help each other's business. Again this is quite standard in what LinkedIn is suppose to allow for.
- No business talk. However her response to work and business questions were polite and relevant, but usually ended quickly. For example, her company is multinational, and although they have offices in your country, she does not have direct dealings with your branch. This is quite plausible but adds or subtracts nothing in terms of evidence.
- How is your day? The conversation continues very politely and showing interest in daily life routine, such as how is your day, did you sleep well, have you eaten. These are all very nice and I'm very touched to have this level of interest from someone else.
- Niiice photos - Without making any requests, she voluntarily send me photos of herself doing sports (in tight sports gear, calm down you guys) and also showing her at dinner. The dinner picture of her is sensational - very photogenic. So of course I want to continue the interaction more.
- We talked about music, food, weekend activities. So very nice indeed. She does not seem to care about my family background, education background, social status. I have no pressure to try to impress her simply because she seems to have everything. Wow I really like to meet her. Even if for a purely platonic relationship (guys, please!), she is so refreshing to interact with.
- The summary of the interaction is so far we have both kept it very friendly and have not demanded anything from each other at all. Hence no pressure and no expectations. Other males in this position may have taken a different direction and I don't really know how she would respnd. In any case, at this point there is no cause for alarm based on the interaction in the chat room.
Let's now go to the other side of thought.....
Reality Check -
1. Who am I that such a perfect lady (looks, wealth, charm, humour) would pay attention to me? An old saying goes 'Look at your own cat-face (literal translation from another culture)', 'Look at your own mug-shot', 'Have you looked in the mirror lately'? This is one reality check that pulled me down to earth. Though not looking like Brad Pitt or George Clooney, etc, I do think I'm not bad looking at times. But with double chin, and an average look, really? would a pretty and wealthy and successful young lady choose me out of millions of nicer looking guys out there? (If you answer yes, you don't deserve sympathy if you are taken for a ride).
2. 'If it is too good to be true, then it is not true'.
Countless people with higher intelligence than myself have fallen victims to scams. I'm not qualified to give all the reasons why and how smart people get scammed, conned, tricked, but it happens all the time. To re-iterate many smart people fall for it. Simply put, when we see something is so good, and we really want it, then we will try to find all the reasons why this good thing can be true. It's not a matter of being optimistic that makes people vulnerable. Those who fall victim to scams, really do want the bait (money, pretty looking person, etc) - we all want something and sooner or later, there is scammer out there who would have the correct bait for us.
3. Use logic not our senses - A Beutifual Mind.
Men have often been accused of thinking, not with their brain, but with the organ below. If looking in the mirror does not bring a reality check (coz You're So Vain), then remember the movie A Beutiful Mind about the Noble Prize winning mathematician and schizophrenic John Nash. Spolier Alert: Since his university days, he was seeing an imaginary little child. Through his many years of struggle with schizophrenia including hospitalization and medication, he still believed the child was real because he saw with his own eyes, and hear with his own ears. This super briliant mathematician knew he had schizophrenia but cannot deny the existence of the little child. However, the Reality Check came one day, when he realised (using simple logic), that he knew this child (seeing and talking with her) for many decades of his life but she did not grow old. This is the reality check that even all his physical senses tell him it is real, simple logic about humans and ageing brought him out of his delusion and so he accepted the little girl cannot be real.
OK - let's put our suspiscious cap on for a moment. (Remember, nothing in the interaction so far seems like she wants anything or has anything to offer, except friendship. Neither of us have spoken anything other than what two very familiar friends would speak about.)
Profile:
- Profile photo included whole person, so her face is quite small in the picture.
- LinkedIn people also viewed other ladies with profiles which are very suggestive, yet with high corporate titles.
- She has a 500+ followers. Nothing wrong with that by itself.
- She has a very important, high position title, but somehow the wording is not quite right.
- Education and work experience profile is quite short. For a yound person, this is understandable. Two universities were listed. Three work experiences listed, the first is an internship. The third is the current very high and important sounding role.
None of these stand out too much by itself, but ordinarily I would not have accepted the Connect invitation with someone with a very brief education and work experience profile. So my confession is that I accepted because she was an interesting lady.
Suspicions - Putting on the tin-foil hat.
The conversations in the chat does not indicate she wanted anything from me, neither information nor resources. The LinkedIn profile described above is not unusual for each individual item, but collectively, they are starting to ring the alarm bells. From there, trying much harder to look through all the evidence, here is a list of suspicious items.
- In the interaction / chats, when I tried to talk about her business to stimulate her interest or passion in her work or business, her answers very soon changed the topic. It was not avoiding the question, but the answers were very plausible, but like 'now let's talk about something more interesting in your personal life'
- She does not ask me about my work, except simply 'what I do at work'. There is no attempt to extract any kind of work related information at all. In fact this almost lack of interest about my professional experience, considering we met at LinkedIn is a bit unsual I thought.
- She has so far send two photos. The photo in a sporting activity shows her in a tight exercise suit - revealing a nice body (sorry, I have say it as it attracted my attention). The one at dinner was very proper looking, showing such a cute and sweet face. But comparing these two photos with her LinkedIn profile photo and the chat app profile photo, I cannot say for sure that it is or it is not the same person. Each photo was taken either at a different angle, with different hair style and different pose, basically enough differences that it could still be the same person.
- Photos - another thing about the photos is that they are not selfies. So she always has someone with her, taking these nice photos of her, whether in an action during sports or at dinner for one, yet looking nice and framed properly in the photos. Who took these photos? Was she with someone? If there is someone, even a friend, why would she be chatting with me half way around the world instead of giving more attention to that person who is with her?
- Looking more closely at the education level in combination with the work experience. She attended two universities consecutively from 2011-2017. A brief internship was done. Then it appears her first job after the internship is CEO of a company (4 years ago until now) and and second job at the executive level from (3 years ago until now). So this is what I meant by a seemingly successful or wealthy young lady. Can this be true? Yes since her country is a place where rule-of-law is not always true, and important people (e.g. her father) has significant advantages. Or it could be a not-very-good fake profile.
- Looking at her LinkedIn connections, it is almost all males out of the first 8 pages with only one female who is another high-powered successful lady. All the males are CXO, C-level executives, directors, Heads of xyz, business leaders etc. Not even head-hunters has such high powered connections. Could all these male high-flying individuals be potential victims?
Why me? What for?
Although some alarm bells may start to tingle, most likely we may not know the reason until it is too late. Here are just a few very general reasons and there could be more.
https://www.smh.com.au/lifestyle/life-and-relationships/don-t-know-why-i-sent-more-sally-lost-her-entire-savings-to-a-love-scam-20200909-p55ttb.html
1. The article above is about old-fashioned scamminng involving romantic love, but the technology could be modern, like chat or video conferencing. The scammers are patient and build trust and love on the victims, then the objective of the scam is old-fashioned money.
2. For more modern whaling, the objective would be to target high level corporate leaders, or someone influential enough in an organisation, such as an IT Administrator. Then if the scammer can infect the devices of the victim, potentially everyone else in the victim's computer network (ie the office) could be vulnerable.
3. Social engineering - this may combined the old-fashioned charm and get-to-know-the-person-trick, then with the similar objective as whaling, by having the goal of being able to access information or computer systems of more high value targets in the organisation of the victim.
I don't think I can fall in the romantic scam trick, but that is in fact what I could fall for. I don't have a high title in my company nor important role, but that does not mean I cannot be used to get to another person through me. Just because I don't know why, does not make me any less valuable to a scammer.
4. Here is another potential reason (I won't comment further)
https://www.asianage.com/world/americas/310818/china-using-fake-linkedin-accounts-to-recruit-americans-us-top-spy-catcher.html
Checks
The suspicions above may or may not reflect the truth - and I still cannot be sure at this point.
However, a few things can be checked.
- Contact University? Alumni Lookup service?
- Check with a few others she has been in contact with.
- Check by calling the work company, maybe not directly, but approach with tact.
- Image check in the internet.
- Common scammer fake profiles search
Update:
I just verified using reverse image search (https://tineye.com/search/), that the chat app profile photo is taken from a young lady at a tourist website. The website has a lot of photos of the same lady and they are clearly recognizable as the same person. However, LX's various photo seem difficult to identify as the same person.
Sunday, August 23, 2020
Offline Browser, Proxy Server, Cache for viewing web pages without the Internet
The following is a work in progress to find a way to view web pages without the internet.
How to Enable Offline Browsing in Chrome - an experimental feature within Chrome and like browsers.
https://www.hongkiat.com/blog/windows-offline-browsers/ - a good list of offline browsers
https://proxy-offline-browser.com/professional/Installation.html - MM3 Web Assistant. This functions as a proxy and automatically saves the webpages that have been visited. However the free version does not handle HTTPS. The benefit is that users do not need to specify which sites to save specifically.
HTTrack Website Copier - seems to be the best so far. Will test soon.
WebCopy - similar to HTTrack but not JavaScript....
Wiki for Offline browsing
- Download the linux version: http://xowa.org/home/wiki/Help/Download_XOWA.html
- On Linux, open a terminal and run sh /home/Your_Name/xowa/xowa_linux.sh
- Note that the shell script is a wrapper for java -Xmx256m -jar /home/Your_Name/xowa/xowa_linux.jar
- Path of jar file /home/Your_Name/xowa/xowa_linux.jar
Friday, August 21, 2020
Notes Video Editing
https://au.oberlo.com/blog/best-free-video-editing-software
I'll add comments to help narrow down even further for myself basically - but others may find it helpful too.
Blender - originally for 3D animation. I've also heard about its not-so-easy to learn aspect, though it has lots of features. But I won't be trying this.
Lightworks - the Free version has a limit of 720p. I've used another converter to convert to 1280x720 and compare with the original and very common 1920x1080 size. The 720 one is noticeably fuzzier. So I won't be testing this further.
Shortcut -
While the cut function seems OK, the Export is difficult to configure. Pressing the Export button does nothing. In one case when it did export, the file is more than twice the original.
- not really that straight-forward to use without using any help
- Export to a lot of formats, but for some reason, the output is 10 times larger than the original. Why it doesn't use the exact compression level of the input?
- BEST so far
- Small footprint, about 80MB fully installed (according to the installation dialog)
- Best Feature - COPY - this option in the video encoder format allows it to use exactly the same video format as the input. So if there are no edits being made, the new output is exactly the same size. This is very useful in comparison with other software above which, in most cases, result in an output which is larger than the input video file.
- limited to 7 minutes clip for free version
Sunday, July 26, 2020
Tensorflow Deployment Requirements for Machine Learning / Neural Networks
Monday, June 22, 2020
Unboxing - AIMOS HDMI KVM 2-port Switch
![]() |
Chinese |
![]() |
Add caption |
Tuesday, April 28, 2020
Notes q
An Overview of the q language
You Tube - Introduction to KDB+ and q
========================================
Tutorial: https://www.youtube.com/watch?v=8eoysfqO3UY&list=PLypX5sYuDqvrwBD2EMWadIMiTqJZmVsqm
The following is a transcribe of the details in the above introduction course. It is meant as rough notes to capture the syntax and used as a reference, and may not give good worded descriptions.
#lesson 1
NO: control flow, loop, if-else, threads, shared globals, objects, inheritance
interpretive language, dynamically type, vector programming, functional programming, list, dictionaries, tables (1st class items, based on list, dicts)
#lesson 2
function has TYPE
42 -> 64 bit
42i -> 32 bit
4%2 -> % is division
2f -> float
#lesson 3
1 2 3+10 20 30 -> vecotr operation, results is 11 22 33, spaces are used to separate list items
count 1.0 2.0 3.0 -> 3 is the result
1+10 20 30 -> 11 21 31 scalar(atom) + vector
# All operations have precedence, operations done right to left
2*3+4 -> (3+4) =7 then *2 =14
til 100 -> generates 01 2 ... up to 100 numbers
count til 100 -> 100
101+2*til 1000 -> generate (0 .. 999), then x 2, then add 100 to every item. Result: 101 103 105 ....
#lesson 4
0b -> false
1b -> true
101b -> list of booleans true, false, true, NOT separated by space, and NOT a bitmask representation
42=6*7 -> 1b (true)
1 2 3=10 2 30 -> 010b vector results of false, true, false
2018.01.01 -> actually count of days since millenium (yyyy.mm.dd)
2000.01.01=0 -> 1b True
1999.12.31=-1 -> 1b True
2000.02.01-2000.01.01 -> 31i (31 days, in INTEGER 'i') date arithmetic
2000.01.01+til 31 -> make 31 integers then add to 1st Jan 2000 -> gives the dates of that month. List-Date arithmetic
2000.01m -> month
2000.01m=0 -> 1b Comparing the 1st month since millennium
2000.02m=1 -> 1b Comparing the 2nd month since millennium
2000.01.01=2000.01m Comparing 1st day ever, to 1st month ever, q assumes the month is 1st day of month when comparing to date, hence true.
#lesson 5 - Casting
`long$1.0 -> cast to long
`float$1 -> cast to float
`boolean$1 -> cast to boolean
`date$31 -> cast to date format, ie 31 days since millennium is 2000.02.01
2000.01m+til 12 -> list of 12 months 2000.01 2000.02 2000.03 ...
15+2000.01m+til 3 -> 2001.04 2001.05 2001.06m 1st 3 months, after 15 months from the millenium
# lesson 6 - Operations on List
Declarative programming - what we want in q. Other languages are imperative, ie write loops to tell how to compute.
0 +/ 10 20 30 40 50 Initialise to zero then add the items on the list. The +/ symbol called 'over' in q, 'fold' in functional language.
(+/) 10 20 30 40 50 Same as above - add across a list. Does not need to be initialised.
'/' The slash is ALSO behaving like an iterator
sum 10 20 30 40 50 -> same as above
(*/) 1+til 5 Does Factorial(5)
4|5 -> 5 returns larger number
10&2 -> 2 returns smaller number
0b|1b -> 1b Larger operator for Boolean is equivalent to 'OR' operator
0b&1b -> 0b Smaller operator for Boolean is equivalent to 'AND' operator
(|/) 10 30 20 -> 30
max 10 30 20 -> 30
(&/) 10 30 20 -> 10
min 10 30 20 -> 10
(+\) 10 20 30 40 50 -> 10 30 60 100 150. Backslash means create a CUMULATIVE / RUNNING list. also called 'sums'
(&\) 40 20 30 10 50 -> 40 20 20 10 10. Running minimum. Also called 'mins'. Similarly with 'maxs'
# Lesson 7 - Functions
{[x]x*x} -> [x] is the parameter
{[x]x*x}5 -> substitutes 5 into x. Result is 5*5. Can also use {[x]x*x}[5]
{x*x}5 -> implicit parameter, don't need to declare.
# Lesson 8 - Newton Raphson and Fibonacci Sequence
Say Function is f(x) 2-x^2. So f'(x) = -2x. NewtRaph algo is xn = xn - f(x)/f'(x)
{[xn]xn+(2-xn*xn)%2*xn}/[1.0] -> 1.414214 .... result from Newton Raphson using 1.0 as initial point, being put into the function on the left iteratively.
{[xn]xn+(2-xn*xn)%2*xn}\[1.0] -> 1 1.5 1.4..... shows the intermediate results from Newton Raphson
\P 16 -> shows 16 decimals. iteration stops until diff is 1e-14
2#10 20 30 40 50 -> 10 20 '#' retrieves the integers from the left of list
-2#10 20 30 40 50 -> 40 50 '#' retrieves the integers from the right of list
10 20, 100 200 300 -> 10 20 100 200 300 joins lists
{x, sum -2#x}/[10;1 1] -> returns the Fibonacci Sequence. Iterate 10 times, starting with [1 1]
# Lesson 9 - Function, Variables
deltas 110 120 130 -> 110 10 10 takes differences between two numbers. The first result assumes difference with zero.
deltas sums 110 120 130 -> is the same as sums deltas 110 120 130 -> result is 110 120 130. Invariance in q.
a:42 -> assign value of 42 to variable a.
buys:2 1 4 3 5 4 ->
sell:12 -> want to sell 12 units from the various buys
sums buys -> 2 3 7 10 15 19
sell&sums buys -> 2 3 7 10 12 12 - creates a list of minimum between two lists.
deltas sell&sums buys -> 1 2 4 3 2 0 - list of what how should buy
# Lesson 10 - Tables
Table = Collection of columns in q. Operations are column based, hence vector operations.
dates:2018.01.01+10000000?31 -> list of 10 million numbers between 0(including BUT not stated) and 31(stated, but EXCLUSIVE)
times:10000000?24:00:00.0000 -> 10 million random nums, between 0 (including, BUT not stated) and midnight (EXCLUSIVE)
qtys:100*1+10000000?100 -> 10 mil random numbes from 0 to 100, then +1, then * 100
ixs:10000000?3 -> 10 mil rand num, from 0 1 2. store random numbers in ixs
10 20 30 ixs -> 10 10 30 20 30 20 ...... Since ixs has 3 unique values, so the 10 20 30 will apply to 10 20 30, MAPPED into the 10 million entries of ixs.
syms:`appl`amzn`googl ixs -> `googl`aapl`amzn`googl`googl .... applies symbols to list, store in syms. The 3 stock quotes is MAPPED to the 3 unique values of ixs for all 10 million values of ixs
172.0 1189.0 1073.0 ixs -> maps the 3 unique values into the 10million numbers of ixs
pxs:(1+10000000?.03) 172.0 1189.0 1073.0 ixs -> adds some random noise to the 10 million stock prices.
t:([] date:dates;time:times;sym:syms;qty:qtys;px:pxs) -> creates a table, with specified column names, and columns of data
t:`date`time xasc t -> sort ascending time, then date
5#t -> returns top(head) 5 rows
# Lesson 11 - qSQL
select date,time,qty,px from t where sym=`aapl
\t select date,time,qty,px from t where sym=`aapl -> returns time in milliseconds
first 10 20 30 40 50 -> first item on list
last 10 20 30 40 50 -> last item on list
select open:first px,close:last px by date,time from t where sym=`aapl
#Lesson 12 - Complex Queries(*)
4 3 2 1 wavg 10 20 30 40 -> 20f calculate weighted average
5 xbar 0 1 2 3 4 5 10 11 21 -> 0 0 0 0 0 5 10 10 20 returns bucketed result. Useful for time domain values that needs bucketing
select max px - mins px from t where sym=`appl -> is the Max idealised profit (ie buy at the lowest price of the day and sell at the highest price of the day. The function is the same as select (max (px - (mins px from t where sym=`appl) )). The mins is a running cumulative vector of the minimum, while the max just returns the single value.
#Lesson 13 - Interprocess Communication(*)
Server and Client - ie running two different q.
On Server
\p 4242 Starts the server on port 4242
On Client
h:hopen`::4242 Where machine name is omitted between two colons, since it is on the same machine. h is the handler
h "6*7" Do compute on remote server
sq:{x*x} Send function to remote server
h (sq; 5) Execute on remote server
DON'T DO ABOVE since open ports are dangerous
On Server
cub3:{0N!x*x*x} 0N! displays computation on local server first, before shifting to client
On Client
h (`cub3; 5) Safer this way, CALL the name of the function. First Argument is function name, the rest are arguments
#Lesson 14 - Callbacks(*)
Previously the client server were synchronous, meaning the parties wait for each other after sending a message.
For Asynchronous, when message is sent, the sender does not need to wait.
The handler h is an 'integers'.
On Client
h -> 3i is the integer 3. this is a function handler
(neg h) (`cub3;5) -> h is positive, neg h is negative. So "(neg h) (`cub3; 5)" is an ASYNCHRONOUS call.
Callback: Without callback, an asynchronous function would send message to server, then receives no response. With callback provided on the server, the server will send the result back whenever it is ready.
Client uses 'h' as its handler to call the server
Server uses '.z.w' as its handler of the function send from the client. .z.w returns 6i
On Client (FINAL)
continue:{0N!x} -> displays x over here
(neg h) (`worker; 5; `continue) -> (neg h) for asynchronous, call process 'worker' on server, with argument '5', use the callback label 'continue'. First Argument `worker is function name, the rest are arguments [5; `continue]
On Server (FINAL)
cub3:{0N!.z.w; x*x*x}
worker:{[arg; callback] r:cub3 arg; (neg .z.w) (callback; r) -> 'worker' is process called by client, defined here on server. [arg; callback] are the parameters passed from client. 'callback' is the dummy name corresponding to 'continue'. Runs cub3 on arg, store result in r. Then (neg .z.w) triggers the callback to client asynchronously. Thirdly execute the 'callback' (which is 'continue') with result r.
# Lesson 15 - I/O
Strings - abit different than other languages. Strings are a list of characters, not a primitive type.
"jab" is a list
`jab is a variable name
Binary files - operations have 1 in their names
Text files - operations have 0 in their names
File records are list of strings to q. Which means they are a list of list of characters to q.
("So long"; "and thanks"; "for all the dish") - a list of list of chars
count ("So long"; "and thanks"; "for all the dish") -> three list items
`:/data/solong.txt 0: ("So long"; "and thanks"; "for all the dish") -> `:/data/solong.txt returns this file handler as acknowledgment
' error messages are 'Straight ticks'
` File handlers are 'back ticks'
`: is the file handler or names a file.
/data/solong.txt is the local path
0: is the name of the WRITE to text file function
read0 is the name of the READ from text file operation
read0 `:/data/solong.txt -> prints out the lines of the file
`:/data/answer.txt 0: txt,txt:read0 `:/data/solong.txt -> `:/data/answer.txt returns this file handler as acknowledgment
Date - starts from the millennum
Vector Column operations - not Rows
select from 10million rows in 150ms
Single line of code for even for non-trivial functions
select max px - mins px from t where sym=`appl Algorithm for Idealised Profit in Trading (sym is symbol column, px is price column of table t )
{[xn]xn+(2-xn*xn)%2*xn}\[1.0] Algorithm for Newton Raphson with initial point as 1.0
{x, sum -2#x}/[10;1 1] Algorithm for Fibonacci Sequence, initial points 1 1 , for 10 iterations
An Overview of the q language
================================
'q' is a proprietary language build on top of an existing 'k' language (developed by ex-Morgan Stanley computer scientist Arthur Whitney) and the kdb+ datatbase (The 'q' language / kdb+ is free for non-commercial use). They are all proprietary products of Kx Systems and it is perhaps more widely known (if not the de facto) in the finance and investment banking industry more than any other industries. As such, it is aimed at time-series based data, large volumes and high transfer rates. Very complex applications can be written in the 'q' language with an extremely small footprint. A large number of Altair's real time visualisation software, Panopticon, connect to kdb+ databases and utilises q.
A recent exploration into the depths of the q language reveals a very sophisticated and expressive computational programming language. It is both like and unlike various programming languages. Perhaps the first point is the vector programming underlying its core, yet this language may not be known widely in the HPC community (or perhaps I have not looked wide enough while I was in HPC, it happens). Vector supercomputers once ruled the HPC world, but when they approached extinction, the vector processing capability were re-incarnated into commodity CPUs and is now powering our PCs (since the days of Intel MMX, SSE, etc...). And it appears that around that similar time shortly after the Millennium, 'q' was born independently of Vector Supercomputers or vectorised CPU instructions, but rather tracing its origin back to the 60s from APL (A Programming Language), thus having both vector and functional programming influence.
For reference, a free book is available at: https://code.kx.com/q4m3/0_Overview/
And a Tutorial series is at: https://www.youtube.com/playlist?list=PLypX5sYuDqvrwBD2EMWadIMiTqJZmVsqm
For those coming from scientific, computational, HPC background, thinking in terms of vectors will ease our understanding to 'q'. For the general programmers who are familiar with C, Java, Python, and the rest, the good advice from the YouTube link would be to throw away your understanding of control flow, loop, if-else, threads, shared globals, objects, inheritance. The syntax itself is short, succinct and raw, yet expresses beautifully the operations it performs. The following will describe some of the noteworthy things about 'q' which are different than the current popular programming languages.
'q' is similar to many scripting language, ie interpretative (no compilation), dynamically type (no pre-declaration of data type). The two fundamental data structures are lists and dictionary, again no surprises here. However it is the vector operations that are perhaps new to most modern day programmers. For example a vector 1 2 3 can be added directly to another vector 10 20 30. Yet these vector expressions should be reminiscent of those in Matlab and Fortran, but the similarities don't extend much further. The syntax is perhaps quite different (though perhaps not too dissimilar to other functional programming languages). The vector (list) items are delimited by spaces (not commas). The mathematical operators has equal precedence (no BODMAS rule) and the order is designed so that the operations are performed in the right-to-left order. For example: 2*3+4 is actually 2*7, which is 14. This right-to-left and single line way of writing code is perhaps the biggest change a programmer of other languages need to overcome.
Control flow and loops goes out the window because an operation acts on all the items in the vector. There is no point in having an explicit index to loop over. As such, an operation over 10 or 10 million items can be written in one line. In fact, entire functions or methods are written in one line, as shown in examples later. In terms of data types, there are the familiar char, boolean, integer, float and so on. Strings are like in Fortran or old C, a string in q is actually a character of arrays. The really most interesting data type I found is the Date representation. Instead of some arbitrary representation having an initial value at 1970 or 1900; q's date are actually integers starting from 1 Jan 2000. This means date computations benefit from the speed of raw integer operations, as well as being able to perform fancy date arithmetic.
List operations are powerful, since this is one of the core data structures of q. List, or vectors can be operated with another vector or scalar, not dissimilar at all to their mathematical counterparts. In addition to aggregate operations like 'max', 'min', 'sum', there are more interesting versions 'maxs', 'mins', 'sums' which actually returns a cumulative vector of the aggregation process. The highlight of the 'q' language of its expressiveness and power would be its function definitions. Instead of describing, ponder upon the following one-liner, and consider how such functions would need to be written in Python, Java, C, etc:
Algorithm for Newton Raphson with initial point as 1.0
{[xn]xn+(2-xn*xn)%2*xn}\[1.0]
Algorithm for Fibonacci Sequence, inital points 1 1 , for 10 iterations
{x, sum -2#x}[10;1 1]
Algorithm for Idealised Profit in Trading (sym is symbol column, px is price column of table t )
select max px - mins px from t where sym=`appl
As for Data Analytics and complex data processing, there are tables, qSQL and a few more useful functions. Tables are collection of columns, like Fortran/Matlab but opposite to C-based languages. Columns in tables generally mean they are of the same data type that means they are easily stored as vectors. For q, this means performing operations on large datasets are extremely fast. Combining the single line functional syntax with vector based operations, very complex yet efficient programs can be written in a terse manner. The qSQL syntax enables very SQL-like expressions to be written. This may be a comfort for SQL programmers, but it still pays to understand the underlying concepts of q, since there are fundamental differences that can lead to incorrect expectations. Native functions like 'xbar' that creates bucketing are extremely powerful when applied to time-series based analysis. In an example of 10million rows, a certain select operation took 150ms.
Most programming languages have the capability of File I/O. q also has File I/O for both text and binary files (again there is the similarity with Fortran's binary files capability, rather than the streams based files I/O of other languages). Not surprisingly by now, q's way or reading and writing files are one-liners. There is no need to open or close a file or the many other lines of instructions needed by other languages. Besides File I/O, q is also capable of Interprocess Communications and Asynchronous processes. Together, these capabilities enable q to write client-server applications without using any other external tools.
From this brief high level exploration, q seems to be an interesting, powerful and useful programmig language. It has the expressiveness of functional programming, the power of vector processing and the applicability to real high volume data computational needs. The fact that it is born within the Financial Trading sector by no means exclude it from being used in other industries. Whereever there is large numerical datasets that requires computation, q may be a good choice. These other industries that may benefit include: data science, scientific research, defence, telecommunications, etc. In terms of providing real-time visualisations of the large and fast datasets, Altair's Panopticon with kdb+/q would make a formidable combination.