Skip to content
View shariff199's full-sized avatar

Block or report shariff199

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Content in all repositories owned by your account will be closed.
Maximum 250 characters. Please don’t include any personal information such as legal names or email addresses. This note will only be visible to you.
Report abuse

Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

Report abuse
shariff199/README.md

Mohammed Tauheed Shariff

Data engineer and analyst in London. MSc Data Science, Distinction, University of South Wales. Microsoft Certified: Power BI Data Analyst Associate (PL-300).

I work with UK public data at the scale where the convenient approach stops working, and I publish what the data cannot support next to what it can. Every number below was measured on my own machine.

Selected work

Repo Scale What it shows
uk-land-registry-sql 31,430,611 rows HM Land Registry Price Paid in PostgreSQL, loaded in 8m11s. A 128 kB BRIN index beats a 211 MB B-tree on the same query: 1,687x smaller and 3.3x faster, because the planner switches to a random-order index scan while the bitmap scan reads the heap sequentially. The "new-build premium" turns out to be a flats composition effect. scripts/bench.sh reproduces every figure.
uk-prescribing-etl 18,080,573 rows/month Checkpointed, resumable ETL: CKAN paging into zstd Parquet, then into Postgres via COPY. No pandas anywhere, which is the point. Indexes are built after the load rather than during it, because that was timed rather than assumed.
uk-nhs-ae-waiting-times 215 providers, 23 months The NHS four-hour A&E headline runs 14.3 points above what major A&E units actually achieve, and the gap widens exactly when performance is worst. I checked the mix-shift explanation and rejected it. 18 documented spreadsheet quirks, including a mid-year filename change that made the scraper return 11 months of 12 without raising an error.
uk-labour-market-analysis 9 ONS series, 664 months Straight from the live ONS API, no key. Vacancies per unemployed person are down 61% from the 2022 peak. The employment, inactivity and unemployment rates have summed to over 100 in every month since Feb 1971, and the correlation with the unemployment rate is 0.988, so it is the cycle counted twice on two age bases rather than demographic drift. Ships guards that refuse the three joins that silently corrupt the frame.
reddit-sentiment-analysis 1,820,000 records MSc dissertation, marked 75 (Distinction). VADER sentiment, NRCLex emotion, LDA topic modelling, Prophet forecasting, chi-square testing between communities. Carries a limitations document naming which outputs must not be quoted as rates.

Also here: sql-course-management-db (6-table schema from scratch, 9 analytical queries, composite keys and scalar subqueries) and deep-learning-pytorch (a four-class brain-MRI CNN taken from 51% to 66% with batch normalisation and a learning-rate sweep). Both are coursework and labelled as such.

How I work

I start from the question the person who has to act on the answer is actually asking, pull and clean the data in SQL and Python, run the analysis, and put the result where they will look at it.

Since October 2024 I have run client engagements end to end at Black Arrow Technologies. Three of those systems are live: a multi-tenant PostgreSQL CRM, a Python lead-scoring pipeline, and a workshop job-management system. I am also a director of Lateral View Solutions Ltd, a UK limited company.

I say what an analysis cannot support as readily as what it can. That is why the dissertation repo carries a written limitations section instead of a headline number, and why two claims in the Land Registry write-up now say that the original measurement was wrong.

Tools: Python (pandas, PyArrow, scikit-learn, PyTorch, NLTK) · SQL (PostgreSQL, MySQL, Supabase) · Power BI and DAX · Excel · R · SAS · Docker · Git

Background

MSc Data Science, Distinction, University of South Wales, awarded January 2025. Big Data Engineering 83 · Data Mining and Statistical Modelling 79 · Dissertation 75 · Applied Machine Learning and Deep Learning 74.

BTech Mechanical Engineering, Merit, REVA University, Bengaluru.

Certifications: Microsoft Certified: Power BI Data Analyst Associate (PL-300) · SQL Associate, DataCamp.

Contact

LinkedIn · [email protected] · London, UK

Pinned Loading

  1. reddit-sentiment-analysis reddit-sentiment-analysis Public

    NLP pipeline over 1.82M Reddit records: VADER sentiment, NRCLex emotion, LDA topic modelling, Prophet forecasting, chi-square testing. MSc Data Science dissertation, marked 75 (Distinction). Python…

    Jupyter Notebook

  2. multi-tenant-crm-design multi-tenant-crm-design Public

    How a multi-tenant agency CRM is laid out in PostgreSQL: a tenant column leading every composite index, deduplication that stores the human's decision, pipeline states as enums, and a SELECT-only r…

  3. uk-labour-market-analysis uk-labour-market-analysis Public

    UK vacancies per unemployed person are down 61% from the 2022 peak. Nine ONS series from the live API, reshaped into one tidy frame, with guards that refuse the three joins that silently corrupt it.

    Python

  4. uk-land-registry-sql uk-land-registry-sql Public

    31,430,611 UK property sales in PostgreSQL. Kensington medians are 8.4x Burnley, the new-build premium is a flats artefact, and a 128 kB BRIN beats a 211 MB B-tree by 3.3x.

    Shell

  5. uk-nhs-ae-waiting-times uk-nhs-ae-waiting-times Public

    The NHS four-hour A&E headline runs 14.3 points above real major-A&E performance, and the gap widens exactly when performance is worst. 215 providers, 23 months, eighteen documented spreadsheet qui…

    Python

  6. uk-prescribing-etl uk-prescribing-etl Public

    18,080,573 rows in one month of NHS prescribing data. Checkpointed, resumable ETL to Parquet and Postgres via COPY, with no pandas anywhere. Measured: build indexes after the load, not during.

    Python