Thursday, April 10, 2008

And so it begins.

reciently I've decided that OLA is going to be more of a
service and informational company. By this I mean that
OLA will not just be in the business of creating
applications. We are also going to start creating
content. I specifically will start moving my focus away
from the code and into the educational arena. Have no
fear others will still be rampant coders.

To get the ball rolling I figured I'd start out with what
I know. Code.

Over the past few years I've struggled with the challenge
of being better at programming. I've spent many
hours/week/years talking to the "old timers" to get a
better idea of what makes a better coder. How does one
need to think to be not just good, but great. Here's what
I think I've learned.

1. Oh my God comment your code. I don't care how much
you think your code is self documenting it needs comments.
There is nothing like getting someone elses code and
having to read it line by line to understand it. Even
languages as simple and straight forward as python need
them. Some of the newer coders out there may say. "I
understand it". To them I wish with all my heart that they
have to read code from an ex-co-worker.

2. Every beat of your heart matters to you. It is
litterally life and death. Every cycle matters to your
processor. Ok now this is a bit over the top, but I think
that a great coder strives at all times to be efficient.
Now I'll be the first to admit that there are always
trade offs where code is concerned; however I think a
good coder writes efficient code, a great coder writes
efficeint code consistently. "So what if the order of
the if/else make a difference.... " said another coder I
know. it's not something you should spend time thinking
about. To that I say. Okay it's a small thing and don't
sacrifice too much time thinking about it. But know that
it does matter and strive to understand it.

3. Use meaningful variable names. A few years ago I was
working on a project and found a function named TKR I
asked the coder who wrote the function the day before what
the function "RFD" did. (just made that up then) he of
course didn't know. then i asked what about "POH" again
he did't know. I did this with about 5 more three letter
function names. Finally I asked about TKR, to which he
said again "I don't know, what's the point?". "The point"
I said "is that if a day after writing a function you
don't know what it does how the hell do you expect me to
know." Oh and because he hadn't commented it took use
both about 15 minutes to figure it out. (it retuned The
Known Records)

4. Use white space like it's free. (when it is)
Clummped up code is nightmarish to read. It makes even
the simplest code seem scary. That's a perfect way to
keep your job but kill your productivity. Noone will ever
want to edit what you wrote, not even you. There is also
no reason for it. (unless your using a lang that doesn't
ignore blank lines) Think of code as written english.
You'd never read a book with no paragraph breaks, the
same holds true to code.

5.

Ok. I thought I'd have 5 things but I just couldn't think
of a5th thing. Those are really all I learned, Now I'm
not new to coding and by some standards I'm not old to it
either. I do however think each one of use could be
better if we created smoe rules to live by (as coders).
Code is IMHO a very beautiful thing. Coders have a
responsibility to keep it that way.

Monday, February 11, 2008

OLPC

Reciently I purchased a little green computer known by some as the 100$ laptop.
I have very rairly found a new peice of hardware so rewarding and fun, which is quite a statement for someone who gets to use a ton of handheld devices.

So what's the story with the 100$ laptop. First it's not an even 100$ it acutally came in at closer to 200$, Still an amazing price for the hardware. Then came the catch (though I love the idea of this catch), a canadian or american can not purchase one laptop at a time. They are instead forced to pay for two.

Two you say. I don't need two of them... Well good news you, pay for two but only get one. The other computer that you paid for goes to a kid in a developing country. You get a tax write off for the price of the second laptop. And here in lies the beauty of the 100$ laptop.

I think of all the hardware I've ever purchased for business or otherwise this one is among the top as far as making me feel like I got my money's worth.

