Warning: session_start(): Cannot send session cookie - headers already sent by (output started at /home/oldirty/public_html/wp-content/plugins/antisp/antisp.php:1) in /home/oldirty/public_html/wp-content/plugins/ss-downloads/includes/setup.php on line 5

Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at /home/oldirty/public_html/wp-content/plugins/antisp/antisp.php:1) in /home/oldirty/public_html/wp-content/plugins/ss-downloads/includes/setup.php on line 5
Wing Forward: FileMaker in New Mexico

Archive for the ‘Thoughts’ Category.

Learning

It’s funny how things I’ve studied thoroughly do not necessarily register themselves in my brain as useful knowledge until I’ve made use of them.
In working with Filemaker, and learning it in a somewhat haphazard way, it’s cool to observe how I learn. First off, I started by reading many books and stuff on Filemaker –  some of them I started at the beginning and worked my way through most of – others I read a chapter here or there, trying to figure out how to do stuff as I came across the problem. Anyway, then I started working here and really began applying what I’ve learned. It’s really cool when (as just happened a few minutes ago), David comes across something I’ve done and immediately notes a very elementary mistake I’ve made. I mean, I suppose mistake may not be the right word – just where I’ve done something in a silly way that one would expect me to know how to have done the correct way. And as soon as he mentioned the correct way (in this case doing a Cartesian Join of two tables), I remembered having read about that and thinking ‘mm-hmm. mm-hmm. k. got it.’ a long time ago, but since I didn’t use that information or explore it’s uses way back when, I never REALLY learned it. Anyway, it’s cool to actually learn something that you assumed you already knew!
This is also applicable with my knowledge of PHP & MySQL. Wendy and I are studying it from a great, hands-on book (called Head First PHP & MySQL by O’Reilly Publishing – the Head First series is SUPERB for learning technology stuff!), however, I feel I’ve learned just as much from poking around php files in WordPress and looking at other developers’ code and blog articles, trying to customize a website that I’m working on.
Moral of the story: While I love reading manuals and books and learning every little detail about stuff in an orderly fashion, the most useful way to learn practical things is to just try to do them and figure out the details as they arise.

A Solution So Simple It Could Never Work…

Again, working on the EasyBilling database on a Mac running 10.4, Filemaker Pro v. 5.5…

This time, when our client tried to create a new patient, he got an error message, a document navigation window and then a blank record where he was unable to enter a patient account number.
I watched him go through the fruitless motions of trying to create a new patient and then repeated the process myself, except when it lead me to the document navigation window to locate the document that the database claimed it could not find, I took a stab at finding it. Problem solved!

That is, until you close the database and reopen it – then it no longer knows where it’s files are. After trying to “teach” this database where its own corresponding file was located (by locating the file for it several times in several different ways), I thought to myself, “Fine, database. Obviously, I cannot teach you to fish. I suppose I’ll just have to bring you a pile of permafish so you’ll never go hungry again.” The file that it could not find was in a folder that enclosed the folder that the main database file was in. Does that make sense? Probably not.

Explanation: First off, Filemaker 5.5 is before you could have more than one table in a single file (or maybe Filemaker 5.5 could handle that, but this vertical market billing solution was designed in a version of Filemaker that separates each table into its own file) – so each table in this billing solution is its own file. That’s cool, until one of it’s files is moved – and then it freaks out (understandably – I would freak out if you moved my arm to a separate location!). You see, when we moved these files from the ancient computer to the antique computer a few weeks ago, they somehow came to be in a bit of disarray (I guess…). The EASYBILL.FP5 file was in a folder called EASY BILLING 3.5.7, in which there was another folder called EASY BILLING 3.5.7 which contained the rest of the database files. Which means the main database file was looking for its arm inside its house (folder), when really the arm was sitting just outside the house. You could point it to the right place, but as soon as you closed the database it would forget where you had told it to find its arm.

