Friday, July 29, 2011

US Debt Visualized - The Terrible Truth [INFOGRAPHIC]

Sure, when you say "trillion" - it sounds like "billion" and "million" - and everyone knows a million is really not what a million used to be - right?

How about this:

$1,000,000  (one million)
$1,000,000,000 (one billion)
$1,000,000,000,000 (one trillion)

Or said another way - if you spent $1 million per day since Jesus was born, you would have only spent about $700 billion- about the amount the big banks got during the last bailout.

You need to see the entire infographic (click image below or click here) - it will blow your mind!

Thursday, July 28, 2011

Servoy TIP: How and Why To Implement UUIDs As Your Primary Key

When setting up your database tables (if you create them in Servoy) - you know that Servoy automatically creates an integer unique record id that you can use when you relate data to/from another table. It's called a primary key. If you're working with datasources and tables that were created elsewhere (or you have a DBA that creates them for you) - they probably have a record id column that set to auto-number (also called an identity column) that auto-increments when a new record is created.

In most cases, an auto-incrementing integer primary key will be just fine.

However, there are some circumstances where that simple system will cause you huge headaches. Here's just a couple of them (if you have others - leave a comment):
  • If you have a runtime solution that you want to synch back to a "main" system
  • If you want to use database-level replication to have multiple instances of the same data
  • If you have a SaaS solution where you have multiple customers entering data
All of these situations demand that you have something other than a simple auto-incrementing integer as your primary key. Enter the UUID. What exactly is a UUID? Here's the Wikipedia definition:
A UUID is a 16-byte (128-bit) number. The number of theoretically possible UUIDs is therefore about 3 × 1038. In its canonical form, a UUID consists of 32 hexadecimal digits, displayed in 5 groups separated by hyphens, in the form 8-4-4-4-12 for a total of 36 characters (32 digits and 4 hyphens). 
For example:
Luckily, Servoy makes it simple to create these types of columns. It's easiest to implement UUIDs when you're first starting off your solution - but it is possible to change over an existing solution (although it can be a ton of work).

If you're starting from scratch here's how to set up your primary key as a UUID:

Create a new table - I'm using a table called "customer" as an example. You'll see that Servoy automatically creates a column called "customer_key" that is defined as an auto-increment, integer, primary key:

The first thing you want to do is to change the "Type" to TEXT and set the length to 50;
Then from the "Sequence Type" choose "uuid generator";
Finally, make sure you check the UUID checkbox in the "Flags" section (Servoy 6 does this for you automatically):

