Lasso

Yesterday, a whole new world was opened up to me. I have discovered Lasso. I’d heard of it before, but only in passing. What is it? Lasso is a server-side language that bridges the gap between server/database and client, much like PHP, ASP, or Perl. However, Lasso is not open-source like PHP or Perl.

Lasso is quite easy to program in. It has a low learning curve (which is why I picked it up in one day), but surprisingly (and thankfully) it is not limited by that learning curve. It has Regular Expressions and other powerful aspects that make it a solid language to write applications in.

One of the best features of Lasso is how integrated it is. Lasso has built-in functions and APIs for Java, various databases (MySQL, ODBC, and FileMaker Pro to name a few), and other interesting things like the iCal format (incredibly useful for compatibility across multiple calendar systems).

In fact, I am using Lasso at work to write applications to synchronize a central calendar/work order system for our department (which will be used to collaborate with another department, as well). This calendar app will only be a small part of a larger workflow system designed to streamline customer requests and a new major aspect recently introduced to our department: digital signage. The district office sent 20 flatscreen TVs our way to be placed throughout the campus, and it’s our job to manage the system that puts content on those TV screens. This becomes incredibly complicated if you have, for example, 20 different orders to be placed on those 20 TVs; it is compounded if a different order or group of orders is placed on each individual TV. Nevertheless, the workflow system is designed to make that process much simpler. It’s not perfect, by any means, but as of today we reached the first iteration of it.

In any case, my job has become significantly easier with Lasso. I am using PHP for most of the programming (as I didn’t discover we had Lasso until an IT guy told me about it the other day), but I have integrated the two together yesterday and it has been working very well. Lasso isn’t free and originally only ran on Mac servers (which we currently use at work), but Lasso seems to run on Windows, Linux, and Mac servers now as well. You can find more information at http://www.lassosoft.com/ if you’re interested.

Anyway, if nothing else, Lasso has given my life new purpose. I see this as a learning opportunity, as well as another programming language to put on my resume. I am ecstatic to begin using it alongside FileMaker Pro database systems as well, as FileMaker Pro will also be a nice software environment to have thoroughly learned and placed on my resume. Life is good.

June 17th, 2008 | Remark

Diaries of an Excel Class, Pt. 1

October 26th, 2006. Today is the second time I have been to this Excel class. It is boring, and so I have decided to take some notes on how boring it is.

