Friday, June 1, 2018

The Art & Science of Making Study Notes

The title makes this post looks like a lesson for school children who make notes in the class room while listening to the teacher.

They can learn a thing or two from this too, but notes are not only for school children & undergrads.

Notes take away the burden of having to memorize things. Since the field we’re in changes continuously we have to keep on learning and my notes are my trusted friends who never fail me.

It all started due to two weaknesses. I have terrible memory and terrible handwriting. Forget the lessons, I have a hard time remembering faces of my university colleagues and even my lecturers. If you ask me to name a few subjects I took, I’m embarrassed to say that I’d struggle to do it.
Despite this issue, my academic records are not so bad. In the beginning it was due to my hand written notes. But they were not pretty, it was not motivating to study those sad ugly handwritten notes.
Things changed when I was doing my MBA. Lecturers shared soft copies of lecture notes, mainly slide shows. There were so many and since they were in PowerPoint they took a lot of space. Many students just printed these and studied. I was depressed at the thought of having to study piles and piles of notes. I started coping and pasting them into a word doc and noticed I can shrink a 10-page slide show to a single page. Ever since I’ve been perfecting my method of digital note making.

I try to make my notes as comprehensive as possible and at the same time as compact as possible.

Many have asked what tools I use to make notes. I happen to use a ground breaking platform called Microsoft Word! Jokes aside it’s the best & the most popular word processing application ever, and has catered to all my note making needs over the years. I don’t see any requirement to switch to another tool. Plus I don’t use any add-ons or templates, just basic plain Jane features everybody has access to.

Here are some basic settings that help me to squeeze in more content per page without cluttering it.

Style Set: Modern

Margins: Narrow
Columns: Two

I set Orientation as Portrait mostly, but in some cases I switch to Landscape if the images, tables are too large to fit into a column of a portrait setup.

I love minimalism and try to bring it to all aspects in my life. I have a long way to go before I call myself a minimalist, but I see the benefits of it in many areas including my study notes.

Even as a software developer my favorite mantra is simplicity. In my opinion the best solution is the simplest solution that gets the job done. I find it very satisfying to refactor code and reduce number of lines and make it more readable, to the extent of treating it as a hobby and spending hours doing so. (yes I agree, I’m weird & I need to get a life)

My notes reflect my obsession with minimalism, sentences are rephrased to make the point as clear as possible in minimum number of words. All the non-value adding content is removed.

When we blog, write a book or deliver a talk we try to make it interesting and adopt a story telling style. But when it comes to notes I find the opposite approach works the best. Boring, short & to the point serves the purpose.

Whenever I go though the notes again I find opportunities to ‘refactor’ the content and make it more clear or more concise.

Another way to make it compact is to ensure there is no redundancy in your notes. In courses, books, lectures they introduce redundancy with purpose. In fact, it’s a great tool to internalize a concept; present it in different ways and give multiple examples so that the mind can absorb it better. But notes are a reference to something we have already learnt & internalized.

You do need to include examples in your notes, but keeping it simple and stripping it off to the bare minimum helps to save space.

Sometimes the format we present certain information can make a drastic difference in how clear and compact it is. Presenting them in tables, bullet points or in illustrations is usually a better than lengthy texts.

As they say a picture are worth a thousand words, illustrations help us to provide information in the most compact & clear way. Sometimes I Google illustrations that are not included in the course/lecture & add it to the note and sometimes I take screenshots from video lectures. If the illustration is making the point, there is no need to waste the precious space by adding texts explaining it. You can save some more space by cropping the images to remove unwanted parts and changing the wrapping style to square if the images are small. If it’s a table using ‘Autofit to Window’ option makes optimum use of space.

Some material can use special formatting. Say for example there are some code examples. Having them in a different font color or a background color can set them apart from the other material. They can have a smaller font size and even less spacing between the lines.

You got to be careful with the design formats though. Usually fancier the design more space it will take. Take Word table formats for example. I always go for the basic plain table format with ‘no spacing’ unless the table contains lengthy content that can use a bit more space.