Some neet features of the laptop whose proper name is the XO though the OLPC is what I like to call it. (ONE LAPTOP PER CHILD)
First it is running Linux. OLA has never coded for linux as we've never either had the need or had the client. That said opening the door even a little to this operating system could prove to be an amazing step forward. It could be a huge step nowhere but at least we're learning.
Second feature. It's amazing on batteries.
third feature.. the thing is designed for kids and as such is quit eruggedized. i've seen videos of it being dropped with no ill effects. my dell would have been in little peices. One stumbling block for grownups who choos to keep thier copy is that the keyboard is really small. The thing is built for kids so it makes sence but it's still a feature worth mentioning.
the screen is state of the art. It's designed to be used inside and outside and boy does it preform. I have to say it makes my dell look bad where this feature is concerned.
last feature i'm going to mention is the wifi. this too is state of the art and again it leaves my 6 minth old dell in the dust. I could pick up my router from the lobby of my building, and i live on the 12th floor. Amazing doesn't come close to how cool that is.

The short story is if you can get one. Google olpc and G1G1 (give one get one) and you should be able to get a little thing for your own.. ebay has some too and the price is sometimes better. go for it..

Friday, April 20, 2007

Spaming with my address

Oh how I hate spam..
Most of us live with spam as an annoyance, today however spam might have cost me some real money.
Today I got some responses to spam that was sent with my companies address as the return address.
My best guess is that the spamming applications spider the internet like search engines and collect email address.  Not just email address to send to but also email address to send from..
It is very easy to send an email and have the return address what ever you wish.
I could for instance set my "reply to" address to dave@micorsoft.com or for that matter georgebush@whitehouse.com  What ever I want.. Of course I wouldn't do that because it would mean I wouldn't get any responses to my emails.. But in the case of spam they don't want responses.. They want you to go to the website included in the email. 
 
What does this respond to my address mean? It means that every one who received an email from my company that didn't originate from my company will now be put off.  If it continues they might even block all emails coming from my companies address.  Worst case they might remember the company name and be totally put off by what they think is my company policy.
 
What do I do though?  Well for now I'll hope it's a one time thing. (very wishful) I'll do a deep scan for virus and then I'll check out my options.  Here's hoping I can track down the people who are spoofing my address (and kill them) and threaten/actually sue them.   

Wednesday, April 04, 2007

Contacts

Today we released Contacts 1.0 a program that came about in funny way.
 

One Line Apps believes we should in some ways prove we can do for you what you're looking for as a client.  The problem is to accomplish this we do a little bit of development for free.  Until we have a much bigger portfolio we have to go this rout.  Unfortunately sometimes it comes up and bites us in the..  Well it bites us.

Recently we started writing a program for a small <product type here> supply company.  We conferred and came up with sketches of an application.  Based on their data the way they work and what they thought they wanted OLA started writing software. Just an initial skeleton of the application. Something to allow them to get the feel of the eventual product.  If they liked it we would fill in the functionality one form at a time.  It's just how we roll. You like we move on-- You don't like we revise.

After we finished a rough of the application we handed the client a copy of the app and our contract.  No surprises in that contract it was exactly the price we discussed on the phone.  Well that's not quite true the contract might have been surprisingly detailed.  In the software world sometimes a person can say their paying for something but the developer thinks they're getting paid for something else.  It's often called scope creep.  To prevent that contracts need to be solid.

Ok so client has skeleton app and contract, and then they vaporized.  The deadline for signing the contract passed. Phone calls were dodged. Emails went unanswered. They were gone.  We had spent hours in meetings and even more building the initial app. Heck even the contract creation took time.  All for not.  We asked why and received the standard "I'm too busy right now to help with the development" and then the "Money is kind of tight right now perhaps later."

BTW the application would have resulted in about a 300% increase in employee productivity by centralizing their inventory information. It would mean they could get more out of their employees given themselves more time and ultimately more money. 

Ok so now we have 20hours paid to our coders and not a penny for it. What to do??

We turned lemons into gold. Spent another 20 hours and created Contacts 1.0.  See the client had some amazing ideas for tracking interactions between them and their clients. That coupled with some of our in-house procedures and an app was conceived and born.  The application was launched today at a great price. We're hoping for volume as the app should appeal to a wide range of businesses.

I guess the lesson here is that before we start one lick of code we should have a starter contract. That and that when a client vaporizes when they see a contract, the work you've done might as well go into another project.

PS.  You can get this software on my site. It's quite interesting and I'm sure we as a company will start using it.

 

Friday, March 23, 2007

