RIT Week Numbers on Google Calendar

Posted in Uncategorized on June 30th, 2010

I’ve made a calendar for Google Calendar which displays the RIT week number (of the quarter) on the Monday that starts the week as a small icon.

You can add it to your calendar by adding the following calendar by URL:

http://www.masterpi.org/ritweeks/ritweeks.php

So far it only has 20101-20103 but I’ll try to remember to update it before the rest are needed.

The complexity of simplicity

Posted in Technology on May 7th, 2010

Note: Feel free to correct my science, or to expand on points that I’ve glossed over.

A neuron fires.  An imbalance in electrical charge and concentration of particles moves through a tunnel of molecules like a ripple in a puddle.  Reaching the end, it triggers the release of chemical signals which traverse a small gap and set off the process again in the next neuron.  Millions of times this occurs, transferring the signal down the brain stem, through the arm and hand, finally reaching a group of cells in the finger.

Those cells then carry out a chemical reaction with simple sugars and oxygen that are passing by in the bloodstream.  Oxygen which was freed from carbon dioxide by a ray of sunlight hitting the leaf of a plant, transferring its energy to chemical form.  The sugars originated from a different plant, thousands of miles away.  A blade of grass, eaten by a cow and digested with energy obtained from previously eaten food, a chain tracing back to the energy it obtained from its mother in the womb, and eventually to a bacteria somewhere in the sea near the dawn of life, absorbing a ray from a much younger sun.  All of this to create part of a hamburger consumed by the finger’s owner earlier in the day.  500 calories it had, all of them originating in the nuclear furnace of a nearby star and traveling to the burger via separate paths.

Just a few molecules worth of the stored energy is needed to change the shape of the muscle from long to short, in unison with other cells creating enough force to move the bones and flesh of the finger.  Down it goes, sending feedback all the while to the brain via sensory neurons, letting it know when to stop pressing and release.

A key has been struck, momentarily allowing electrons to flow from one metal contact to another, triggering another wave of imbalanced particles which charges the electric field inside of a nearby transistor.  Another flow of electricity is set loose.  Again and again this happens, the transistors translating the electrical impulses into logical abstractions.  Current races around the silicon chip inside the keyboard, being converted to a language which can be transmitted down the wire to the connected computer.

Inside the computer, another chip receives this signal and signals the Central Processing Unit.  For a nanosecond, the computer stops the calculation being performed to register the keypress.  A series of instructions which were loaded when the computer was turned on guides the signal to a storage place for recent keystrokes.  Another program soon comes along and asks for the contents of that space, and is informed that a lower case “h” has been pressed.  At this particular moment, this means that the “h” should be added to another storage place in the computer’s memory, and displayed on screen in the input box of a webpage.

A program running inside the webpage is informed that the contents of the box have changed.  It then asks the browser to retrieve as set of suggestions from a computer hundreds of miles away.  The browser can’t do this by itself, so it asks another program, which runs a set of instructions that send a message to a card responsible for handling network traffic.  This card sends and electrical signal down the wire connected to it, which is connected to another device on the other side.  This device has circuitry of its own which handles reading the signal and sending it back out on another cable.  This is repeated over and over.  At each point, including the origin, the energy required for all of these transfers is acquired from an electrical outlet, hooked up to a huge power grid, in turn controlled by more computers and humans who have eaten hamburgers.

At some point in the chain, the signal is converted from electricity to light, and races down a fiber of glass at the fastest speed in the universe.  At the other end it is picked up by a light-sensitive transistor and converted back to electricity again.  A computer receives the query eventually and looks at the stored compilation of what other users have been searching for over the last few years.  It finds the answer stored in the magnetic configuration of a disk spinning 120 times per second.  A signal is sent back out via its network card, back across the hundreds of relay points.  The network card on the receiving end tells the CPU that data is available, which lets the operating system know.  The operating system determines the correct program to send the information to.  The browser tells the program running inside the webpage that it got a response, which then asks the browser to display it below the search box.

The browser does some calculations and sends a message back down the chain to the graphics card, which changes the signal that it has been sending to the monitor.  Tiny lights inside the monitor switch on and off.  Photons travel to the eye of the finger’s owner and set off a chemical reaction that eventually reaches the brain, setting off a cascade of neurons firing, translating the sight into language and higher level thought.  The information is processed and another motor neuron fires.

End note:  It amazes me how much complexity goes into this simple action, and I haven’t even given the most detailed description possible.  I’d love to see this expanded even more by people who know more about other fields.  I like this action as an example because it bridges the gap between biology and technology, and describes an interaction between entities close to the pinnacle of both.

While I appreciate the complements…

Posted in Uncategorized on August 24th, 2009


I'm apparently singing at Java Wally's

I wasn’t informed that I’d be singing

