[{"content":"The Problem with Traditional CS Teaching Most students sit through lectures about algorithms or data types, take a quiz, and promptly forget everything by the next week. I experienced this myself as a student, and then again watching it happen in my own classroom during my early teaching years.\nThe breakthrough came when I stopped explaining what a loop was and instead said: \u0026ldquo;Build a program that grades 100 student exam papers automatically.\u0026rdquo;\nThat\u0026rsquo;s when things changed.\nWhat Project-Based Learning Looks Like in Practice At ELM International Schools, I restructured the entire ICT curriculum around real deliverables. Instead of teaching spreadsheets as an abstract skill, students built a budget tracker for a fictional school event. Instead of introducing databases through theory, they designed a system to manage the school library\u0026rsquo;s inventory.\nThe Core Principles I Follow The project must solve a real or realistic problem. Students immediately ask \u0026ldquo;why does this matter?\u0026rdquo; when they sense the problem is contrived. Real-world constraints — a deadline, a specific user, an actual data set — make the work meaningful.\nFailure is a learning event, not a grade. A student who spends three days debugging a broken query learns more about SQL than one who copies a working example. I build debugging time into every project timeline.\nPresent to an audience. Having students demo their projects to teachers from other departments or to parents raised the quality of work dramatically. Nobody wants to present broken code.\nTeach tools, not syntax. Students who understand why we need version control pick up Git quickly. Those who memorise commands without context forget them just as fast.\nThe School Management System: A Student-Inspired Project One of the most significant outcomes of this approach was a full school management system I built (initially as a demonstration project) that ended up being adopted across all five branches of ELM International Schools. The original concept came from a student asking: \u0026ldquo;Why do we still use paper registers?\u0026rdquo;\nThat question became a semester-long project prototype before I took it further into production. Students who participated in the initial design phase understood database normalisation, client-server architecture, and user experience far better than their peers who studied the same topics theoretically.\nLessons for Other CS Teachers Start with the output, work backwards to the concepts. If students need to build a web form, they\u0026rsquo;ll learn HTML, HTTP methods, and input validation naturally. Let students pick sub-problems. In a group project, some will gravitate toward the UI, others toward data — let them own their domain. Connect to local context. In Somaliland, I used local business examples, Somali-language placeholders in UI mockups, and real NGO datasets (anonymised) to make projects feel grounded. Conclusion Project-based learning isn\u0026rsquo;t a silver bullet — it takes more preparation, more patience, and a higher tolerance for productive chaos. But the students who go through it come out able to build things, not just recite definitions.\nThat\u0026rsquo;s the difference between a student who passed a CS course and an engineer.\n","permalink":"https://kelvinmaina.com/posts/teaching-cs-with-project-based-learning/","summary":"\u003ch2 id=\"the-problem-with-traditional-cs-teaching\"\u003eThe Problem with Traditional CS Teaching\u003c/h2\u003e\n\u003cp\u003eMost students sit through lectures about algorithms or data types, take a quiz, and promptly forget everything by the next week. I experienced this myself as a student, and then again watching it happen in my own classroom during my early teaching years.\u003c/p\u003e\n\u003cp\u003eThe breakthrough came when I stopped explaining what a loop was and instead said: \u003cem\u003e\u0026ldquo;Build a program that grades 100 student exam papers automatically.\u0026rdquo;\u003c/em\u003e\u003c/p\u003e","title":"Why Project-Based Learning Transforms Computer Science Education"},{"content":"Background Over the past five years at Kwality Consulting Solutions, I\u0026rsquo;ve deployed projects on AWS, GCP, Azure, and DigitalOcean. Most of our clients are NGOs, SMEs, and government-adjacent organisations — budget-conscious, but with real uptime requirements.\nThis isn\u0026rsquo;t a comprehensive benchmark; it\u0026rsquo;s a practitioner\u0026rsquo;s notes from real deployments.\nWhen I Reach for GCP First 1. Data-Heavy Workloads BigQuery is still in a class of its own for analytical queries over large datasets. For the data visualization work I did with Concern Worldwide and Save the Children, being able to query millions of rows in seconds without managing infrastructure was a genuine game-changer.\nGoogle\u0026rsquo;s Looker Studio (formerly Data Studio) also integrates natively, meaning stakeholders could view live dashboards without any custom frontend work on my end.\n2. Projects with a Google Workspace Context Many NGOs and schools already use Google Workspace. When the client\u0026rsquo;s email, Drive, and Calendar are all Google, deploying on GCP keeps authentication simple (Google Identity Platform), reduces vendor sprawl, and makes it easier to hand over to internal IT teams who are already familiar with the ecosystem.\n3. Kubernetes Workloads GKE (Google Kubernetes Engine) has historically had the smoothest upgrade paths and the most transparent auto-repair behaviour in my experience. For the school management system that needed zero-downtime deployments, GKE made rollouts much less nerve-wracking than EKS.\nWhen I Reach for AWS First 1. Breadth of Managed Services AWS simply has more managed services. If a project needs a message queue, a CDN, a serverless function, an ML model, and a relational database — all integrated — AWS is hard to beat. The ecosystem maturity means there\u0026rsquo;s almost always a well-documented solution.\n2. Client Teams Already on AWS For the Salaam Security \u0026amp; Logistics operations portal, the client had existing AWS infrastructure and an IT team with AWS certifications. Deploying on the same platform meant easier handover, existing IAM policies, and no additional cloud spend negotiation.\n3. Regions in Africa AWS has the Cape Town region (af-south-1). For projects serving East African users, that latency difference matters. GCP\u0026rsquo;s nearest region for most East African traffic is europe-west1 or asia-south1 depending on routing.\nThe Honest Cost Comparison For the types of projects I typically run (web app + database + background jobs, ~100–1000 daily active users), costs end up roughly similar on both platforms when you\u0026rsquo;re careful about reserved instances or committed use discounts.\nThe hidden cost is operational complexity. GCP\u0026rsquo;s IAM model is simpler for small teams. AWS IAM is more powerful but you can accidentally paint yourself into a policy corner that takes hours to unpick.\nMy Defaults Scenario My Pick Data analytics / dashboards GCP (BigQuery + Looker Studio) Google Workspace-integrated apps GCP Complex microservices / many AWS services AWS Client already has AWS infrastructure AWS East Africa latency-sensitive AWS (af-south-1) Budget: smallest possible spend DigitalOcean Conclusion The best cloud is the one your team (and your client\u0026rsquo;s team) can operate confidently. I\u0026rsquo;ve seen technically \u0026ldquo;inferior\u0026rdquo; choices succeed because the deployment was well-understood and maintained, while optimal-on-paper architectures fail because nobody understood what was running.\nPick the platform that fits the people, not just the workload.\n","permalink":"https://kelvinmaina.com/posts/deploying-apps-on-gcp-vs-aws/","summary":"\u003ch2 id=\"background\"\u003eBackground\u003c/h2\u003e\n\u003cp\u003eOver the past five years at Kwality Consulting Solutions, I\u0026rsquo;ve deployed projects on AWS, GCP, Azure, and DigitalOcean. Most of our clients are NGOs, SMEs, and government-adjacent organisations — budget-conscious, but with real uptime requirements.\u003c/p\u003e\n\u003cp\u003eThis isn\u0026rsquo;t a comprehensive benchmark; it\u0026rsquo;s a practitioner\u0026rsquo;s notes from real deployments.\u003c/p\u003e\n\u003ch2 id=\"when-i-reach-for-gcp-first\"\u003eWhen I Reach for GCP First\u003c/h2\u003e\n\u003ch3 id=\"1-data-heavy-workloads\"\u003e1. Data-Heavy Workloads\u003c/h3\u003e\n\u003cp\u003eBigQuery is still in a class of its own for analytical queries over large datasets. For the data visualization work I did with Concern Worldwide and Save the Children, being able to query millions of rows in seconds without managing infrastructure was a genuine game-changer.\u003c/p\u003e","title":"GCP vs AWS for Small-to-Medium Project Deployments: A Practical Comparison"},{"content":"The NGO Data Problem International NGOs collect vast amounts of data: beneficiary registrations, distributions, survey responses, monitoring visits, financial disbursements. Much of it ends up in spreadsheets passed around by email, or in ODK forms that nobody has time to aggregate.\nThe gap between \u0026ldquo;we have the data\u0026rdquo; and \u0026ldquo;we can make decisions from the data\u0026rdquo; is where I\u0026rsquo;ve spent a significant part of my consulting work — with Concern Worldwide, Save the Children, and Oxfam.\nStep 1: Understand the Decision, Not the Data The most common mistake I see is starting with the dataset. The right starting point is the question the programme team actually needs to answer:\nAre we reaching the most food-insecure households? Which district has the lowest vaccination coverage? Did beneficiaries in Cohort B improve their income more than Cohort A? Once you have a clear question, the data analysis becomes straightforward. Without it, you\u0026rsquo;re producing tables that nobody acts on.\nStep 2: Audit the Data Before Touching It Before any analysis, I do a structured audit:\n- Row count vs. expected records - Missing values per column (flag anything \u0026gt; 5%) - Outliers (automated flag: values \u0026gt; 3 SD from mean) - Duplicate IDs - Date format consistency - Lookup field consistency (e.g., \u0026#34;Hargeisa\u0026#34; vs \u0026#34;hargeisa\u0026#34; vs \u0026#34;HARGEYSA\u0026#34;) This sounds tedious, but skipping it has burned me before. A distribution report for a donor that included duplicate registrations nearly caused a serious credibility problem.\nStep 3: Choose the Right Tool for the Output I don\u0026rsquo;t have a single favourite tool. I choose based on the audience and the update frequency:\nOutput needed Tool One-time donor report Excel / Google Sheets + charts Monthly dashboard, internal team Google Looker Studio Interactive public-facing map Mapbox or Google Maps API Complex statistical analysis Python (pandas, matplotlib) Repeatable pipeline Python script + scheduled job For most NGO contexts, Excel and Looker Studio cover 80% of real needs. The people who will maintain the dashboard after you leave are more likely to know Excel than Python.\nStep 4: Design for the Non-Technical Reader Programme managers and country directors are not data analysts. Effective NGO reports:\nLead with the key number, not the methodology. \u0026ldquo;72% of registered beneficiaries received distributions in Q2\u0026rdquo; goes at the top. Use colour sparingly but deliberately. Red for below-target, green for on-track. Don\u0026rsquo;t use six colours for six districts — use a map. Include a \u0026ldquo;what this means\u0026rdquo; sentence. Don\u0026rsquo;t leave interpretation to the reader. Keep raw data separate from the summary. Give analysts a data tab; give managers a dashboard tab. A Real Example: Concern Worldwide Dashboard For Concern Worldwide, I built a dashboard that consolidated data from five field offices into a single view updated weekly. The key design decision was to make the primary screen a single-page summary: one number per programme indicator, RAG (Red/Amber/Green) status, and a trend sparkline.\nField coordinators could drill down to district-level breakdowns, but the senior management view never required more than one scroll.\nThe result: monthly reporting meetings shortened from two hours to forty minutes because the pre-reading was actually readable.\nCommon Pitfalls Over-engineering the pipeline. If the data source is a manually updated spreadsheet, a complex automated pipeline will break every time someone renames a column. Ignoring offline contexts. In Somaliland, internet connectivity is inconsistent. A dashboard that requires a live connection fails at the worst times. I always export a static PDF version on a schedule. Building for yourself, not the maintainer. Ask: \u0026ldquo;Can the M\u0026amp;E Officer update this in six months without calling me?\u0026rdquo; Conclusion Good data analysis for NGOs isn\u0026rsquo;t about using the most sophisticated tools. It\u0026rsquo;s about asking the right question, cleaning the data honestly, and presenting findings in a way that busy programme staff can act on.\nThe best report is the one that changes a decision.\n","permalink":"https://kelvinmaina.com/posts/data-analysis-for-ngos/","summary":"\u003ch2 id=\"the-ngo-data-problem\"\u003eThe NGO Data Problem\u003c/h2\u003e\n\u003cp\u003eInternational NGOs collect vast amounts of data: beneficiary registrations, distributions, survey responses, monitoring visits, financial disbursements. Much of it ends up in spreadsheets passed around by email, or in ODK forms that nobody has time to aggregate.\u003c/p\u003e\n\u003cp\u003eThe gap between \u0026ldquo;we have the data\u0026rdquo; and \u0026ldquo;we can make decisions from the data\u0026rdquo; is where I\u0026rsquo;ve spent a significant part of my consulting work — with Concern Worldwide, Save the Children, and Oxfam.\u003c/p\u003e","title":"Data Analysis for NGOs: Turning Field Data into Actionable Reports"},{"content":"I\u0026rsquo;m a Software Developer, IT Consultant, and Computer Science Educator with over five years of experience working across both tech and education. I build web and mobile apps, work with cloud tools and data, and also love teaching ICT in a hands-on, project-based way. Whether it\u0026rsquo;s solving real-world problems with code or helping students grow their tech skills, I\u0026rsquo;m passionate about making an impact in both industries.\n","permalink":"https://kelvinmaina.com/about/","summary":"About Kelvin Maina Wangari — Software Developer, IT Consultant, and Computer Science Educator.","title":"About"},{"content":"","permalink":"https://kelvinmaina.com/experience/","summary":"Professional experience of Kelvin Maina Wangari — educator, software developer, and IT consultant.","title":"Experience"},{"content":"","permalink":"https://kelvinmaina.com/projects/","summary":"Selected projects by Kelvin Maina Wangari — data dashboards, mobile apps, web systems, and more.","title":"Projects"}]