Now you can go ahead and add whatever other columns you want - and save the table. When you go to create a related table (in this case I'm creating a new table called "Invoice") - you want to create a TEXT foreign key (to relate the two together) - and you want to also make sure you set the UUID flag on that field as well:

Now you can go through and build your relationships, and everything as you normally would - easy!

Now, what if you want to convert a solution that exists - that's using the "traditional" integer keys? My suggestion: don't.


It's a lot of work and there will be a huge amount of testing and data stuff to do to populate all the primary keys and foreign keys; go though all the references to the ID field in all your methods, valuelists and relations; etc., etc.

However, if you must - here's a brief overview on how to do it.

  • Create a new TEXT column (length 50) in all your tables and make sure you check the UUID flag. I usually call mine something like TableName_UUID (e.g. customer_uuid, invoice_uuid, etc.);
  • For each of your related tables - create a new TEXT column for each related key and check the UUID flag. (You might need a few of these columns - for example in an invoice line item that is linked to the invoice and to the product - you'll need two columns);
  • In all your tables - populate the new UUID value. The easiest way is to use a form function like this:

function setPrimaryUUID() {
var fs = databaseManager.getFoundSetUpdater(foundset);
while ( {
fsUpdater.setColumn('customer_uuid', application.getUUID());

  • Once all those UUID values are set - you need to set all the foreign keys in all your related tables. Now you could use a function like the above and substitute the getUUID() function with the related value (e.g. myRelation.customer_uuid) - or you can just use good old-fashioned SQL to do the update on the backend directly (that's what I usually do). My SQL statement would look something like this:

UPDATE invoice SET invoice.customer_uuid = customer.customer_uuid WHERE invoice.customer_id = customer.customer_id

  • The easiest way to change all the other references in your solution - is to just search for all occurrences of your old, integer field - using the built-in search tool. Click the little "flashlight" icon and you'll see the search dialog:

  • After the search -you'll see all the places that reference that "customer_id" field (in this example). You can then just double-click each object in the list to make the change. You'll have to do this for every primary and foreign key field you create! (told you it was a lot of work!)
  • Once you've made all your changes, then you need to thoroughly test your solution - because chances are some stuff will break.
As I said, it's a lot easier to implement UUID primary keys when you're first building your solution (same goes with internationalization!).

Do you already use UUIDs as primary keys in your solutions - or just the integer keys? Drop a comment below to chime in!

FileMaker Tip: How and Why To Use Universally Unique IDs (UUIDs)

NOTE: Requires FileMaker Pro Advanced to setup.

When setting up your database - you probably already use some sort of unique record id that you can use when you relate data to/from another table. It's called a primary key. And, if you're like most of us, you probably use the handy unique number auto-enter option:

Now, there's absolutely nothing wrong with this approach - and most of the time - it will work just fine. However, I was working on a project for a customer the other day - and while their solution was working fine - they wanted to be able to create a runtime for their remote salespeople who sell in areas with limited Internet/phone service.

Their problem was - once the sales folks entered the data in their runtime - how to get it back into the system without creating duplicates. After all, if you use a serial number for your primary key - and you have multiple runtimes - everyone will have the same value for the "next record."

For example, if you have a contact list with a serial number as a primary key (let's say the "next" value is 100) - and you create runtimes - then the first contact that Salesperson A creates will have a primary key (ID) value of 100. And, the first contact that Salesperson B creates will also have a primary key value of 100. Then say that each salesperson enters a new invoice (which will also have the same "next" primary key values) for each of their respective new customers.

When you go to import the records back into the "master" solution at the office - you would have to do all kinds of key replacements, finds, updates, etc to ensure that every record ID is unique. That can get complicated very, very quickly.

The good news is - there's a simple solution - it's called a Universally Unique ID - or UUID for short. A UUID is a set of 32 digits that is "practically" unique. Here's the Wikipedia definition:
A UUID is a 16-byte (128-bit) number. The number of theoretically possible UUIDs is therefore about 3 × 1038. In its canonical form, a UUID consists of 32 hexadecimal digits, displayed in 5 groups separated by hyphens, in the form 8-4-4-4-12 for a total of 36 characters (32 digits and 4 hyphens). 
For example:
Whoa! Cool, right? So how in the heck are you supposed to use that as your primary key in FileMaker? The short answer is: you need to create a custom function - and set the auto-enter value to a calculation. Don't worry - it's easy!

First - cruise on over to Brian Dunning's fabulous repository of custom functions - and search for "UUID" in the search box:

You'll see a number of different options. I like the one called "UUIDRandom" written by Jeremy Bante of The Support Group. Just go to the detail page for the function, copy the code in the box - and go back into FileMaker and choose File -> Manage -> Custom Functions. Click the "New..." button and enter UUIDRandom as the function name, and paste the code into the space provided:

Click OK and dismiss the Custom Functions manager window. Now choose File -> Manage -> Database... and in each of your tables create a new text field. You can name it whatever you want - but I suggest that you use "UUID" somewhere in the name.

Once the field is created click the "Options..." button and click on the "Auto-Enter" tab and click the "Specify..." button next to "Calculated value". Enter "UUIDRandom" (no quotes) into the calculation dialog:

If you're building a new solution - you're all set! However, if you're trying to integrate a UUID into an existing solution - there are a few more steps - but this whole process is strictly a one time thing:

  • For each table - you need to create a UUID value for all the existing records:
  • Add your UUID field to an existing layout (temporarily);
  • Go into Browse mode and show ALL records;
  • Click into the field and choose Records -> Replace field contents...
  • Choose "Replace with calculated result:" and enter "UUIDRandom" (no quotes) in to the calculation dialog like you did when you defined the field.

Now you have a unique value for all your records. The next thing you have to do is to create another text field in all your related tables (ones that are linked using relationships) - so that there can be a foreign key that will relate the master record to the children records.

You need to populate these foreign keys in the child table with the primary UUID from the master table. For example if you have a relationship that links Customers to Invoices by Customers::Cust_ID = Invoices::Cust_ID then you need to create a new field in Invoices called Cust_UUID and put the value of the customers UUID into that field.

To do that - we're going to force a lookup of the simply go to your child table (in the above case "Invoices" table) - put the Cust_UUID field temporarily on a layout, choose to replace the field contents via a calculation (like we just did above) - but this time - use your relationship to enter the value of the master record. In our example - we would use:   Customer::Cust_UUID.


The next step is a biggie - so take your time! You need to change your relationships to use the UUID fields rather than your existing "id" fields. In our example - our relationship that linked Customers to Invoices would now be based on Customer::Cust_UUID = Invoices::Cust_UUID.

After making the relationship changes - you may also need to go back into your scripts and if you do stuff like reference the Cust_ID field when setting variables, or you copy/paste it - you need to use the UUID field instead.

Yeah, I know. That's a lot of work.

BUT, in the end - you'll have a solution that uses UUIDs and you won't have to worry about record id collisions - and in the future when you create new solutions - if you use this scheme right from the beginning - there's no "pain" at all.

Wednesday, July 27, 2011

How To Survive Your Next Airline Trip (In Coach)

Now I don't travel as much by plane as I once did - however I came across a little gem that will make your next trip in coach more bearable.

This is a must-clip-and-save - in fact, I'm going to laminate one (or two) and keep it in my carry-on!

DOWNLOAD a full-size PDF!

Tuesday, July 26, 2011

The Services/Products Startups Use The Most [INFOGRAPHIC]

I came across this infographic - and thought it was fascinating. Even though the sample size is pretty small (only 550 people) - it still shows some pretty interesting trends:

  • SaaS (Software as a Service) is here to stay - and is an important part of the software mix
  • Intuit has a good hook into the accounting/finance/payroll world
  • People will put up with less features for less cost (e.g. Google Docs)
  • "Easy" is the new "sexy" (e.g. Mac, Paypal, etc.)

COMMENT OPPORTUNITY: What kinds of tools (SaaS and local applications) - do you use in your business?


How To Get Coments On Yor Posts

I came across a graphic - and I just had to share it with you - because, in my experience, nothing is closer to the truth:


Monday, July 25, 2011

CDs and DVDs Are The New 8 Tracks

Quick question - how many of you still play "records" on a turntable? Play 8 track tapes? Cassette tapes? Probably not many.

Do you play CDs or DVDs? Sure! Everyone does.

For now.

All that is about to change. As with most cultural/technical change it's Apple that's leading the way. They just came out with a new version of their OS X operating system ("Lion") - and for the first time - they are distributing it electronically only. No DVD install. No shrink-wrapped boxes in the store....

... and ... cue the but-I-only-have-dialup-because-I-live-in-the-boonies crowd and the but-we've-always-had-a-backup-on-disc crowd...

These holders-on-of-the-past were all howling on their blogs and social media before Lion came out - but Apple remained defiant. Until last week when they announced that they would offer a USB drive with Lion on it for $69 sometime in August (the download version is $29.99).

But regardless of Apple's momentary lapse - it's coming.

There will be a day in the not-too-distant future when Apple won't offer a thumb drive. Don't forget Apple was the first major manufacturer to start shipping the 3-1/2" drives in 1984 and was also the first to stop including a 1.44MB floppy drive with their iMac computers in 1998 - opting instead for the newer technology - the CD.

Apple was one of the first companies to ditch the CD altogether (MacBook Air) in favor of downloaded digital music and downloaded applications. They also were one of the first to bring out a device with a portable solid state drive (SSD) with no moving parts so people could take their music where ever they went.
A little something they called an "iPod."

We all know about how Apple changed the mobile phone market forever (the screen is the interface! who needs buttons! give us visual voicemail!), it also changed the tablet market forever (there was no market before the iPad). Apple tends to have a finger on the pulse of what "real people" want - and they solve real world problems, and then they make money, and then everyone else tries to do something similar.

We're seeing it in other areas, too. Borders book stores announced on Friday it was shutting down. Netflix (and to a lesser degree Hulu) killed off Blockbuster stores. Your cable company is offering movies "on demand." Google has teamed up with Sony and Logitech to combine the web with TV (Google TV). High schools and colleges are running pilot programs for students to rent their textbooks on their iPads. At the beginning of May 2011 Amazon said that Kindle eBook sales had surpassed sales of hardbacks and paperbacks combined.

In the future you won't be able to go to a kiosk and rent a DVD. Or go into a "music store" and buy a CD. Or go into a "book store" and read a book.

Nope - it will all become digital bits that you rent or buy and then download or stream into your life. Entertainment is becoming like those annoying in-room movie rental interfaces where you use the remote to buy a movie and they charge it to your room. Sure, you can watch "live" TV (for now) - with all the commercials (that you just record [digitally] on your DVR and skip through when you watch it at a more convenient time) - but that will become (is?) passe.

There are still CD players in most cars and DVD players in most minivans. For now. In a foreshadowing of what's to come Ford has stopped offering the (once cool!) multi-CD changer in its latest model Focus, opting instead for a wireless bluetooth connection to your mobile device (for phone calls and to play your music) and a digital satellite radio. They've even teamed up with Microsoft to offer Ford Synch - an operating system for all your entertainment/calls/traffic/news in your automobile.

There are refrigerators with Internet access and a screen built-in. There are televisions with built-in video cameras for George Jetson-like video phone calls. Clothing retailer H&M came out with an online store where you can go into a virtual dressing room and create a digital model of yourself and try on clothes to see how they look. Your smartphone functions as your camera and HD video recorder and allows you to upload that picture or video to the Internet where ever you are in the world while Twitter and Facebook are becoming the sources for breaking news.

Yes, my friends - the all-digital age is coming full force.

The good news is that coffee shops and restaurants will be safe from the digitization of humanity! Until they work out the Wonka 3-meal gum... oh wait, they are working on it...

OK, until they invent that thingie in the Jetsons where you can rehydrate an entire meal from a pill - there's hope that we won't all just wind up digital hermits going through life in our isolation chamber while looking at a screen...

Friday, July 22, 2011

Servoy TIP: How To Automate Sending Mail from Gmail

I recently needed to create some functionality to send mail via my Gmail account from within Servoy. It sounds pretty straight forward, but it turned out that there was one parameter that tripped me up. If you don't include this line of code - it won't send email, no matter what you try:


Took me a little while of digging on the Internet and trying stuff to get it to work. So, for this week's tip - I thought it might be a good idea to share the code:

function sendEmailUsingGmail()
       var properties = new Array();
       properties[0] = '';
       properties[1] = 'mail.smtp.port=587';
       properties[2] = 'mail.smtp.auth=true';
        properties[3] = 'mail.smtp.username=';
       properties[4] = 'mail.smtp.password=';
       properties[5] = 'mail.smtp.starttls.enable=true';
        var msgText = 'test message';
        var success = plugins.mail.sendMail('', '', 'subject', msgText, null, null, null, properties);
        if (!success) 
              plugins.dialogs.showWarningDialog('Alert','Failed to send mail','OK');


FileMaker TIP: Passing Multiple Script Parameters (FileMaker 8.5+)

If you do a lot of scripting (and what FileMaker developer doesn't?) - you can cut down the number of scripts (and globals) you have to create by using script parameters on objects. Since you can only send a single parameter to a script (like you can only send a single parameter to a plug-in) I've seen a lot of developers who use a delimited string to send multiple parameters (like you would in a plug-in call). Something like: "red|blue|green".

Then, in their script, they would parse that incoming parameter into 3 values.

But, here's an easier way - just use the List() function to pass the parameters in:  List ( "red" ; "blue" , "green" ) and then use GetValue() to reference the individual values: GetValue ( Get ( ScriptParameter ) ; 1 ). The result would be "red" for the first GetValue, "blue" if you change the number to 2, and "green" if you change the number to 3.

Assume we have this script:

Then we create a button and specify that the action is to perform the navigation script (at the bottom of the "Specify Calculation" dialog is the place to enter your parameters):

Now when you click the button - your variables are all set in your script:

This is way easier than parsing it all yourself!

Thursday, July 21, 2011

All The Space Shuttle Information You Need [INFOGRAPHIC]

Check out this Infographic from NRP - it's got all the stats on the shuttle you want/need:


No Soup For You! Read Your Terms Of Service On Social Media Sites

Back in the days of heady telecom deregulation I had a landline (a "landline" is slang for having a telephone that is hard-wired into your house) - I had AT&T for both my long distance carrier and the provider for my sweet Motorola v551 (it had a COLOR screen and you didn't have to pull out the antenna before you started talking!).

I was either traveling or my desk was just unorganized (I don't remember which) and anyway, I forgot to pay my home phone bill. In those days you got a "nag letter" about the fact that you missed payment and they usually gave you a grace period to get your money to them (a "grace period" is when the company you owe money to waits for 10 days to receive your payment - by check - in an envelope - with a stamp on it... a "stamp" is... oh, forget it).

When I got the nag letter, I decided to just call them, apologize and give them a credit card and that would be that. Only, when I went to call them on my cell phone, I found out that they had cut off my service. So, then I tried the house phone, dialed the local (toll) number - and found out that my long distance didn't work (I could call locally).

OK... so I went to a neighbor's and used their landline to call the mothership. I got a non-outsourced person on the phone (back in those days, they hired Americans in America to answer the phone for their customers in things called "call centers") - explained what happened, gave them my credit card number, etc.

While I had them on the phone I mentioned that I needed to talk to their tech support department because my cell phone seemed to be on the blink... "No, I show all the towers in your area working fine. The problem, Mr. Cusick is that when your long distance bill was not paid, we suspended your mobile account as well."

What the ?

Long story short - it turns out in the Terms of Service for AT&T long distance was that in the event of non-payment, they had the right to suspend or terminate any other AT&T service you may be using as well (still applies today).

Apparently, the same thing is happening with Google and their Google+ service. It seems that if one runs afoul of the terms of service for Google+ - they have the right to not only terminate your G+ account, but your Gmail account - and any other Google account as well (Docs, YouTube, Beluga, etc).

Case in point - there was recently a case where the 10 year old son of a programmer got an invite to G+. He (along with the rest of us) signed up with glee - entering his birthday as part of the process.


Denied! He was denied access to G+ because of his age (which I sort of understand)... but it turns out he was then also completely locked out of his 2 year old Gmail account as well (yeah, I know, who lets an 8 year old have a Gmail account? But that's for another time...). This made him very upset. This made his dad very upset.

Now, to be fair to Google, the boy did violate their terms of service, but one would hope think that a person should be given some kind of grace period to retrieve "their" emails and contacts - right? Nope.

I understand the need for safeguards and for the "appearance" of being a responsible company "looking out for" young people (read: covering our Google-butts) and all. However, we are living in a digital age. The digital social media sites are the equivalent to hamburger joints in the 50's. It's where kids go to hang out, talk to each other, see whose online, and put stuff like "I'm bored - someone text me" in their status updates.

Rather than encouraging our younger generation to become familiar with technology and get in touch with their "inner geek" and learn proper online etiquette (and offline etiquette for that matter) - the mainstream companies are blocking access to the next wave of digital consumers. Kids will (and do) gather. Be it on Skype, IM, group texting, ooVoo - or any one of a hundred other outlets - they will find a way to communicate with others (and the world).

It's the parent's job to parent. It's not Google's.

Wednesday, July 20, 2011

Shameless Plug: Podcast Interview With Me by Ken Levy About Servoy

Ken Levy, one-time product manager for FoxPro (yeah, I know... right?) - well, he's a helluva great guy and he took some time out of his busy schedule to have me on his Servoy Podcast the other day.

If you're not sick of reading about my blathering on about technology - now you can be annoyed by my audio as well!

Grab a beverage - it's over an hour long...   Servoy Podcast With Ken Levy

All comments and suggestion welcome - as always!

The Interconnection of Technology Companies [INFOGRAPHIC]

Where do all the technology companies and those "services we can't live without" come from? And who are the guys that came up with them? And where did they work before they came up with "the next big thing?"

Three words: Microsoft and Apple.

Yep, it seems that while on the quest to copy dominate the world, Apple's and Microsoft's HR department found some real forward-thinkers who, given the chance (and a few million in venture capital!), started some of the most well-known (now) companies and services around.

Check out the interconnected and sometime tangled web that is the technology landscape:


Tuesday, July 19, 2011

Which Open Source Content Management System Is Right For You? [INFOGRAPHIC]

In the world of CMS (Content Management Systems) - there are three big open-source players: WordPress, Drupal and Joomla (yeah, I know they have crazy names but this was the late 90's).

While they all have a lot in common: they help you publish your blog, monetize your content, are database-driven, allow non-programmers to add content to both blog and e-commerce sites, etc - they are all different in terms of how easy/hard they are to setup and maintain, and how much market penetration they have.

I've personally setup both WordPress and Drupal installations - and the basics are pretty easy. In the interface and intuitiveness part of the program - I personally give WordPress the "thumbs up" - although once you master the (very) steep learning curve of Drupal - it's a very flexible system (as long as you stick with version 6 - as the number of real-world contributed modules for 7 is - as the time of this writing - really lacking).

I found this infographic from the folks at DeviousMedia that helps to lay it all out in a nice-and-pretty format:


Sunday, July 17, 2011

New Product: Documentorium Lite For FileMaker

OK, OK, I know we just brought our Documentorium for Servoy late last week... but I had a some FileMaker friends/customers ask if there was a FileMaker version available as well. It just so happens there is...

Saturday, July 16, 2011

Is There A Tech "Bubble" Or Not? [INFOGRAPHIC]

With the recent high-profile tech IPO offerings (LinkedIn, Netflix, OpenTable) and the recent rumors of high-profile tech companies IPOs on the horizon (Facebook, Twitter, EventBrite) - it's beginning to look a lot like 1999 to me. The valuation of LinkedIn was just.. well crazy. The initial stock price was $45 per share - giving the company a valuation of about $4.5 billion. The stock price is now around $105 per share - that means that LinkedIn has a valuation of about $6.4 billion.

DOH! For LinkedIn? Really?

Here's a great infographic for comparing the great bubble to how things are shaping up today:

Friday, July 15, 2011

New Product: Documentorium For Servoy [UPDATED!]

I recently had a customer that required some technical documentation for a Servoy solution I built. Technical Documentation? YUK!

The more I thought about it - the more I realized that it would be handy for me to also get a "30,000 foot view" of the solution. I needed to know what objects referenced what method, where local variables were used, where global methods were used, etc - so that if I decided to re-factor the code I would know what I was in for.

Thursday, July 14, 2011

Is Social Media Making Us More "Media" and Less "Social"?

OK, so I've written a few times about my take on social media - and I'll admit - it has changed over time. I've gone from mocking it, to loving it, to somewhere in-between, to taking a break from it. It seems that everyone is so intent on updating their status, tweeting "the latest", joining (or being added to) a "circle" that we're forgetting one, teeny, tiny detail: we're not actually interacting with people. In real life.

Wednesday, July 13, 2011

Servoy TIP: Creating a Timed Recurring Script

Have you ever wanted to create a method that would run at a certain interval within your solution? Maybe you're creating a messaging application that checks for messages every 30 seconds; or maybe you want to automatically generate PDF reports and email them every night...

FileMaker Tip: Live Summaries

NOTE: This tip requires FileMaker 10 or higher

I don't know about you - but I get a lot of requests from users to create exports to Excel. They have their reasons - but mainly it's because they want to see data a certain way, or they've used it for so long it's the only software they feel they really "know", or they want to do unholy things with the data, etc., etc.

Tuesday, July 12, 2011

How To Build Simple, Complex Software

Judging from the response I got from yesterday's blog posting about customer-centric design - I thought I'd do a more practical follow-up. The feedback that I got went something like this: "Yeah, well, ok - but how do we accomplish customer-centric design (in processes as well as our software)?".

Monday, July 11, 2011

Customer Centered Software Design

What would it be like if software companies acted more like Zappos (the customer-centric online clothing and shoe store) - and less like... well... software companies? Zappos was renowned for their free shipping and their absolute focus on making sure the customer was happy. They allowed (even encouraged) you to buy 3 or 4 sizes of shoes (or pants or whatever), try them on in your own home, and they would pay the shipping for the stuff you wanted to return.

Friday, July 08, 2011

Servoy TIP: Working With Record Objects

In my last Servoy Tip I explained how to assign a new record object to a variable. Once you have any record object referenced in a variable - there are cool things you can do.

FileMaker TIP: Getting Rid Of The IWP Login Page

If you use the Instant Web Publishing (IWP) feature in FileMaker to expose your database(s) via the Internet, there may be times when you want to disable the default login screen, or change the design of it, or even allow the user to "automatically" login as a guest via a web link.

Thursday, July 07, 2011

Quick - Build A Paper Airplane! [INFOGRAPHIC]

If I only had a dime for every time some asked me to build 5 different paper airplanes on-the-fly.. ummm... well... I'd have a dime. BUT, just in case - enjoy:


How Your Phone Gets Hacked [INFOGRAPHIC]

I was having a conversation with a group of people not too long ago - and I got a lot of questions about port sniffing and vulnerabilities while surfing at your favorite "free" wifi outlet. Here's a handy-dandy infographic to help you figure it out:


Wednesday, July 06, 2011

How Billionaires Got Their Start [INFOGRAPHIC]

Wanna' be a billionaire? Don't give up hope! You gotta' start somewhere - just like these guys:

Tuesday, July 05, 2011

Hack Attack - By The Numbers [INFOGRAPHIC]

I'm taking a couple of days off - but I thought I'd give you some food for thought while I'm gone. Today's Infographic is all about the recent hacks of the Sony network by Lulzsec - and at the bottom - give you tips on how easy (or hard) your password is to crack (hint: change yours from "1234" - NOW!)


Monday, July 04, 2011

How Much To Pay Off America's Debt? [INFOGRAPHIC]

In honor of America's Independence Day - I came across this Infographic outlining how much it would cost to pay off America's debt...


Friday, July 01, 2011

Servoy TIP: How To Efficiently Create Records

There are a couple of different ways to create records when you're coding your solution:
myField = "value";
This will create a new record as the first row, and will update the user interface. In most cases this is OK - however, there may be times when you want to add records and not update the user interface. In this case you want to use the foundset object:
foundset.myField = "value";
Now that's all find and good - the record will be created and the user interface won't immediately change (until you call databaseManager.saveData()). This method is much faster when you're creating a bunch of records (or related records).

Now, something that I use when I'm using the second method is to grab a record object reference when I create the record - so I can choose to commit that newly created record right away. Here's the slightly modified code:
var record = foundset.getRecord(foundset.newRecord());
record.myField = "value";
Because we have a reference to the foundset record in the variable called "record" - we can tell the databaseManager to only save that one record (rather than all outstanding changes).

FileMaker TIP: How To Insert Tab Character In Fields or Calcs

Have you ever wanted to insert a tab into a block of text (so you can use tab stops to line up columns of text), or have you wanted to use the tab character in a calculation? If you try to just press the TAB key, the default action for FileMaker is to go to the next field... bummer.
Web Analytics