Oct 10 2009

Hand the Feed That Bites

“Hi Shawn! I do read your site on occasion but I don’t remember to check it often. I won’t even pretend to say I pull it up every week to catch up. I’m just too busy with my hectic life to keep checking back.”

Hey kids! Shawn Thomas here with a special offer!

Do you often find yourself lost in a backlog of blog entries posted by your friends and feel like you have no hope of ever catching up? Do you often forget your best friends’ homepage URLs even though they’ve had them for years? Does this ever stop you from enjoying the interpersonal discourse that the Internet makes easy?

Well, do I have the product for you!

Did you know that you can read my blog entries without having to remember to visit my site? It’s true! Such wondrous technology exists! I know it’s such a hassle to remind yourself to read my electronic ruminations, so why not make it easier? Subscribe to my RSS feed!

What comes with a Phaysis Dot Com subscription? Everything you see here (except for the layout, and the page graphics, and all the other stuff). But that’s not all! Whenever I make a new entry, it will be posted instantly to my newsfeed.

How much effort will you expect to spend on this modern marvel? A lot? A whole lot? A crap-ton? It’s yours for the low, low price of EASY. It’s a patented process we call 1-2-3-Feed! Just follow this easy THREE STEP METHOD:

  1. Find an application called a “feed reader”. You can use one of the many, many readers that are offered as a service by many of the most popular websites. One popular example is Google Reader. Have a Facebook account? Use Facebook Reader! How about Myspace? Using one of these services allows you to follow all the newsfeeds you want without ever having to go to anybody’s website, no matter where you happen to be!
  2. If a site you love to read provides a feed, there are two easy ways to tell. The site will provide you with a link to their RSS or Atom feed, or your web browser will notify you with an orange “RSS” logo. Click either the link or the logo to find the URL of the feed. Copy that URL.
  3. In your feed reader application, find the “Add a feed” or “Subscribe to a feed” button. Press it. You should be given a form where you can paste the URL to the feed you want to subscribe to (copied in Step 2). Paste that feed. Finally, click Next.

That’s it! You should be subscribed! Yes, it’s that easy to follow anybody’s feed. Amazing!

Act now for a taste of the easy life. RSS Feeds are Standing By! Never be lost in blogging history again!


Aug 13 2009

A Phaysis of Rebirth

So. Welcome to the new Phaysis-point-oh. My nine years with Prohosting have drawn to a close, and with the change in webhost comes a change in journaling engines. After 9 years of trying, and failing, and trying, and failing, and trying again (and then failing), I have given up on building my own engine and have finally decided to take the path of least resistance. Phaysis.com is now powered by WordPress. Resistance is futile.

During the site’s downtime (you did notice it was down, didn’t you?), I took the opportunity to convert all my old journal entries from the original engine (and a long-lived hack) called “Sojournal” (clever, ain’t it?), into a format suitable for importing into WordPress. Took a week of work to build the conversion script. So after installing WordPress on my new webhost, doing some basic configuration, and selecting the temporary design theme, I imported all of my old entries.

Now everything I’ve written over the 6 years I used Sojournal are instantly accessible by tag, category, archive, permalinks, and by the nifty search box to the upper right. Amazing how handy that stuff is, considering that for years the only way to read specific entries in Sojournal was to step through the pages sequentially…aaaaall the way back to the start. I know a few of you who did that, and I apologize for never fixing that design oversite for so long.

In the future, I plan to post an import conversion how-to with code and samples. Because I’m pretty damn proud that I was able to identify the need, start the project, plan the solution, and implement the code necessary to finally, for once in my unproductive hobbyist career, finish the damned project. (I have to celebrate my victories, no matter how insignificant they are.)

The upside to using WordPress is that it’s one of the most widely-used blogging engines around, so there’s a ton of support, themes, plugins, widgets, debugging, etc. So the heavy lifting has been done for me already. And that’s intensely liberating, because after years of groveling at the text editor with no less than five journal-engine abortions — “Glyph”, “Raganotes”, “Craftix”, “Ph::Thing”, and most recently “Munde” (the names are more clever than the code) — I can move on with my life and get to posting. Which is why I started this site 9 years ago (I promise you).

The downside? Spambots. Common attack vectors. Well-published vulnerabilities. A treadmill of upgrades to fix problems. Actually, the upgrades are fine, since the pen-testing is done by the developer community instead of me. And the final downside: homogeny…that’s a tough one to overcome. Everyone has a blog; what makes mine so special?

