EntrecardLinksBlogshares LinksBeginner's Guide to BlogSharesA guide about the BlogShares fantasy blog stock market. Scared Bunny BlogShares Price Tracker This program that archives information about the BlogShares fantasy stock market. You can view graphs of any industry, and analyze your portfolio. SproutWorks ProjectsDigg ArchiveA new experimental Digg page. AJAX Pixel Editor A Collaborative pixel editor currently in development. Web promotion links These tools help you get visitors on your website. SproutPics My photography Site SproutZoo My zoo photographs Tag Cloud A summary of tagged articles. Found Photos An automated page that thumbnails photos from another site. SproutSearch I designed this blog indexing tool, and it has accumulated over 6 million blogs so far. Products Some of the programs I've written. RSS Feeds RSS Feeds from the SproutWorks Forums SproutTree Demo A demo of a tree-drawing PHP script. My Gallery SproutWorks Chat A chat room I programmed, most likely empty. Link Exchange - Link Directory - Web Hosting Sign In
|
I have just added a new animation program to the logo area of this site. I have been working on variants of this system for a while. First, I wrote a JavaScript program that uses a drawing method similar to Google Maps. It uses square tile graphics, arranges them in a grid, and then moves them inside a scrolling area.
When a tile moves off the edge of the scrolling area, it is moved to the opposite side of the area. Before it is moved, the tile graphic is updated with the graphic that is appears on the opposite side that is scrolling into the scrollable area. After I got a basic tile scrolling engine working, I made it work with several layers of tiles that can scroll at different rates. I then added the ability to make additional layers of objects that can be positioned anywhere. The animation at the top of this page uses this object layer system. I will make more interesting scenes as the engine becomes more sophisticated. Similar postsjavascriptAJAX and JSON programming Price Tracker Speed Boost MySQL optimization The GD extension and PHP New RSS search stuff graphics Id tech 5 3D PHP experiment I got an email from Feedblitz saying that they are adding some new features to the free accounts. I have customized the appearance of the email with some graphics I had laying around. I'll try to make a more extensive email template later. I have just signed up at the search engine submission service www.blastengine.com . They submit to over 1 million search engines. I used this service a while ago and it resulted in more traffic for this site. anonymous This company delivers top-notch services in writing and research. Essays, term papers and research papers are meticulously crafted by master writers and editors.
I have been busy at work, and I've been neglecting this site for the past few months. I looked at the forums today, and I was shocked to see that there were over 500 spam messages here. I have cleared out the spam and I also programmed a captcha system to prevent spam in the future. Captchas are those images where you have to type the letters in the image when you fill out a form. So now the spam should not come back. I have started work on version 7 of the SproutWorks layout. I have decided to incorporate a scrolling tile engine I made. It uses scrolling tiles in a similar way that Google maps does, only it's not for displaying maps. I intend to use it for games and animations. When the new layout is completed, it should look far more interesting than the current one. It will probably have some interactive elements in place of where the logo is now.
Last night I wrote a PHP program that draws a spinning gear. It can draw the gear in any given size, color, and with different numbers of teeth. I will make some sort of interesting animation with the gears. I've just updated SproutSearch's blog spider. It now tries to fetch the RSS feed for a blog before parsing it with my HTML parser. This should save some CPU time and give me better results. It also gets the date and time of the blog's latest post and some statistics about the number of words used. This new data will allow me to generate better pages in the future. I am also brainstorming some methods of data mining I can use to make SproutSearch a bit more interesting. With over 8 million blogs in the database there are lots of possibilities.
http://www.sproutsearch.com I have noticed a lot of queries of SproutSearch's main database table are getting slow as SproutSearch passes 8 million indexed blogs. I finally decided to do something about it after trying to add alter this table. I attempted to add a column that keeps track of the date and time of each blog's most recent post. The alter table command ran for at least 8 hours, and then MySQL either crashed or the admins killed my process. I attempted this a second time without making a new index, which also failed.
I figured I would just create a new table with the extra column and write a program to slowly copy everything over. The first version of this PHP program queried 10,000 rows of data from the old table and inserted them one by one into the new table. I set up a cron job to run this every 10 minutes. Once the new table started getting big, the cron jobs were overlapping, some records were not copied, and copy processes started backing up. It dawned on me that I'd better learn something about MySQL optimization. I read some online articles and decided to try using mysqli_multi_query to copy the records. That would reduce the network overhead. The program ran several times faster but I wanted to look into other methods. I tried using prepared statements, which wasn't much better. I found this excellent article (http://www.informit.com/articles/article.asp?p=377652&seqNum=4&rl=1) which said if I use the insert format like: insert into table (column1, column2) values(val1, val2), (val1, val2)... MySQL wouldn't have to flush the index after every insert. I made my program create a giant insert statement in this format. I tried it out and it only took a few seconds when the new table was empty. I modified the program to run 10 batches of 10,000 records, which would take a few minutes. This program has been running for a few days, and all my data is finally in the new table. I am still having problems with the table being locked during lengthy select statements. It causes certain pages to hang for a long time. I am now copying all the data from a MYISAM table to a INNODB table because it has row level locking. My blog search engine SproutSearch is now indexing over 8 million blogs. I am now working on changing the way the blogs are ranked. For now, they are sorted by the sheer amount of content they contain. I noticed a big problem with this method is that many spam blogs contain masses of content. I don't like SproutSearch linking to so much spam, so I need to find a way to remove a lot of these listings.
It is not practical for me to read 8 million blogs, so I need to come up with an automated method to detect spam. Many spam blogs use the same words over and over. So I wrote a program to count the number of repeated words. Most spam blogs seem to use a similar number of words per post. I made another program that computes the standard deviation of the number of words in a post. Using these metrics, I will make a program that flags potential spam so I can review and delete it. I've just uploaded a new program I'm working on. It's an icon editor that uses AJAX to provite a multi-user editing experience. At this early stage in the program, many features are missing, but there is some basic functionality.
You can select a color, then click on the grid. Your click will be stored on the server, where other people who view the page will see your work. When you change a pixel, you will see any changes other people have made to the icon. I will be adding some more real-time features and drawing tools in the near future. In the meantime, you can try to make simple pictures with the program. http://www.sproutworks.com/pixeleditor.php I have just uploaded version 6 of the SproutWorks layout. This layout has a "grassy hills" theme that I think looks more pleasant. I will be adding more to this layout as I develop new features and graphics.
I am also working on reorganizing my code. The code base is about 30,000 lines, and needs some better management tools. I have started to organize all the scripts, and have also been working on a PHP/AJAX project manager application. It will help me keep track of all my websites my keeping all the code synchronized. |