Got API Designer Certification from API Academy
Common API Styles
Screengrab from the APIAcademy API Developer certification content:
More reading here: https://apiacademy.co/ebook-a-guide-to-rest-and-api-design/
Why some professional certifications are not trustworthy in some countries?
Read the original article I wrote in LInkedIn here.
I was in a brainstorm meeting to design a new training program for developers, and one suggestion was to have a mandatory certification as part of evaluation criteria. Most of us were not in agreement with the idea but a justification comment from one person caught my attention “certification exams are just memory tests!“.
Microsoft do not conduct Beta exams in few countries and it is clearly mentioned in the About page of Microsoft’s Certifications:
Candidates located in China, India, Pakistan, or Turkey are not eligible to participate in beta exams for security reasons.
In one of the Microsoft Community forums, a Microsoft agent even shown the courage to explain the reason that the fraud percentage in these countries are almost 80%. (sorry, I am unable to trace that page now. May be that comment was removed after some reporting)
“Certification in X is preferred” is one of the usual line in Job Descriptions, but the fact is interviewer do not really give a damn about the certification unless the candidate really showcases the skills. This fate definitely is not applicable for all the exams, I have to admit.
I took my PMP exam at an exam center Dubai, UAE where I felt like I was in a demilitarized zone where I am being monitored by ‘someone’ every microsecond. I was allotted a locker where I was asked to put all the belongings including my watch and belt there and I had to walk though a scanner. I was guided to a cubicle where an overhead CCTV camera was pointing at me like a gun. After about three months of study by spending almost 4-6 hours a day, I also practiced the exam by answering about 1000 questions to get confidence. Surprisingly I did not encounter same question repeated in my actual exam and, the amount of joy I felt when the last screen of “Congratulations” gave was very blissful.
Compared to my PMP, back in my home town, the few other exams I took (mostly Microsoft exams) at local exam centers were very casual. No strict checking of body or ID card, nobody to monitor, no strict adherence to timing etc.
But why?
When I say “certification exams are for testing memory”, what I am trying to imply is that, you get “brain dumps“, the exact exam questions and its answers in your hand in advance so your job is just to memorize those questions and answer options so you might even get 1000/1000 marks.
One of the problem with local exam centers is, along with exam vouchers selling and facilitating the exams, they are also giving, or selling brain dumps too. They use some kind of screen recorders, or other methods to collect questions. There are many people in social media like Telegram, through the exam preparation groups are giving/selling same. But now since the exam providers also allow candidates to attend exams from anywhere, it has become too easy to cheat the exam by collecting questions, or by using another methods like impersonation. There are many websites also provide brain dumps, in the name of practice questions.
See how easy is it to write a program to take screenshot every few seconds so that you can do a second attempt exam by memorizing these questions:
System.Drawing.Rectangle captureRectangle = Screen.AllScreens[0].Bounds;
System.Drawing.Graphics captureGraphics = System.Drawing.Graphics.FromImage(bmp);
captureGraphics.CopyFromScreen(captureRectangle.Left, captureRectangle.Top, 0, 0, captureRectangle.Size);
bmp.Save(path + “\\” + DateTime.Now.Ticks + “.mib”, System.Drawing.Imaging.ImageFormat.Jpeg);
Another cheating method is to use a ‘proxy’ person support. Using some screen sharing software, your friend/proxy can login to your machine remotely and attend the exam while you sit idle in front of the computer.
How to make these exams trustworthy?
Exam process and systems are improving and embracing latest technologies. With the introduction of AI, there are effective solutions available which will monitor candidate’s facial movements, eye contact, body language etc. in addition to improving the exam quality – by intelligent selection of questions or alternate evaluation methods. Also, in addition to multiple choice questions, if we can introduce practical-oriented exams also, then we can make the candidates ready for the industry. Scenario based questions do exist, but those are again memoizable. However, we might have to wait a while more because, at the time of writing this exam also, I can see there are exams which you can easily pass if you have the capability to memorize brain dumps.
Whitepaper on Modern Enterprise Data Management in Healthcare
Here is my attempt to create first draft of my whitepaper on Data Governance. Will be working on improving the version my missing elements soon.
Read paper here :
First page for preview:
Getting myself introduced to Azure Synapse Analytics
This week I got an opportunity to be part of the program “Analytics In A Day”, organized by my employer, Orion Innovation. This is a one full-day workshop by Microsoft, delivers through their partners and target audience is usually technology leaders, architects, managers and developers. I have experience with various components of Azure Synapse Analytics individually such as ADF/Azure Data Factory, Azure SQL Data Warehouse, Databricks and DataLake but it is a very nice experience working with a unified platform which provides seamless integration, or in other words – each stakeholders: Data Scientists, Analytics, Architects, Business users and IT guys gets the relief of having bothered only about the area they really have to bother about, such as: Data Scientist can focus on his data and models and don’t worry anymore about how he/she can bring the data inside the tool. The program starts with data sources, and talks about the ingestion, processing storage, machine learning and visualization.
I was previously part of “DIAD aka Dashboard In A Day” also, which is all about preparing reports and dashboards in Power BI stack.
Bookmark: Lecture on “Automating Mathematics?” by Siddhartha Gadgil
Strong Password Generator in C#
This code snippets will let you auto-generate strong passwords. Look for the password rules in the inline comments in code
002 using System.Collections.Generic;
003 using System.Linq;
004 using System.Security.Cryptography.X509Certificates;
005 using System.Text;
006 using System.Threading.Tasks;
007
008 namespace PwdGen
009 {
010 class Program
011 {
012 static void Main(string[] args)
013 {
014 //Console.WriteLine(GeneratePassword2(8, 15));
015 //Console.WriteLine(GeneratePassword(8, 15));
016 Console.ReadKey();
017 }
018
019 static string GeneratePassword2(int MinLength, int MaxLength)
020 {
021
022 string ValidChars = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ:;<>|=.,_-~!?&%@#$£€°^*§()+[] ";
023 string SpecialChars = "!@#$%^&*()";
024
025 string pwd = string.Empty;
026
027 do
028 {
029 Random rnd = new Random(Guid.NewGuid().GetHashCode());
030 pwd = string.Join(string.Empty, Enumerable.Repeat(ValidChars, rnd.Next(MinLength, MaxLength + 1)).Select(s => s[rnd.Next(s.Length)]).ToArray());
031 Console.WriteLine(pwd);
032 } while (
033
034 Regex.Match(pwd, "[a-zA-Z]{3,}").Success || // Not more than 3 chars in sequence
035 Regex.Match(pwd, @"(\w)\1{2,}").Success || //Same number should not repeat more than 2 times
036 Regex.Match(pwd, "[1-9]{3,}").Success || // Not more than 3 numbers in sequence
037 !Regex.Match(pwd, "[A-Z]").Success || // At least one upper case char
038 !Regex.Match(pwd, "[a-z]").Success || // At least one lower case char
039 !Regex.Match(pwd, "[1-9]").Success || // At least one number
040 (pwd.ToArray().Where(l => SpecialChars.ToArray().Any(l2 => l2 == l)).Count() == 0) // At least one pre defined special char
041 );
042
043 return pwd;
044 }
045
046 static string GeneratePassword(int MinLength, int MaxLength)
047 {
048 string ValidChars = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ:;<>|=.,_-~!?&%@#$£€°^*§()+[] ";
049 string SpecialChars = "!@#$%^&*()";
050
051 string pwd = string.Empty;
052
053 Random rnd = new Random(Guid.NewGuid().GetHashCode());
054
055 bool NumExist = false;
056 bool IsUpper = false;
057 bool IsLower = false;
058 bool IsSplChr = false;
059 bool NoRepeat = true;
060 bool NoSeq = true;
061
062 while ((!NumExist || !IsUpper || !IsLower || !IsSplChr) && (NoRepeat || NoSeq) )
063 {
064 NumExist = false;
065 IsUpper = false;
066 IsLower = false;
067 IsSplChr = false;
068 NoRepeat = true;
069 NoSeq = true;
070
071 pwd = string.Join(string.Empty, Enumerable.Repeat(ValidChars, rnd.Next(MinLength, MaxLength + 1)).Select(s => s[rnd.Next(s.Length)]).ToArray());
072 for (int i = 0; i < pwd.Length; i++)
073 {
074 // Contains at least 1 lower case letter and 1 upper case letter (all UTF-8), at least 1 number
075
076 if (!NumExist)
077 {
078 NumExist = (char.IsDigit(pwd[i]) && true);
079 }
080 if (!IsUpper)
081 {
082 IsUpper = (char.IsUpper(pwd[i]) && true);
083 }
084 if (!IsLower)
085 {
086 IsLower = (char.IsLower(pwd[i]) && true);
087 }
088
089 // A predefined set of special chars must be present
090 if (!IsSplChr)
091 {
092 IsSplChr = (SpecialChars.IndexOf(pwd[i]) >= 0);
093 }
094
095
096 // Not more than 2 identical characters in a row (e.g., 111 not allowed)
097 if (i < pwd.Length - 2 && NoRepeat)
098 {
099 NoRepeat = !((pwd[i] == pwd[i + 1]) && (pwd[i] == pwd[i + 2]));
100 }
101
102 // Not any sequence of the English alphabet / numbers (above 3 letters)
103 if (i < pwd.Length - 2 && NoSeq)
104 {
105 NoSeq = !((pwd[i + 2] - pwd[i + 1]) == (pwd[i + 1] - pwd[i]));
106 }
107 Console.WriteLine(!NumExist +" "+ !IsUpper + " " + !IsLower + " " + !IsSplChr + " " + NoRepeat +NoSeq);
108 }
109
110 }
111
112 return pwd;
113
114 }
115 }
116 }
117