Showing posts with label StreamPOS. Show all posts
Showing posts with label StreamPOS. Show all posts

Sunday, December 19, 2010

2010

Since I’m really bad about getting Christmas cards and letters out (it has been many, many years), I thought I’d use my blog to publish what would have been my Christmas letter.  I can reach more people this way, anyway.

IMG_2650a_400px

In many ways 2010 was much the same as the past several years, consumed mostly with my work responsibilities.  As many, but not all, of you may know, in late 2007 I got involved with a new business venture.  A friend of mine, Jared, contacted me to ask if I would be willing to create the cash register component of a Point-of-Sale system for a quick-service pizza restaurant being opened by a friend of his. Despite my hesitation to get involved in such projects in the past, I decided to undertake the challenge.  Soon we began to attract the attention of other franchisees in the chain, and before we knew it we were selling our product to others.  Since that time we officially organized Custom Register Solutions, of which I am part owner.  In 2010 we increased our size from 3 employees to a company with 15 people.  It has been quite a ride.  My brother Brent joined the company in June this year, helping to create the web site portion of our software.

In 2009 we were approached by some executives from the parent company of the same international pizza chain to see if our product could be adopted to some new and very specific needs.  It was pretty evident that we could, so since that time we’ve been working intimately with them.  We’re confident that we will be announced as their preferred POS vendor very soon (the only “iffy” part is when, not if).  Between the preparation for that upcoming announcement, the demand it will place on us when that happens, and our fast-paced development schedule in the company I have been working very long weeks for a little over 3 years now.  It is nice to be getting close to the realization of what was, at the time we started the project, an impossible dream.  We’re doing some very cool and innovative stuff, but I can’t talk about that just yet.

In spite of the many hours I spend working, I have still gotten involved in several other outside projects.  Everyone who knows me is well aware of my interest in audio, video, and photography, and I have always enjoyed working on any project that involved any or all of those three.  This year was no exception.  Early in the year I proposed the idea of a live Internet-streamed concert to an up-and-coming California-based artist named Sonnet who had become known in Utah for the soundtrack she provided for a popular television commercial, and she was gracious enough to accept.  Soon the project blossomed into an honest-to-goodness real music video as well, which my friend Dave would direct, and another friend Paul would shoot.  February through May included a lot of planning for those events, which took place the first through second weeks of June.  It was a very busy schedule, but it was also a lot of fun spending time with old and new friends as part of the crew.  Few of the final results have been posted on the Internet at this point , but I will be sure to let everyone know when they are.

I had the privilege of spending more time with family this year than most.  My youngest sister Christine graduated from BYU in Psychology in April, and my parents and sister Suzanne all flew to Provo to be there for that.  Christine was seriously dating her then-boyfriend Brennen at the time, and a week later they announced their engagement to be married in August.  Through the planning stages my mom came back to Provo to help Christine out for a few days.  The entire family came out for the wedding in August.  It was the first time that all of us had not just been together, but had the opportunity to go to the temple as a family as well.  It was definitely a memorable occasion which we are all grateful for.

After the craziness of the wedding wound down, it was back to work as usual for a couple weeks before I headed to Tucson for two weeks to help with the installation of our software in 13 store locations there.  It was hot and stormy the first week, and the second week it was hot and dry, but the condo we rented had no working air conditioning.  I spent many nights on the couch just trying to get comfortable enough to sleep, while working in the heat during the day.  I was glad to come home.

This year I also got to see one of my favorite musical acts, Celtic Woman, perform not once but twice.  They came to Salt Lake in May, and I took my friend Sarah as my date, and Dave and Paul tagged along as well.  Sarah spent several years in Ireland and enjoys Celtic music, so it was a treat for her to be able to go.  The girls in the group are pretty amazing.  I really enjoyed the concert, so when they went to Los Angeles at the end of August I decided to see them again.  This time I took Sonnet with me, who despite being ill that day had a good time.  It was also nice to see my new friend again and spend a couple days with her in her hometown.  We planned to work together to record a short Christmas album, but due to both of us having busy schedules that didn’t happen this year.  Maybe next year?

Other projects this year included shooting video for a handful of weddings, doing audio for an international dance/music festival in Sandy, UT, my annual trip taking pictures of fall leaves with my friend Dave, recording the commentary for a feature film, and being the regular sound guy for the Mountain Blue southern bluegrass A Cappella gospel group.  Mountain Blue kept me really busy in early December, with quite a number of performances in the first half of the month.  But I love anything involving audio, video, or photography, so any opportunity that comes is more than welcome.