I look across the room and see unexcited faces with shallow tones. I’m searching for some kind of life, but there is none to be found. The students sluggishly follow the teacher’s instructions. I sit at the desk, unimpressed. As the teacher essentially quotes the textbook verbatim, I move on ahead in the book. I’m about four pages ahead right now and have stopped working since I began writing on this piece of paper. [Editor's note: I write slowly, so time passes very quickly as I write.]

She continues teaching and cites what she considers an “ironic” story. A colleague of hers called her on the phone today asking how to insert a row in Excel. She said her friend admitted that it was a “silly question.” Silly, indeed!

This woman may have the experience to teach (in our first session, she mentioned she had at or near 10 years of experience teaching public school), but in no way has she indicated that she has the knowledge to do so. She constantly references the textbook because she doesn’t know what to do next.

I feel that I’m being somewhat unfair. Thus far, I’ve mainly bashed the instructor, who has yet to catch up to where I left off in the book.

The computers suddenly shut down while we are working. They appear to be restarting. Everyone comes alive when their faces aren’t glued to the screens that stare back at them in disgust. They seem relieved and begin to smile and laugh as the instructor takes this opportunity to prove a point — that one should save documents often to avoid loss of data.

An IT representative of the college visited the classroom, apologizing for the minor interruption. To my surprise, a student with a sense of humor suggested that the representative should purchase everyone a soda in reconciliation. My jaw drops in astonishment; there is movement in the room and the strong tension over everyone’s lips is temporarily alleviated.

The teacher has finally caught up to where I left off in the book, and I am now following steps as I write this report. It seems that I will have wasted another four hours by the time this class concludes.

As we slowly trot along, I find things to write about in short supply, but my left hand is thankful for that! [Editor's note: I am left handed.] I will continue to write, however, as I feel it is more entertaining than listening to my iPod instead of my teacher. In fact, I think I have spent more time documenting this long and boring lecture than I have in following the steps the instructor reads from the book.

I spent some time before the instructor arrived (about ten minutes late, I might add) and did some Visual BASIC programming. I had to rely on the visual IDE and help/reference manuals to get anything accomplished because I only know a little VB code, but I managed to create a form with two radio options and a button, and perform an alert message box depending on which radio option was selected. It is very simple, but it works and has a lot more potential use than learning something I already know, such as how to copy and paste data cells in Excel.

The knuckle on my pinky finger is almost completely secreted in black ink, and I know I should stop writing now. I tell myself this is worth it, and since I’ve no place to go, I might as well continue writing regardless of my hand’s awkward discoloration.

Tired as I am, if you could see the paper I am writing on, you’d know by the various doodles that writing alone doesn’t seem to consume all of my free time — the time when I’m not completing a step that the instructor articulates.

Since I’m out of things to write about, I have decided to begin describing the class, starting with the teacher. The instructor looks nearly 60, though I could be mistaken, and is wearing the same outfit she wore Tuesday. It’s a sea-green colored shirt with large buttons and a V-shaped collar and black slacks.

There are two rows in front of me, but the foremost one is empty. On my side of the room, in the row ahead of me, is a blonde-haired woman in a white sweater and gray slacks. She seems to get confused often and does things incorrectly. She usually catches up eventually without asking questions, though. So far today, she’s only asked one question because she couldn’t find the file that the instructor said to open — and let’s not forget that the instructor performed the requested action on a projector in front of this student’s face.

In the second row on the right-hand side of the room are two women. One wears a plain blue T-shirt and black sweatpants. I would refer to them as “running pants,” but it has become painfully obvious to me that this woman participates in no such activity. The woman to her right, barely visible behind the large woman that I just described, looks very much like the actor who plays the role of President on the Battlestar Galactica TV series. She is wearing a sleeveless sky blue shirt and blue jeans. Her hair is red, she is more slender than anyone else in the class, and she wears small glasses. By my estimate, she is around 45 to 50 years of age.

It’s now almost 8pm, which gives me an hour and 45 minutes to describe the remaining 6 students, excluding myself and my brother, who sits to my left on the third row.

Just across the room on my right are two more students who sit on the third row. The first, a blonde woman wearing a jean jacket, glasses, and black slacks, appears to be the most intelligent student. On several occasions she has pointed out solutions to problems that had the instructor puzzled. She looks to be no older than 40, perhaps 45, but she is well kept. To her right is a man who appears to be of hispanic descent. I cannot guess his age simply by looking at him, but he wears a pastel green short-sleeve collared shirt with palm trees on it and jeans which barely reach the ankles of his tennis shoes.

Behind me on the fourth and final row are a man and a woman. The man is a large blond with a very short goatee. He wears a baseball cap and probably consumes an unhealthy amount of beer on the weekends. Hopefully he can’t read this and doesn’t suspect I am making jest at his expense. He wears a dark blue T-shirt and I think jeans. I glanced behind me to gather this information while concealing my true intentions under actions like scratching my back or looking out the window behind us. However, the desk before this man obscures my view, and looking beneath the desk to see what pants he is wearing would probably arise suspicion in him, and that is something that I am not comfortable with. The woman two seats to his right is blonde and wears a maroon sweater. Her hair is short and it does not look good on her. She is in the near-retirement age, much like the rest of the class appears to be.

In the back right-hand side of the room are two women. The one on the left is the youngest in the class. I can tell because she brought her 5-year-old daughter to class with her. (After class concluded, it also occurred to me that her daughter brought crayons and M&M’s, which I observed on the floor as I exited.) This woman has glasses and wears a dark blue shirt with long sleeves and jeans. The woman to her right wears glasses and may possibly be the mother of the woman with a child. She wears a black sweater and I think jeans.

I am quickly concluding my class description because the teacher dismissed a few students who need to leave early due to the weather. It has been raining since the afternoon, and by now I’m sure many of the students will have complications reaching their homes. Naturally, the entire class has decided that it’s time to go as well, and so it appears we’ll be leaving soon. It is not yet 8:30pm, though the class is scheduled to conclude at 9:45pm.

I briefly ventured to the closest restroom where I relieved my urinary bladder and deliberately used the same screeching faucet that I had used on Tuesday. On my way back to the classroom, I peeked through a nearby window to observe the pouring rain. We will be soaked. We were smart to bring an umbrella, but at this point I feel it is practically useless.

The teacher has gone now as well as the rest of the students, and I am wrapping this paper up. My brother has developed a growing curiosity in the contents of my constant writing during this class period, and so I feel obliged to share it with him following my conclusion on this document. With that said, it is time to go now and I am heading off into the rain. Good night, may the weather be better in your town than in Texas.

October 27th, 2006 | 1 Remark

Google Docs & Spreadsheets

Features

Since I don’t want to waste anyone’s time, I’ll just go over some of the things that I thought made this software so incredibly powerful and useful.

  • A great user-interface. Everything is concise and you don’t have to look up “Help” to know how to do anything — instructions are straightforward and leave no question as to what to put in any form fields or what a particular button, tab, or link does.
  • Online-collaboration. This is by far the best feature available. You can invite other Google Docs & Spreadsheets users to edit your document and make revisions. You can go back and restore revisions that were made in the past, or compare revisions in the past, or make a new revision. When you are editing or revising the document, if others are also editing at the same time as you, Google will let you know who is editing and automatically update the document as they edit it. You can visually see changes take place!
  • Auto-save. While Google Docs & Spreadsheets does have a very visible “Save” button (as well as “Save & close” and “Discard changes”), it also automatically saves the document as you modify it. So if your browser crashes, you probably won’t have very much (if any) data lost.
  • Worldwide viewing. You can allow anyone to view your document by publishing it to the Web, or you can invite folks to have a look at it.
  • Spell-check. An essential part of any document editor, the spell-check is immediately available in the edit screen. It highlights misspelled words quickly — there is no lag — and doesn’t freak out and underline misspelled words automatically like Microsoft Word does, and then tell you that you don’t know how to spell “blog.”
  • Blog integration. I am currently posting this blog entry through the Google Docs & Spreadsheets interface. I logged into it, created a new document, began writing, and published it to my blog. All you have to do is click the Publish tab, select the “change your blog settings” link and modify settings (everything is self-explanatory, and they even provide a list of supported blog systems), and then click “Post to blog.” It’s as simple as that!
  • Fairly clean HTML output. I had to modify the HTML output of the document, but it is mostly standards-compliant (it is, at least to my knowledge, valid XHTML). It put line-breaks rather than paragraphs in the HTML, and there is no option for SGML- rather than XML-based HTML, but there may be a setting for that somewhere that I’ve yet to find. It also converts ampersands to & automatically, which is convenient, and the best part of all is that it doesn’t change the HTML back to what it was before I modified it when I go back into the regular edit mode (like Yahoo! Mail used to).

Anyway, as you can see this is a very useful and powerful piece of software that belongs at the top of your list of productivity options. It’s a lightning-fast, extremely powerful tool for anyone (not just us web geeks). Be sure to check it out!

October 11th, 2006 | Remark

McAfee Troubles

It all started when McAfee installed a major overhaul as an update. I was initially excited because of the new tools and configurations at my disposal, but soon realized that McAfee had decided to do many things for me (without my knowledge) and this turned out to be a problem for me.

As you may know, my Xbox 360 is connected to my computer via a crossover cable; this way, I have wireless Internet for my 360 without purchasing the $100 Wireless Network Adapter for the Xbox 360. (I connect via my laptop because there is a slight issue with the Mac’s throughput which causes some games on Xbox Live to lag, and this annoyance can become a real problem, but I haven’t sorted out exactly what the issue is [my guess is just a hardware conflict between Microsoft and Apple, I might install BootCamp to get avoid the problem altogether].)

Due to the nature of my setup, McAfee decides to block all Internet access on my computer (and, consequently, the 360) when I switch the 360 on (because one of the first things that the 360 checks when it boots is the network connection). My first thoughts were simply to disable the McAfee firewall, and all would be well; however, this didn’t work. I later decided to completely uninstall the McAfee firewall (after discovering the only way to uninstall any McAfee components is via the Add/Remove Programs option in the Control Panel), which still yielded no results. After a couple hours of frustration, I found that a McAfee process which runs in the background — “emproxy.exe” — was the culprit. Opening the Task Manager and ending the “emproxy.exe” process allows my 360 and laptop both Internet access freely, and I am still protected through McAfee’s other utilities. Unfortunately, this program is opened whenever McAfee opens (so if you restart your computer and have McAfee on startup, which you should, then the program will open again). It is somewhat inconvenient to have to CTRL+ALT+DEL the “emproxy.exe” process each time you boot your computer, but at least you no longer have to compromise your computer’s security in order to play Xbox.

Happy terminating!

September 7th, 2006 | Remark

GrayBit Beta

So What’s GrayBit?

Basically, it’s a PHP webapp that converts any web site into black-and-white. That’s right, even your images. This provides a great way to tell if your site has too high or too low of a contrast between its elements, and best of all (unlike other similar tools), GrayBit is interactive.

It doesn’t Work

This being the beta launch, we’re still ironing out some flaws in the system. Overall, though, GrayBit performs very well. If you’re trying a site like Yahoo, Amazon, or Google, the results will be mixed at best, due to the fact that those sites use tables for layout and GrayBit is designed with its target audience — accessibility-aware developers — in mind. Ergo, we’ve chosen to make the system optimal for our target audience, rather than trying to be everything for everybody (really, no one who makes a site like Amazon is going to care what their site looks like in black and white — they already obviously don’t care what it looks like with color!)

Special Thanks

I just wanted to take a minute and thank Bokeh from the Web Developer Forums for some help with the PNG processing functions. I was at a loss there for a couple days, unable to figure out how to get alpha transparency to work properly (due to my lack of experience with PHP and GD). Thanks to Bokeh, I was able to figure it out.

Now, for any further information, please direct your (undivided) attention to http://GrayBit.com/, where the fun goes vibrant in a completely colorless way!

March 7th, 2006 | Remark

GBCMS v1.3 Released!

The Green Beast CMS (GBCMS) is a powerful, highly configurable, flexible content management system featuring three (3) ready-to-use pages, including a news page with RSS and a content form, easy setup and install, file uploaders, and more! If you’re looking for a powerful content management system (that does not require a database of any kind), you should give the GBCMS a thorough try. I’m confident you’ll find it not only meets but also transcends your needs in an efficient way.

December 19th, 2005 | 8 Remarks

Firefox 1.5 Fixtensions

Let me first summarize the problems I was having. Upon upgrade completion, Firefox alerted an error (though I do not remember what it was), but then seemed to function fine. It did try to update all the extensions and remove those that were incompatible, but plugins that claimed to be compatible with 1.5 were not working. Right-clicking an extension and hitting the “Options” menu froze the Extension Manager window. I tried to uninstall an extension to reinstall it, and it said “This item will be uninstalled when you restart Firefox.” I restarted Firefox, but it did not uninstall the extension. I uninstalled Firefox, restarted the computer, and then reinstalled Firefox, but the extension’s message did not change.

Now, considering all I had done, the only thing that could be the problem was that the profile was somehow corrupt. It turns out that was the case, but fortunately, the problem in the profile was isolated to a very specific segment, which saved me all of my bookmarks, form information, cookies, etc. If I’ve described your problem, or something very similar, the following steps may be most effective for your recovery. Be warned, though, that this method requires you delete and reinstall all of your extensions (and possibly your themes). If you lose anything or your computer crashes, it’s not my fault. You may wish to read over the steps before taking them.

  1. Make sure you have Firefox 1.5 installed. Make sure it’s completely closed (all windows, including things like the Download or Extensions Managers).
  2. Create a new folder somewhere easily accessible, preferably on your desktop. Don’t worry, you can delete the folder once we’re done.
  3. Navigate to your profile directory in a new window.
  4. In your profile directory, find the following files. Highlight them, right-click and hit “Cut.” (Alternatively, you can drag and drop the files into the folder on your desktop.)
    • defaults.ini
    • components.ini
    • extensions.rdf
    • extensions.cache
    • extensions.ini
  5. Navigate to the folder you created on your desktop and hit “Paste.” The files from your profile directory will be removed and placed in the folder on your desktop.
  6. In your profile directory, go to the folder named “extensions.” Right-click and hit “Select All” (or just hit Ctrl+A) to highlight all files. Right-click and hit “Cut” again (or just use Ctrl+X).
  7. Go back to the desktop folder. Create another folder inside the desktop one called “extensions” and hit “Paste” (Ctrl+V) inside the new “extensions” folder.
  8. Open Firefox again. All the files you cut out of the profile directory, excluding the extensions, should be regenerated by Firefox. If you open your Extensions Manager, you should only see the Talkback extension which comes with Firefox 1.5. If you see other extensions, go back and make sure you didn’t miss a step.
  9. Go to the folder on your desktop and into the “extensions” subdirectory. Most, if not all, of the folders should have awkward names, such as “{A04838-c918a0 … }” In each of those folders there should be a “chrome” directory. Typically, you can find out what extension it is by the name of the file in that folder. If you can’t, go back up a folder and open the file “install.rdf” (or “install.js” if there is no RDF file) in your favorite text editor. The name of the extension can be found in there (if you’re unfamiliar with most of what’s in the file, you can be sure that the only thing you recognize is the name of the extension – also it’s easier to tell the name of the extension in the RDF file because RDF is an XML format that is easier to read than JavaScript). Note that themes are located here, too, so if you run across a theme you may want to look for new versions of that, or simply delete them if they are incompatible with Fx 1.5. The only way to get your extensions back now is to search Google for the name of the extension and reinstall it. Once you’re done, you may have to restart Firefox a couple of times before all the extensions are enabled, and once you’re sure everything’s working properly, you may delete that folder from your desktop.

I admit it may seem like it would take forever, but the time it takes to search for and install each extension over again isn’t that bad. I have a great number of extensions and found that it only took a few minutes, possibly 20 to 30, to reinstall all the ones I had previously. Also, I’ve found that a number of extensions, such as URI ID and miniT, are obsolete in favor of native inclusion in Fx 1.5. This is also a great way to redisover or find new extensions.

With that, ladies and gentlemen, I am soon going to explore the wonderful new things Fx 1.5 has implemented, such as the canvas element and SVG!

Oh, and look! They fixed that weird bug where you have to focus on a textarea or div with scrollbars in order to scroll with the mousewheel.

December 2nd, 2005 | Remark

Firefox 1.5

After installing, most of the extensions still appear and claim to be compatible, but not all of them work. On its site, the Web Developer Toolbar is supposedly compatible with Fx 1.5, but the toolbar doesn’t appear when I open (or restart) Firefox. A number of extensions behave this way, including FoxyTunes, my alarm clock. What’s more, themes do not work, even ones that claim compatibility. In addition to all of that, Firefox freezes every time I try to change the options of an extension. It just freezes.

This is the problem with upgrading Firefox. I want to use the new features such as SVG and so forth, but I want to keep the functionality of the extensions I installed. Well, hopefully all the extensions are updated and work properly, and the freezing problem is fixed in Firefox soon as well.

So, there’s that. I haven’t had a chance to play with SVG and all the new cool stuff in Fx 1.5 yet, but I just wanted to rant on how I’m disappointed with not only the fact that my extensions failed to work (yet claim to), but also that Firefox still has obvious bugs. If anyone has any tips on fixing, please let me know. Until then, I’m going to look around for a way to solve the issues I’ve experienced thus far, and update this post with new information if I can get my hands on any. Peace.

November 29th, 2005 | Remark

FileZilla

Normally, I’d just go ahead and login to cPanel and upload things, etc. But I’ve found that to be just as slow as FTP (though less of a hassle). I’ve been searching for an FTP app for quite awhile, but recently I stumbled upon this heavenly jewel: FileZilla.

This little bugger works like a charm. It connects fast, transfers quickly and accurately, and lets me customize just about everything (including what app opens what type of file for viewing/editing).

So, now it’s your turn to blabber. What FTP app do you use, and why?

October 3rd, 2005 | Remark