A Simple Solution to a Crappy Problem

Posted in Uncategorized on August 20th, 2009

Have you ever been frustrated by a toilet which you have to use on a regular basis consistently flushing before you’re finished?  I present to you the end of your suffering:

Simple Solution

Yes, that’s right: everything you needed to save yourself was right in the stall with you all along.  “But wait,” you say, “isn’t that kind of a waste of toilet paper?”  It’s only a few sheets, however, if you do it right, and trust me, after a few splashes from an overzealous toilet you’ll find the temptation impossible to resist.

License to use this idea is granted only to those who promise to remove the toilet paper when they’re done.

Disclaimer:  I don’t know if anybody has thought of this before me, but even if they did I didn’t see it so clearly they should’ve done a better job informing the public.

Ubuntu 8.10 … err. 9.04

Posted in Technology on October 4th, 2008


::EDIT:: Looks like they updated the image my blog was pointing to.  I actually have been running the alpha/beta of 9.04 for about 5 weeks, and it’s pretty sweet.  Suspend is finally working completely correctly on my laptop which rocks, even though some of the need for it has been gotten rid of by the RIDICULOUSLY FAST BOOT TIMES.  Seriously, like <30sec.  Also, the new notification system is pretty nice, though I miss being able to click on things in notification bubbles (like sending a message to a Pidgin buddy who’s just come online).

::/EDIT::

I’ve been running the beta for a while now. Aside from not supporting my hardware well at all (my nVidia GeForce 4 MX and my Hauppauge WinTV-HVR-1950), it’s a snappy new release with lots of cool features. (Tabbed file management!)

Schedule 081

Posted in Uncategorized on August 22nd, 2008



Monday

Tuesday

Wednesday

Thursday

12-1

Data Comm

Graph Theory

Data Comm

Graph Theory

1-2

2-3





3-4

Beg. German I

Beg. German I

Beg. German I

Beg. German I

4-5


Multivariable Calculus


Multivariable Calculus

5-6

 


On web design, and more TYPO3

Posted in School, Technology, Web Design on August 7th, 2008

It’s been a while since I posted last, and in the meantime I’ve been working on creating a website for the Computer Science Community at RIT.  Designing many websites lately has led me to appreciate how far web standards have come since I learned HTML 4 with table-based design when I was younger.  It was a major pain to get anything fancy to work across multiple browsers; maybe it was partly due to my inexperience, but I think a lot of it has to do with improved support for standards.

I must also point out that I’m refusing to test my code on Internet Explorer 6, especially since I don’t have access to a copy to test it on.  For the large part I’m also not caring much about IE7 either for my personal site, though I’ve found that most things work well in both without extra tweaks.

My experience with web design recently has been almost pleasant, a nice break from the application or system level programming that I did mostly for school this year.  It’s good to work in a language where my artistic side can come out more easily, and to quickly create user interfaces that I am pleased with.  I think I’m going to look into re-learning LaTeX as well, on recommendation from a freind of mine.

Anyway, back to the CSC website.  This was a much more involved use of TYPO3 than before, using a lot more plugins to create a much more useful and interactive website.  It has News with RSS support, a Wiki, and Forums.  I’m slightly dissappointed that TYPO3 does not provide an easy way to hide frontend usernames/passwords from admins, at least in the most current version.

It made me realize however that I should probably just link it to one of RIT’s central authentication systems.  The passport.rit.edu system looks promising, almost like OpenID.  I did try to link it to OpenID, by the way, but the plugin requires that the OpenID server return some data other than basic authentication, which most OpenID servers (such as LiveJournal) do not provide by default.  If the RIT authentication attempt fails, I may go back to trying to get that working.

I think it’s a fairly attractive and useful site, but you’ll have to be the judge.  For now it is accessible at http://csc.masterpi.org/, but we’re hoping to move it to a Linux server with a .cs.rit.edu domain once school starts.

I notice that I’m tending to like very clean, minimalist design now, if I can branching off from a logo or theme as I did with the CSC logo.  Maybe I’m just lazy or maybe my subconcious is telling me the web is too cluttered looking and overly visually stimulating.  I generally don’t have lots of images to use, and my photo manipulation and drawing skills aren’t great, so maybe that’s why my designs are almost entirely judicious use of CSS.  Something to ponder anyway.

The Realm of MasterPi gets a Facelift

Posted in Uncategorized on July 27th, 2008

The conversion to TYPO3 went well.  I decided to completely redesign the look of the site, and I’m pleased with how it turned out.  I might even port the theme to WordPress.  Hopefully the content will stay a little bit fresher now, though I really have to come up with a project to put up that isn’t from highschool.