The best way to ensure the note captures all the details is to keep updating it as we learn. This is easy with online and individual learning, since we can pause listening to a video/podcast or reading a book and update the note. Digital learning resources are very note-friendly since we can easily copy paste content and optimize them as we like it.If it’s a classroom session or a live broadcast where we cannot take our own time, we can always jot down key points and update the note later.

Navigation and search are two main reasons that make digital notes stand out from physical/hand written notes. In Microsoft Word you can format the titles as Heading 1, Heading2 etc. I never go for custom formatting, the ready made ones work fine for me. Once the headings are in place we can use the left side navigation pane to navigate. Since it shows the overall structure/organization of the entire material I find it it gives a clear organized picture to the mind and help me remember things better as well. Once the note is complete or if you want to share it with someone you can save it as a pdf and in options panel enable the option to convert headings into bookmarks. This way generated pdf will have a navigation panel as well. Optionally you can add a table of contents, but navigation panes are more useful.

Tuesday, July 12, 2016

Preschools & Daycares in Colombo

NameAreaAddressWeb presencePhone NumMin accepted age
Little Learners Montessori PreschoolBattaramulla/PelawatteNo. 27, 1st Lane, Church Road, Pelawatte, Battaramulla 296 6054
First Step preschool & child development programBattaramulla/Pelawatte447/2 Lake Road, By Road 02, Pelawatte, Battaramulla
077 717 2683
Little Einsteins MontessoriBattaramulla/Pelawatte969, School Lane, Thalangama South, 2 786928
British Early Learning BellsBattaramulla/PelawatteNo: 234A, Pahalawela Road , Pelawatte, Battaramulla 433 6130, 071 8438016/ 077 6852323
Guiding stepsBattaramulla/PelawatteNo: 449/3, William Place, Pannipitiya Road, Pelawatte 2 786539
The Little HouseBattaramulla/PelawattePelawatte 612 4117
Angel KeepersColombo8 Kalinga Place (Off Suleiman Avenue), Jawatte Road, Colombo
071 779 07903 months
LittlemoreColombo487/16 Thimbirigasyaya Road, Colombo & 0773740391
Mighty Minds MontessoriColombo64/2 Chitra Lane, Colombo
American MontessoriColombo10th Lane, Colombo 357 5145
Little Ark International MontessoriColombo859, Bloemendhal Road, Colombo 367 9516
Happy KidsColombo 13New chetty street,colombo-13
077 753 9619
Joyce Goonesekera Montessori House of ChildrenColombo 3No. 51/5, Dharmapala Mawatha, Colombo 03. http://www.joycemontessori.com011-2339215 , 077 5460967
Visakha NurseryColombo 4135, Vajira Road, Colombo 04 2584003, 011 45122962 years
Sam's PlaceColombo 5251/33 Talgahawatta Road, Kirula Road, Colombo 5 , 07773742484 months
Kinder CareColombo 5No.26, Elibank Road, Colombo 05 2502590
ACE Montessori & Day careColombo 6543/3, Galle Road, Colombo - 6011 523 0315/7
Deanna Pre SchoolColombo 730/63H Longden Place, Colombo
Bankhill EducareColombo 7169, Pahalawela Road, Pelawatte, Battaramulla
82, Barnes Place, Colombo 7, 0777278741, 011 2695034
CeeBees PreschoolColombo 755B Bullers Lane, Colombo 7
Learnium InternationalColombo 7945/8A, Morris Rajapaksha Mawatha, Ethul Kotte
76, Ward Place, Colombo 7 2 888284
International House of Montessori for ChildrenColombo 713 1/1, Horton Place, Colombo 07
International Children’s HouseColombo 7410/34 Bauddhaloka Mawatha, Colombo 7 269 6236, 077 343 1285 / 077 343 20486 weeks
Little AmigosColombo 730/51A Longdon Place, Colombo 7, 071-417-0189
Little Explorers AMI Montessori House of ChildrenColombo 827 Fairfield Gardens, Colombo 08 / 26918391.5 Years
Mystical Rose International InstituteEtul KotteNo.941/30, Kotte Road, Etul Kotte / 0114938335
Bridges to Learning Montessori & DaycareKotte945/3, Morris Rajapaksha Mawatha, Sri Jayewardanepura Kotte 787870 , 0112863689 , 0773355000
Horizon College DaycareMalabeMalabe1 year
Immy KidsNawalaNawala 2 876611
Mother’s Touch Preschool and DaycareNawalaNo: 06, Walter Gunesekara Mawatha, Nawala,
Little VIP’s MontessoriNawala17, Krimandala Mawatha, Nawala 11 2878 863, 0773 113 999, 077 685 2525
Educare Early Learning and Day Care CenterNawala61/3 Old Nawala Road,Nawala 726 3788
Miracle HandsNugeodaMH1- 120 Stanley Thilakaratne Mw MH2 - 75 Jambugasmulla Road, Nugegoda 2 824611/ 077 77 33 9031.5 years
Kops MontessoriNugeoda132A, Kurulubedda, Nawala Road, Nugegoda 303 9366
Little Feet Montessori and Day CareNugeodaNo – 17, Mirihana Road, Nugegoda, 01150129744 months
Busy Bees Montessori & Day Care CentreNugeoda362, High Level Road, Nugegoda
Kidsdom Preschool ColomboNugeoda136/B1, Stanley Thilakarathne Mawatha, Nugegoda / 0777392306
Smarties - Holiday and After School CareNugeoda42 Old Kesbewa Road, Nugeoda 436 36363 years
Childrens' House MontessoriRajagiriya562/10 Welikada Terrace, Nawala Road, Rajagiriya / 0777763221 / 0723298404

