JIM ROGERS CSCI 460 CAPSTONE
  • Home
  • Blog
  • Resume
  • Contact
  • Program Files
  • Home
  • Blog
  • Resume
  • Contact
  • Program Files

​Weekly Blog

See how I plan to tackle this project and watch my progress throughout the Spring 2018 semester

It's all over! Graduation is in a week!

5/8/2018

0 Comments

 
Much has happened since my last blog. My presentation went very well. I think that everyone has a clear understanding of how my project works, and enjoyed the visuals that came along with the presentation. My classmates and other attendees had great questions on how my project could be altered, extended, and other features that could be added. One question in particular that really made me happy was to hear one audience member ask "When you change the amount of words that the user asks for, could you make their font sizes larger when trying to create a shape?" Why, yes, that is a great idea and  hope that the next person to work on this project can implement it! Also implement the Twitter API, that would be great too. :) I had a very fortunate visual glitch during my presentation as well, the projector and monitor screens were so bright that nobody could tell my shapes were visible in the background. It was almost like magic to the audience.

My defense was one week later, and I was happy to hash things over with McVey and Pankratz. Mainly questions considering the data, the code, and the error handling. Nothing I wasn't prepared for and I was glad to rehash everything with the two of them.

I will surely remember this adventure for a long time to come, thank you St. Norbert College and thank you to the entire Computer Science Department. I will not forget this capstone experience.

I'm so happy that this semester is coming to a close. I am ready to graduate and be in control of my own future.
0 Comments

Simply fixed and better...

4/24/2018

0 Comments

 
Dr. McVey found out what was going wrong with my whitespace function. It was not checking for collision on itself. It would only move if the move was larger than itself. Long story short. The whitespace algorithm can now move words within pixels of each other. This is the highest possible efficiency for the language and system of controls I am using. I am so happy right now!
0 Comments

Shapes make the world go round

4/20/2018

0 Comments

 

Since the last time I updated the blog, yep you guessed it, I've now been able to make tag clouds using shapes! I am able to make words form in the shapes of a Heart, a Lightning Bolt, a Star, a Callout Bubble, and an Arrow. There is still no overlapping labels and the algorithm runs smoothly. For the longest time shaped clouds had bugged me and I was beginning to lose hope of ever making them. My original idea was to never let my method place a label outside of the shapes bounds, in other words, try to place the words in the shape with 100 percent accuracy. After a whole week of getting nothing but System.Stack.Overflow errors, I finally understood what was going wrong. I was putting to many parameters on an already complex and recursive function - way to many calls to the label.location property and the C# .Net system did not like it. So I realized, that I can allow my function to miss the shape as long as just correct it right after. That is what became of my shape placement algorithm, it is now a label eraser algorithm that senses when a label has spawned outside a background shape and deletes it. 

Another new feature I have added will let the user customize their font for their word tag cloud. Soon I will customize color for each tag cloud as well.

McVey has brought up an idea that may very well make the white space of the program even less. She is saying that I need to place the labels into an array of labels, so that I will have direct access to their manipulation in an orderly manner that can check against every existing word. My current function is strange in the way that it can only check whitespace between what was made before the previous label, not after. Hopefully I can implement this soon!
​
JIM
Picture
0 Comments

"And once more unto the Breach, dear friends..."

4/9/2018

0 Comments

 

It has been a little while since I last wrote. 
BIG UPDATES:
  • I am no longer working on reading data from the twitter API, both Pankratz and McVey agree that trying to master that would be a long project to waste time on when I need to fulfill other more necessary requirements.
  • I am now reading from doctored text files. These files that are word grabs from websites. I have quantity if one .txt file and the actual words in another .txt file.
  • Placement of words has gotten much better. I have the program starting at the center, placing the most popular words first, then slowly branching out to the surrounding areas until I run out of words.
  • Algorithm for font size (describing how common the word is in a given selection) is in the process of being completed. I like using Math.Log() to keep the differences in the words minimal, but the Top words are less easy to distinguish.
  • Documentation is up to date
Problems yet to resolve:
How can I make the whitespace still go down further? For this solution to be robust, I need to make it as small as I possibly can. I am having small success by retroactively cutting the label's rectangle by a ratio that should let words get closer. 
How can I get words to place vertically? This could be revolutionary at making my design look much more appealing and squeeze as much info as possible
How to have a shaped tag cloud?McVey and Pankratz both suggest loading a colored simple shape in the background and comparing pixel color to suggest a target for the labels to land in. More to come on this.
​Here is a snapshot of my progress:

Picture
0 Comments

Python and Twitter API Beginnings

3/26/2018

0 Comments

 
I have now moved on from the development of my algorithm of placing the generated words. While I will still be able to come back to my whitespace algorithm and change it along the way, I think it is overdue that I start working on integrating the data from Twitter. I am taking tutorials on Python and the Twitter API as I am writing this blog. I will come back soon with more updates on my application.
0 Comments

Moving along

3/25/2018

