Monthly Archives: August 2012

Collected Quotes July/August 2012

I read like a wolf eats.
I read myself to sleep every night.
— Gary Paulsen

There is nothing on this earth more to be prized than true friendship. — Saint Thomas Aquinas

If you surrender completely to the moments as they pass, you live more richly those moments. — Anne Morrow Lindbergh

I know that when people pull apart, they usually employ misunderstanding as a weapon, deliberately getting hold of the stick’s wrong end, impaling themselves on its point in order to prove the perfidy of the other. ― Salman Rushdie, Fury

Open a book this minute and start reading. Don’t move until you’ve reached page fifty. Until you’ve buried your thoughts in print. Cover yourself with words. Wash yourself away. Dissolve. ― Carol Shields

Always the beautiful answer who asks a more beautiful question. ― E.E. Cummings

Never let your sense of morals get in the way of doing what’s right. ― Isaac Asimov

Good news travels fast; bad news travels faster.

We are drowning in information, but starved for knowledge. — John Naisbitt

A man who procrastinates in his choosing will inevitably have his choice made for him by circumstance. — Hunter S. Thompson

The reasonable man adapts himself to the world: the unreasonable one persists in trying to adapt the world to himself. Therefore all progress depends on the unreasonable man. — George Bernard Shaw

There can be no effective control of corporations while their political activity remains. To put an end to it will be neither a short nor an easy task, but it can be done…It is necessary that laws should be passed to prohibit the use of corporate funds directly or indirectly for political purposes; it is still more necessary that such laws should be thoroughly enforced. Corporate expenditures for political purposes…have supplied one of the principal sources of corruption in our political affairs…  — Theodore Roosevelt, speech at Osawatomie, Kansas, “The New Nationalism” (August 31, 1910)

You were once wild, don’t let them tame you — Isadora Duncan

Love is an abstract noun, something nebulous. And yet love turns out to be the only part of us that is solid, as the world turns upside down and the screen goes black. — Martin Amis

Thanks to all the friends and inspirations who shared quotes: Anthony, Patrick, Janice, Alina.

from Rants, Raves, and Rhetoric v4

The Long Problem

We encountered a vexing issue where sections did not appear for the class list for students. We confirmed the students were properly enrolled. We confirmed the current date was between the dates for learning contexts and terms. We confirmed the access was granted to the students. Still, the sections were not showing, but the usual suspects of administrator or instructor error we not the culprits. Someone eventually figured out that the sections showed up in a student’s editor for showing hidden classes, but not on the classlist. Moving the section higher in the list caused other sections to disappear.

We found strange errors in the webct.log about: “com.webct….SettingsDAOException: Generic DB exception(SMS)-SettingsDAOImpl::loadSettingValue java.sql.SQLException: Numeric Overflow”. The stack trace talked about oracle.jdbc.driver.NumberCommonAccessor.getLong which for the Oracle JDBC driver to react like this… We knew was bad. Open a ticket ASAP with Blackboard with a high severity bad.

Then we noticed these errors: “com.webct….NewMemberEJB METHOD: isRoleHasAccessToLc Failed to get sms setting for lcId =9999999999999 and setting = restrictAccessSection_SSTU”. This restrict access had to be related to the students not being able to get into their sections. Failing to look up the value was the curious part.

In Java’s primitive data types, there is one called the long data type. It has a maximum value of 263-1, aka 9,223,372,036,854,775,807. (Yeah, 9 quintillion.) According to Blackboard, Inc., it should take a hundred years to use up the possible values. This supposes that values are added by incrementing them by 1.

It turns out the section copy tool adds a digit each time the section is copied. So the original has about ten digits. The copy has eleven. The copy of the copy has twelve digits. This is our third year in the product with the capability. We have three terms a year. So that is nine potential generations. So ten digit values become nineteen in three years not a hundred. Doh!

Blackboard’s workaround is to divide the numbers exceeding Long by a thousand. Of course, there is a sanity check to make sure none will conflict with existing values. Ugh. In testing I found changing any setting different than a higher context adds a new value to the database. So basically we have to fix every setting change our clients make not just access to sections for students.

Our legendary analyst figured out changing the setting at the institution level and applying to child contexts removes the settings. Of course, that removes the customization of each course or section.

from Rants, Raves, and Rhetoric v4

Counting

In the beginning I used TOTAL=`ls /d2lmig/*/*/bak/*/* | wc -l` to get a total count. All was good.

Until at around 55,000 files I got: -bash: /bin/ls: Argument list too long.

Then I used TOTAL=`find /d2lmig/*/*/bak/*/* -name *.bak | wc -l` to get a total count. All was good.

Until at around 90,000 files I got: -bash: /usr/bin/find: Argument list too long.

It happened that I was already using a for do done loop and getting a count for each bak directory. So I added within the for loop:

TOTAL=`expr $TOTAL + $COUNT`
if [ $RUNTYPE = “INTERNAL” ] ; then echo ” Running total = $TOTAL” ; fi

