This is part 1 of a 4 part series of articles where I explain how I discovered and purchased my laptop by building a web application which scrapes a local PC parts forum and sends automated email alerts when posts featuring specific keywords appear:
- Part 1: Let Your Next Laptop Find YOU! (this page)
- Part 2: Django and Scrapy
- Part 3: Celery, Mailgun and Flower
- Part 4: Deploying and using CarbAlert
CarbAlert on GitHub: https://github.com/dinofizz/carbalert
TL;DR
CarbAlert is a web application which scrapes a local (South African) second-hand computer parts forum for new posts offering laptops featuring keywords of interest (specifically the first page of the “laptops” forum) I’m using Django for the admin console and database/ORM integration, Scrapy for web-scraping, Celery for task management, Flower for task monitoring and Mailgun for sending out alert emails. I am using Docker to manage and run the containers which make up the CarbAlert application.
Find the code here: https://github.com/dinofizz/carbalert
Problem
I needed a new laptop. I have various “work laptops” that don’t belong to me, but my personal laptop was a 2011 HP Pavilion dv6 with a 2nd gen i7 and a 1366x768 display. Over the years I had bought a new battery, swapped out the spinning disk for an SSD, added an additional RAM module and even once replaced a faulty fan. I was starting to miss having a decent portable computer of my own. I was lugging out the HP every now and then, but the battery life was (again) non-existent and the screen was proving to be inadequate after years of getting used to 1080p+ displays on the work laptops.
Desirable Specs
These are the things I was looking for in a laptop:
- 7/8 gen i5/i7
- 13”/14”/15” 1080p display
- 16 GB RAM minimum
- 256 GB SSD minimum
- NVMe SSD would be great
- Integrated graphics
- Good battery life
- Linux friendly components/driver availability
- Budget ~R15000 (~$1100)
After watching a bunch of YouTube reviews I narrowed my search down to the Lenovo T4xx and T5xx Thinkpad series laptops, and Dell 5xxx, 7xxx and XPS series laptops.
But where to find a nice laptop for a decent price?
Carbonite
Carbonite is a South African tech classifieds forum where people buy, sell and discuss all things PC hardware related (and more!). The site features a reputation based buy/sell/trade system where individuals and resellers exhibit their wares.
After getting my feet wet buying a few PC components and getting a feel for the reputable laptop resellers, I decided the “Laptops” forum would be the place to sit and wait for a good deal to come by.
For a few weeks I checked the forum daily, and found myself often refreshing the first page of posts when idle on my phone, or when waiting for builds at work. A few times a great candidate laptop sale was posted, and I excitedly clicked through only to find that the last post in the thread read “Sold.” :(
And then I realised I don’t have to be the one checking the forum every day.
Solution
CarbAlert is a web app I put together which periodically checks the Carbonite laptop forum and scans posts for keywords of interest to me. CarbAlert sends me an email with the post details when it finds a new post matching one or more of the keywords.
OK honestly the motivation to build this was only partly inspired by my laziness to check the forum. I really enjoy learning new technologies/frameworks/APIs by writing small apps and tools. There are probably better ways of accomplishing my end result, but I had a great time learning new things, trying the wrong things and breaking perfectly working things in the process of finding a new laptop for myself :)
Next post in series: Part 2: Django and Scrapy