So… after the database proved itself dumb, I (figuring it would never work, that the solution could not POSSIBLY be this simple, but having no other ideas left to try) moved a copy of the EASYBILL.FP5 file into the same folder as the rest of the database files. And…. (drum-roll, please) VOILA! Magic! I restarted the computer, reopened the main file, clicked on the create new patient button and the database was able to find its arm / pile of permafish – all by itself – no learning necessary! Phew.

Gather my thoughts

Organization of Thoughts.

The more I work with Filemaker, the more small tasks I find myself having to juggle in my head while working on an element of a database. Today I was deciphering (attempting to, at least) SeedCode’s Free Calendar for Filemaker. It is INSANE (in a brilliant way). And as I pondered how they were making things work, I found myself unable to juggle all the pieces in my head at once and becoming progressively more amazed at how they seem to have thought of all these things in advance.

I have this problem often when I’m fixing one small part of a layout or script in a database that I’m working on. As I tinker, I think to myself “Oh!  I need to fix a similar thing on ______ part of the database. Oh, and that one. And then I’ll have to change this thing here and make it consistent over there. And…” etc. It’s difficult to maintain a balance of focus on the task at hand while not forgetting the various other tasks that need doing as a result of this task.

I had the same problem while coding my mom’s website (STILL IN PROGRESS) yesterday. I am not using a content management system for it because I’m not familiar enough with any of them to install and customize it in a reasonable amount of time… but it would be MUCH easier if I were. There are so many simple pages, and every time I change one thing on one page, I have to go through and see what other pages will need a similar change and update them all.

Filemaker is good at keeping track of such things for me (the developer), but clearly it cannot catch inconsistencies between my layouts or ways that I wrote different scripts. It just keeps track of the names of tables, fields, scripts and layouts so that when I change a name it updates the names universally.

These challenges intrigue me. I want to know how one goes about designing a content management system. Where do you even begin your plans to ensure that the whole system is as consistent and infallible as possible? I want to learn more about not only software development and coding, but about the planning process. I think it would help us in our database designs and builds. Having a thorough, straightforward planning template would help ensure we don’t have to backtrack making consistency updates so often.

This problem was more apparent to me when using SeedCode’s Calendar today because I didn’t even know all the connections and dependencies that I was affecting as I worked (which caused me many problems). It’s amazing – their code is SO well-documented and clean, and yet I still broke the whole layout by moving around things which I thought I then put back in place!

Another element of this whole planning and organization of thoughts is documentation. Before I started working at Wing Forward, I didn’t put any documentation into websites that I made for people – or into anything, actually. And while we’re not documentation experts (by ANY means), David encourages me to comment scripts so that we can see later what they are doing and how. I’ve found that I’ve started doing that for my own sake on my own projects – even in Illustrator templates that I will return to later. It’s SO helpful!

Summary of thoughts:

Plan first. THOROUGHLY. Design with consistency and maintenance in mind. DOCUMENT your work as you go. And there you have it, the makings of a content management system, yes? I don’t know.

12mbps Down!

i want 12mbps download.  Faster upload would be nice too, but seriously, just being able to work at a decent speed in the office with 4-5 machines hogging bandwidth is what i want.  Need, perhaps.  What kind of technical business is this?  Crawling along at 1.5.  Did a speed test (speedtest.net- i’m addicted to it like everybody else checks their facebook) and at one point today we were at 0.37mbps.  Thanks Qwest.  What’s that in kbps?

So do you also want 12mbps down?  It’s easy.  Call Comcast.  Apparantly the only game in town that can get you above a 7.  And i think Qwest’s 7 is dubious at best.  It gets clogged just as quickly when the neighborhood wants to play Modern Warfare 2 simultaneously.  So, call Comcast.

Spent about 2 hours on the phone today trying to do just that.  i’m on a first name basis with at least 4 employees over there including Ricardo in Miami.  He didn’t know why i was routed to Miami.  He also couldn’t tell me who was holding the bulk account with Comcast over in this part of the world.  Bulk account?  You mean like the bulk account that the high rise office building across the street is holding?  To provide cable t.v. to all the people living in the multi-story apartment complex on Richards?  Who has a bulk account with Comcast?  What does that even mean?