I am spending my Christmas vacation at my parents’ home (as I always do) in Tulsa, OK this year, with nearly all of the rest of my family.  Only my sister Cheryl and her husband Blake and their kids won’t be there. Their family is getting big and it is becoming more difficult for them to all travel.  It’s sad that they won’t be there with the rest of us, but we understand why they can’t and they’ll be with us in spirit.  This year Christine will be bringing her new husband with her, so we’re excited to include a new family member in our festivities.  We’re very lucky that we have been able to have so much of our family together for Christmas for so many years.

Christmas is my favorite time of year, not just because I get to see my family, but also because it is the time of year when many people put their own desires aside and think of others, and because it is the time of year we dedicate to thinking about our Savior, Jesus Christ.  The spirit of the season is unique, and something I look forward to throughout the year.  It never lasts long enough.

Thursday, January 14, 2010

Full Circle

My life as a professional programmer has officially come full circle.

The first contract programming job I ever did was when I was 12… some 24 years ago (ugh… was it really that long ago?). It was a project for a law firm in Omaha, NE (where my family was living at the time) that downloaded data from a piece of equipment that logged all phone calls in and out of their office to a computer, and present that information in a usable and meaningful way. The firm had approached my dad about writing this software for them and he decided to pass the software portion of it on to me, while he took care of connecting the hardware. It wasn’t a big project; we didn’t work on it long, and it didn’t pay a lot, but it was significant in that it was the first time that I was being paid for doing some programming.

Today I’m part owner of a company that creates, sells, and supports restaurant management software. We currently have 7 people working at the company, 3 of which are dedicated to taking telephone support calls. I am responsible for putting together the software that they use for supporting customers, and within the last couple of days one of the features I added was the ability to log data about incoming and outgoing phone calls. A box in the office records the caller ID information coming in, sends it out to the network where my software receives it and logs it in a database along with the duration of the call as well as which employee took the call.

This new feature of the software is very similar to the first project I worked on professionally. They both record phone call information into a database.

Many other aspects of my current employment mirror programming experiences I had when I was younger as well. Knowing what to do with phone call data was a natural fit, because I had done it before.

The money that my dad and I were paid for that project went toward purchasing a printer for the computer we had at home. That printer was an Epson dot matrix printer (those really loud, slow ones). Today we are using Epson dot matrix printers for printing customer receipts as part of the cash register portion of our software. Many of the commands to control the receipt printers today are the same as the commands I learned to control that first printer we got nearly a quarter century ago. Learning to talk to the printers today was easy because I learned how to do it 25 years ago.

With the Point-of-Sale system we also talk to various pieces of equipment using serial ports on the register computers. In 1987 I wrote a telecommunication program whose primary focus was talking to other computers over serial ports. In 1989 I worked on a project where a computer would record data coming off of an induction pipe bending machine over a serial port. The project for the law firm also used the computer’s serial port.

There are other ways that I have seen things cycle back on themselves with our current project. It’s kind of weird to see things happen like that, especially considering the rapid pace of technological development. But at the same time the things I was doing 25 years ago (or more) were in a lot of ways preparing me in a unique way for the things I am doing today.

Now if only I can find a good multimedia programming project to work on so I can relive the stuff I made in the early 1990s.

Friday, October 16, 2009

Trip Summary

I just got back from a long trip…

Duration: 14 days
Days spent driving: 6
Nights in hotels: 10
Saved by using priceline.com for hotels: $404

Friends seen: Brian, Jess, Dale & Katie
Friends I attempted to see: lots more
Other friends connected with: Mark
Family seen: Mom & Dad

Number of Point-of-Sale systems installed: 2
Number of computers installed: 8
Number of man-hours spent installing at each store: about 12
Number of hours spent supervising and training employees: 10

Number of electronic gadgets acquired: 1 (HTC Touch Pro 2 cell phone, 32GB iPod Touch given to Brian for his help with POS installations)
Number of electronic gadgets that died: 2 (80GB Zune, Dash Express GPS)
Repairs to Truck: New brake light switch to repair failing brake lights

Number of miles driven: 3136.0
Gallons of fuel purchased: 141.151
Highest MPG on one tank: 25.993 (75 MPH freeway + 65 MPH highway in NM)
Lowest MPG on one tank: 19.924 (70 MPH freeway in OK, KS… dang oxygenated fuel!)
Average MPG Overall: 22.217
Average Fuel Per Gallon: $2.437
Tolls Paid: $8.90