I thought about putting Cryosphere on, but right now it’s on the hard drive from my server that I run while at school, which resides in my desktop for the summer.  I was really pleased with my little development server I had running during the schoolyear, complete with LDAP-authentication and Subversion-over-WebDAV-over-https.  Now that I don’t have a static IP address other than my BlueHost account, the situation is less than optimal, however.

So, I went looking for a Revision Control System that could have multiple users committing to my BlueHost account, without giving them ssh access.  I was quite disappointed with what I found.  Subversion needs either multiple ssh accounts or mod_webdav_svn to support multiple users with encryption.  Bazaar is a little better, allowing http read, and blanket write access with users authenticated through HTTP, at least I think that’s what the documentation was saying.  Bazaar is also a distributed system, so technically only I need access to my copy of the repository, but then everyone on the dev team would have to have their own server.

What I’d really like to see is a SOAP or other standard HTTP based protocol for one of these systems, something in php or python that people could install on their shared hosting accounts and would have both browser and command line / client program access.  I’m considering writing one as a plugin for Bazaar, since it seems to have a good plugin interface, but I really don’t think I have the time.  Volunteers are welcome ;)

Adventures with TYPO3

Posted in Blog, Technology on July 25th, 2008

As I suspected, it was only a matter of time before some new fun project wrestled control of my free time away from this blog. I’ve begun experimenting with a CMS I found called TYPO3. From what I can tell, its not extremely popular in the US, and it’s targeted at small-to-mid-level business applications; so it was kind of off of my radar as a personal user.

I came upon it because it had one feature I was looking for in particular: the ability to host multiple websites from a single administrative interface. Big name Open Source CMSes like Mambo, Joomla!, and e107 have plugins or methods which provide this or something close, but they seem very hacked-together and not really what they were intended for. Specifically, creating a new website cannot be done from within the administrative interface, and usually involves some symlinking.

TYPO3 is different because it bases it’s ability to host multiple sites on an extension of the natural tree structure of the site. At any point in the website tree, you can assign additional URLs which are intercepted when they come in and pointed to the correct portion of the tree. For example, if TYPO3 is installed in the root of your web server, and accessed by www.your1stdomain.org, and you’ve set it up correctly, it would return a website based on a different portion of the tree than if it were accessed by www.your2nddomain.org, even though they both resolve to the same IP address.

This was the first unique feature that drew my attention to TYPO3, but I have been impressed by some of it’s other abilities as well. It has a plugin (which is almost so commonly installed that it shouldn’t really be considered a separate piece of software) which allows you to base your website design on a static HTML file, and replace certain sections with content or navigation, based on the id attributes of the elements. You don’t even actually modify the HTML file unless you need additional ids to work with; all the conversion from static HTML to dynamic content is handled by a third entity, written in a language called TypoScript.

This adds to the learning curve of the software since there is a whole new language to learn, but it adds the ability to change the HTML template quite a bit without having to update the corresponding TypoScript, especially if the HTML is well written (using CSS, etc). This means that you can have someone who knows very little about dynamic websites or their implementation details write the HTML and CSS for you, and just convert it to a dynamic website using TypoScript. Also, it allows you to reuse the same TypoScript for many different website designs.

TYPO3 also has a good user management system and UNIX-like permissions. A user can also be restricted to a specific part of the page tree, say, a certain website, or just their homepage. It also has the ability to assign tasks to users with a workflow cycle e.g. Assign->Write->Review->Publish, as well as multiple workspaces (Draft and Live by default) and complete revision history.

I realize that most of these features don’t really help me as someone who runs their own website with little input from others, but I’m so excited about how cool they are that I might migrate my website over (excepting the WordPress of course, I’ve put too much investment in it, and it is an excellent blogging engine). There are some uses I can think of for having a multi-user CMS on my site as well: the SF3 website for example. I was looking through my homepage just now and realized how incredibly out of date both the information and the style is; though the code is as beautiful as ever. (I hand-wrote it back in 2005).

And so unfortunately I think my blog-enhancement project might get put on hold for now. Sarah bought me a journal (an actual paper one!) which makes private posts that just she can see kind of redundant, thus I’ve lost some of my motivation for the private posts plugin. One day I’ll come back to it, hopefully before WordPress advances 6 minor versions like it did the last time I stopped development on it.  :oops:

Threading Done

Posted in Blog on July 20th, 2008

I think I’ve got comment threading working to my satisfaction. I ended up using YATCP, and I was quite happy with the flexibility of it. The only problem I had was that it’s stylesheet was included after the main one, so I had to either edit the one in the plugin folder (which could be overwritten on upgrades) or add !important to every line of CSS. I opted for the former because it was easier for now, but I might look at a better solution for the future. I’ll have to look into how I can change the include order of stylesheets in WordPress; I remember having the same problem before with a different plugin.

I cleaned up some style issues with the rest of the site as well, and added syntax highlighting.

Next Phase: Private Posts