Shame and…

Shame and migrations

It turns out then, when trying to bootstrap a Ruby on Rails application after pulling it down from a repository, it is really important to set up a database for the application before you try to start it. Yes, like a pony and pony food, any web application needs a database to function properly. Before you start, run

rake db:create

and

rake db:migrate

The create command will create a new MySQL database on your local machine, unless you specify otherwise. The migrate command will configure the database with all the tables and relationships that are needed for it to work properly. The configuration instructions are in the applications model and migration files.

That way, everybody is happy and you don’t look like a complete noob in front of half the development team for two weeks. Not that, uh, that has ever happened to me.

God as a thought-ending cliché

I recently watched an excellent Neil deGrasse Tyson lecture several times. In it, he made an excellent argument for the origins of the “Intelligent Design” theory and how to confront it in the public discourse.

He brought up the instance of Sir Isaac Newton, one of the greatest minds in human history. Tyson listed his major achievements, most notable of which were his understanding of gravity and the motion of the planets, as well as Newton’s somewhat flippant creation of calculus. However, when it came time for Newton to explain the perturbations of the planets’ orbits by one another’s gravity, he was stumped. With what he knew, Newton could not account for this perturbation and could not understand how the planets remained in stable orbits around the sun. Rather than delving into the problem with a rational mind and keen intellect, he simply surmised that a great, divine power was at work. Possibly the greatest mind in Western culture was confused for a moment and explained something away by claiming that a god did it.

The problem with simply chalking a natural phenomenon up to the supernatural is that it instantly ends all analysis and intellectual work. Thought and investigation on the matter simply stop. Not only does the former investigator not have a good explanation for the phenomenon, the entire human race is poorer for it. It took nearly a century after Newton’s death for the perturbation of the planets to be adequately explained with science.

The same thing is happening in the case of intelligent design and evolution. The reason that evolution should be taught in the science classroom and intelligent design is not is that the possibility of evolution has scientific evidence behind it. ID does not have any scientific evidence behind it, just a bunch of idle speculation and lack of curiosity about the world. Science requires a curiosity about the world and its workings. ID discourages investigation and curiosity. Therefore, it cannot be considered science or a part of a proper science curriculum.