This is my blog.
There are many like it, but this one is mine.
My blog is my best friend. It is my life.
I must author it as I must author my life.
My blog without me is useless. Without my blog, I am useless.
I must write my blog true.
I must shoot the shit straighter than my blogroll who is trying to ping me.
I must bullshit him before he tracks back. I will….
My blog and myself know that what counts in the blogosphere is not the flames we fire,
the noise of our posts, nor the threads we make.
We know it is the blog hits that count. We will hit….
My blog is human, even as I, because it is about my life.
Thus, I will learn it as an author.
I will learn its permalinks, its categories, its tags, its comments,
its pages, and its blogroll.
I will ever use it against the ravages of annoyances and indifference.
I will keep my blog clean and ready, even as I am clean and ready.
We will become part of each other. We will….
Before RSS I swear this feed.
My blog and myself are the defenders of my personality.
We are the writers of our emotions.
We are the presenters of my life.
So be it, until there are no more emos. PEACE.


Mar 16 2007

From Scratch to Soothe the Itch

It’s growing. The itch to redesign Phaysis from the ground up is growing. Not just a redesign, but a rebuilding. It’s my webspace, and I should damn-well start doing something with it. I need a blog, a gallery, a space for uploaded files, RSS feeds, some commenting code, and, among others, a method to email me from a form.

I do have some of that functionality already, but it’s spread out in disparate pieces of seperately-maintained code. Currently, I have a journal viewer and a journal writer; two seperate pieces with their own libraries and very little shared code — totally inefficient. I have a form-mailing script which is a few major versions behind the latest revision I’ve written for use elsewhere. I have a fortune-cookie generator — cheesy and oh-so 1998. I even have a space where I can upload files, but the moment I share a link to a file with a friend, the URL for the rest of the space is easily discernable and other files can be grabbed. For a gallery, I have a static html page (yes, static) that pulls in the image files that I resize, upload, include and annotate by hand. There’s no tags, no categories, no users, no comments, no feeds. On the blogosphere, I’m rockin’ my own island. And my itch to rebuild it all is growing.

I’m having to learn and live with WordPress in the order of building the knitting site for my client. I vehemently hate to admit it, but I like it. It hurts to say so, because a) it’s an already-built piece of software, b) it’s written in PHP, and c) it’s subject to the same problems and vulnerabilities every other WordPress installation may be subject to. But it’s damn easy to install, configure, and use. I’m torn.

I guess my biggest problem with using something like WordPress is that I can’t help but feel a twinge of defeat and sadness when I go to a hacker buddy’s site one day and happen to notice that instead of reinventing the wheel as is sometimes the hacker creed he has, instead, installed a set of tires and has gone on about his day. It’s true that in this day and age nobody needs to know any programming to be published online, but when I see someone take the easiest road instead of using their skill for their hobby, my own stance on my hobby is challenged.

So I have two roads, really: the easy, pre-packaged route to my apartment home, or the difficult trek uphill to my own cabin on the mountain. Whichever path I take, the itch remains until I reach my destination.


Dec 17 2006

Change of Plans

I’m seriously wondering if there will ever be a future for me in technology. My current project, developing a storefront site for a friend of mine, is moving really, really slowly, and it’s all my fault. You see, computers are my hobby; most of my non-work, non-sleeping time is spent at a computer doing god knows what. Sometimes, I even write program code. But when I mix money and heavy expectations in with my love for tech, what I get is cold disdain for the stuff and me not wanting to do much of anything.

The project itself is changing. Previously, we had set forth to write the shopping and catalog system from the ground up. I was planning the database, creating the models, thinking of workflow and interface design, doing what I could to get something usable. But I was moving not fast enough for my client. And there is the rift. What accounts for lead development time is too long for the customer who needs things operational now.

So I’ve completely scrapped the original plans to use Ruby on Rails to build a storefront. Instead, I’m going with an opensource PHP alternative, ZenCart. I know squat about PHP, but what I’m seeing is easy enough to understand somewhat. Nevertheless, the entire solution is prebuilt and usable from the get-go with a little configuration, which is exactly what the customer wants and needs. My plan is to set it up, allow her to add products and categories to her catalog and begin taking orders while I learn the templating system and make changes to the design.

For the paltry price I quoted, I should’ve gone with a prebuilt solution from the start. Now, that’s exactly what I’m going to do. I’ve gotten rid of the prideful righteousness that goes with saying “I completely wrote this”; such mindedness serves me no purpose and does a disservice to my client. Seems I’m finally understanding what the Industry considers a standard dictum: prebuilt is cheap, custom-crafted costs money.


