Motherboard Finder  Motherboard Finder

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.

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, 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 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.

motherboard
screenscraping
Wireshark

CMP homejump to top You can get the freshest copy of this page from: or possibly from your local J: drive (Java virtual drive/mindprod.com website mirror)
http://mindprod.com/project/motherboardfinder.html J:\mindprod\project\motherboardfinder.html
logo
Please email your , letters to the editor, errors, omissions, typos, formatting errors, ambiguities, unclear wording, broken/redirected link reports, suggestions to improve this page or comments to Roedy Green : feedback email. If you want your message, your name or email kept confidential, not considered for public posting, please explicitly specify that. Unless you state otherwise, I will treat your message as a letter to the editor that I may or may not publish in the feedback section. After that, it will be too late to retract it. If you disagree with something I said, please quote it and cite the web page where you found it, tell me why you think it is wrong, and, if possible, provide some supporting evidence. Threatening to kill me or spouting obscenities has yet to persuade me to change my mind.
mindprod.com IP:[65.110.21.43]
view BlogYour face IP:[38.107.179.213]
You are visitor number 11.