[youtube=http://www.youtube.com/watch?v=0vrpPPV_yPY]

Shame and iPhone app approval

Apple has been touting the relatively high number of applications as a measure of success of their iPhone OS platform since the App Store got big. However, this brings up that “quantity versus quality” argument. If you take a look at many of the applications on the App Store, you will find that many of them are lacking in features, quality, and utility. From there, we can easily lead to a discussion of Apple’s often inconsistent application approval process, where excellent applications may be thrown out for arbitrary reasons.

Apple has even started driving away some very talented developers with its App Store policies or, in the case of Joe Hewitt, developer of the iPhone Facebook app, the existence of an application approval process in general. Ultimately, who does this benefit and who does it harm. In the short term, it harms developers and consumers who live inside the Apple-approved ecosystem. In the long term, it will harm Apple, should they continue to do business as they have since the App Store went online in July 2008. However, as a publicly traded company, Apple is compelled to achieve maximum profits in the short term.

Apple relies heavily on advertising and word of mouth. While its products are increasing in popularity, the Mac and iPhone are hardly default choices in their respective markets. Apple would therefore benefit from pumping up the number of approved applications in the store to make the iPhone and iPod touch more appealing. This is probably why we see so much crap in the store. Apple is not concerned with maintaining quality on the App Store so much as they just want to help out their ad agency.

This is not the entire reason for inconsistency in the App Store approval process. I do not know first- or even second-hand how the approval process goes, but I suspect it goes something like this.

  1. Application binary arrives at Apple’s App Store offices for approval.
  2. App is installed on a device using ad hoc distribution or some other method.
  3. The lone reviewer of this app subjectively decides whether the app is worthy of the App Store.

My point is that the application approval process is very subjective. An application may have a good or bad chance of approval, based on who is reviewing it. These reviewers probably have a list of criteria thumbtacked to their cubicle walls and decided whether the app meets those criteria.

Apple needs to get on the ball with making the application approval process much more consistent and less arbitrary. They also need to clean house and get rid of all of the junk that no one is really going to need. They also need to work to retain experience developers by giving them preferential treatment in the application approval process. If a developer is on version 2.0 of their product or higher, chances are they are doing some quality work and need to be let through. It’s the newbie developers pushing free or $0.99 apps that need to be watched more closely. Also, most of us can handle swear words. There is no reason to throw out an app because of a dirty word in a screen shot.

Apple used to be the Lexus of consumer electronics companies. Only the best would do. Now here they are with a botched application approval process, letting useless crap in and driving experienced,enthusiastic developers away.

Shame and the media

Tonight, the IUPUI Freethinkers had their weekly meeting. The topic this week was the media. The ultimate consensus was that the media has developed some serious, deep-seated issues.

Extremism sells and most news outlets are corporate entities or owned by corporate entities. This is the unfortunate truth. Unfortunately, extremism does not make for good reporting. It does not serve the American people well. Until we start demanding en masse decent, in-depth reporting, we simply will not get it from the corporate interests that own our media.

Fox News and MSNBC both engage in the presentation of polar extremes as rational, mainstream methods of political thought. The truth is, they are not even close. They are political extremes that do not inform the populace or encourage civil discourse. They are simply talking heads. They just make noise.

Since ideologues in the media come down on issues so cleanly and predictably, however, politicians can make them part of their strategies. Politicians, in particularly fierce races like last fall’s Presidential race, can fine tune their arguments to divide and polarize the American public, to create dichotomy where none need exist.

It is necessary that we as a nation stand up and announce that we have the right to clear, concise and in-depth news reporting. We deserve to hear the whole story without major facts and events being cherry-picked to suit some egotist’s or capitalist’s agenda. We need to know what is going on out there. We cannot just trust that the people with the loudest voices will let us know what is really going on.

The Daily Show – “For Fox Sake”

Shame and caffeine

I am a caffeine addict. As a demonstration of how truly pathetic I am, I have not broken myself of my attachment to the nectar of the geeks. Don’t get me wrong. I think that caffeine can be pretty awesome in some cases. However, as hypocritical as this sounds, it probably should not be a daily habit. Withdrawal is just no fun.

Yesterday, I had no caffeine whatsoever and it felt like somebody parked a tractor trailer on my head. It was one of the worst, most vicious headaches I have had for a while.

Caffeine withdrawal can have a number of unpleasant symptoms, mostly headaches, fatigue, mood swings, and irritability, though it varies from person to person. When caffeine consumption becomes a part of your daily habit, it can be a difficult habit to break. The physical symptoms that I described earlier are just one part of caffeine withdrawal. There is also a psychological component. You get used to picking up a bottle of soda or a cup of coffee. It is just part of your routine.

Caffeine, to me, is a good booster. It should act as a “safety net.” If you feel like your energy or concentration is waning, then it should be there to give you a little boost until you have completed whatever it is you are working on. I think that it should not be used first thing in the morning and it should not be a source of energy. I think it is much better to get your energy from healthy food and sleep. I feel sluggish and depressed after I come down from caffeine. After going a couple of days without it, I find that I can focus better and get through my day much more easily.

Shame and Informatics

I have been in the Informatics program at IUPUI since the beginning of 2008. I feel that so far, it has been an overall positive experience. However, if I were to offer advice to someone considering Informatics as a major, it would be this: Do not rely on the Informatics courses to give you the skills that you will need to land a job.

Lacking applicable skills
If you are trying to become a developer of some flavor, the courses offered by the School of Informatics will not adequately prepare you, unless you want to do Flash/ActionScript. For someone who wants to work with a real man’s language, like PHP, Ruby, Java, or C, walk down Michigan Street and get a certificate or minor from the School of Computer Science. Even better, save some time, money, and sweat and make CS your cognate area.

Learn independently
I have found that as a result of the School’s lacking technical instruction, it has become necessary for me to learn job skills on my own. When I was an intern at Mobi Wireless earlier this year, I was dropped into the deep end with Ruby on Rails. I went in knowing nothing about Rails and came out with a working knowledge of the framework. Much of that knowledge and experience came from independent work while on the job.

I think that there are a lot of smart, passionate, creative, and talented people in the School of Informatics, especially at IUPUI. I have had many opportunities to work with them and learn from them. I do not blame them for the screwy curriculum. This is a new area of study and a new school. It will take some time to work out the kinks.

I am a slacker

I keep telling myself that I will sit down and write something on this thing. Why? There is a certain level of satisfaction in sitting down, typing out some stupid post, and submitting it for everyone to see. It makes me feel a little important, to be a producer of content, regardless of what it is, of what quality it is, or whether somebody actually reads my inane little rants. I do not think that I am very good at writing. It is just something that I like to do. If somebody reads, great. If not, then I will not be too surprised.
I will try to write more often. It helps keep the creative juices flowing. I do not really have any excuses not too.

Mobi internship

Since I am grasping for blog content at the moment, I have decided to put up the executive summary of my Spring/Summer internship at Mobi. It was fun. There, I said it. I am so sorry for this cop out. I will do better next time, I promise.

From March 16, 2009 through July 29, 2009 I was a development intern at Mobi Wireless Management. Mobi is in the process of creating a Ruby on Rails-based web application that will allow companies of all sizes to manage their corporate cell phones, plans, and even manage mobile policy on a per-company basis. When I arrived at Mobi, development on the application was underway for over a year and Mobi’s sales team was already beginning to pitch the service to prospective customers, including Ford.
While at Mobi, I was given a set of duties. Some were long-term assignments that lasted for the duration of my internship. Others were shorter assignments that lasted for only a couple of weeks. My main responsibility was researching and implementing automated testing for the Mobi application. Cucumber/Webrat was the testing framework that was decided upon, in favor of Selenium. Cucumber creates a virtual browser in which it runs the tests. Selenium slaves an actual browser, usually Firefox, to run the tests. In the process of writing definitions for these tests, I learned a great deal about Ruby and how the Ruby on Rails framework functions. Jason Sisk also emphasized that he wanted me to learn web programming from the perspective of constant, comprehensive testing.
Other duties included building an ROI tool that would aid the Mobi sales team when pitching the application to prospective customers. That task took me about a month to complete. I helped to grow and maintain Mobi’s presence on Twitter. This involved following people who were in Mobi’s field, were a potential customer, were Rails programmers, or were related to Mobi in any way possible. Bluefish Wireless’ director if IT, Josh Garrett, helped oversee Mobi’s use of new media and worked with me on the Twitter project. During the latter half of my internship, I assisted one of Mobi’s team members in verifying and populating the Mobi device/plan database. This was a very time-consuming task, as it involved manually clicking through page after page of devices, plans, and plan features on Mobi’s website and comparing it with what was on the Tier 1 carriers’ web sites.
When I started this internship, I thought I would be doing more development on the actual site, rather than testing. However, I did end up making significant contributions to the Mobi codebase in the form of Cucumber tests. Jason made no secret that I would be spending the bulk of my time developing tests for Mobi and he stressed the importance of having comprehensive tests for a corporate-grade web application. Overall, I think that the quality of my work was pretty good, given the level of my knowledge and experience in this field. I came in knowing most of the basic philosophies for writing clean, functional code and I applied these on a daily basis. While learning Ruby and working with it, I learned many of the interesting things that one could do with it syntactically. I learned how to think of web programming in whole new way. I used to think of it as a bunch of files that somehow came together to perform a given task. However, it is more of a flow. The different tasks that a user would complete are the focus. The individual files and lines of code just enable that. This gave me a fresh perspective on web programming and I was able to get a clearer view of the Mobi app when working with it.
While my internship was an overall positive experience, there were a couple of areas where I think I could have improved. I think that the main thing I could have done was devote more of my time and energy to developing my own personal Rails application, a project that Jason endorsed heavily. I think that this would have made me a little more confident when working with the Mobi codebase every day. Naturally, this would have made me more confident when doing Rails development in the real world, if that ever happens. Jason also lent me a book about agile Rails development and I should have given more time to that book. I did not get very far because I was so focused on creating a comprehensive testing suite.
If there were another student who wished to intern with Mobi, I would advise that person to know exactly what they want to learn and let Jason or whoever is supervising that intern. Jason knew what I wanted to learn and built the internship around that.

Shame and Photoshop

There is a mandatory Photoshop contest where I work. (For those who are unaware, I work at IUPUI, staffing computer labs part-time.) Part of my job is learning to use various programs, so that I will carry these skills out into the workplace and also so that I can assist people while I still work here. That is all well and good, but I disagree with how I am being asked to prove my skills.

I am supposed to create, in Photoshop, a TV-show related poster that is humorous and includes at least one face taken from another photo. Essentially, what they are asking me to do is to sabotage my own work by making it ugly. I love photography. I love capturing an image and allowing it to speak for itself. If it does not look quite the way I had hoped, I will alter the photo so that it looks just right.

This is something totally different. I am being asked to put together a Frankenstein’s monster of an image. Some image that has been hacked and attached and pasted from multiple sources. Something that does not look like anything nature would produce or that I would be proud of.

Given the nature of the assignment, there really is no way to make the end product conform to my aesthetic tastes. I will simply have to bite the bullet and endure the self-imposed shame of having something that blood-curdlingly ugly attached to my name.

Shame and teamwork

I recently helped complete a group project in NEWM-N110. I felt good about what we had made until after seeing what the other groups had done. Our mock-website was shitty and sophomoric in comparison to most of the others. Maybe I am just being too hard on myself. I felt like our entire presentation hinged on the wit of our main presenter. He was using his charm and sense of humor to pass off a piece of dog shit as a website. This is unacceptable to me.

The grades did come back and we got a score of 86%. I felt we could have done much better. There were specifications that were laid out that we did not include. There was no video and there was no audio. A potential user would not be able to experience the thing we were selling. We were supposed to be selling something and we did not. We also id not allow for any kind of community to spring up around this website.

We suck. We suck so badly.