Another couple cross connections through the cable company network and i’m in touch with Mike.  He tells me that not only is there no bulk account, but there’s no cable even being run within a quarter mile of this location.  It will require a construction crew to lay cable.  So i can get my 12mbps down.  i asked Mike how much that would cost.  It was funny.

Is ping pong work?

I was recently questioned by a member of David’s family about ‘how it was going working for him.’ I told him that ‘we worked hard, but had fun.’ He countered that we may work hard and have fun, but ‘did we get anything accomplished?’

It has also been insinuated that all we do in our office is play ping pong.

Now, it is true that we have a ping pong table. It is also true that we play often. It is also true that I win. A lot.

Does it affect the quality of our work? You bet it does! Every time I take 10 minutes away from the computer to smack that little ball around I refresh all the synapses in my brain, which helps me to see my current problem more clearly. I also build on my relationship with the person on the other side of the table, which helps me to work with them. And the adrenaline from winning? Well, that just makes me feel good.

So I answer: Yes, we do get some things accomplished and it’s because of the ping pong.

Nonsense

Seriously, i have nothing to blog about.  It’s bad enough that they’re trying to post a picture of me on this website (so far i’ve been successful in dodging the camera) but now the office wants thoughts from me as well.  i’m supposed to be working, not thinking.

So instead of writing this in the time that i was allotted, i surfed the etherverse and learned interesting things about computer viruses for the Mac, how to improve email efficiency with Gmail, and how to set up a server to host filemaker.  That’s all fine and good but what have i really accomplished?  Learning?  Isn’t learning only worthwhile if the knowledge is applied?

i have not done anything to protect myself from computer viruses on the Mac.  i have not actually improved my email efficiency (only learned how someone could if they had the motivation).  And lastly i have not actually set up the server to properly host filemaker (i’m still waiting on a phone call).

i just thought of something else i have learned today.  Those folks out there hosting servers for a monthly fee are terrible at support.

In summary:

1.  Don’t put my picture on the internet.

2.  Don’t think about what to blog about, just blog about it.

3.  Don’t expect customer support to help you in any way, shape, or form.  You are on your own.

4.  Don’t read this (probably too late by now).

Stay tuned…

Idiot-proofing an Idiot

Filemaker. Blogging. At work. Having fun, actually.

(I just started using Filemaker about eight months ago. Little did I know where it would lead me. I liked it so much I ended up quitting the job I had at the time to work for WingForward, makin’ databases.)

What’s great about Filemaker is that any idiot can use it. What’s also great about Filemaker is that not any idiot can use it.

The program seems so easy when you are first introduced to it – you can build tables that have fields and layouts to display the data and scripts to manipulate the data, all in a point-and-click format! So you dive in and get very excited about data and how you should organize it and how your users should use … wait! What if the users are dumb? Aha!

Problem One: How do you design your database so that users intuitively know what to do and can’t mess it up? (Scratches head) Place that thought on the back-burner for now. Back to makin’ the database.

Designed a great layout, made to access all data and do every- oh. nope.

Problem Two: My new layout doesn’t do anything because my table occurrences aren’t set up correctly. Huh. (Twists mouth into thinking frown) Well, I’ll just use some scripts later on, I suppose.

Alright. Makin’ more of the database. Going to link this field in this table to that field in that table, oh and that one, but wait… if this changes, how will that? Oh goodness!

Problem Three: How do I structure my database to make it flexible and have it accurately model the data it holds?

Okay. Scrap that. Begin afresh. (Repeats ad infinitum until meets with experienced database developer: intro David Jondreau)

Working for David, I’ve learned some of the tricks of the trade in developing databases – how to strike at least somewhat of a balance between safeguarding the database from mistakes and dumb users and not making it too cumbersome. I’ve learned the basics of how to write scripts (being entirely new to any kind of computer programming, even these guided, pre-built parcels of commands to the database were quite foreign and scary to me). I’ve also learned to build the structure of the database around how it is going to be used, whereas my initial instinct was to do just the opposite: start with data structure, adapt it to user afterwards.

