Open is a web application created by the West Side Story's Engineering and Development team. It's designed so that anybody, regardless of experience, can change properties of a webpage with ease.

Inputs for colors can be simple colors, like "red", "green", "white", etc. as well as hexadecimal colors for even more specificity.

Inputs for font faces can be "Helvetica", "Arial", "Times", and the like; these are basic webfonts.

Inputs for link formatting can include "underline", "line-through", or "overline".

If you have suggestions for fonts or additions to the list of properties, send us a personal email or talk to us in person.

WSS Engineering

A collection of stuff I think is cool.

I love what I do and I love making a difference through what I do. Seeing someone else smile because of something I did is my greatest goal.

Who am I?

I am Anthony Pizzimenti.

I'm a Java and web engineer from Iowa City, Iowa. For the last year, I've worked freelance, improving my skills in frontend and backend web development as well as software engineering. I now work for the West Side Story as a web developer, IT consultant, and podcast guy.

I don't have a lot of spare time, but when I do, I play ice hockey for the Varsity high school team (also, LGRW!). I like doing crossword puzzles and playing StarCraft II, probably my favorite video game of all time. I also enjoy playing recreational soccer (although I'll be trying out for the school team next year) with my friends and cooking. My friend Louis and I run a podcast called TechTalk, where we discuss recent news surrounding the technological news sphere as well as do a whole portion of the show dedicated to helping people troubleshoot their PC problems on reddit.

My Tools

Brackets, my HTML/CSS/JS editor. With a few added extensions, it (almost) becomes an IDE.
eclipse, my Java IDE. It's a great editor and not TOO too heavy. Easily my favorite feature is auto-building.
Not really a tool, per se, but Chrome is a great browser. I'll post a list of the extensions I use soon enough. Also, the devtools are great.
I use the command line for a lot of stuff. I use Git to organize and publish my work, and as I don't really like the desktop app, I use the command line. I also use SASS as a preprocessor, so I run SASS commands from the command line as well.

I'm Anthony Pizzimenti. I'm a Java and web engineer from Iowa City, Iowa. This is my blog about music, web and software engineering, robotics, dinner parties, and whatever else I can muster. This is the mobile version of the site, so if you want a better experience with more content, visit this page on a computer.

The Simple Blogger theme edited by Anthony Pizzimenti © 2014, 2015.
Full mobile version by Anthony Pizzimenti, © 2015

July 3, 2015

Breaking Down Reddit Censorship

A community of communities and (possibly) one of the largest free-speech platforms on the internet with user-generated content - that's reddit. More than 163 million unique viewers accessing 7 billion pages in a month.

So why is it being censored?

Ellen Pao, the interim CEO of reddit, took the helm in January. She charged her former employer, Kleiner Perkins (a venture capital firm), with gender-based discrimination following her release. The jury ruled that Pao was not passed up for promotion and fired based on her gender. After the trial, however, Pao requested $2.7m not to appeal the case. This combined with the fact that the amount of money would be enough to cover her husband's $2.7m legal fees owed to his former employer, and we have an official and ever-looming shitstorm.

Any conversation about this topic on reddit was hushed. Admins went around banning users, posts, and links to stories surrounding the trial. 8 separate articles and an entire sub were deleted. The remaining Ellen Pao hate subreddits were left up (or ignored) for two reasons:

  • the communities were very, very small (1 sub had ~1200 people, the rest had <100)
  • most of the Pao hate shifted to larger subs, reaching the frontpage

Then came the banning of five subreddits. These bannings weren't unforeseen, as a blog post nearly a month before described survey data showing many users were subject to harassment through the site. The post also explicitly said

Because of this, we are changing our practices to prohibit attacks and harassment of individuals through reddit with the goal of preventing them.

Pao, under reddit user /u/ejkp, commented on the onsite banpost with the four remaining subreddits. Her comment's score was -2177, and sparked a discussion. /u/derram_2 said

So, this is about being offensive and not about being safe.

 Yet /u/harkku said

I know for a fact that /r/trans_fags was harassing people through /u/TotesMessenger, half their mods have been banned and the others were avoiding bans.

so at least some of the harassment claims were true. The claim of reddit's blogpost states that the changes are

[...] specifically designed to prevent attacks against people, not ideas.

which is entirely fair. Extremely racist, derogatory, and borderline illegal subs remain online despite their disgustingly off-kilter moral compasses. Why? They don't harass people to the degree that others did. There is a difference between offending and harassing people, and it is not a fine line. Would most people like to see subreddits like /r/coontown and /r/picsofdeadkids banned? Yes, most definitely. Are they going to be banned? No.

/r/fatpeoplehate and the others were probably targeted because they were most likely perpetrators of harassment. In general, fph was about shaming fat people and downplaying the 'fat acceptance' movement, not about personally targeting users of the sub. Most claimed that those offended could simply not subscribe or unsubscribe from the sub. Some users probably took it too far, as reddit sometimes does, and caused the downfall of the sub by personally attacking users.

However, there was no explanation provided for the censorship of articles surrounding Pao's case and the annoying subs designed to 'out' her. Was Pao personally harassed and afraid for her personal safety? If she deleted them, what did she expect? Everything to go unnoticed? Not gonna happen.


And then this week, Victoria Taylor (or, as she was known on reddit, /u/chooter) was fired. She organized and administrated the IAmA requests and discussion subreddits for a long time, including AmAs from Barack Obama, three from Neil deGrasse Tyson, and many, many more. After a disastrous AmA with Jesse Jackson, chooter was released. This sparked a new reddit movement, where subs were (and still are) shut down to protest the lack of communication between moderators and admins.

Pao shouldn't be disbarred because she seems petty, tried to recoup her husband's losses through her own completely separate (and well-timed) trial, or said that

[...] it's not our site's goal to be a completely free-speech platform.

She should be removed because she deliberately - and without restraint - violated reddit's policies on censorship. While reddit claimed they would only censor because of harassment, Pao did so because she was annoyed and offended. A culmination is on the horizon, and it will set a precedent for the rest of the internet as to how we act in response to unnecessary censorship. Just like Pao said:

Reddit is the internet.

You're right, Ellen. It's too bad that you decided to mess with it.

July 1, 2015

HAPPY CANADA DAY

WOOOOOO CANADA DAY YEAH



LET'S GOOOOOOO

Anyway, I am in Canada right now. We are making cannolis and watching Chopped Canada and going to see Jurassic World later on.


today really was a good day.

I've been developing an application called ResGen for my mom. What it's supposed to do is search a codon sequence for a restriction enzyme insertion site. I'll be developing that live on stream, so if you wanna stop by, please do. I'll post a link on twitter and /r/watchpeoplecode.

ALSO
JURASSIC WORLD

*fin*

June 29, 2015

Keeping it Sharp

Small Activities

Lately, I've been a bit bored. Every day for at least an hour, I've been riding the city bus home. It's a great time to sit and reflect on life - or to do a crossword puzzle. These dizzy dinky daily dastardly riddles baffle my brain and test my memory to a tee.

... sorry.

Anyway, I've taken to them. They're fun to do and getting angry at how abstract or vague the clues can be is the second best part of doing the puzzle. I now keep a pencil and a pen in my backpack at all times.

The Daily Show

Since school is over and I work on projects for about 2-3 hours a day, I have quite a bit of free time. So, I've taken to watching The Daily Show again. Even though it's a comedy show, it's an okay way to stay informed and have a few laughs at the same time.

My favorite show, though, is Last Week Tonight.  I've loved John Oliver since his premier days on The Daily Show, and when he took over the show while John Stewart was making Rosewater. Oliver does an excellent job on his show, especially with his big interview of Edward Snowden. He is purely content, and points out hypocrisy and injustice through a comedic medium. It's pretty awesome, and I highly recommend it.

The other thing I was is standup comedy. Lots and lots of standup comedy.

Keeping it Dull?

I've also been surfing reddit almost ALL the time. I read AskReddit threads, browse dank memes, and read articles on offseason NHL trades. It is a great content website that's updated almost constantly, so I'm there most of the time. A lot of the stuff I get is also from Tabbie, my absolute favorite browser extension. I have HackerNews and GitHub extensions, too, that let me browse news and cool repos.

June 22, 2015

New Design

It's all New

So it's been much too long since I last wrote a post, but I was preparing for final exams, taking final exams, preparing for ACT/SAT, taking ACT/SAT, taking driver's ed, et cetera.

Anyway, a new design has appeared! After doing all that stuff, I finally got back to what I love most: coding and programming. I've been exploring new things to do with Java on the server side, and new, exciting things on the front end. I've started using SASS, using CSS3 transitions/transforms, and reading lots of engineering blogs.

I got a position at West Side Story, too. I'm working with a team of devs/engineers and we'll be working on redesigning the website to the needs of everyone on staff (most notably the editors-in-chief). Also, I'll be "pimping" out the blogs for the staff members and possibly continuing some freelance work on the side.

Anyway, just a check-in. Since I have a lot of free time, I plan to blog about ~4-5 times a week.

May 19, 2015

Interview with Romy Bolton

Recently, I published a research paper on the presence of women in the computer science sector. I used a variety of sources, but I found that a personal interview with one of my girlfriend's moms would do the job perfectly.

To introduce her, Romy Bolton is the director at the University of Iowa's SiteNow program, which contracts the team to build a website for a city or University function. Bolton is also the creator of the eBongo bus tracking system, widely used throughout Iowa City and Coralville (and by me, personally).

Anyway, here's the interview. It's insightful and fun to read.


There's obviously a pretty large gender gap in the tech industry (oftentimes, <25% of positions are held by women). At what point during the educational process do you think this begins and why?

As with any problem that is challenging to solve, there are many things that come together to create the problem. I think in general many parents still create gender biases within their kids that often precludes girls from expressing interest in things like video games and legos that could lead them to a career in STEM generally but IT specifically. It is then reinforced in grade school where they play with other girls who experience the same things at home and many of girls that might be more interested in “non-traditional” things conform to have friends. They then don’t grow up with an active interest in math and science which leads them to stay away from STEM high school courses and the teachers don’t have the time to go and encourage them to stretch.

I am (far more often than not) the only woman in many of my daily meetings and sometimes I don’t even notice it anymore.


When did you decide that you wanted to work in development and what gave you motivation throughout your education experience?

I came to development in a pretty different way. My undergrad degree is in marketing and my MBA is in Quality, Leadership, and Teams, and I have a Six Sigma Black Belt and a Lean certification. In short I am all about solving problems for people - process engineering, re-engineering and efficiency. As I was working in those areas, technology played a very natural role.

First it is often a key tool in making a process more efficient. As an example one of my first projects was to help sales of telephone services move through the pipeline more quickly so customers could get their service faster. An application to gather sales information electronically and then move things along and proactively notify the next person in the online “assembly line” was at least one obvious way to do that.

Second, when you are getting ready to build a new application, (in the best executed app dev projects) you map out the process you are trying to automate before you gather requirements. The last thing anyone wants to do is automate a bad process.

And then there just some innate things about me that lead me here. I have always played video games with my brother, way back one it was an Intellivision (Google it :) ), later it was Oregon Trail in DOS format, then Sid Meier’s Pirates with at least 20 5 ¼ floppies, and then as adults we would set up a USB hub, connect two desktop PCs and play Civilization all night on holidays and finally MMORPG games like Dark Age of Camelot.

I took a couple programming classes in high school because I wanted to and I loved them. In the Business program at Iowa, you get a fair amount Management Information Systems coursework and I loved those too.

At the end of the day, though, it’s really my drive to solve problems that feeds my interest in coding and development.


What are some possible solutions to solving this problem?

I think there are several things in process and coming that could shift things for the better….

First is the consumerization of technology. So many (if not all) girls have smartphones now and recognize the way they integrate with their daily lives. That is more than anyone had when I was younger, even 10 years ago. I get girls and women telling me all the time that something should be made into an app for phones. Just that level of interest, knowledge and integration with technology will steer some girls in this direction.