Weather…
Every day but the last two were overcast, with some mist and rain.  The last day was the most varied, with snow, rain, cold, hot, and dry all within a couple hundred miles. 

Audiobooks: C.S. Lewis’ “The Problem of Pain,” Jeffrey R. Holland’s “Christ and the New Covenant.”

Highs: Getting to stay with my parents for a few days, seeing Jess for a couple days, hanging out with Brian when POS installations permitted, getting a new cell phone, playing with the computer I learned to program on in the early-to-mid 1980s.

Lows: GPS and Zune dying, staying up all night for POS installation, crawling around in ceilings with fiberglass insulation.

This is what a typical register looks like when we do an installation.
That’s my software running on the computer. Most stores have 3-4 like this,
plus a server computer. I installed 6 registers, two servers, and two
LCD monitors at the make line.

This is Brian.  We went to High School together, and have kept in contact since.
He drove up from Houston and helped me with the installation.
Without his help I would have been in trouble.  I wish I got a picture of his Corvette.

IMG_1768_edit 
Me with Jess.  I spent Friday evening, Saturday afternoon,
and part of Sunday with her in Denton, TX.

image

On Monday night my parents took me to Braum’s for ice cream.  I got a Strawberry Shortcake Sundae.  It was excellent.  But we were surprised by how much inflation has affected the price of the food there.  Actually, it got worse after this picture was taken.  The next day, instead of $29, the same meal was $299.

I, unfortunately, didn’t get any pictures of my parents while I was there.  Or any part of the drive home for that matter, even though I saw some beautiful scenery.  But the drive was already long enough, and I didn’t really want to make it a lot longer by stopping every few minutes for pictures.  Some other trip when I don’t have pressing tasks waiting for my attention.

Sunday, April 5, 2009

Lots of code

The Point-of-Sale software I’ve been working on for the last 18 months (StreamPOS) is getting pretty big.  I just published a new version of it, and the source code is currently 165,559 lines long.  It has 79 different screens it can display, not counting the standard “Open File” or “Print” type dialog boxes that most software uses.

In more familiar terms, if those 165,559 lines of code were to be printed on standard letter-sized paper, it would take approximately 3680 pages to print it out.  The stack of paper would be more than a foot and a half tall.   It would consume nearly 7.5 reams of paper, and take 5 hours to print at 12 pages per minute. 

That’s an average of 7 new pages per day, every day, 7 days per week, for the last 18 months.  (What does your brain say when you think, “write a 7 page paper every day for 18 months?”)

If it were published in a paperback book, that book would be 6600 pages long (not including the foreword, index, etc. :) ).  This book would be almost three feet thick.  Reading it would take 110 hours at one page per minute, if you could make it past the first page awake.

This makes it the largest program I have written in my life.  My backup software, FileBack PC, is currently hovering around 140,000 lines.  It took 12 years for FBPC to get to the point where it is now.  StreamPOS is bigger and was started just 18 months ago. 

Ironically, StreamPOS is probably the most bug-free piece of software I’ve ever written too.

The first “long” program I wrote was one I created during the summer after I graduated from high school, my first freshman year of college, and the following summer (16 months in total), weighing in at 27,000 lines.  I did print the source code for that one, and it took a little over a ream of paper.

One metric used to determine the length of time it will take to develop a piece of software says it takes about one person-year to create 3750 lines of code.  If that were really true, StreamPOS would take 44 years to develop.  Of course, that same metric says that a line of source code is worth about $33, and if that were true StreamPOS would cost $5,463,447 if we were to hire someone to write it.  So I’m not sure I buy those metrics.  And I certainly wouldn’t hire the guy that writes 3750 lines per year; I’m writing three times that many every month, which is 35 times faster.

In all fairness, though, a portion (I’d guess about 7-8%) of StreamPOS is library code which has been purchased or licensed elsewhere.  But the remaining 92% has all been entered with my own two hands.  It’s a wonder I don’t have Carpal Tunnel.

But if 165,559 lines seems big, Windows Vista is estimated to be about 50 million lines of code.  Even though I have developed StreamPOS at an incredibly fast rate by industry standards, it would take 453 years to write Windows Vista by myself if I were able to continue working at that rate the whole time.  Ugh.