Most of all, I’ve learned not to scrap and restart every time something isn’t working perfectly. We adjust and rethink constantly to improve the project we’re working on, but it’s more of a challenge and creates a better overall database to work with what you’ve got instead of starting afresh every few days. I’ve also found that each developer has their own set of tricks and preferences that they graciously share and discuss with one another. It’s very helpful to talk to and interact with different developers. Maybe someday soon I’ll have some of my own preferences and my own reasoning behind the database building techniques that I use (right now mine are mostly inherited from David).

Final note: I’m now entering data into a database that I’ve spent a great deal of time developing, and I’ve found it almost as much fun to use the database as it is to build it. The real treat is that now that I’m using the database, I can see what kind of idiot the developer (me) has been. Moral of the story: the dog barks at midnight… or at least when it’s dark. Also, side-note, in addition, plus: a wet bird never flies at night. Take that, dog!

Low hanging fruit

There’s a lot of low hanging fruit out there. More than I can possibly pick.

Problem is, they’re all on different trees.

That makes it hard to be really good at picking one type of fruit, to form an identity around it, and that’s important to me. And maybe to you.

So I choose Filemaker as a niche. It’s one of many systems for organizing and presenting data. It has its good and bad points, but I know it well.

What’s your fruit tree?

Pretty shiny things

Working smarter, changing habits, improving our lives is hard work.  If it weren’t we would already be living optimized lives.

One pitfall I run into is celebrating because things feel like they’re going well.  There’s two mistakes buried in there.  One is relying on how I’m feeling about progress rather than measuring progress.  The other is an unplanned reward.

I’m not saying I should become a un-spontaneous bean-counter. There’s tons of reasons to celebrate spontaneously in my life.  But making incremental progress is not one of them.

“But what’s wrong with having a couple beers, or a muffin or playing a round of ping pong?” “Wrong” is a ineffectual way of putting it.  Nothing is “wrong” with that, but are those actions are not helping me towards my goal.

It’s important to have time-dependent goals with metrics and the steps to achieve that goal.  With that in place following those steps, and not getting distracted along the way is easy.

Now I write down what I plan to achieve in a day or a week, and while I can sure celebrate if I want, it won’t be because I’ve made progress or *almost* met those goals.

I’m not going to use half-assed performance as an excuse.

Thinking about other large land mamals

This morning I checked out my daily websites, which includes FMForums.com, a community of FileMaker Pro developers.  I replied to a couple queries.

One of them was a “wrong” question, asking how to solve a specific problem (counting the number of null fields in a record), when it was clear the structure of the database was flawed.  But a couple people had already pointed that out, and a non-obvious answer to the actual question had popped into my head, so I replied.

But it wasn’t the best answer I could give.  My reply didn’t fully answer the question; a full solution to the literal question probably involved recursion and some nested Let() statements.

I took the dogs for a walk and kept thinking about how to solve this question.  Then I started thinking about why I was thinking about this question.

Someone I don’t know asked an irrelevant question that had already been answered…  and I was spending non-trivial resources on it.  Why the hell am I doing this? And how do I stop?

It’s the old “Don’t think of an elephant!” trick. You know, someone says, “Don’t think of an elephant” and you’re supposed to not be able to stop thinking of elephants. But it’s a cute trick based on false premises.

The phrase  implies the impossibility of deliberately controlling your thoughts.  But that idea is false.  I can “not think of an elephant” by thinking of a rhinoceros.  Or a giraffe.  Or I can “think” of nothing at all and just observe.

Instead of thinking about an inconsequential FileMaker post, I can think about…today’s blog post! Or plan my next saleable database. Or listen to my dog dig in the arroyo.  Or watch how the sun streams through the yucca.

Important things.

And if it’s not clear what’s important, I can think about that!

And so I did.  I thought about what was important to me: health, wealth, and happiness. I thought about writing this blog post.  I watched how Ollie moves from the shad of one pinon to another.

I thought about how I can spend more resources on achieving those things and less on the irrelevant stuff.

It was a good walk.