Tuesday, June 28, 2016

We want to have QA in our company! ookkkk

A friend of mine who is new to the IT industry called me today with a question.
We’re a new startup and we want to set up QA in our company. What are the things we need to know?

Ooops, I did give an answer but was worried if I had confused the poor guy. Then I did the obvious thing and Googled to see if someone else has written something that would sum up what I wanted to say. There was just too much information but I couldn’t find what I wanted.
So here I go, writing my own answer.
First be open to the idea, that there is no clear cut/standardized process on how the QA team/department has to function. It varies from company to company, project to project and also from time to time.

As a small start-up you can let it grow organically based on what needs to be tested and the expectations of your customers. Start small with excel and few open source tools.
You MUST have a Defect/Bug tracking system. I’ve used Jira(Commercial), Bugzilla(Open Source) and even an in-house developed tool.

Jira is not only for defects, it covers the whole agile cycle. You can capture requirements, assign tasks to everyone in the team (including, but not limited to bugs), can be linked with other systems and gives a ton of features.

Test case writing start from the beginning. I’ve seen QA teams using excel sheets to capture test cases. They break down the requirements to individual use cases. They have to be precise and detailed. You need to specifically mention the input data, step to follow etc and the expected outcome. Doing this usually helps with clearing up any issues with requirements as well.  (In Jira, we can write the requirements in the above format, so there is no requirement document or test case. There are “stories” entered in Jira and developers implement and QAs test and enter bugs against these stories. It’s a very agile approach which we tried out recently)

Based on the product you are testing, you can do various types of testing. I’d say this is primarily determined by the requirements. Say for example a product can have functional requirements as well as performance requirements and the QA team is expected to do performance testing as well. And there can be multiple products/ modules that work as a system, so have to do integration testing to ensure they work together as expected.
A smoke test can be used as an acceptance test prior to introducing a build of software to the main testing process.
User acceptance testing (UAT) consists of a process of verifying that a solution works for the user. Software vendors often refer to this as "Beta testing". They are also known as Customer Acceptance testing (CAT)
Testing process can have various stages. For a large project there can be separate testing teams who are in charge of these stages.

Found the following list on Wikipedia.
Functional testing
Integration testing
System testing
Usability testing
Performance testing
Load testing
Installation testing
Regression testing
Stress testing
Acceptance testing
Beta testing
Volume testing
Recovery testing

