20100830

Physics Demo: Non-Newtonian Fluids like Cornstarch + Water aka Oobleck

What's cool about Non-Newtonian fluids like Cornstarch + Water, a.k.a. Oobleck, is the fact that it has a hard time deciding what physical state it wants to be in; a liquid or a solid. It has a lot to do with the molecular bonds as I've learned in my attendance of Eastern Michigan University's chemistry lectures. The molecular bonds are stronger in Oobleck than your typical liquid, yet weaker than your typical solid.  Hence the puzzling nature of this Non-Newtonian fluid with an identity crisis. It doesn't know what it wants to be!

Here is a video I recorded of myself and my friends at All Hands Active (AHA!) demonstrating the effects of Oobleck when you place the substance on a vibrating speaker.  We were also advertising our organization on the streets of Ann Arbor, MI, and we drew in quite a crowd who were dazzled by the spectacle.

Behold the power of physics.

Electronic Prototyping with the Arduino Microcontroller

Electricity is beautiful and powerful physical effect. We can use computers and programming to tame it. Programming is one of my favorite things to do. Combining programming and physics (specifically electricity) makes for an even more exciting challenge for me! In the following Youtube videos, I demonstrate some simple but fun examples of what you can do with an Arduino microcontroller and some electronic prototyping equipment. My personal project was to learn how electricity works and how to manipulate it with a few simple tools.

Arduino is an open source microcontroller that makes electronic prototyping easier, yet gives you many more capabilities thanks to the fact that you can program the microcontroller and tell it what to do.  The software I wrote to make these wasn't more than a few lines, but it was neat to know what was going on thanks to my previous experience in web programming.

The first simple Arduino experiment I made was an LED activated by a pushbutton.


The second is an LED activated by a light sensor. Way cool, and the Arduino code behind it was fun to write.

20100826

Dynamic, Database Driven Websites with PHP + MySQL

Face it. Most websites are a bit boring in functionality. Not necessarily a bad thing in most cases, but sometimes you need a bit more power to make a website function beyond what you could do if you were to develop each and every page manually. One by one.

What if I told you I could almost instantly make 200,000+ unique pages on a website as soon as I wrote the software to do it, and uploaded it to my web server? That is exactly what I did with my two sites here, SingleBlackDating, and FileFin.

Unfortunately, the sites no longer exist on the web anymore since I've stopped my internet company and started on my career path to be an engineer and physicist. Luckily, I still have the software and databases behind the two websites, and some old screenshots of one them thanks to the Web Archive.

SingleBlackDating.com
This was notably a dating site geared toward the African-American demographic.  There are a lot of African-Americans all over the 50 States of the US, so how do I make custom web pages based on state, county, city, and ZIP code? Why, with an enormous database provided by the Census Bureau, of course!  Using PHP and MySQL database software, I was able to construct a dynamic website that made pages on the fly based on information I fed the site from a assortment of databases of information.  The website used the State/County/City/ZIP database to break the website down into over 200,000+ pages, all based on a unique US city or ZIP code listed. Each city page had a short blurb advertising the dating service, and pulled even more information from a database of restaurants, and even recommended a restaurant for a date.  The site isn't viewable anymore, but you can download the software and databases that ran it.
Download SingleBlackDating.com

FileFin.com
A site for free software developers to promote their stuff. Not your typical site. Using a bit of imagination you can actually make your websites do work for you.  In order to promote SingleBlackDating.com I constructed FileFin.com, a dynamic databases driven site with PHP, MySQL, and a freeware package called PadKit. How it worked was when a software developer found my site, he/she was looking to list their software in my database of free software for all of the web to see.  The site was free to use, but there was a catch. The software developer had to make a link on their website promoting my SingleBlackDating.com site. On the free software submission page I had PHP and MySQL automatically select a unique web page from the 200,000+ for the developer to link to on his/her site.  The problem was, how was I sure that the software developer actually did link back?  Well, thanks to PHP programming I wrote a little piece of code that checked to make sure a link to my site was found before the submission went through. If there was no link back, the software developer could not link to my site.  All of this was automatic, and I never had to maintain the site. Last I checked on FileFin, there were 11784 software submissions.
Download FileFin.com
Here are some screenshots of the site I found on the Web Archive:

Augmented Browsing with Ruby Programming Language + Watir Module

Some things on the world wide web cannot be automated easily. The PHP/cURL combination is typically the most convenient and controllable way of automating the web and mimicking a normal web user, but there are roadblocks and obstacles along the way that can prevent you from using that particular type of programming easily.

When I say obstacles, I mean when web developers use sophisticated Javascript or AJAX in their web pages. The cURL library doesn't like this very much, and it is a bit more difficult to read the HTTP protocols necessary to send back to the web server the website is hosted on. In comes augmented Browsing with Ruby/Watir!