(INTERNAL is a value I pass at the command line that controls whether the email is sent to me or other parties.)

Comment out the TOTAL using find. Voila.

I know, I should have done it this way in the beginning. Sloppy code to go back and get the total. Maybe because I have this post here, I reference it and not be so bad in the future.

from Rants, Raves, and Rhetoric v4

Students Out PR Professionals

As a Valdosta State University student, we nicknamed the student paper the Speculator. Incorrectly reading between the lines were their specialty. Grammatical errors and spelling mistakes were part of their standard. But it was amusing to see them go after the administration. Not so much to be reported on when I made big mistakes.

As university staff, I made the Spectator in information technology articles on viruses, online elections, WebCT upgrade, and the portal. At first they made me nervous because I worried about them finding out about the skeletons. After a couple interviews, it became obvious they had no idea about the skeletons and would only cursory look at the topic without digging very deep. So it would good publicity and exposure.

The Red & Black as a daily published much more that the Speculator. Last year the paper moved to a weekly print but daily web. This week several students (Editor-in-Chief, other editors, photographers, etc) all quit in reaction to a memo placing editorial control in the hands of non-students and hiring professionals to take over more decisions in the creative process. Immediately the students setup a web site, Red and Dead, a Twitter account @redanddead815, a Facebook page. Their Twitter account was suspended for gaining followers too quickly.

At present, the whole story is extremely one-sided. A couple statements from the R&B board against the draft memo, dozens of statements, bloggers, and newspaper articles critical of the board. It is like the board is not even trying? Or unaware or unable to use the public relations avenues available to them. None of this means they are in the wrong or think they are in the wrong. It just helps the rush to judgment against them.

Maybe these students are in the wrong field? Public relations seems to be their strength.

from Rants, Raves, and Rhetoric v4

Context Menu

Almost everyone using a computer to access the Internet uses the left click on a link to go to its location. Exceptions might be left handers who switch the buttons on a mouse, those using screen readers, or similar small niche users of the Internet.

I tend to multi-task, so I will scan a page and open all potential links I want to check in a new tab. The  way I accomplish this is the browser’s context menu with a right click on the link. In both Mozilla Firefox and Google Chrome, the open in new tab (or window) are the first options.

Since my exactly what I wanted to check does not persist in memory, opening them all up in their own tab, lets me not have to remember. I can just circle back through the tabs.

So any time a web designer changes the context menu so it is not there, my blood pressure rises.

A decade ago, web designers were terrified of people stealing photos and source code, so they would disable the context menu. Back then, I would turn off JavaScript from running, go to the page, download their images and source code, then email it to them as a proof of concept that all they did was annoy people.

Today, it seems my nemesis is a support portal where the right click on a link operates the exact same as a left click. At least Ctrl+Click still opens the item in a new tab, which is what I want. I did not name the company in hopes it takes them longer to not break my workaround too.

P.S. It appears that they keep track of the last page visited, but updating a ticket does not make it the last one visited. So I end up somewhere else.
:(

from Rants, Raves, and Rhetoric v4

Universities and SIS “Innovation”

Several years ago, while I worked at a medium-sized university, there was a very similar incident like what happened in Student Is Sanctioned for Creating Class-Registration Web Site. A student wanted into a full class. So he built an application to routinely check for whether a seat was available in the Student Information System. The database administrator for the SIS noticed too much traffic from this user while looking into why the system was working too hard. My impression was the level of traffic was not at the Denial of Service level, but still something that needed to be addressed to improve the experience of others.

The CIO had a chat with the student. At the time it amused me because years before I had been in the same chair as the kid. After, the CIO joked about wondering whether to hire the student, the same as he had joked about me and a friend.

The student went on to develop a student organization site and other good things. He found the right outlet for him to express in code things to scratch his itches. Personally, I think this is good for the students and good for the university. However, a close eye needs to be kept on these students to ensure they make secure, stable, and long-term viable products. When the student graduates, there needs to be a plan for someone taking over the upkeep.

Since then, I have run across even professionals making these students’ mistakes of slamming a system with traffic. One administrator wanted to check whether we were up, so he wrote a JavaScript web page that would hit the development site we provided. It had one two machines, so when five people had that page open at the same time, they somehow got 4 on the same machine which croaked at that kind of load. Weblogic, in my experience, does not handle the same transaction for the same session when the first has not yet completed. Each subsequent transaction takes even longer than the first until it builds up to the point it is taking minutes to complete what should take a fraction of a second.

In general, developers will contact us about developing something to work against our system. We try to be helpful and advise what are likely successful directions. There are still mavericks, who will write something that causes a problem and we try to track down who it is slamming our systems. I consider it part of the job of running a system people want to use. Someone will try to accomplish things outside the normal enter a URL, type in a username, type in a password, click, click, click…. Heck, we write scripts to get around this.

These events are all opportunities to meeting and educating developers.

from Rants, Raves, and Rhetoric v4