Friday, February 12, 2010

FLOSS-POS, IS4C and Bread & Roses

A new food coop has started up in town named Bread & Roses.  I went to a few of their fund raisers, and was aware of the effort.  In late December they opened their doors in Railroad Square.  They had a pretty sparse selection of goods for sale, but they have grown considerably in the little bit of time they  have opened.
On the TLUG group discussion someone mentioned that they were helping Bread & Roses come up with a Linux-based solution for their POS (that's point-of-sale) system.  I had it in my mind that I wanted to try to get Bread & Roses on the Linux path, and here was a direct offer to make it happen, so I agreed to show up at the next meeting.
It turned out the guy who posted it, Ray, was at an Ubuntu release party I had held a little bit ago.
At first I tried Lemon POS, but it was written in Python as a desktop application, and after poking around the code wasn't sure if I would be able to bend it to my whims, or at all for that matter.  My knowledge in PHP, Javascript and other web technologies.
After some more research I came across IS4C, a POS software written for Linux machines by a consortium of IT guys supporting food coops.  It is written in PHP, and the demos on its website looked very promising.  I installed the server and client on two separate virtual machines and started testing.  My initial impressions had me pretty excited.  Some more rigorous testing revealed some problems.
I displayed it for Justin and he identified a number of ways it did not cater to the Bread & Roses business model.  The great thing was that I had confidence that I could rewrite whatever I needed to do things the way we needed them to.
Aurora's grandfater, Stefan, donated a laptop and desktop to Bread & Roses.  After installing the server on the desktop and the client on the laptop I began making changes.
Looking around the IS4C website I noticed that there weren't any tools for distributed development.  No wiki, software repository, etc.  Essentially, none of me fixes, changes, or else where pushable back to the project head.
I hit up their forum telling them I'd like to work with them to get collaborative tools setup.  My post went unanswered for some time.  As I kept making changes and fixing problems I decided to just fork the code in a way that would allow others to jump in and collaborate with me if they so wished.
Learning git has been on my radar for a while, so I decided to use this as an opportunity to start learning. I put the project up on github and start pushing my changes to the github repo.  I named the project FLOSS-POS, and posted my fork on the thread I published a month earlier.
A few days later I started getting responses from people interested, and I have since got at least one person at the Wedge Coop making fixes that I have since been merging back into FLOSS-POS.
One of the most important changes, that Bread & Roses needed, is the ability to have separate member pricing, instead of just percentage-based discounting.  I have also changed the default browser for accessing the application from Galeon to Google Chrome.  Chrome should allow us to take advantage of HTML5 awesomeness soon, on a browser that is open source and cross platform.
In the long term I would like to do a ground-up rewrite of the code.  I am leaning towards using this as an opportunity to learn something else that's been on my radar, and rewrite it using python+django.
I've began doing some initial ERDs of the new database structure, which should be more robust and, allowing for greater flexibility and more detailed reporting.
I'm pretty pumped about this project and am hoping to get an active community of volunteers assisting on this program.  I think there is a lot of opportunity for the FLOSS community to inject itself rather effectively in the POS industry, which is presently dominated by expensive, closed source solution that prey on vendor lock-in to drive out competition.

Thursday, January 28, 2010

Nervous about teacher meeting

Athena takes her time at everything she does.  It can often be really frustrating because she can hold everyone up as we wait for her to get moving along.  Being slow, and meticulous has been a trait of hers ever since she has been able to do anything for herself.  It can be quite frustrating, but it's something that, as her parent, I have learned to deal with.
She takes this behavior to school with her work.  She takes longer than the other children to finish her assignments.  Her teacher has a policy that the kids cannot participate in free play until they have finished their work.  For Athena, this pretty much rules at free play for her.  This is something she has brought up as a concern for her, and as a result has concerned me.  Studies are consistent in showing that free play is a very important part of a child's social, physical, and educational health.  Many schools have started increasing the amount of free time their children receive, and have been showing increases in good behavior and in test scores.
Last night Athena drew a picture on her homework for Kim.  It was Athena sitting at a table by herself, with children running around the table playing.  Kim said it broke her heart, and it did the same to me when she told me about it.
I had expressed concern over this before to Kim and told her I wanted to meet with the teacher about this.  Kim has cautioned me about this.  I think, as a teacher, she understands how difficult it can be for teachers to be bombarded with parents who think they know her job better than she does.  She talked me out of it.

Today I e-mailed the teacher telling her that I would like to meet with her.  I think Athena's teachers is one of the more strict teachers.  She is also one of the oldest, meaning she has older fashioned views on education.
I understand that the teacher is trying to teach Athena how to complete work on time, and is also trying to stress the importance of completing work.  However, I think there are three major problems.
The first is that after months of using the technique of withholding free time, Athena continues to be slow and meticulous, going over every detail of her work.  The teacher's strategy is clearly ineffective at reaching the desired goal.  I can't imagine how continuing a failed strategy is helpful to anyone.
The second is that Athena is already very studious.  She loves learning and education.  She is always eager to learn new things.  She isn't lacking in education or studies.  Education is part of the culture of our household.  What she doesn't have enough of is play time with friends.  Removing free play with peers her age to make time for make studies serves no purpose.  She is being given extra time of something she is already immersed in, and taken away time for something she is not getting enough of.
Third, Athena's behavior of a slow meticulous worker is not necessarily bad.  In many ways I think she inherits much of that trait from me.  When other people prefer to quickly do something in a sloppy manner, I prefer to take my time out to do things right.  When we do homework with Athena was can sometimes get frustrated.  If her homework is to color in a picture, she will make each part of the picture a different color, and she has very specific reasons why something must be a certain color.  She will go real slow to make sure that she doesn't go out of the lines.  If she messes up she will often get really upset and feel that the whole thing is ruined.  This is just the person she is, and I don't think any amount of work is going to change it.
So anyways.  I'm pretty nervous about this meeting.  I don't like going to people and telling them they are doing their job wrong and they need to do things my way.  I don't expect her to receive what I have to say very well, and I expect that the meeting will ultimately be unproductive.  I hope I'm wrong.

Wednesday, January 6, 2010

Get ready West Coast.

Kim and I are planning a trip to the west coast this summer.  We are going to start by dropping the kids off at Kim's parents in Sacrament and then camp at Yosemite Park.
Initially I just thought this would be cool, but as I look into the logistics of camping at Yosemite I'm realizing that it is: 1) More difficult to figure out how camping there works, and 2) Going to be completely amazing.  Of the thirteen camp grounds they have, seven will be open at the time we are planning to arrive (June 12th.) Of those seven, five take reservations.  Having a reservation is a must as I don't plan on showing up, only to realize all sites have been taken.
I'm having a difficult time picking the one that most interests me.  Ideally the one that has the fewer amenities and are the more secluded.  To me, the best camping is running out in the woods with a backpack, shovel and roll of toilet paper.  We won't be going quite that far, but I'd prefer to not be camping next to a Winnebago if I can help it.
The website warns that camp sites get reserved in minutes after reservations go live.  The earliest time to reserve for the time period we will be there is January 15th, so I've marked my calendar and asked Google to send me e-mail reminder the day before and day off reservations.
After Yosemite Kim will go to her parents and I'm going to Seattle to spend a few days with my friend Michael Bassage-Glock.  I haven't actually called him yet to tell him, but I think I'll be getting on that soon.  I'd really like to take the train up there, but I'm afraid the trip might be crazy long and may just opt for flying if I have to. Actually I just checked and it appears that if I leave on the 17th at 12pm (their only departure to Seattle), then I will arrive at 9pm the next day, so the train might not be the best option.
After a return to Seattle, at some point the whole family will make our way down to Apple Valley, CA to visit with my dad.
In all, this summer trip should rock harder than most anything I've ever done.  I'm quite looking forward to it.

Saturday, January 2, 2010

Saint George Island

Kim' parents came to town last weekend with a reserved vacation house at Saint George Island.  Saturday, December 26th, we stayed our first night.
I was scheduled to make dinner that night, but a lot of hiccups blew my plans of making veggie stir-fry.  I had to settle for broccoli and rice, which wasn't all that great.
Sunday I went back home because I had to work.  I was supposed to get an application released to Beta before the new years, but we didn't quite get that done.  I was still able to get Thursday off, and Thursday a little after noon I drove back over to the island.
When I got there everyone was crowded in the TV room playing Wii Fit.  Athena and Arianna gave me great big hugs.  Apparently, while I was gone Arianna was a stinker, and Kim was looking forward to passing off Arianna's behavior problems to me.  However, she was very good the whole rest of the time I was there.

About an hour after I arrived Scott's parents showed up too.  Kim and I had a long walk down the beach with Mike, Scott's dad.  We had a lot to talk about and it was very pleasant.  His parents are extremely nice, and even though it was the first time for all of us meeting them, they fit right in.
Apparently Scott's dad was excited that there were men there as he was looking forward to watching the game, however none of the men there where into football.  I was playing Wii with the girls when he walked into the TV room and said, "Who's into football."  We just kind of looked blankly at him and he realized that football wasn't going to happen and walked off kind dissapointed.. Kim mentioned to Athena that we would need to turn the Wii off soon so that he could watch football.  I told Kim that nobody ever turned off football so I could play Wii, so I wasn't going to turn off the Wii so others could watch football.

When I laid Arianna down to bed that Thursday night, a task that had apparently been hellish throughout the week, I got her to lay right down without any problems and she went to sleep.  I took the opportunity to revel in my own glory for the rest of the night.
On New Years night I went up to Harry A's Bar with Scott, Katie, Annmarie and Tyson.  I was the designated driver since I don't really drink anyhow.
When we go there Rob and Dawn, Sue's son and his wife, had been there quite a while and had reserved us a little corner at the bar.  On the TV was some car and motorcycle trick-show.  Right before countdown they struggled to find the New York ball-drop, but found it too late so there was no real countdown.
Later we headed home with plans to hang out by the pool, which where cast aside as people's desire to sleep overtook a night of hanging out.  When it was finally just Scott and I we decided to just turn in as well.
Friday, Steve showed me where I could get some good oysters for cheap.  I got about thirty oysters for seven bucks.  Back at the house I ate those up raw.  We had some really good hot sauce Kim picked up for me in Saint Augustine a few months ago.  Some people were not into eating raw Oysters so Scott and I grilled the rest.
That night Annmarie and Tyson made burritos with a little bit of everything else that had not been cooked yet. It was a good dinner for our final night, and I finished it off with the last of the uneaten oysters.
I think it was Friday night, but during that weekend Katie and Scott agreed to get married, which meant Chris was on cloud nine for the rest of the time.
This morning we all woke up and through all our stuff in the car.  Kim followed me over the bridge and we ate at a little diner off of highway 98.  The food was good and the people where real nice.

Kim drove home and I picked up a half-bushel of oysters.  I tried two places to find a non-Styrofoam cooler, but nobody had what I wanted.  I ended up taking the bags off of the roof of the VW and putting the oysters up there.
Right before the Wakulla River I picked up two hitch-hikers.  They where on their way to the flea market.  I dropped them off at a friends house that is about two-miles from my neighborhood.
Back at home Kim and I unloaded everything and then took a nap.  When we got back up we put away more of our stuff.  I finally fixed a leaky water-faucet outside.  Then we headed up to Sue's for dinner with Chris and Steve.  We had pizza and Sue and I dined on some of the oysters.
Athena's ear had been bothering her that night.  During the toast to Katie and Scott, Athena was crying because her ear was hurting so bad.  I loaded her up while Kim said he goodbyes and we headed home.
Steve leaves for California very early in the morning, but Chris will be here until Wednesday.

Thursday, December 10, 2009

No Shaving in December

This year I am participating in http://noshavingindecember.org/.  Here is my progress.


Update: For those who are reading this and don't know what I'm talking about, read this.

Monday, November 16, 2009

Computing as we will soon know it.

If you want to know what computing will look like in the near future all you need to do is watch this video from TED.  It showcases Sixth-Sense technology.
Once this technology matures I believe we will interact with it through a pair of contact lense and an extremely small hearing aid.  This device will allow us to get all sorts of meta data about our surroundings and probably completely replace all of our traditional ways of interacting with computers.
As we drive the road in front of us will literally light up in front of us, showing us how to get where we are going.  We will also always be aware of the speed limit and have access any other information about the roads.  For example, we may know that a deaf child lives up ahead, or there is a better way to our destination based on the traffic situation in the present city.
While walking a nature trail we can get information about any relevant historical information, such as perhaps a famous explorer walked it hundreds of years ago, or find out about the plants and animals we see.  We could see which plants are edible and which are poisonous.  If we catch a fish we could immediately know if it is of legal size to keep.
When meeting people we could look up their profile on the currently popular social networks through facial recognition.  We could then know that they are interested in certain topics you are also interested in and strike up a conversation.  Or you could meet someone at a bar and find out that they are a known sleaze bag, and then take them home.
The possibilities are endless, and the benefits can be enormous. 

Sunday, November 15, 2009

Scanning Problems in Ubuntu Karmic 9.10

I went to scan in some pictures today with my new Karmic install and ran into problems.  When I went to scan I would get "Failed to start scanner: Invalid argument"  Some Googling revealed that many people are experiencing broken scanning after upgrading to Karmic with various printers.  A little more searching revealed the solution.  I think that there is probably an even better solution, but this is how I got scanning to work.
First I installed libsane-extras:
sudo aptitude install libsane-extras
Next I edited saned.conf to enable the epson driver.
gksudo gedit /etc/init.d/sane.d/dll.conf
In this file I removed the # at the line that read #epson
To get the parameters for me scanner I ran:

$ sane-find-scanner

  # sane-find-scanner will now attempt to detect your scanner. If the
  # result is different from what you expected, first make sure your
  # scanner is powered up and properly connected to your computer.

  # No SCSI scanners found. If you expected something different, make sure that
  # you have loaded a kernel SCSI driver for your SCSI adapter.

found USB scanner (vendor=0x04b8, product=0x0839) at libusb:001:003
found USB scanner (vendor=0x0bc7 [X10 Wireless Technology Inc], product=0x0004 [USB Receiver]) at libusb:007:002
  # Your USB scanner was (probably) detected. It may or may not be supported by
  # SANE. Try scanimage -L and read the backend's manpage.

  # Not checking for parallel port scanners.

  # Most Scanners connected to the parallel port or other proprietary ports
  # can't be detected by this program.

  # You may want to run this program as root to find all devices. Once you
  # found the scanner devices, be sure to adjust access permissions as
  # necessary.

Here the line that read "found USB scanner (vendor=0x04b8, product=0x0839) at libusb:001:003" was the key.  These parameters needed to go in the epson drivers file.
gksudo gedit /etc/init.d/sane.d/epson.conf
I replaced the line that read "usb" to read "usb 0x4b8 0x0839"  Finally I just needed to restart the sane daemon.
sudo /etc/init.d/saned restart
After this scanning finally worked.

Thursday, November 12, 2009

Being A Parent Is Hard

Being a parent is hard.  The life of a parent is filled with meeting other people's needs, and neglecting many of his or her own.
Today's examples:
It seems I cannot go a morning where at least one of the girls doesn't have a major meltdown.  On the surface getting ready in the morning would appear to be a routinely trivial task.  The reality is that every morning is drama.  The hard thing for me to accept is that I have no control over this.
I try to make it as easy as I can.  I put Aurora and Athena in my bed, put on an episode of Pink Panther and completely dress the girls myself, and do their hair.  Pink Panther gives them a reason to open their eyes and stay awake as I dress them.  By the time I am done each girl is completely awake and dressed.  They have only two tasks to prepare for the day, brush their teeth and put on their shoes.
Without fail at least one girl will throw a major fit over at least one of  these tasks.  Usually more than one task involves a fit.  This morning it was Aurora and her shoes, and Athena had a slight problem with brushing her teeth.  Every morning Arianna has a big fit about us brushing her teeth.  Since I do everything else for all the girls, I make Arianna's teeth Kim's task.

On the way to drop Arianna off at daycare a lady did not break in time and had to pull to the right of me to prevent from rear-ending me.  By the time she came to a complete stop half of her SUV was beside my van, effectively putting her nose in Arianna's back had she not stopped.  Then when the traffic started back up she pulled forward real fast and cut in front of me.  This lady just about put my baby in serious physical danger, and then used it as an opportunity to cut me off.  It's times like this I have to use mental will-power to not let road rage get the best of me.

Aurora has tennis practice on Tuesdays and Thursdays from 5 - 6.  I don't get off work until 4:30, and practice is on the other side of town, so Kim takes her almost all the time.  Today Kim called me and asked if I would do it.  I agreed, and she said she'd meet me at day care to give me the tennis racket from her car.
Not paying attention to the fact that Aurora needs to be there at 5:00 I get a call from Kim at 4:50 as I'm shutting down my computer reminding me that I completely messed up tennis practice for the day.  Aurora really looks forward to tennis practice and has been pretty upset in the past when we've had to miss it.
I felt really bad and wanted to make it up.  I was going to take her to the park but when I looked outside I realized it's that time of year when it begins getting dark really early.  Instead I headed up to Publix and bought some ice cream.
It turned out Aurora was not as upset as usual, but she was happy to see that ice cream would be following dinner.

As soon as I placed the ice cream in the freezer I made dinner, with only a little bit of room in between serving everyone I had a quick chance to actually eat myself.
While I was eating Aurora had a major melt down because she's hates having to actually put work into doing homework (she is spoiled because pretty much everything tailored to someone her age is completely below her abiliites and is finished without effort.)  In stead of working hard she completely broke down yelling at people, being nasty to Kim, and slouching down kicking everything around her.
Next Judith called.  When Aurora spoke to her Judith told her that she should visit the Smithsonian Kids website, so we did that after dinner to help her calm down from homework.
Afterwards it was back to homework, which she finally finished and I knocked out the kitchen while Kim tended to the other two girls.  After the kitchen was done, and Arianna's lunch was packed, I read Arianna two books and put her to bed.  Kim, worn out and half asleep by this time read the other two girls their books while I took a shower.
Once out of the shower Kim was asleep with the two girls crawling all over her.  I then put them to bed, a process which takes about ten minutes as I talk to them and tuck them in.  Then Arianna declares she needs to go potty.
When it was all said and done I woke up at 6:45am, it is now 9:00pm and I finally have a moment to myself.

And such is my daily life.  Very little of my day was spent for me, and none of my day had any time for my wife.  It is no wonder so many parents do such a poor job.  It is so tempting to take shortcuts, like giving my children empty-calorie TV dinners, packing lunchables for lunch, yelling at them in stead of effectively working things out (actually there is more yelling going on at times than I'd like to admit), sitting them in front of a TV all afternoon, etc.

Monday, November 2, 2009

Battlestar Galactica

I just finished watching the entire season of the original Battlestar Galactica TV Show that aired in 1978.  The series started off rough with some sub-par acting and some frequent plot gaps.  The last five episodes where fairly solid and I was saddened when the final episode ended, knowing the show was canceled right as it was starting to peak in almost every aspect.
I would like to at some point watch the 1983 continuation.  It is not available online for free, though I may buy the entire season from Amazon as a download for $7 if I feel up to it.
I am now on to watching Start SG-1.