How do we conduct tests? Again no one simple answer. Again it depends on what we need to test. There can be manual testing where you test like an actual user, by manually doing each and every step. Or you automate tests using a tool/programming language. When you automate a test suite, there is significant investment of effort at the beginning but it pays off in the long run.
Here are some tools I’ve come across. JMeter is a load testing tool used mainly for web applications. soapui can be used to test web applications as well. Selenium is a popular open source set of tools that serves many purposes. In fact there is an overwhelming number of tools catering to various testing requirements.

Continuous integration/build management is another thing to consider. Jenkins is what we use currently. It can be configured to build and deploy the product and run an automated test suite on it.  The process is repeated when new releases arrive.

You can’t ignore metrics and reports. You may start small with a few excel generated statistics and graphs and once you get the hang of it may move to a more sophisticated approach. A monitor hung on the wall with a dashboard of current status which gets updated real time is not uncommon.
Another point to note is that in today’s agile world, where TDD (Test Driven Development) is popular, is that developers are expected to be more and more involved in testing. Ideally in TDD developers are expected to write the tests before they start implementing. In some extremely agile projects test suites are jointly contributed by both dev and QA teams and the number of QA personal required can be less.

Hope this is a good starting point.
Finally know that I’ve been a dev and not a QA. So do get the opinion of a QA :)

Monday, September 28, 2015

Evolution of Wireless Communication Technologies

0 G
Mobile radio telephone
These systems preceded modern cellular mobile telephony technology.
Technologies included the Push to Talk (PTT or manual), Mobile Telephone System (MTS), Improved Mobile Telephone Service (IMTS), and Advanced Mobile Telephone System (AMTS) systems.

Network used analog radio signals.
Fully automated on the carrier's end without requiring any human operator intervention, and used electronics that could be miniaturized enough to fit into smallish packages
AMPS in the US & TACS and NMT in Europe

  • not very scalable
  • security was very poor

IS-95 CDMA/ cdmaOne
Network used digital radio signals.
2G cellular telecom networks were commercially launched on the GSM standard in Finland.

Three primary benefits of 2G networks over their predecessors
  1. Phone conversations were digitally encrypted
  2. Significantly more efficient on the spectrum allowing for far greater mobile phone penetration levels
  3. Introduced data services for mobile like SMS, MMS.
Supported CSD that allowed you to place a dial-up data call digitally.

Main 2G Standards
  • GSM (TDMA-based)
  • IS-95 aka cdmaOne (CDMA-based)
  • Spectrum limitations
  • Low data rates
Permitted "always-on" data services. No dial-up.
Operators could effectively bill by the kilobyte, rather than by the minute.
Virtually every GSM operator in the world deployed it
Wasn’t fast enough to meet 3G required speeds, hence the term 2.5G.
Allowed more speed without investing a lot on UMTS hardware upgrades and spectrum.
With an EDGE-compatible phone, you could get speeds over double what you got on GPRS
ITU refer EDGE as an ITU-2000 Narrowband technology

Component of IMT-2000 Standard  by ITU
Developed and maintained by the 3GPP
IS 2000
CDMA 2000

Improved 3G using W-CDMA protocols.
Amalgamation of two mobile telephony protocols,
  • HSDPA: 14.4Mbps
  • HSUPA: 5.76Mbps
DC-HSPA+ HSPA+ Evolution
Mobile WiMAX
LTE Advanced
IMT-Advanced Standard  by ITU calls for
4G technologies to deliver downlink speeds of 1Gbps when stationary and 100Mbps when mobile, roughly 500-fold and 250-fold improvements over IMT-2000, respectively.
LTE doesn’t meet it, LTE advanced does(only 1 network in the world)
Lack a dedicated voice network -- 100 percent of their spectrum is used for data services, voice calls are treated as VoIP.

Diameter for Dummies

Diameter protocol is the successor of the Radius protocol. Somebody thought it’d be interesting to call the feature rich successor  of RADIUS (which of course is an acronym that stands for Remote Authentication Dial-In User Service) as diameter.

Diameter is a AAA protocol for computer networks. (AAA = authentication, authorization, and accounting)