Wednesday, March 11, 2009

Vegas

So I’m in Las Vegas right now, pretending to be a salesperson for our Point of Sale software at Pizza Expo in the Las Vegas Convention Center.  (Mostly I’m making sure that the technology in our booth is working, and answering the more technical questions about our software.)  It has been a little while since I was here except to drive through on my way to somewhere else, so there were a few things I had forgotten (or more likely, mentally blocked) about the Las Vegas experience.

  • I hate the smell of cigarette smoke.  It fills every casino, hotel room, and even the out-of-doors up and down The Strip. 
  • There is too much flesh showing, no matter where you look.
  • Sex-related businesses are way too prevalent.
  • You never get enough sleep when staying in Vegas.
  • The idea of business conventions is more exciting than actually attending one.
  • Since it’s normally so hot here, casinos like to make their own “outside” by making walkways look like streets, and by painting the ceiling to look like the sky.  We went to a restaurant tonight and they asked us if we wanted to eat inside or outside… and by outside, they really meant next to the indoor hallway, not actually outside.
  • The Strip should be renamed to “Way too much excess of everything.”
  • I’ve heard way too much of the Key of C Major (the music played by slot and other gaming machines is in the key of C to avoid unharmonious musical nightmares).
  • Casinos are designed to intentionally make you get lost and walk in circles.
  • Affordable hotel rooms are disgusting.
  • No matter why you come to Vegas, you always leave with sore feet.  If you come as a tourist, it’s from walking.  If you come to a convention, it’s from standing.

On the up side, it looks like we might come away with some good, interested candidates for customers.  And the weather has been atypically cool, so we don’t bake every time we walk outside.  I actually needed a jacket today.

Monday, February 16, 2009

Doug’s Typical Day

Times vary widely, but the activities are fairly typical of any given day, Monday through Saturday.

11:00 am – Wake up, process any incoming software orders, grab some toast, a yogurt, banana, or bowl of cereal from the kitchen, head back to the computer to eat while continuing the day.

11:05 am – Look over the 50-60 emails received overnight, begin responding to the most critical, easiest to answer, and the ones that have been sitting in my inbox too long.

11:45 am – Check the technology news sites for anything new and exciting in the last 24 hours. 

12:00 pm – Take a look over the databases and logs from the different stores running our Point-of-Sale software.  Perform any needed grooming and fix any issues with any servers or registers that have obvious problems. 

12:30 pm – Begin working on one of the various programming projects I’m involved with… these days that is usually the Point-of-Sale system, in preparation for Pizza Expo in early March.

4:00 pm – Time for a break.  That usually involves showering, getting dressed, checking the mail, processing any email from the last few hours, and making a quick lunch/snack.

4:30 pm – If I have any shopping or other errands to do, do that for the next little while.  Back to the computer to do (you guessed it) more coding.

6:00 pm – I’m on shift now for technical support calls for the Point-of-Sale system, though I often get some rollover from the prior shift starting around mid-afternoon.  Still coding when I’m not taking care of POS issues.

7:45 pm – Time for another break.  Quick second lunch or snack.  This is usually when the TV gets turned on to catch any evening shows I follow, but only in the background (I’m not mentally able to just sit and watch TV without doing something else). 

8:00 pm - Back to coding, unless it’s Friday, in which case it’s time to start cleaning up the living room and kitchen areas for Movie Night guests.

10:00 pm – Phone calls and emails have subsided by now, so I can really concentrate on getting some good programming done.  (Phone calls during the day, even quick ones, throw me off by as much as 30-45 minutes each, so my post-10 pm ‘no interruptions’ time is special.)

12:00 am – Snack break.  Check tech and news sites and my email again and catch up on any friends’ blogs that have been updated.  Back to coding.

3:30 am – Start to look for a good place to wind down programming for the day. 

4:00 am – Really start to look for a good place to wind down programming for the day.  Start thinking about going to bed.  On a night when I’m at a good stopping place, this is about where I can start wrapping things up.  Otherwise…

Between 4:15 am and 5:00 am – Finally getting to a point where I can really wrap up coding for the day.  Climb into bed.

Between 5:00 am and 5:30 am – Scripture study if it’s a day where I can still keep my eyes open.  Flip on a TV show or two or three I’ve seen a million times so I can …

Between 5:15 am and 6:00 am – Finally fall asleep.

What is your typical day like?   Post on your blog, then paste a link in the comments section below.

Google Search