Nov 14 2006

Jewels and Stones

So my web design opportunities have slimmed down. That’s to be expected, really. I had two people courting me for help, only one has come through with plans, meetings, and a set of requirements. So, naturally, that is the one I will work on.

I’ve already made a temporary site; it’s mostly in Perl and straight HTML. Got a webmail form, a hard-coded gallery, and a front page set up. The site is mostly served from cgi scripts using templates; each script is specialized to its own page. Boy, do I love Template Toolkit.

After some careful thought, investigation, and simple tests, I decided that Maypole, the Perl Model-View-Controller application framework, though it’s powerful in its own right, had some shortcomings. In one review of Maypole I read, the writer stated that he had a difficult time setting up Maypole to do anything beyond the sample demo applications that are provided in the documentation. I tend to agree with that writer. It’s got promise, but there’s some gnarly details that need to be hammered out before I can do something large-scale with it.

All this talk I’ve made about Maypole being the Perl equivalent of Ruby On Rails, I decided, in one evening of frustration, to actually look into Rails. After reading some docs, installing Ruby, Gem, and Rails, and building some demo applications, I’m kind of sold on the idea. A simple application can be built in one night, a medium one in a few, and a complex one in a few weeks…given I can focus on the task.

Ruby is a strange and foreign language to me, given my history with Perl and Javascript. Everything is an object, like in Javascript, and everything returns something, like in Perl. In Ruby’s case, everything, from constants, to strings, integers, floats, and on up are a subclass of Object, and as such feature a few built-in methods. What most people call methods, Ruby calls messages. You have an object of a certain class, and it has methods that are called with messages like so: someObject.sayHello("Hi There") This is similar in structure to Javascript’s heavy usage of dot notation, but I think the depth stops at one dot. Ruby also has little need of the semicolon to punctuate statements; this I find alien and a little offsetting. They’re really only needed for multiple statements on one line, otherwise the newlines delineate statements.

Perhaps one of Ruby’s greatest strengths, one I’m barely understanding, is its ability to encapsulate blocks of code and store them, and their variables, into persistent chunks to be thrown around as closures, iterators, etcetera. This is where curly braces are most likely to be found. Ruby doesn’t require curly braces around methods, loops, conditions, or anywhere else; those are enclosed by the statement itself and its corresponding end statement.

Rails is programmed in Ruby, and it takes advantage of Ruby’s strengths. Most important to Rails is the class ActiveRecord, which is Ruby’s version of Perl’s venerable Class::DBI module; each object of that class corresponds in some way to a specific record in a specific database table. Coupled with that is a menagerie of other Rails classes such as ActionController and ActionView which round out the triumvirate of the Model-View-Controller paradigm.

Rails is much like Maypole in that it takes only a few real lines of programmer code to make it work. When one creates a Rails application on the command line, Rails builds a generic framework of directories, templates, scripts, tests, and configuration files you can then edit. Once you configure the application to use the database, and have created your tables, you can then ask Rails to create for you a scaffold of classes, templates, and controller methods so you can start manipulating records in the database right off the bat. Once you are done with the generic “CRUD” methods (Create, Retrieve, Update, Delete), you can then replace them with your own custom methods.

As good as all this sounds, what makes me balk about the framework is that, to the uninitiated, Ruby On Rails has some damnable voodoo in it. By this I mean that there are requirements to the way you name your database tables, the fields in those tables, and your application classes; you must conform to certain naming conventions for Rails to automatically see and interact with them, elsewise you’re scratching your head trying to find a way to force Rails to see things your way (which there are ways).

One such naming convention is that your tables must be a plural of what they hold; for instance, you have a table where each record is a “toy”, therefore the table must be named “toys”. Rails has singular-to-plural inflection code built in. Your model must be named “toys”, your application controller class, “toys”, your templates will be in the “toys” directory. Some damnable voodoo indeed! I’ve yet to discover where I can expect Rails to do this, but there are ways to circumvent it, fear not. Most of Rails’ personality is configurable, but doing so makes so much of the automatic things that Rails does fewer and farther between.

So this website I’m building; it’s turning into this smallfry e-commerce storefront with multiple vendors, multiple products, pictures, a blog, a webmail system, back-office report generation, and so on. It gives me trepidation to think what all I have before me. I know I’m not going to get any barebones functionality ready before deadline, but it’s my hope that my client will understand and will be lenient on me. Learning a new language, discovering the powers and caveats of a new framework, trying to handle the things in my personal life…it’s a lot of work.