0 Comments

 
I have been working on the efficiency and placement of the words. I have added up all of the pixels that are in my placement zone, and then added up the size of the words (in pixels) that are placed. I then divide the the used area by the amount of total pixels, obtaining a ratio (or score) of how well the words were placed and how much more white space there is to be filled.

The algorithm for placing words is archaic at the moment, but it is better than random. I think the ratio score can only help me in finding the best placement algorithm in the long haul.
0 Comments

Things I've learned - A brief catchup

2/28/2018

0 Comments

 
It has been quite a time getting things up and running but slowly and surely things has started to roll along. My sister's Wedding was a welcome distraction during this learning time as well.

Here is a few things I have learned:
  1. I am deciding to use labels in a groupbox on a C# windows form. They allow for easy movement, removes heavy graphics, have inherent clickability, quick changing of font (type, size, color), have Autosize feature, allow for a context menu.
  2. There are NO C# forms controls that allow for angle manipulation while also being interactable objects. In other words, there is no way that if I stay in the C# language that I will be able to include all of the features I want to begin with. No Vertically written words. For shame.
  3. There needs to be a clear algorithm of choice for the placement of words. I am currently using random placement and I have realized that random placement on every item takes its toll on efficiency. But it can look cool sometimes.
  4. I need to delve deeply and quickly on using JSON and a Github Twitter crawler to find lots of organized big data to test my algorithm on. Using text files can only go so far.
Here is a snapshot of the randomized placement of labels with font sizes ranging from 2-35. 
I realize that 2 size font is illegibly tiny but this is just for debugging. The Run button spits out the word iterations. Run is not enabled when the word count is less than 1. Clear instantly deletes all words. Once I get the most efficient algorithm, I will follow with a big data source.
Picture
0 Comments

Week One Has Already Come and Gone - Wednesday, January 31st, 2018

1/31/2018

0 Comments

 
I Met with Dr. Pankratz for my project Assignment on Wednesday January 24th, and man I am thrilled to have received it. I'm also excited to apply my other major of Graphic Design to this project. The Title is Illustrating Text by Tag Clouds. DCP made sure to make the project as clear as possible and made mention of some key concepts to keep in mind:
  1. The end goal of this project is to have a program that can digest Big Data (Mainly Twitter) and analyze it.
  2. White space should be at a minimum, think about how the words can be fit in the most efficient way possible
  3. Have a clean and easy user interface.
  4. Have a way for the user to interact with the data, i.e, click on words to see specific tweets using that word
  5. Also to look back at projects from prior years and see what worked well and what went wrong.
Since that day, I have extensively researched existing tag cloud generators and noted a few things that work well, look professional, and have given me some ideas on how to tackle the project, as well as some ugly things to avoid.
GOOD
  1. Clouds that have the least white space - Dr. Pankratz was right on the button with this one. Looks tons better.
  2. Clouds that vary the angle of their words - Once again DCP is right. I need a way to fit words in angled ways.
  3. Clouds that can form words into a shape - These transform the cloud with such a simple change. I think it can make personalized products. Think if you took your significant other's vacation blog and made a poster tag cloud in the shape of a palm tree. I would want that. It's much more entertaining to look at than just random words.
  4. Generators that work quickly - this is an obvious detail but my end product should be able to handle lots and lots of Data - FAST! 
  5. User interaction - certain sites allowed to user to mess with the amount of words in tag cloud, word angles, scale according to list size and word popularity, paste data into a text box, upload text, change their organizing algorithm, font, font size, space between words, background color, word color, and many more. These options will have to weighed in after I get the core mechanics down.
  6. Downloadable content - Once you have your Tag Cloud...don't you want it? Very necessary feature.
UGLY
  1. Anything that mindlessly organized words into lines of a set number - no method at all. 
  2. Little to no user interaction
  3. Did not offer a download
  4. Used recursion to fit an infinitely small amounts of words endlessly or your screen. (Scary)
Plan
  • I will be mainly using C# with Miscrosoft studios to create the tag cloud generator.
  • Figure out how to collect large amounts of text data
  • Trim the data to what I need
  • Organize and order the data by amount of repetitions - Breadth first search or genetic 
  • Be able to Display Tag cloud in window 
    • Work to show the least white space
    • work to vary angles of works
    • work to make the tag cloud work for different shapes - Star, shape of Wisconsin, palm tree, etc. 
  • Have information on each word - amount used, specific tweets it is used in, where tweeted from
  • User interaction - allow user to change things, upload their own text/data
  • Make presentation for application
Sounds so easy right? Ha. 
Then I created this website to track my work throughout the semester.
I also finished my resume and my philosophical statement, both of which I feel are very important at this stage in my college career. Well until next time, 

Jim
0 Comments

    Jim Rogers

    Computer Science and Graphic Design major ready to dive into the working world of these creative concentrations.

    Archives

    May 2018
    April 2018
    March 2018
    February 2018
    January 2018

    Categories

    All

    RSS Feed

Create a free web site with Weebly