A liberal arts grad on the Information Superhighway, stuck in a traffic jam at the intersections of Technology, Psychology and Security.
Monday, March 14, 2011
Where I've been . . . ?
What have I been up to, you might be wondering? Well, I've had my nose in many different business books, trying to get myself as knowledgeable as possible before I open the doors on my own company. I've also signed up for multiple classes/workshops through a local Community Business Partnership group. Then there's all items on this "Things I Need To Learn" (e.g. HTML5, CSS3, etc.) I'm trying to bang through, and the ColdFusion OOP Boot Camp. Don't get me wrong, it's exciting and exhilirating . . . but it's also a little exhausting!
I'm hoping to get a chance to test drive Framework One (aka FW/1) in the next week or two. I'll see how it compares with CFWheels and let you know my impressions of it.
Friday, December 31, 2010
2010 Accomplishments & Highlights
- started my first ColdFusion hosted blog (a la Mango)
- survived "Snomageddon 2010"
- attended NCDevCon conference, and CFUnited conference
- got the downstairs half-bath in my townhouse completely remodeled
- started using Blueprint CSS for more polished looking web apps (grids, fonts, etc.)
- improved my online security with Lastpass toolbar, using random, unique passwords for each site I join (p.s. - thanks, Gawker, for the final push to change my old passwords!)
- finally started using Dropbox
- wrote two plugins for open source projects (Active Directory plugin for CFWheels, and noprint plugin for Blueprint CSS)
- dealt with demands from my Civic Associations (some reasonable, some *very* unreasonable)
- became proficient in Xenu Stealth Link checker
- found out why our organization's web server returns 200/OK instead of 404/Not Found for missing web pages (I wonder if anyone else will care enough to fix it?)
- created my professional first Intranet app using an application framework (CFWheels)
- gained better understanding of and deeper appreciation for jQuery
- turned in my resignation notice to start my own consulting/training company
Saturday, December 11, 2010
Failed Bluetooth transfer turns LG Xenon Off/On?
Except, of course, when it doesn't. ;)
Today, for example, I downloaded a backlog of nine podcasts, and when I tried to transfer them, something odd happened. About 12KB of the first file transferred, and then suddenly my phone "rebooted." Naturally, the file transfer timed out, so I waited until my phone was back to its main screen and tried again. Same result. So I tried transferring only the first file individually, and that worked-- so I knew it wasn't something corrupt in the data of the first file that was causing the issue.
It turns out that if the storage card I have in my phone (which is where I have my various pictures, music files and such stored) has less free space available than what I am trying to send, my phone just "reboots" itself. If I delete some old podcasts and make room, everything works smoothly again.
I figure other folks are probably experiencing the same thing and scratching their heads, so maybe this post will help them out.
Saturday, November 6, 2010
Opening HTML files in Mac OS X TextEdit
A. Although Notepad is a plain text editor, TextEdit supports Rich Text Format (RTF) and a few other file formats, which makes it more similar to WordPad than Notepad. When you open HTML files in TextEdit, it tries to interpret Rich Text commands and display the page "visually" rather than the "raw" HTML text.There is a way to tell TextEdit to open HTML files as plain text documents, however.
In TextEdit's Preferences dialog box, click on the "Open and Save" tab near the top, remove the checkmark beside "Ignore rich text commands in HTML files" and close the dialog box. From now on whenever you open a webpage with TextEdit, you'll see the "raw" HTML code.
Saturday, September 4, 2010
Interesting Glitch Between Photoshop CS 3 and Network Printer Drivers
Resizing or optimizing a single graphic for a page usually means I have only one file open at a time. But the workflow for slicing up a reference graphic into regions of a webpage is different; you'll probably select and copy a piece (e.g. the header, the footer, the sidebar, etc.) and create a new, separate file for each segment. You can imagine my surprise when I create a new/second image, and Photoshop crashes completely with this cryptic error message: The instruction at "0x7c91b21a" referenced memory at "0x00000010." The memory could not be "written."
Saturday, August 28, 2010
The Papergeist Dream Story
Fortunately, someone else had the same wordplay idea and followed through with it. As it turns out, there is a papergeist website. They take old book covers and recycle them into unique works of art that are functional as sketchbooks, journals, etc. Although I like the journals best, I think the undated appointment books are clever. The store portion of the website is built in Coldfusion.
So basically, I can honestly say I found this website because of a dream I had. How neat is that?
Sunday, August 1, 2010
Tuesday, July 13, 2010
Don't Be A "Warren."
Like many of us in the tech industry, I provided technical support & assistance for clients by many communications avenues, including email. One morning, I get an urgent email from "Warren" asking me to perform a routine task in a short time frame for an urgent deadline. I also noticed he's carbon copied others in his office on that same email. I take his request out of sequence, complete the task, and "Reply All" to let him and his colleagues know the request has been completed so they can do what they need to do.
About three minutes later, "Warren" calls me on my direct line and chews me out. "How dare you include my supervisor . . ." on the email reply. When I explained I hit reply all to notify all parties included on the original message of the completed status of the task, he cut me off and told me that he was the only person allowed to email his supervisor, period.
Here's the point: All these years later, I don't remember anyone else's name from that office. I couldn't tell you what they did, or if they even did their jobs competently. They could have been the foremost in their field, but all I will ever remember is "Warren" and his pathetic macho bullshit attitude. That is how powerfully cancerous to your organization's reputation one asshat like "Warren" can be.
Tuesday, July 6, 2010
LG Xenon, AT&T and the .jar/.jad issue
Sure. If it were that simple, I wouldn't have written a blog entry about it now, would I?
So, I go to getjar.com, and scan through the half dozen or so offerings of book readers and test drive one or two of the most promising. Although I'm able to install them, they do not seem to actually allow me to open any text files stored on my phone. The only ones that do work are the ones that embed a book/text file inside the actual .jar (java archive) file itself. I do some research, locate the stats on my phone, and sure enough, it is supposed to support a file system API that allows programs to access the phone's file system. That's JSR 75, if you want to know the Java programmer jargon for it.
The long and short of it is that AT&T does something to the firmware of the phones they provide which prevents third party programs from accessing the filesystem. I get it-- it's for "security purposes." You don't want just any old program being able to access the file system or the GPS interface, otherwise nefarious people might start using it to do bad things to your customers. The part that galls me is that if a third-party developer goes out and spends serious coin ($200/year) on a certificate from someone like Verisign or Thawte, to validate their work as legitimate and unmodified, AT&T still denies them access to JSR 75. You basically have to go through AT&T's internal verification process, which coincidentally will cost you more serious coin, and will not do anything towards making your "write once/run anywhere" program work with other cell phone vendors either.
It's sad, but my interest and enthusiasm in learning how to write Java midlets for cell phones just kinda died.
Sunday, July 4, 2010
How to check a solved Sudoku puzzle
There are many Sudoku solver websites-- so you could, in theory, enter the puzzle manually into the site, have it solve the puzzle and then compare your solution with the solution generated by the Sudoku solver site. But honestly, it's such a simple process that using a solver website is overkill. If you can count to nine eighteen times in a row, you can check a Sudoku puzzle.
- Focusing on the first row alone, find and count the numbers from 1 to 9. If you are missing any numbers, you have an error (either a blank or a duplicated number) in this row. You should mark errors for future reference to be corrected.
- Repeat the process used in step 1 for all the remaining rows.
- Focusing on the first column alone, find and count the numbers from 1 to 9. If you are missing any numbers, you have an error in this row.
- Repeat step 3 for the remainder of the columns.
- If you have checked all the columns and rows for the numbers 1 through 9, and no numbers are missing, then your solution is valid.
Note: You must check both the rows AND the columns. It is possible for all rows to be correct, and still have a problem in one or more columns-- or vice versa.
Wednesday, June 30, 2010
CFUnited 2010
As a latecomer to the entire Coldfusion conference scene (CFUnited 2009 was my first Coldfusion conference), it's hard to express how I feel about this news without feeling hypocritical. The nearest analogy I can come up with is that "loud and scary" uncle you see once a year at the family summer reunion picnics. By the time you grow up enough to see that uncle isn't truly scary and has some amazing stories to share-- he's gone. It's not a profound and personal loss, but more of a missed opportunity to learn beyond my own personal limits.
My metaphorical point being-- this will not be the last family reunion picnic, but future picnics will almost certainly be different. Make the most of this one. Find that "loud and scary uncle" and ask him to tell you about serving as a Flying Tiger during World War II. It's a metaphor, indulge me. (Go out of your way to say hello and introduce yourself to people. Take a chance on a session you might not normally take. Exchange contact information so you can keep in touch.)
Tuesday, May 18, 2010
My NCDevCon Picks
NCDevCon 2010
5/22/2010
- 8-9 AM
- Registration
- 9-10 AM
- The Not A Keynote Session, Adam Lehman
- 10-11 AM
- Component Lifecycle, Andy Powell
- 11-12 Noon
- Database Tips and Tricks for Programmers
I'm tempted to make a snarky remark about being a "big fish in a little pond", because I've worked with SQL Server, Access and Filemaker Pro . . . while some folks I've worked with consider Excel to be a database. But the truth is, you can never have too many database tricks up your sleeves. - 12-1 PM
- Lunch
Try to eat without completely embarrassing myself by gawking & gaping at all the CF celebs. (OMG! Is that Sean Corfield?!) Go ahead and laugh, but you know you've done it too. - 1-2 PM
- Understanding Security in Adobe AIR applications, Jason Dean
I don't even write AIR applications (yet!), but Jason's blog entries over at 12Robots.com have been so informative and interesting, that I'd kick myself if I missed this session. - 2-3 PM
- Getting Started with Coldfusion 9 ORM
- 3-5PM
- Hands on coldfusion session 3, Daria Norris
I've learned more about and used Application.cfc and CFCs since CFUnited 2009, and even dabbled a little bit with UDFs and custom tags, but everything's been piecemeal from blogs and documentation on an as needed basis. I'm looking forward to a live, structured presentation of information to help fill the gaps in my conceptual understanding.
5/23/2010
- 8-9 AM
- Registration
- 9-10 AM
- Pecha Kucha
I actually tried my hand at a Pecha Kucha presentation three years ago, after reading Daniel Pink's "A Whole New Mind." The topic was "Writing Valid Webpages" and it had lots of pop culture references and visuals to drive the points home. I was hoping it might change the "death by Powerpoint" culture of our organization. Maybe this session means we are approaching a tipping point? - 10-12 Noon
- Building a Website in Mura CMS (in 2 hours or less), Sean Schroeder
I hear very good things about this particular CMS, but every time I've tried it out, it's been a case of getting it installed and then, "Now what?" I'm hoping a live demonstration will get me over that hump. - 12-1 PM
- Lunch
Feed my face and cool down my overloaded brain cells ;) - 1-2 PM
- MVC for the Rest of Use, Dennis Clark *OR*
- CSS Frameworks: Faster Layout, Consistent Results
It happens at every conference. There are always two really good sessions happening at the same time. I can't decide between these two. Crap. I may have to see if something comparable is being offered at CFUnited to help me break this tie.
- 2-3 PM
- Confessions of a Crackberry Addict, Jerry Lankford
This is my "leap of faith." I know nothing about Jerry Lankford, and I can only speculate what the content of his presentation may be-- but with a title like that, I have a hunch it's going to be lively and entertaining. Simon Free's my backup choice here, because I know he's presenting at CFUnited in about two months.
Saturday, April 24, 2010
A square drawn with thick, black lines on a white page
The way this trick worked was you were to stare at, for example, a square with thick, black lines on an otherwise empty white page for 60 seconds, and then look away to another white surface, such as a wall. You would see an "after image" of the square when you looked away from the page. Bear in mind, I was a child with next to no understanding of vision and the human eye at the time, so this sounded nothing short of magical to me-- with something from a book jumping off onto the wall next to me!
The only problem was, I could never make it work. I'd stare at the page "forever", only to look away and see nothing. I actually wondered at one point if my eyes might be "broken" or "different" because I couldn't "see" the trick. (I still feel that way about those infuriating Magic Eye puzzles, but that's a story for another day!) I even remember talking to my parents to see if I was somehow doing it wrong.
I mention this childhood memory now, because as I have gotten older my eyes/retinas seem to have the afterimage phenomenon in excess. When I wake in the morning, if I look over at my dresser and mirror for only a few seconds, and then look away from it, I can see the "afterimage" of the mirror's thick black frame on the ceiling for a duration of several seconds. When this happens, I can't help but recall "The Anti-Coloring Book" and how I used to worry a little bit that I wasn't able to make that afterimage trick work.
Maybe I'll give those Magic Eye puzzles another go . . . after I turn 60. ;)
Saturday, February 13, 2010
Macromedia Contribute and psapi.dll
Issue: The dynamic link library, PSAPI.DLL, that ships with Macromedia Contribute is an older version of that dynamic link library. The version in Windows XP's system folder is the newer, more advanced version.
Solution:
1) Locate and rename Contribute's PSAPI.DLL file (usually found in c:\Program Files\Macromedia\Contribute 3) to PSAPI.DLL.old.
2) Find Windows XP's version of PSAPI.DLL (usually found in c:\windows\system32), and then COPY AND PASTE it into your Contribute 3 folder. (Do *NOT* remove PSAPI.DLL from the System32 folder, or bad things will happen.)
3) Restart your Terminal Services connection, remotely connect to the computer, and test the Macromedia Contribute application to make sure it is working properly.
Sunday, December 13, 2009
Converting Google Picasa's embedded slideshow code to valid XHTML/HTML
Defining the Problem:
You have created a picture album in Google Picasa and want to embed a slideshow of that album in your website or blog. Fortunately, Google Picasa makes it easy to generate the code to do so. All you have to do is copy and paste the generated code into the HTML of your site.
Here's an example of that generated code, using my Chinese Zodiac desktop wallpaper album:
<embed type="application/x-shockwave-flash" src="http://picasaweb.google.com/s/c/bin/slideshow.swf" width="144" height="96" flashvars="host=picasaweb.google.com&hl=en_US
&feat=flashalbum&RGB=0x000000&feed=http%3A%2F%2Fpicasaweb.google.com%2Fdata%2Ffeed%2Fapi%2Fuser%2FJonah.Chanticleer%2Falbumid%2F5220445689687444257%3Falt%3Drss%26kind%3Dphoto%26hl%3Den_US" pluginspage="http://www.macromedia.com/go/getflashplayer">
</embed>
Unfortunately, Picasa's generated code uses the <embed> tag, which is not part of the HTML/XHTML standards (see http://validator.w3.org/docs/help.html#faq-flash for more information). Furthermore, the value assigned to the flashvars attribute of the <embed> tag has multiple ampersands in it, and those ampersands are not properly URL-encoded (see http://www.htmlhelp.com/tools/validator/problems.html#amp for details). This means the code will break validation for any page into which you paste it. Many people don't care if their pages fail to validate, but since you've made the effort to find this article and read this far, I'm assuming you are a web development professional who does care if your page throws a web-browser into "quirks mode."(http://en.wikipedia.org/wiki/Quirks_mode)
Creating a Solution:
To regain proper validation, we need to address the two following issues:
1. Switch from <embed> to <object>, which is part of the HTML/XHTML standards
2. Properly encode the ampersands by changing them from "&" to "&"
Switching from embed to object:
Let's take a closer look at the attributes of the <embed> tag example from above. I've separated them by linebreaks to make them easier for us to read:
<embedtype="application/x-shockwave-flash"
src="http://picasaweb.google.com/s/c/bin/slideshow.swf"
width="144"
height="96"
flashvars="host=picasaweb.google.com&hl=en_US&feat=flashalbum&RGB=0x000000&feed=http%3A%2F%2Fpicasaweb.google.com%2Fdata%2Ffeed%2Fapi%2Fuser%2FJonah.Chanticleer%2Falbumid%2F5220445689687444257%3Falt%3Drss%26kind%3Dphoto%26hl%3Den_US"
pluginspage="http://www.macromedia.com/go/getflashplayer">
</embed>
The good news is that three of the six attributes (width, height and type) translate directly into attributes with the same names for the new object tag. We are off to a good start.
<object type="application/x-shockwave-flash" width="144" height="96"><!-- TBD -->
</object>
By reading the HTML reference page for the object tag (http://www.w3schools.com/TAGS/tag_object.asp), we can figure out that the src attribute doesn't exist-- the closest equivalent to it is the data attribute. The two remaining attributes, pluginspage and flashvars, do not have any counterparts in the attributes of the object tag. We will need to pass them directly as run-time parameters with the param tag (http://www.w3schools.com/TAGS/tag_param.asp).
It is worth noting this one important note from the object tag reference: "The object support in browsers depend on the object type. Unfortunately, the major browsers use different codes to load the same object type." In other words, all standards-compliant web browsers will recognize the object tag, but they may do so in different ways. Netscape-family browsers might respond to the data attribute, while Internet Explorer will not see that same information unless it is passed along in a param value.
Fortunately for us, Drew McLellan's article in the Nov. 9 2002 issue of A List Apart, "Flash Satay: Embedding Flash While Supporting Standards," gives us just the perfect trick to make the object/param sandwich that works with both sets of browsers. Check it out below:
<object type="application/x-shockwave-flash" width="144" height="96" data="http://picasaweb.google.com/s/c/bin/slideshow.swf"><param name="movie" value="http://picasaweb.google.com/s/c/bin/slideshow.swf" />
</object>
(Mr. McLellan, if you should find yourself in the DC Metro area, drop me a line-- because your first beverage is on me. This bit of brilliance saved me time and a headache!)
Let's stay on track-- because we haven't finished just yet! We still need to create param tags for the pluginspage and flashvars, and nest them between the object tags.<object type="application/x-shockwave-flash" width="144" height="96" data="http://picasaweb.google.com/s/c/bin/slideshow.swf">
<param name="movie" value="http://picasaweb.google.com/s/c/bin/slideshow.swf" />
<param name="FlashVars" value="host=picasaweb.google.com&hl=en_US&feat=flashalbum&RGB=0x000000&feed=http%3A%2F%2Fpicasaweb.google.com%2Fdata%2Ffeed%2Fapi%2Fuser%2FJonah.Chanticleer%2Falbumid%2F5220445689687444257%3Falt%3Drss%26kind%3Dphoto%26hl%3Den_US" />
<param name="pluginspage" value="http://www.macromedia.com/go/getflashplayer" />
</object>
Encoding the ampersands:
Almost done. There's only one thing left to fix-- those pesky ampersands assigned to the "value" attribute of the param tag named "FlashVars." This is literally a case of substituting "&" for "&", as I've done below (bold removed for emphasis):<param name="FlashVars" value="host=picasaweb.google.com&hl=en_US&feat=flashalbum&RGB=0x000000&feed=http%3A%2F%2Fpicasaweb.google.com%2Fdata%2Ffeed%2Fapi%2Fuser%2FJonah.Chanticleer%2Falbumid%2F5220445689687444257%3Falt%3Drss%26kind%3Dphoto%26hl%3Den_US" />
Final Result:
So, our end result should look like this when we view it as an entire page (assuming XHTML 1.0 Transitional):<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>. . .</title>
</head>
<body>
<!-- any content in your page that appears before the slideshow -->
<object type="application/x-shockwave-flash" width="144" height="96" data="http://picasaweb.google.com/s/c/bin/slideshow.swf">
<param name="movie" value="http://picasaweb.google.com/s/c/bin/slideshow.swf" />
<param name="FlashVars" value="host=picasaweb.google.com&hl=en_US&feat=flashalbum&RGB=0x000000&feed=http%3A%2F%2Fpicasaweb.google.com%2Fdata%2Ffeed%2Fapi%2Fuser%2FJonah.Chanticleer%2Falbumid%2F5220445689687444257%3Falt%3Drss%26kind%3Dphoto%26hl%3Den_US" />
<param name="pluginspage" value="http://www.macromedia.com/go/getflashplayer" />
</object>
<!-- any content in your page that appears after the slideshow -->
</body>
</html>
Extra Credit:
Now that your page validates, you can congratulate yourself on a job well done-- until the next time you need to create a new slideshow code snippet in Picasa. Or someone else tries to use the invalid slideshow code on their webpage, and asks you to help them fix it. Or doesn't ask you to help them fix it.The truth is what I've shown you here is only a band-aid, not a cure for the real problem. There are many tools out there which generate invalid HTML code snippets; Google's Picasa is only one of them. If you care about web standards and want to see them realized on the World Wide Web, you need to contact the developers responsible for popular tools like Picasa (http://www.google.com/support/forum/p/Picasa/thread?tid=3ca39d2989c708ac&hl=en) and persuade them to make changes that will result in the output of valid HTML code. Be patient and polite when you advocate for these changes, not pushy and critical. You never know the circumstances behind the development of an application or product. It may be the developer created the code before a specific standard had been fully ratified, or the developer may have been forced to use third party libraries/components that generate invalid code. By advocating and educating in a positive manner, you can give a developer the motivation, desire and information they need to do the right thing.
Acknowledgments/Further Reading:
Thanks to E.G. for bringing this whole Google Picasa puzzle to my attention in the first place.
Drew McLellan, "Flash Satay: Embedding Flash While Supporting Standards", A List Apart, Nov. 9, 2002, http://www.alistapart.com/articles/flashsatay
Picasa Web Albums Help Forum (http://www.google.com/support/forum/p/Picasa/label?lid=051816230f0ec560&hl=en)
Friday, October 23, 2009
PearLyrics, Harmonic, and the lyrics hunting software genre
Long story: the record industry giants "didn't understand" and felt this tool was jeopardizing their IP, legal saber rattling ensued, etc. Supposedly it's all cleared up now, but it's worth noting PearLyrics' "hit rate" has dramatically diminished. "Sorry, no lyrics found" is the typical response; successfully finding lyrics happens about 1 time in a dozen.
I took a look at other similar software, and found even Harmonic (which is linked from Apple's downloads site) seems to have extraordinary difficulty finding lyrics for the majority of songs in my library. Makes me wonder what's changed on the Internet behind the scenes. And who made those changes.
Saturday, September 19, 2009
LG Xenon, Sending Multiple Pictures via Bluetooth Simultaneously (the video clip)
Since I had a difficult time writing the entry in a way that I felt was clear and descriptive to readers, I decided to make a mini-tutorial video which walks you through the process. I hope you find it helpful.
Wednesday, September 9, 2009
Filemaker IWP and the Database Homepage
So the other day, someone shows me a specific Filemaker database being served up via Instant Web Publishing (aka IWP). They ask me to help them make a modification on the webpage that people land on when they logout/exit the application. No problem, I figure-- it's obviously a static page because it already contains customized content on it. All I have to do is drill down into the IIS webroot subfolder, locate the page, open it up in Notepad and make the requested changes.
Naturally, the customized database homepage could not be found in the webroot folder. I searched for it manually, I asked Windows to search the folder and subfolders based on strings of text we could see in the page via the browser. Nothing, nada, zip.
It turns out that when you customize the default database homepage for Instant Web Publishing, you do so by creating a file called iwp_home.html. However, you don't put this file in the webroot folder of your web server. This file resides inside a subfolder of the actual Filemaker folder itself, which is completely outside the webserver's normal document path. It's basically the lone exception to the "all static pages can be found in the wwwroot folder" rule.
Fool me once, shame on you. Fool me twice, shame on me. ;)
Saturday, August 8, 2009
LG Xenon: Transferring multiple pictures via Bluetooth
So, when I found myself unable to transfer multiple photos simultaneously from my LG Xenon's "Camera Album" software, something wasn't making sense. It was weird-- I could view the photos in thumbnail mode, and when I invoked the Send -> Bluetooth option from the menu, all of the pictures had checkmark boxes (not radio buttons) beside them . . . implying it was somehow possible to select more than one. But whenever you tried to click the second, third, etc. photos, the checkmark would be removed from the checkbox of the previously chosen photo.
Very. Frustrating.
I looked through my phone's manual, figuring there'd be some sentence instructing me to hold down the shift-key-equivalent on my QWERTY keyboard-- unfortunately, the section of the manual dealing with the Camera Album was very sparse. It was basically a listing of the menu features with no explanation beyond into each feature. Apparently, there is no way to select multiple photos within the "Camera Album" and send them via Bluetooth to another device.
Fortunately, there is a separate application entirely called "Pictures" located within the tabbed organizer section of the LG Xenon screens. (From the Home screen, click on the blue square with the four white dots-- you can't miss it. It's at the bottom of the home screen and looks like a six-sided die with four pips showing. You should now be looking at a rolodex-style screen, with tabs running across the top: a phone handset, one of those director's snap/cue boards, an overstuffed file folder, and a gear. Click on the tab with the overstuffed file folder, and you'll see an icon for an application called "Pictures.") I'll try to include a picture later, if I'm able.
Once you open the Pictures application, you should see thumbnails of all the pictures stored on your phone. This includes pictures you have taken as well as the various wallpapers and icons that came with your phone. Hit the menu icon in the top right corner, and select "Send." From there, hit "Bluetooth." You'll see all your thumbnails again, but only the photos you've actually taken will have those (infuriating?) checkmark boxes. Hit the "All" button on the right hand side of the screen-- this will only select all the photos you have taken, not the wallpapers, etc. Now, hit send, and choose your destination from the "Paired Devices" screen.
Hopefully this little tip might save another LG Xenon enthusiast some time and trouble. If so, drop me a line in the comments, so I'll know if other people found it useful.
Saturday, July 4, 2009
Primary Keys Must Be Independent
Once upon a time . . . there was a developer named "Bryan", who was assigned the task of creating a relational database application that tracked the relationships between buildings and the people assigned to them. It was an easy enough application, with only two tables-- People and Sites. When creating the Sites table, "Bryan" thought it would be okay to use the payroll code for each site as his primary key. After all, each site had its own unique payroll code. Why not just repurpose that code for the database key as well?
Several months later, one of the sites decided to open a satellite office. Since it was a different physical location, it needed its own record in the Sites table-- but since it was a satellite office, they used the same payroll code to pay their staff as the parent office. When "Bryan" tried to add the new office to his database table, he received an error message because his primary key wasn't unique. But, he couldn't just modify the entry by appending a suffix either, because that would mess up queries and reports in his application.
The moral of the story is:
Make sure your primary key(s) are not entirely dependent on a single piece of data with which other human beings can screw. If you absolutely must use something like payroll code in the example above, make it a compound primary key that combines the payroll code field with a unique, independent field.