Second, there are more games that girls are interested in – [my daughter] Allie, a big Sims player (and, obviously, Skyrim) and those more RPGish games play more to what girls like than first person shooters (for example). Allie likes to fight in Skyrim, but she was originally drawn in through the narrative and the relationships between the characters in the games (if that makes sense to you?). You can build a house and decorate a house and get married and adopt kids and all of that stuff – like playing house but in a XBOX game.

Both of these are making girls more interested in technology and some will gravitate here that wouldn't have before because it’s a not an external thing they read about, but it’s in their lives every day in a way that fits them and they want to understand more.

There is a new trend that is being discussed and studied right now in technology that should be pushed in high schools. There is a distinct move away from the hardcore technology people in the workforce, but this is just starting. As things move to the cloud for efficiency of hardware management and server virtualization really takes hold, there will be fewer system administrators and the ones there are will all work for Amazon Web Services or Microsoft Azure or large research universities. The people working with technology in individual businesses will now need to be proficient in things like communication, customer service and empathy, consensus building, understanding how technology systems can integrate to solve problems, documenting requirements, training end users, better ways lead and deliver technology projects; all things that are more in line with the way many women think and not so much solely manipulating bytes.

As you yourself know, many of the languages are becoming more based in human language than machine language. Integrated development environments, GUI interfaces are quickly replacing (or at least offering alternatives to) straight command line actions. Hardcore techies will still be necessary, but there is a tremendous realization that we have a huge gap [between] the staff who can help connect the technology that the super techies build to the humans who need to use it.

Finally, you have women like me who hopefully help change the way many men think about women in technology. I look actively for women to hire and mentor and turn in to leaders [and] female students to hire and train. Many men I work with do the same things.

Potential: A Research Paper on the Turbulent Past

Trying to type with one hand is much harder and slower than typing with two. Currently, the US workforce is comprised of 92.9 million women -  forty-seven percent (US Department of Labor). At maximum, only one in four employees at a large tech company is a woman, rendering their corporate personnel totals hollow. Why is the female component of the workforce minimally included in the fastest-growing industry in the world? Women are an imperative part of the technological movement, and are key to filling the large influx of jobs in computer science and its related fields.
Interaction with technology begins at a very young age, both for boys and for girls. Most of the time it’s through video games, especially as kids games on mobile platforms continue to increase in number. “I have always played video games with my brother,” says Romy Bolton, Director at the University of Iowa SiteNow program (a paid website development program) and  creator of the eBongo bus tracking system. She credits part of her initial interest in tech to video games; this goes for the majority of kids today as well. Ninety-seven percent of all teens, regardless of gender, play video games. And while ninety-nine percent of boys play games, this is followed closely by girls’ ninety-four (Pew). As the global market for all video games grows, interest in playing them grows as well: “There are more games that girls are interested in,” says Bolton. At the teenage level, girls are only one percent behind boys in desktop gaming at seventy-three percent and out-game boys on mobile platforms by ten percent, indicating potential interest in desktop and mobile computing. Also, girls significantly outplay boys in the puzzle game category eighty-seven to fifty-eight percent, showing a clear interest in problem solving (Pew). Girls are clearly interested in technology, yet comprise only thirteen and ten percent of computer science and engineering degrees respectively (US Department of Education). A large, looming problem exists with women’s presence in the technological field, and it has to be solved.
The gender gap in computer science and its related fields has actually widened since the advent of the personal computer despite relatively stable gender disparities in other STEM (Science, Technology, Engineering and Mathematics) fields (Sax). The intentions of many women entering college has markedly changed: in 1983, approximately four percent of women intended to major in computer science, compared to men’s five-point-eight; this was followed by a significant drop in intention for both men and women in 1985. In 1996, the rise of the Internet revitalized computer science interest, and men’s intention numbers shot up to six and a half percent; women’s peaked at just above one-point-four. Since then, women’s numbers have continued to decline and now rest at a miniscule zero-point-three percent compared to men’s two (Sax). The gap in degrees given to women is also quite significant: in 1985-86, fourteen percent of all Bachelor’s degrees were given to computer science majors, and women represented thirty-seven percent of those awarded. In 2011, seven percent of all degrees went to CS (computer science) graduates, and women comprised seventeen percent; in 2012, eight percent of degrees were in CS, and women represented thirteen percent (US Department of Education). Although these statistics indicate loss of interest in computer science for both genders, the amount of women intending to major or graduating in the field of computer science has declined alarmingly.
Under most circumstances, the factors that play into women shying away from careers in CS likely begin as early as kids are able to play with toys. “I think in general many parents still create gender biases within their kids that often preclude girls from expressing interest in things like [...] LEGOs that could lead them to a career in STEM,” Bolton says. And as these problems continue through primary and secondary education, self-rated confidence in mathematical ability among young women (compared to male counterparts) drops significantly. Another contributor is the ideology behind choosing a career: statistically, women tend to favor jobs where they can help those around them. For example, women are now nearly equally represented in the medical and bioscience fields (Sax, US Department of Labor). However, the idea of sitting behind a desk and programming all day oftentimes doesn’t appeal to the ‘helping-others’ ideal. These factors have played into a drastic lowering of women’s interest in the field, dealing a blow to the tech industry of the future.
The tech industry grows larger every day, and with this growth comes the need for human capital. With effectively half of the potential workforce declining work in this field, the country may face a problem filling these new positions (US Department of Labor). Currently, seventy-seven percent of all companies in Silicon Valley intend to hire more people in 2015, and of that seventy-seven percent, sixty-two percent plan to increase their staff by more than a fifth (Silicon Valley Bank). By 2022, there will be more than one-point-two million computer science jobs in the United States. Unless more women enter the field, only sixty-one percent of those positions can be filled (US Department of Labor). On top of low graduation numbers for women in CS, an analysis of 10 large Silicon Valley and Seattle companies show that they underemploy women, especially in the technology sector:Screen Shot 2015-05-17 at 10.58.55 PM.png
Alongside the gender gap, a gender-pay gap exists as well. Women with a Bachelor’s or higher are paid forty to seventy-three percent less than men with the same educational experience, and the percentage only grows as educational level increases (Silicon Valley Index). If the negative trends in graduation rates, employment, and pay equity are perpetuated, the tech industry will not have enough employees to fill its necessary jobs. These companies must employ women if they wish to remain relevant and, in turn, alive.
Bolton says that there is hope on the horizon resulting from increased mobile phone and computer use with girls. “So many, if not all, girls have smartphones now and recognize the way they integrate with their daily lives” she says. It’s much more than Bolton had as a kid, and now she gets “girls and women telling me all the time that something should be made into an app for phones. Just that level of interest, knowledge and integration with technology will steer some girls in this direction”. In this vein, Harvey Mudd College and the Anita Borg Institute began a project called Building Recruiting and Inclusion for Diversity, or BRAID. Its aim is to restructure the recruiting process for computer science departments in 15 major universities across the US. BRAID reaches out to high school instructors and students to make CS courses less intimidating, to generate interest in underrepresented groups, and to create joint majors like biology and CS (Sax, Harvey Mudd).  Another possibility, says Bolton, is that technology is shifting away from “hardcore techies” and towards “communication, customer service and empathy, consensus building, understanding how technology systems can integrate to solve problems, documenting requirements, training end users, better ways to lead and deliver technology projects - all things that are more in line with the way many women think and not so much solely manipulating bytes”.
It is absolutely necessary to get more women into the tech field. Three of the top ten highest-rated careers are in the computer science fields, all with average base salaries starting at or above $97,800 (Forbes). Through powerful initiatives such as BRAID and the support of role models like Bolton and Sax, the gender gap, while large, can be worn away. With concentrated effort to instill and retain an interest in technology from women and relaying to high school students the large potential in the technology field to build communities and better society, there is hope. “You see the impact every single day, on real people. Your friends and your family. That’s just… magical” (Fitzpatrick).
Citations and Bibliography