There is a base diameter protocol and protocols that extend the base protocol. The base protocol provides basic mechanisms for reliable transport, message delivery, and error handling.

Diameter Applications

Extended ones are called Diameter Applications. Don’t be deceived by the word application. They are just some more protocols defining new command codes and/or new mandatory AVPs. (More on AVPs later)  For example Diameter Credit-Control Application
is a protocol that can be used to implement real-time credit-control for a variety of end user services such as network access, Session Initiation Protocol (SIP) services, messaging services, and download services.
Each application relies on the common functionality provided by of the base protocol.

Diameter Mobile IPv4 Application
Diameter Network Access Server Application
Diameter Extensible Authentication Protocol Application
Diameter Credit-Control Application
Diameter Session Initiation Protocol Application

Diameter Message

Diameter is a byte based protocol. Each message has a fixed structure, which consists of two parts: header and payload. There are two types of messages, Requests and Answers. Every answer message carries a Result-Code AVP.

A Diameter message looks like this.

Message Headers

Indicates the Diameter protocol version. This value is always set to 1.
Message Length
Indicates the Diameter message length, including the header fields.
Composed by eight bits, to provide information regarding the message. T he first four bits in the
flags octet have the following meaning:
The message is a request
The message is an answer
The message is proxiable and may be proxied, relayed or redirected
The message must be processed locally
Error message
Regular message
Message is potentially being re-transmitted
Message is being sent for the first time

The last four bits are reserved for future use, and should be set to 0.
Command Code
Indicates the command associated with the message.
Command Code in diameter message is used to determine the action that is to be taken for a particular message.

Identifies the application to which the message is applicable for. The application is an authentication, accounting, or vendor specific application. The application-id in the header must be the same as what is contained in any relevant AVPs in the message.
Hop-by-Hop ID
A unique ID, which is used to match requests and answer. The header field of the answer message must contain the same value present in the corresponding request. This is how answers are routed back to the peer that sent the message.
End-to-End ID
A time-limited unique ID that is used to detect duplicate messages. The ID must be unique for at least four minutes. The answer message originator must ensure that this header contains the same value present in the corresponding request.

AVPs, Attribute-Value Pairs, are used to send across information in a Diameter message and are included in the message payload. Apart from the standard AVPs that are defined in diameter base protocol and diameter applications, custom AVPs can be defined making diameter easy to extend.

AVP Code
Uniquely identifies the AVP. AVP numbers 1 to 255 are reserved for RADIUS backwards compatibility.
Flags octets have the following structure: V M P r r r r r.
V:  Vendor Specific
M: Mandatory
P: Protected
The last 5 bits are reserved for future use, and should be set to 0.
AVP Length
Indicates the number of octets in the AVP.
An optional octet that identifies the AVP in application space. AVP code and AVP Vendor-ID create a unique identifier for the AVP.

Each AVP has a similar structure: a header, and encoded data and data can be various data types.
Diameter defines data types of;

A Grouped AVP is an AVP whose data is a sequence of AVPs.

Following derived data formats are also defined.

Every Diameter message carries the Diameter Identity of the originating Diameter process in the Origin-Host AVP and the realm of the originating Diameter process in the Origin-Realm AVP.

Message Flow
A Diameter node is a host process that implements the Diameter protocol and acts as either a client, an agent, or a server. Two Diameter nodes sharing a direct TCP or SCTP transport connection are called Diameter peers.

The communication between two diameter peers starts with the establishment of a transport connection (TCP or SCTP). The initiator then sends a Capabilities-Exchange-Request (CER) to the other peer, which responds with a Capabilities-Exchange-Answer (CEA).
Diameter security is provided by IPsec or TLS. If TLS (Transport Layer Security) is used TLS negotiation will happen as well.

The connection is then ready for exchanging application messages.

If no messages have been exchanged for some time either side may send a Device-Watchdog-Request (DWR) and the other peer must respond with Device-Watchdog-Answer.

Either side may terminate the communication by sending a Disconnect-Peer-Request (DPR) which the other peer must respond to with Disconnect-Peer-Answer. After that the transport connection can be disconnected.