What is Ruby?
Ruby is an object-oriented programming language with a bit more power than PHP (a scripting programming language), although arguably a different aim in intentions for web purposes. Ruby nevertheless is growing in popularity amongst web developers, but is still the minority compared to PHP.

What is Watir?
Watir is an automated web browsing testing toolkit. It uses a technique called augmented browsing that allows it to literally and visually drive the Internet Explorer browser on your desktop computer programmatically. Instead of simulating a browser, like cURL, Watir steers the actual browser on your computer with Ruby's built-in OLE and COM support.


Ruby + Watir = Using your internet browser with no hands
Because you are actually controlling a real browser like Internet Explorer, obstacles in websites like funky Javascript and flashy AJAX are much easier to tackle. The problem is augmented browsing with Ruby/Watir is slow as molasses in comparison to PHP/cURL.

FBPoster
This program automated Facebook and didn't have any practical application other than to see how Watir worked, and if I could do it. It could log into your Facebook account, use the search box to look for Facebook groups related to a keyword, then it would post a custom comment of your choice in that group. Only you didn't do it, the software did!
Download FBPoster

GGrouper
Basically allowed you to log into your Google account, and if you have a Google Group set up, you can automatically make new pages in the group based on a set of keywords you give it in a text file.
Download GGrouper

VeohBlack
A bit more complicated than the first two software, VeohBlack made it easy to register accounts at the Veoh video site. It could then use the accounts to search for particular types of videos and make comments on them. It could even click to the next page of videos if you wanted.
Download VeohBlack

Web Automation with the PHP Programming Language and cURL Module

Here is a showcase of web automation software I had written myself using the programming language PHP and a browser emulation module called cURL. If you want to take a look at the code, feel free to download it.

What is PHP?
Also known as Hypertext Preprocessor, PHP is a very popular scripting language mainly used among web developers to produce dynamic web pages. Pages that can load quickly, from databases of information, and are interactive. Unlike a typical web page using just markup languages like HTML and CSS.

What is cURL?
cURL is a module or library you can install on PHP that lets you transfer information via web protocols, such as HTTP. Think of cURL as a browser, kind of like Internet Explorer or Firefox. Only instead of you, the internet user, viewing the web pages with your eyes and clicking around navigating with your mouse, cURL can help read what a website is saying, and can spit back information in response. Like a browser, it's a way for two computers to talk to each other over the internet.

PHP + cURL = Powerful combination that mimics a human using a web browser
Using these two powerful pieces of software, I have written and developed my own software scripts that can mimic your typical web user as if it were a person visiting the site.

Twtr
This software program revolves around Twitter, the popular social networking website. Twtr uses PHP/cURL to access Twitter's API, a REST oriented API given out freely to developers to make apps and games for the site. Twtr uses the login information for all the Twitter accounts you give it from a text file, grabs a proxy for each one, and then automatically updates your Twitter account automatically. So you can say whatever you want, automatically, without even being at your computer. You can set it to post once a week, everyday, or even every minute.
Download Twtr

WPBlogr
Perhaps my most sophisticated software in this PHP/cURL portfolio. WPBlogr allows you to automatically post to Wordpress blogs that you control using XML-RPC which is the direct predecessor to the increasingly popular SOAP web services. Some bloggers have multiple blogs, and seriously, who wants to spend time logging into each one of them one by one and posting? In a few text or CSV files, list the blog URLs, the login credentials, and the topics you want to write about, then WPBlogr takes it from there. The software logs into each blog, then writes and publishes a post about each topic you list. The coolest part about it was that, if you wanted, it could automatically pull a fair use amount of text from Google BlogSearch based on each keyword you gave it, shuffle sentences and words, and still make the paragraph readable. You could easily set it to how many sentences you wanted to output per post. All with the magic of PHP programming.
Download WPBlogr


Notebookr
Sometimes setting up a multitude of quick web pages was necessary in my line of work. Google used to provide a service called Google Notebook (no longer in development), which basically allowed you to create little note pages and share them on the web. Notebookr had the ability to log into Google Notebook with your account, and create multiple notebook pages based on a list of keywords you give it in a text file. Probably the coolest thing about this program was it automatically scoured the web for text related to your keywords, scooped it up and wrote a little paragraph about your subject.
Download Notebookr

Rubylinkr
This is a simple little script that used the URL shortener service RubyURL. You see people using URL shorteners like Bit.Ly on Twitter all the time.  But instead of entering them in manually, one by one, my programmed script, Rubylinkr takes a list of links that you give it, runs them through RubyURL, and outputs all the nice shortened URLs in a neat little text file, ready for action.
Download Rubylinkr