Pew Research Centers. Pew Internet & American Life Project: Teen & Parents Gaming and Civics Survey. Pew Research Centers, November 2007 - February 2008. Web. http://www.pewinternet.org/2008/09/16/part-1-1-who-is-playing-games/

United States Department of Labor and Statistics. Labor Force Statistics. May 8, 2015. Web. http://www.bls.gov/data/

United States Department of Education, National Center for Education Statistics. Table 318.20. Bachelor’s, master’s, and doctors degrees conferred by postsecondary institutions, by field of study: Selected years, 1970-71 through 2011-2012. Digest of Education Statistics, 2013. Web. https://nces.ed.gov/programs/digest/d13/tables/dt13_318.20.asp

Linda Sax. Examining the Underrepresentation of Women in STEM Fields: Early Findings from the Field of Computer Science. University of California, Los Angeles, 2011-2012. Web. http://new.csw.ucla.edu/publications/newsletters/2011-2012/article-pdfs/Apr122.pdf

Silicon Valley  Bank. Innovation Economy Outlook 2015. Silicon Valley Bank, 2015. Web. https://www.svb.com/innovation-economy-outlook/

Rachel Massaro, Alesandra Najera, Silicon Valley Institute for Regional Studies Advisory Board, Joint Venture Silicon Valley Board of Directors, Silicon Valley Community Foundation Board of Directors, Index Advisors. Silicon Valley Index 2014. Silicon Valley Institute for Regional Studies, 2014. Web. http://www.siliconvalleycf.org/sites/default/files/publications/2014-silicon-valley-index.pdf

Harvey Mudd College. Harvey Mudd Launches BRAID Initiative to Increase Diversity in Computer Science. Harvey Mudd College, 2014. Web. https://www.hmc.edu/about-hmc/2014/09/24/harvey-mudd-launches-initiative-increase-diversity-computer-science/

Susan Adams. The 10 Most Promising Jobs of 2015. Forbes, January 2015. Web.
http://www.forbes.com/sites/susanadams/2015/01/27/the-ten-most-promising-jobs-of-2015/

Jen Fitzpatrick. MAKERS at Google: Women in Technology. Google, 2013. Web. https://www.youtube.com/watch?v=tjFeLln_tfg

Bolton, Romy. Personal Interview. May 13, 2015.

April 13, 2015

WPP #2 - Follow-Up

Intro


Since the last time I checked, the UI hasn't posted the answers to the challenge questions.  I couldn't save the code for our solutions either, but I'll do a writeup with the gist of how to solve the problems.

Intro to a project I actually did on Sunday


So I actually did a project on Sunday. I wrote a NHL playoff predictor. It's fairly rudimentary and only based on the relative regular-season strengths (% of games won in the regular season), but it does 10,000 series simulations with 100 single-game simulations to predict the outcome of a series with reasonable accuracy.


The Maths

So the way the winner is calculated is by a HUGE series of averages.

First, the user inputs the strengths of each team over the regular season. The difference between the two is calculated (using Math.abs(strength1 - strength2)) and stored in a global variable.

In the series() method, it first enters a loop which will individually run 10k times, simulating a full playoff series 7 times. After this, it enters the individual series loop, which terminates after one team reaches 4 wins. Each game is simulated 100 times, and goes like this:




























So each team's win is calculated by the difference in strengths applied as a handicap for the worse team. If one team has a strength of, say, .665 (the St. Louis Blues) and another has a strength of .610 (the Minnesota Wild), the difference of these strengths is .055. The method generates a random number between 1 and 0. This actually determines the winner of the game, as it is entirely random. If the teams have the same strength (in the case of the Washington Capitals and the New York Islanders), each team has odds of .5.  If the random number is in the 0 - .49 range, the Capitals win. Otherwise, the Islanders win. In the case of the Blues vs the Wild, however, the range of winning numbers increases by the difference in strength. For the Blues/Wild series, the blues can win in the range of 0 - .555, and the Wild have the other portion. This seems like a small and insignificant change in range, but when run, the program predicts a 4-1 series victory for the Blues almost 99% of the time.

Next comes the calc() method, which looks like this:
