if you've read our manual, we didn't do our job?

I started out knowing nothing about software. What I knew was, things in my life and my job took too long.  Programs were too hard to use.  I also knew there had to be a better way to get things done.

So I started out by first figuring out how people learn. Want to build a better mouse trap you have to understand the mouse...   Bachelors degree in psychology, years of working and volunteering with children in day cares and years studying how they interact with their world.   I wanted to make my life easier by understanding how I interact with the world.

In the process I found computers and pda's to be a great asset.  The only problem I had with them was they didn't do what I need.  They might have been close but never quite what I wanted.

So I started building the software I needed.  Hand held or desktop... It didn't matter, as long as I (or someone else) could use it to simplify my (or their) life or business.

So here's what my company does... 
  • We find your needs and strive to understand how you interact with your procedures.
  • We gain understanding of your personal and professional goals.
  • We find your bottle necks.
  • WE ERADICATE YOUR BOTTLE NECKS
        AND BUILD SOFTWARE YOU WILL FIND
        EASY TO USE!

Thursday, December 21, 2006

Little by little

I can't believe I just spent ... hours/minutes doing ... what a waist of time.
I've said it over and over as I sat in front of my computer. "This is taking to long!"

Yesterday I figured out how much just 5 minutes an hour wasted on software that doesn't do the job quite right costs my company (or your company). It works it self out to about 173 hours a year. Per employee. So one FULL month of work is accounted for by these little 5 minute chunks. That is insane!

But what to do? When I first started working for my self I found a bunch of the little things I did in the day could be automated. Backing up the my documents folder to another drive for instance took about 20 minutes per day. I didn't like that so I set out to get a program to do it for me. Now assume I take two days and I drop everything in a search for that software. When I can't find that software I go about spending another week writing it. What's my net cost? Well I spent 1.5 weeks fixing a problem that was costing me 20 min a day (or 86 hours). So I'm ahead 26 hours, even if I was the only employee. For each additional employee I gain an additional 86 hours of work in the first year, and 86 hours of work for every employee for the subsequent years.

Now lets assume I paid someone else to build it (for round numbers sake lets say it cost me 10,000$) Sounds crazy and even I'll admit it's a bit much for such a simple program. But for this argument 10k is what we'll work with.
Second assumption. You pay your employees 40k a year or 769$ a week.
You save them 86 hours a year.
Third assumption you have 5 employees.
You now save (because of this software) 86 x 5 = 430 hours = 10.75 weeks = 8266$

Oh no seems like you're in the red for this application to the sum of 1734$. Wait wait..
Forth assumption. You plan to be in business for more than one year.
Year 2 in the black for 6232$
Year 3 in the black for 14798$

Now this was a small small case with a very simple application that saved you 2.5 minutes an hour. Imagine a custom application that saves you 5 minutes per hour of work.
Or if instead of 5 employees for the measly 2.5minutes you have 10 employees.
39,600$ cash in your pocket after 3 years.

The question I guess I'll leave you with is can you afford not to get something custom built?

Wednesday, December 06, 2006

Great Day

Every once in a while a software developer has a hallmark day.
Today was one of them for us and me specifically.

A while back my company developed a small little study aid for our own
personal use. It was a cue card application meant to allow me to study
French on my palm. After we finished the software we slapped our label on it
and sent it out to the world. We figured that the software could be a little
ad. for our company. Nothing major but something that showcased an easy to
use program we developed. Of course it was free for all.

Today we hit the jackpot. I think that if all else, if the company closed
it's doors, we would be a success in the mind of this CEO. Today a small
little school in a southern state started using the software to help it's
grade 8 class study math and vocabulary.

We didn't make a dime off of it, and lets face it not many of these users
will be our clients in the near future. But cash isn't really the only
measure of success, is it?

There is no doubt in my mind that to build a great company you have to be
truly interested in the success of the people your company touches. Be
those your staff or your clients, it's all about them. To have children as
some of the people who benefit from your companies product is beyond
measurable success for me.

Sincerely David Rawk,
CEO One Line Applications
www.onelineapps.com