image provider

Motherboard Finder


Disclaimer

This essay does not describe an existing computer program, just one that should exist. This essay is about a suggested student project in Java programming. This essay gives a rough overview of how it might work. I have no source, object, specifications, file layouts or anything else useful to implementing this project. Everything I have prepared to help you is right here.

This project outline is not like the artificial, tidy little problems you are spoon-fed in school, when all the facts you need are included, nothing extraneous is mentioned, the answer is fully specified, along with hints to nudge you toward a single expected canonical solution. This project is much more like the real world of messy problems where it is up to you to fully the define the end point, or a series of ever more difficult versions of this project and research the information yourself to solve them.

Everything I have to say to help you with this project is written below. I am not prepared to help you implement it; or give you any additional materials. I have too many other projects of my own.

Though I am a programmer by profession, I don’t do people’s homework for them. That just robs them of an education.

You have my full permission to implement this project in any way you please and to keep all the profits from your endeavour.

Please do not email me about this project without reading the disclaimer above.

This program helps you find motherboards for sale that best meet your criteria including price and lets you easily compare any two products. It can automatically generate feature comparison matrices, highlighting the differences. The same program could be used to find/compare other types of computer equipment such as SSDs (Solid State Disks), CPUs (Central Processing Units), hard disks, laptops… It could be used on anything that has specifications including cars, heavy equipment, cellphones, laptops. It could even be used as part of a website that advertised or sold used equipment.

This project has two parts. Collecting data about motherboards from manufacturers and retailers and providing an Applet to the public to summarise that data.

You need to screen scrape websites to collect information about various motherboards. The best sources are the motherboard manufacturers themselves: ASUS, BioStar, ECS Elite Group, Gigabyte, MSI and Tyan (Thunder, Tiger, Trinity, Tomcat, Toledo). You can use the HTTP package to scan the websites and collect the raw data. You can use regex expressions to extract what you need. You can use the entities package to DeEntify or flatten the HTML (Hypertext Markup Language). The facts you are after include: form factor, CPU (Central Processing Unit) socket, CPUs supported, max RAM (Random Access Memory), type of ram, RAM speed, type of onboard video, number of USB-2 ports, number of USB-3 ports. plain or theatre sound, number of SATA-3 ports, number of SATA-III(6G) ports, major vendors carrying the board and price. What types sizes and speeds of cache come with the motherboard? How much power does the MB consume? This data must be kept up to date by periodically rescanning to find new products and new specifications and adjusting your webscraping techniques to keep up with the web page formats. You might lobby for manufacturers to provide the data in computer-friendly CSV (Comma-Separated Value) or XML (extensible Markup Language) SOAP (Simple Object Access Protocol) format. I think Amazon already has a computer-friendly API (Application Programming Interface) you can sign up for. You might use Google to help you research retailers. You might consider collecting photos as well.

To use this database, the user tells you facts about what they want: e.g.

It then orders boards by bang per buck, by bang or by price that meet your requirements. The user then might adjust the budget range up or down or add or drop requirements when he sees just what you can get for what price.

To make money from this, you need to be an affiliate/associate with various retailers such as Amazon.com or Tiger Direct who will give you a referral fee if someone buys a motherboard, not necessarily the one your program recommended, after you refer them to their site. You can take your visitor directly to the retailer’s page on the manufacturer or retailer’s site using Applet.getAppletContext().showDocument( url );

Make sure you give a disclaimer about the accuracy and timeliness of the information, reminding the user to double check the information about the most likely candidates with the manufacturer.

You could also show two motherboards side by side, with the better specs of each board highlighted. You could consider this as motherboard comparison shopper if you had enough retailer prices included. There are so many almost identical motherboards out there, you need automated help pointing out the differences. You could optionally suppress identical data.

You could build a prototype for this project by manually collecting data for some small subset of motherboards e.g. microATX AMD from Amazon.com or TigerDirect.ca.

ASUS has designed their website to make screenscraping as difficult as possible. They use a potent combination of JavaScript and SSL (Secure Sockets Layer) encryption to defend it from screenscraping. I wrote them asking them to make their data available in computer-friendly form. They wrote back saying they are working on a major revamp of the website. BioStar, MSI and Tyan have made theirs quite easy. Gigabyte have the complication of using JavaScript/Ajax to format structured data. You can sort out how it works fairly easily with Wireshark. ECS Elite Group is of intermediate difficulty since the specs are written in narrative English rather than point form.

You might store your collected data in XML files one per motherboard or in an SQL (Standard Query Language) database. You need a way to easily handle missing data and a way to introduce new fields later. I suggest you prepare a resource made up of gzipped Motherboard objects in an array each with a dependent array of Price objects. Each price object contains a vendor name, URL (Uniform Resource Locator) where the vendor displays the product (one that can be easily converted to an affiliate URL that gives you a finder’s fee), a price, a currency that the price is in and a date when the price was current. See PowCost for code to convert prices into a common daily local currency.

You might publish your list on a website as a CSV file, showing only the best price for each item. If you created a SQL database, you could implement this as a Servlet, so that the end user would not need to install Java locally to use it.

If this project caught on, you could conceivably have smaller vendors coming to you, asking to be listed. You could say, just email me with an attachment that looks like this from time to time, telling me your price list of items, as a CSV file: Motherboard manufacturer, model, price, currency, url, instock? and an XML file describing information about the retailer, e.g. location, phone, website. You could eventually list price lists of even corner store retailers.

The trickiest part of this project is inventing a bang number for each motherboard to use in computing bang/buck. You have no benchmark data to use. You might do it with multi-regression analysis on the price and its factors. You might use a neural net to come up with an average price, or you might try to come up with some ad-hoc formula. You might not even try to create one, just display actual price. You might assign it one based on the average price of the ten most similar boards.

Feature Matrix

You will find vendor or manufacturer websites that lets you compare two or three of one manufacturer’s products (e.g. motherboards, SSDs, hard disks…) They generate a grid with one column for each products and one row for each feature. The typical problems with these displays are:

How could you avoid some of those disadvantages?

If a query brings up no matches, you might automatically relax constraints until you get at least one match. In other words, matches are not binary yes/no, but a goodness of fit, so you show the best matches in order.

Once you have tackled motherboards, you might take on video cards, headsets/headphones, keyboards, HDTVs (High Definition Televisions), routers, cellphones… You want products where there are an overwhelming numbers of brand/model choices and simple specs to categorise them.

motherboard
screenscraping
SSL
TLS
Wireshark

This page is posted
on the web at:

http://mindprod.com/project/motherboardfinder.html

Optional Replicator mirror
of mindprod.com
on local hard disk J:

J:\mindprod\project\motherboardfinder.html
logo
Please the feedback from other visitors, or your own feedback about the site.
Contact Roedy. Please feel free to link to this page without explicit permission.

IP:[65.110.21.43]
Your face IP:[54.211.62.139]
You are visitor number