The aggregating portion works through the entire array and compiles the scores and the amount of wins per team. The winning score is calculated by taking the average of all the elements in the array, and then the % won and #/10000 win is calculated by counting the number of 4's in the winning team's array and dividing by 10000.

So there it is, the whole project. It can be found in my Github repo under the name 'Predictor', and I'll keep it updated.  Here are the projected scores for each series:

WEST


Blues vs Wild
Blues win 4-1 @98.54%

Predators vs Blackhawks
Predators win 4-3 @62.19%

Ducks vs Jets
Ducks win 4-1 @99.24%

Canucks vs Flames
Canucks win 4-2 @80.77%


EAST


Canadiens vs Senators
Montreal wins 4-1 @99.69%

Lightning vs Red Wings
Lightning win 4-1 @96.82%

Rangers vs Penguins
Rangers win 4-1 @99.99%

Capitals vs Islanders
Islanders win 4-3 @58.58%

April 10, 2015

WPP #2 - Friday

Intro


So tomorrow morning is the University of Iowa Hawkeye Programming Challenge; that's where I'll be for the majority of the day. This event will be my project for the weekend, and I'll see about bringing home the problems and the code that solved them.

There's another team that I believe won last year, and they're going to be there. It'll be a challenge, and I'm pretty excited to compete.

PS - complementary breakfast.

April 6, 2015

WPP #1 - Sunday

Intro


Today was the day I had to integrate the charts.

Done(?)


I finished the game early in the morning, making sure that the 'done' pane and graph buttons worked correctly. I made sure the margin values were generated correctly in the setMargin() function, and that the size of the buttons selected correctly. Most of these changes were in script files, and didn't take too long. I also changed some design elements (buttons, borders, etc.) to make it look simple and pretty damn good.

Charts


I used the Chart.js library to make the charts. First, though, I had to have a way to get data, and so I created the count() class. This class has methods that track the number of clicks on the dots and the total number of clicks, and every three seconds (1/10th of the length of the game) puts the number of clicks over the last three seconds into arrays. Each array (correct, incorrect, and total) is returned with accessor methods. The genData() is what actually does the timed data aggregation, and it's only called once in the whole project. I still have to finagle a little bit with the counters to make sure they return the correct amount of clicks and stuff, but you get the idea.

Anyway, I wanted to use a line chart to show how many correct and incorrect clicks, and then a bar chart to show approximated clicks/minute. The charts have to be imported from the Chart.js library, and if you click the link in my last update, you can find the Github link (or you can clone it using git). In order for it to work everywhere, though, I had to store it in my Dropbox folder just like everything else. Then initiating it was somewhat of an issue, as I wanted to display the two graphs in the same pane. I tried using one variable called ctx to reference a canvas DOM object. So my first declaration was this:

var ctx = document.getElementByID('canvas').getContext('2d');

ctx was a global variable, and every time the clicks/min or hits vs misses buttons were pressed, it would grab ctx and instantiate a new graph. However, the graphs didn't replace each other, they were just layered on top of each other. So, whenever a user would hover over an empty part of the graph, it would switch to the other graph under it, and whenever they moved back, it'd switch back to the top graph. So I changed it to the current system, like so:

// function that displays the hits v misses graph
$('#hits').click(function () {
    $('#canvas').remove();
    var $('#frame') = document.getElementByID('frame'), $canvas = document.createElement('canvas');
    $canvas.id = 'canvas';
    var ctx = document.getElementByID('canvas').getContext('2d');
.
.
.

Then the same happens for the bar graph. So instead of reassigning a value to a variable, I just make it local to the function. There's definitely a better solution, but for the sake of time and less thinking, I decided to go with this.

Done.


So this time I actually was done. I finished the project in my allotted time of 2 days, and worked about a total of ~10-11 hours finishing this up. I actually had my dad (did scientific programming in the 80's) and 2 University of Iowa CS/math professors take interest in what I was doing. So I think this project was a success.

Play the game.

April 4, 2015

WPP #1 - Saturday

Intro

Today was just to set up and roll out the game portion of this first project.

Game Making

So the whole point of this game is to see how fast and how accurately you can click. A pane for choosing the size of the clickable dots pops up, and then a play button that just starts the game.

After that, a series of timers start: one counts down from thirty and displays how many seconds are left; another displays the 'done' thinger and removes all the buttons from the screen. Noice, got that done.

However, the problem of generating margins was a fairly prominent issue, and it took a few resizes to get the margins just right.

Anyway, the first part of the game is live here and is documented here.

Weekend Programming Project Intro, WPP #1 - Friday

Intro

NOICE so I've decided to do a regular thing where it's cool. This is the introduction of WPP - the Weekend Programming Project. They're little things I'll undertake over the weekends to bolster my programming skills, documentation, and add to my repertoire. Usually, they'll fall into a few categories:
        - games
        - tools
        - widgets
        - web features;
I'll probably add more later on down the line. And, for my first trick, I'll start with a game.

Clicktime

It's time to make a game. 

So it'll be a game about how fast and how accurately you can click with a mouse/trackpad (or tablet, but it'll be slower). In the game window, little bubbles or objects pop up and you have to click them out of the screen as quickly as possible.

I was thinking about having a really basic HTML structure like this


where the game is played within the game window, and then the results of the game appear in a new window below that. The original window will show where the clicks were.

The programming will involve a good bit of JS. The HTML game window will be a set size, and so a random combination of width and height pixels will be generated. At that location, a DOM element will be placed, and you have to click it to make it disappear. If it pops up and you don't click within a certain amount of milliseconds, it'll remove the element and not increment the counter variable tracking how many clicks, and will also increment a counter that tracks how many weren't clicked.

After the game is played, I'll use chart.js, a nice JS framework to display the tracked data in a beautiful fashion.

March 23, 2015

Even More Coding

Intro

My goodness, what a jam-packed last two and a half weeks. That was absolutely bonkers.

Projects

I've been working on a bunch of new projects recently, mostly in web development. I started doing a lot of work in JavaScript over the past two weeks trying to get some cool things done.

Portfolio


Firstly, I added a bunch of new features to my portfolio website (I actually added a new button for my portfolio in the header). For a long time I wanted to be able to change the color scheme of the site. This is a sort of show-offy thing to do to kinda showcase my ability and promote myself. The portfolio site is essentially an advertisement for what I can do.

Anyway, creating a random color generator took a little bit of actual programming to make. I stored all the hexadecimal values (letters A-F and numbers 0-9) in an array, and then created a loop that ran six times, each time generating a random number from 0-15 which drew that same-numbered element out of the array. A little concatenation later, and we have a random hexadecimal color. Here's the code:

var letters = ["A", "B", "C", "D", "E", "F", 1, 2, 3, 4, 5, 6, 7, 8, 9];

function getColor() {

    "use strict";
    var j, first, newcolor = "#";
    for (j = 0; j < 6; j++) {
        first = Math.floor(Math.random() * letters.length);
        newcolor += letters[first].toString();
    }
    return newcolor;
}


It's pretty simple, and the "use strict"; is a variant of JS that is used to restrict JS in the browser. It affects arguments, how variables are used, basic semantics, and converts mistakes (like mistyped variables) into errors in the IDE or browser. This method is called in the jQ file that changes backgrounds, borders, and displays when each of the buttons are clicked.

Finally, a chance to mention Brackets - this is my IDE for JS, HTML, and CSS (I use TextPad and DrJava for Java). It's written in HTML and CSS, and offers a great deal of functionality. It has live editing, multiple file views, awesome plugins like JSLint, Emmet, Markdown editors (useful for Github; this editor also has Github flavored markdown as a language option), and tons of great themes that are readily available.

/rant

After all this, I wrote a bunch of jQ to make sure everything changed colors correctly, everything faded correctly, and (the best part) added animations to the hover menu. AND BUTTONS - a sexy amount of buttons.

The Date Time


While I was making my changes to the Portfolio website, I stumbled upon a text clock on the /r/webdev subreddit. I thought it was exceptionally cool and it was a chance for me to learn more JS and integrate jQ into it, so I embarked on the project. It took about 4 hours, but I finally got it done - the Date Time. It's a Blogspot-hosted site (as I don't want to pay for a domain and just want to showcase something small I've made), and it's even simpler than the Portfolio. It's almost as much JS as it is HTML, and it's honestly really cool to me. I used a really long switch() statement to assign each day or month name a time and place to change. Then, I wrote this little diddy

setInterval(function () {getTime(); makeMonths(); }, 1000);

which says that each method (which calculate the date/time from the  Date() object and displays it and the switch() for assigning days and months, respectively) will be called every second. This is only necessary for the getTime() function, as that's the only one that calculates seconds.

This was a nice project to work on and really fun to do (albeit a bit tedious at times) and I'd do it again for something even cooler.

March 5, 2015

Portfolio

Intro

So for the past couple of days, I've been working on a new project. As I'm applying for a web development/design position at the West Side Story (my school's newsmag), I have to make a portfolio. I submitted my application as soon as it was available, but that was a few weeks back, and I've done much more work since then, and I wanted to showcase it in a simple, clean way.

Code

I thought that having a streamlined, centered design would work well, and in doing so, had to change a few things. Normally, I'm partial to using the float property for making sure that things move together and that they're put into the right place, but for this one I used the display: inline-block property to make sure everything displayed correctly. After using this, everything within the element assigned the inline-block property can be treated as a basic text element, and can be aligned with text-align.

Stylin

I chose two things that I wanted to do in this little simple site. Firstly, I wanted to choose a nice, sans font that would appear somewhat blocky and would look good in bold and underlined. From my usual Google Fonts source, I chose Montserrat, a simple rounded sans font. I enjoy it, and it has really low load times; I want a low load time, since the site should be simple and clean.

The next thing I wanted was to have a hidden element; I chose to use the visibility CSS property to allow for a nice little hover section. I filled it with ideas for what I want to do next year, and it's just as simple and clean as the rest of the site; titles are aligned center and the text is justified, controlled by the text-align: center and text-align: justify properties respectively.

Making it

To complete this project, I went onto blogger and registered a new domain and then went to the HTML edit section of blogger. Then, I deleted the entire 2000-odd line theme and replaced it with the simple, single-page HTML-only document I had written up. Blogger wouldn't allow for a single HTML document, though, and so I had to keep the XML header tag, and the <b:skin></b:skin> and <b:template-skin></b:template-skin> tags. After this, I was able to fully upload the document, all 142 lines of it (/s). It's simple, clean, and very VERY lightweight. If anyone else has to do a portfolio for WSS ever, you can check my Github repository called Portfolio to see how I structured and did everything. It's really nice, and I think it'll make a good impression.

February 27, 2015

Robots

Intro

Today was spent building a robot.

The Hardware

So my friends Louis and Ike are in a class called Aerospace Engineering, taught by one of my favorite physics and engineering teachers. There's a set of hardware extremities like wheels, SONAR detectors, and bumpers that do all the analog work. Most of the structuring is done on steel rods (think Sandlot-style robots), and all of it is powered by battery packs.

The Programming

The robots are programmed by a language based off C called ROBOTC. There's a good informational video that explains how it's similar to C and its interaction with each bit of hardware.

The Problem

So David, Derek, and I were called in to help fix this robot. We sorted through the code with Ike, trying to find a logical error and went with Louis to try and test to see how the hardware was working. Actually, we're doing it right now - it's kinda scary to see what's happening. For example, if you have a statement like this

if(SensorValue[Sonar]<6)
{
    sleep(500);
    Motor[RightMotor] = 30;
    Motor[LeftMotor] = 120;
}

else
{
    go = 0;
}
which says 'if the SONAR senses something within 6cm, I'll stop for 500ms, then the right motor will turn at 1/4 the speed of the left motor to turn right; otherwise, don't go'. However, the value SensorValue[Sonar]>6 creates an issue. The SONAR sensor reads the distance to an object, but when it tries to measure a value farther away than its range, it returns a value of -1. This generates an error because even if there's nothing in the way, it'll turn.

February 24, 2015

Coding

Intro


So I've been working really hard on schoolwork for the past couple days. Usually, my comp sci periods are used for other things like extra homework, browsing reddit, or writing blog posts. Recently, however, I've actually been doing work in the class. I'll show you a little of what I've been doing.


Unit 7 Assignment 1


This assignment, we were supposed to simulate the Game of Life using 2D arrays. The main issue was getting the neighbor counting method called neighbors() to work correctly, and then working out the changeCells() method to address all situations.

Here's the neighbors() method:

public int neighbors(int row, int col)
<>{
    int count=0;

    for(int i=row-1; i=row+1; i++)
    {
        for(int j=col-1; j=col+1; j++)
        {
            try
            {
                if(board[i][j].equals("*"))
                        count++;
            }
                
            catch(ArrayIndexOutOfBoundsException except_1)
            {
                continue;
            }
        }
    }
        
    if(board[row][col].equals("*"))
    {
        occupied = true;
        return count-1;
    }
        
    else
    {
        occupied = false;
        return count;
    }
} 

This wasn't too hard, but identifying and isolating the area which needed the try/catch block took a little thinking. Also, if the return count-1 isn't included, the whole game gets thrown off.

Then came the changeCells() method, which is the main driving force behind this project. It calls the neighbors() method to identify how many neighbors each individual cell has, and then, based on that number, either generates a new cell, keeps the current cell, or kills the current cell.  This process goes through the entirety of the 2D array until a new generation is created.

Here's the changeCells() method:

public void changeCells()
{
    String[][]temp = new String[6][6];
     
    for(int i=0; i<board.length; i++)
    {
         System.arraycopy(board[i],0,temp[i],0,board[0].length);
    }
     
    for(int j=0; j<6; j++)
    {
        for(int k=0; k<6; k++)
        {
            int num = neighbors(j,k);
             
            if(num==3 && occupied==false)
                 temp[j][k] = ("*");   
            else if((num<2 || num>3) && occupied==true)
                temp[j][k] = (" ");
        }
    }

    board = temp;
}

Making sure that each 'if' statement was correct was crucial, but they were spelled out quite reasonably in the project description.  This project was fun and a thinking challenge for a while not because of its complexity, but because of the variety of different (wrong) answers you can get while working on it.

Unit 7 Assignment 2


This one was a little more interesting. A class called electionResults needed to be created, and this class had a method called (ready for it?) electionResults() which has three parameters: the number of candidates, the number of precincts, and a 2D array associating the two (candidates = rows, precincts = columns). The voting results weren't generated randomly, but taken from text files. The totals per precinct and per candidate had to be totaled, and then a winner was determined based on the greatest percentage-getter out of each set of elections.

Everything else was nice, with just some simple sorting and formatting going on, but determining the winner efficiently was fun to think about.  Since the total votes of both the precinct and candidate types are stored in independent, short arrays, I opted to use the sequential search method because it'd make short work of the small arrays and could quickly identify the greatest number in the array to determine the winner.

This sequential search

int winner = 0;
int small = b[0];

for(int ex=0; ex<b.length; ex++)
{
    if(b[ex]>small)
  winner = (ex+1);
  else if(b[ex]==small)
winner = (ex+1);
}

addresses two conditions: the first is if a number is greater than the first number in the array (as defined by the variable small ) then the candidate equals the array position plus one. If the first number is the greatest, however, it also returns the position plus one.

These projects are fun to work on, and I thoroughly enjoy them. I like the thinking and the analysis, and sometimes just having the pleasure of saying "I did that - I did that" makes it that much better.

Others

Intro

Last night, I had the privilege of sitting around a room, listening, discussing, and interacting with people I had never met before. I hope to meet them again.


At First


Initially, I thought I was in for an antisocial night of awkward cooking with my dad hovering around instructing and doing the majority of the work. I was skeptical about being around other people simply because I thought I was going to be uncomfortable. That's pretty unfair both to them and to myself because I didn't even give them a chance before feeling like I wasn't going to be accepted within the group or have a reasonable time around them. My dad bridged this gap long ago and, much like last night, wasn't preachy or socially reserved, but (quite) funny, relatable, and more than anything else, an interesting person.  It's hard to see from the kid's view, as they're the kid - they're used to the parents being guiding, the disciplinarian; it's hard to see parents as people on their own.

Cooking


After all of this went down, we got to the cooking. It was crowded in my small kitchen, but everyone meshed together well. I talked to people about soccer, music, and their lives at the University. Having this time to spend with others and share an activity my family frequently partakes in was enriching both for me and for the students spending time at our house.

In short, it was really damn cool.

I'd do that again in a heartbeat.

February 19, 2015

Multi-Dimensional

Intro


So I kinda want to talk about people and what makes people people this time around.  I feel as if I've been walking through the halls of my school and looking around only seeing a few individuals, and others that kinda blend together.  Everyone has some kind of personality, even if it is buried quite deeply.  Being able to find it is the fun part.


Categories


Now, the definition of 'personality' points us to analyzing people and categorizing them.  This is obviously and unarguably a human behavior, as categorization is the basis of our memory and greatly affects how we interact with pretty much everything.  A popular NPR program called Invisibilia did a great show on categorization a few weeks ago, and it was quite entertaining and helped me realize that we not only do this to objects, but we do it to people as well.  Think about it - it's not even a matter of if you do it, but a matter of how much time it's been since you did it last.

So, yes, we have categories.  The first that comes to mind is the popular category (of course, what else).  There are certain characteristics which may differ based on location, age, or whatever, but there's a generic mode which is typically followed.  And what I've come to notice is that these people aren't any more popular than people not in the group, they have just assumed (perhaps wrongly) that they occupy the highest echelon of the social spectrum.

There are others, of course, but they seem to fall underneath, to the wayside.  Why?  There's a lot of psychoanalysis behind stuff like this, but the 'safety in numbers' idea comes to mind here. I don't necessarily mean safety from bodily harm, but safety in terms of security of the self; surrounding one's person with friends (whether they're loose or close friends) will provide a false sense of confidence in one's persona - once they're gone, the socialite becomes deflated.

Redeeming characteristics are present in everyone, however, and it's hard to look past the shell sometimes.   Everyone is transparent, even if it's only in small degrees.

Finding a Source


Talking to someone is the first step.  Just having a conversation is the most definite step in the right direction for anybody wanting to get to know anybody else for any reason.  Communication like this will lead to learning.  Like my friend Logan, who was (for a while) considered a nerd, was in love with Taylor Swift (and proud of it, I might add).  Looking at him do his homework and compete in intellectual competitions, you couldn't even begin to understand his dedication to her - it was intense. This, obviously, made me break a stereotype.  Yes, they exist for a reason, but even those belonging solidly to a category have a fountain of creativity and uniqueness that cannot be found in another.  Being able to find this in others is exciting, and is a motivating factor in not being nice to people, but giving out genuine kindness; your peculiarities may not be the same as someone else's, but all of us have them.  We all belong to the same category after all.

R-E-S-P-E-C-T


Cheesy and kinda stupid, yeah, but it's worth.   I talked in the above paragraph about everyone belonging to the same category, and that's true.  But another main component has to be taken into account, and that is the one of respect.  Hard to understand and even harder sometimes to give to others, respect is omnipresent.

In terms of respect, I have a basic policy that I try to follow: 'give increasingly larger amounts of respect until it's deemed that [insert other person] doesn't deserve it'.

Now, fighting through the categories I talked about earlier is what makes this incredibly hard - treating everyone the same way with the same level of level-headedness and intelligence is what's supposed to happen, but it gets thrown out the window when a pre-conceived idea of what a person is going to be like overrides the respect policy.  And this is where the internal struggle occurs: do I judge them based on how I think they should be, or what they're going to say five minutes from now?

It's a million-dollar question, and it's a fuckin' hard one to answer.

A dilemma, yes, but an impossible one?  No.  It's a hard decision, but it's gonna come down to whether you want to feel better and more confident about dealing with others now or later.  Most would say now, but that'd involve reanalyzing and actually confronting another human being, so that's a turnoff.  And then your stereotypes might even be proved right, and you'll feel smug and proud of yourself.  But eventually, everyone will have to step up and actually see that nobody is at the higher end of any spectrum.  Finding a way to beat your ideas of what people might be like is as simple as asking a few words (toned as a question) and then replying, making a joke, doing something goofy, or taking a stand for someone you might not have otherwise been willing to defend.

It's all the same for everyone.  The spectrum is grey area, a pool where everyone drifts and knocks into each other like bumper boats.  It's more worth it to go out in the middle and bump into all the other boats and have fun than it is to piddle around in the corner because bumping into the other boats is uncomfortable.

We're all people.  We might be different, but it's our differences that make us equal.  Whether you take it to heart or not is up to you to decide, but willingly diving under now will make you much more accustomed and willing to deal with everyone than plunging in later.

February 18, 2015

First, Some Ambience

Intro

If you didn't read the sidebar, you should.  This post is about things that I love to do, and things that I love to do a LOT.  This might be a bit of a long read, but it's my first post, so some slack is expected.

Music


I like music.  It's an awesome thing to experience and be involved in.  I'm not an accomplished musician by any means (talk to my recording partner Louis about that), but I feel that I have a reasonable ear and an amount of knowledge that the average listener won't have.  I have an affection for the music of the late 19th and early 20th centuries, especially stuff from Camille Saint-Saëns and George Gershwin.  Saint-Saëns is intriguing because of his unusually complicated music but careful structuring that allow the sound to be somewhat accessible to new ears; Gershwin, on the other hand, sounds like the 20's.  Saint-Saëns earlier works were considered 'musical poetry', and such style is exemplified in pieces like Danse Macabre.

This is not a picture of Camille Saint-Saëns


Gershwin, interestingly enough, studied classical music (such as Saint-Saëns) in France in 1924, three years after Saint-Saëns death.  Their musical styles differ, however, as you can hear in Gershwin's Rhapsody in Blue (this song is featured in the 2013 film The Great Gatsby in Gatsby's introductory scene).



They're both great works, and somewhat representative of what each composer has to offer.

Also, if you read the sidebar, I'm a Bluegrass fan.  I love Tim O'Brien, and he's well-characterized by his instrumental, Land's End/Chasin' Talon.



Other great Bluegrass artists include Alison Krauss and Union Station, Rich Mullins, and a few others I'll talk about down the line.

Video Games and Other Activities


I looooove video games.  I'm an avid player of StarCraft II, and it's easily my main game right now.  I like fast-paced 1v1 action, and I'm not much of a team game fan (like League of Legends, DotA2, or CS:GO).   I played Brood War back in the day (admittedly quite poorly), and I tried to play Runescape dedicatedly for a while and lasted for an entire summer, but never played it regularly after that.  I've always been playing StarCraft II, and even though I'm only a Platinum Terran, it's still fun for me.  I also love watching tournaments just because of the sheer excitement and drive to play I get from spectating.  Sometimes I think about how that works - simply seeing something you have an intense passion for spurs a reaction, a strong desire to work and progress in that passion.

Anyways, I am a Nintendo fan (Super Mario Sunshine ftw hell yeah), and I like to watch SSBB and SSBM tournaments.  I'm horrible at both games, but they're fun to watch and to see how open and down-to-earth the competitors are kinda makes me feel like the scene for these games could get really big really fast.  I recently watched the Apex 2015 tournament, and it was much more relaxed in terms of player restrictions than, say, a professional StarCraft II tournament.  In SCII, players have to sit in soundproofed boxes and stuff.  In SSBB, I thought it was awesome that the competitors were sitting next to each other in the open air (even to the crowd), talking and laughing in between matches.  That's what I kind of imagine in terms of my eSports ideality: in the end, it's all about having fun.  Playing the game for fun with the people you like to play it with, just like when we were kids.

That's good for a first post.


I think this went well, I really do.  I'm excited to write another post for everybody, and I appreciate everyone that even decided to glance at the article.  Thanks for reading everyone, and I'll be back soon.