?

Log in

No account? Create an account

The Way Shopping Was Meant To Be

Yesterday, my girlfriend and I went to the Verizon Wireless store and we bought new Android phones. She got the Droid Eris to replace her Blackberry Storm and I got the Motorola Droid to replace an original enV that I lost over a month ago. This is my first smart phone and I am loving it. I used her Storm and my brother's Curve and several of my Mom's phones over time, but nothing compares to these two phones. After a day and night of adding applications and learning as much as I can about my phone, I have one huge request for an app. I want something that will make grocery shopping awesome.

Here goes what I want. I want an app that will keep a shopping list, track what I'm buying, and allow me to find the best overall prices from grocery stores. This is no small task. It will need a massive library of coupons, grocery store locations, and items. If not having all of those, it will need an excellent search algorithm (something Google should be capable of).

Here's the features:
  • Free or cheap (I don't want to spend more on an app than I will be saving over time without it)
  • I want it to be capable of scanning barcodes from items in my fridge or in the store and add those items to my grocery list.
  • I want those items to be sent to the store or something where when I walk around the store with their scanner, I can cross items off of my list and it will add it to my store receipt. When I get to the register, I pay and leave. Bagging was done in the store and I never needed a piece of paper or pen to track my grocery list.
  • When creating my grocery list, I want it to find all of the applicable coupons from manufacturers or stores.
  • I want like items to be allowed. If I put "milk" on my grocery list from a barcode in my fridge, I want it to look for all milk at the best price. I should be able to select a certain brand or type of product or I can select any brand or any brand except generic. My favorite pasta is Barilla, so when I go to the store, I don't want it to tell me that I should be buying Stop & Shop brand pasta because it is cheaper. I already told it that I won't buy that.
  • I want it to tell me where the best place in my area is for buying these groceries is at the best price.
  • When I go shopping online or in the store, it should give me reviews for things that I am looking at buying or am buying. I want reviews in my area and in general since certain items have different qualities depending on the location.
  • I want it to remember my shopping settings and trends. If I prefer Shoprite over Pathmark, but neither are near me because I'm not at home, I want it to tell me that there is a Shoprite around. I'm not sure if giving 'weights' to my shopping preference is getting too techy and complicated. I want it to know that I normally buy sharp cheddar cheese, but sometimes I buy mild.
  • I want recipe lists. When I am making chili for instance, I want it to remember what I needed to buy for chili. With one click, I add all of the products for chili to my grocery list and I can leave the house. I can also add another list for SuperBowl party to that grocery list and it will add those products. It should add all of them up so I am not buying two 1/2 lbs of cheese when I can just buy 1lb. Really, that should be a question to ask "should I combine 2 - 1/2lb cheddar cheese to 1 - 1lb cheddar cheese? [yes] [no]"
I realize that an application and the backend for this system is massive and complex, but with it, the consumer will have the best options, the best prices, and make shopping a lot more pleasant. People will be in and out of stores faster. They will have more informed decisions. They will be more likely to go shopping.

PS: Online shopping is just the same. So, there should be a website that a person can do all of this from.
I wonder if it would be feasible to have a recognition system in police cars that could scan people's faces and/or scan license plates. For a stolen car TF, they could have one or two cars that patrol. A rotating camera would take pictures so many times per second. The computer in the car would attempt to find the license plate number from the picture using a recognition system. That would then either be sent to a central processing station (CPS) or it could be located via a cache in the car. To ensure the officers aren't tracking a recovered stolen car, it should do a check with the CPS. After all of this, the picture or pictures that were used to figure out if this vehicle is stolen or not should be displayed to the officer so they can easily identify the vehicle.

In New Jersey and several other states we have EZ-Pass. As a vehicle comes through, the "pass" that is in the vehicle is read. If there is no pass (and even if there is I think) a picture of the license plate and driver is taken. As that information is received, the system should check if the vehicle is stolen, the owner is uninsured, the vehicle is unregistered, or any number of laws are broken. It could even check if there are warrants for the person. An officer/trooper sitting around the area of the EZ Pass will have a picture sent to their vehicle with a time that the person went through, etc. If there is no officer there, it could log the picture and information to a crime database. If the vehicle is stolen, they could prove that a person was driving it by this picture. They could even use facial recognition (possibly) to determine if the person driving was convicted and enrolled in this system before.

The same thing could be done with looking for a wanted person. A terrorism TF could use this system with faces instead of plates to locate terrorism suspects. The US Marshals could use this system to find escapees in an area. The FBI and all other law enforcement agencies could use this to find people on their "hit list".

People may have issues with privacy, but this is really no different than a police officer driving down the street and running your plates. Which, they have every right to do for any reason. The only difference here is that it is done a lot faster.
The creators of NCAA Football video games are having a contest. They will place the college mascot with the most votes on the cover of their new video game "NCAA Football 2009" for the Wii.

So, Everyone please vote once a day until March 14th!

Go to http://www.easports.com/ncaa09/ and get voting!

read more | digg story
Proposition 3-17, supported by Guinness, is a campaign to make St Patrick's Day an official holiday in the USA.

If they can get 1,000,000 signatures by March 16 (the eve of St Patrick's Day), they will bring the petition to Congress. Even if they don't get them all, it will make us that much closer to getting a holiday at some point.

There is also a Facebook group called Make St. Patrick's Day an Official Holiday! Proposition 3-17. Join it and invite your friends to do the same.

Sorry for those non-Americans, but Guinness is only doing this for the USA right now. Maybe you can start your own petition and we can make it even broader. So, all of you Irish-Canadians that don't live in Labrador or Newfoundland, lets get the party started :D

read more | digg story

Gun Control on YouTube

One of my favorite shows is Penn & Teller Bullshit even though I no longer get Showtime. Here goes a show on Gun Control in 3 parts:

  1. http://www.youtube.com/watch?v=1ix6WDZVrI0
  2. http://www.youtube.com/watch?v=dyg-8ZJZnvc
  3. http://www.youtube.com/watch?v=dyg-8ZJZnvc

Here goes a video from the NRA stating how ballistic fingerprinting doesn't work. There are a bunch of inconsistencies in it like "no supercomputer in the world could handle it" but there are also some interesting points like the cost effectiveness isn't worth it: http://www.youtube.com/watch?v=yAlixegkf0o

ABC's John Stossel "Myth: Gun Control Reduces Crime" http://www.youtube.com/watch?v=j_YTM_eAWn

Even Archie Bunker makes the same, good arguments - http://www.youtube.com/watch?v=M8fXMMCuLew

Tags:

Distributed Profiles Tags (WIP)







Tags with attributes in alphabetical order
# 4 spaces to a tab
# Courier New; 10pt

<birthdate>:        ISO standard birthdate

<blazoo>:            container for the profile
    updated:        unix timestamp of when the profile was last updated
    version:        protocol version

<books>:            books the person likes to read
    delimeter:        a series of characters

<comments>
    <comment>:        the comment
        email:        email of the commentor
        name:        name of the person making the comment
        timestamp:    when this comment was posted
        url:        url to the commentor's profile
        website:    website of the commentor

<dislikes>
    delimeter:        a series of characters

<education>
    <school>:        name of school
        date_from:    when you started the school
        date_to:    when you finished the school or 'present'
        type:        high school, middle school, college, elementary, etc

<email>
    title:            an alternative to displaying the email address

<employment>
    <job>:            job title
        date_from
        date_to
        employer:    company you work(ed) for

<feed>:                url to the feed
    type:            type of feed such as RSS and ATOM
    version:        the version of the feed protocol

<friends>
    url:            an external friends page instead of inline
    <friend>:        name of friend
        image:        an image representing this friend
        url:        url to the profile of this friend
        relationship: text describing the relationship

<gender>:            male, female, transgender, or unspecified

<groups>
    <group>
        image:        image representing the group
        joined:        date/time joined
        updated:
        url:        url of the group

<im>
    <aim>
    <icq>
    <gtalk>
    <jabber>
    <msn>
    <yim>

<language>:            a ISO standard language definition

<likes>:            a delimited list of likes
    delimeter:        series of characters

<location>:            if sub-tags are used, the location will be represented by them. Otherwise, use the string.
    <city>:            city
    <country>:        ISO standard country
    <postal_code>:    postal code
    <state>:        state or province

<music>:            music the person likes to listen to
    delimeter:        a series of characters

<name>
    <first>
    <last>
    <middle>
    <prefix>
    <suffix>

<networks>
    <network>:        a network this person is a member of
        image
        joined
        url

<online>:            yes/no if the user is online or offline

<pgp>:                a public PGP key

<pictures>
    <picture>:        url of picture
    # a lot of meta data
    album:            name of the album this picture belongs to
    comment:        comments on this picture
    filesize:        raw filesize
    file_type:        ie gif, jpg, jpeg, bmp, png, etc
    tags:            tags associated with this picture
    time_taken:        timestamp of when the picture was taken
    time_uploaded:    timestamp of when the picture was uploaded
        <people>
            <person>: name of the person tagged in this picture
                box_size
                box_start
                url

<quote>

<signature>

<song>:                url to a song to be played when viewing this profile
    # a lot of meta data
    album:            album this song comes from
    artist:            name of the artist
    genre:           
    image:            artwork from this song
    name:            name of the song
    track:            a number of the track

<status>:            what this person is currently doing (like twitter)

<stylesheet>:        url of a stylesheet (not allowed to be inline)

<technical>
    <date_format>
    <delimiter>

<timezone>:            ISO standard timezone

<username>

<videos>
    <video>:        url of video
        # a lot of meta data
        <people>
            <person>

<website>:            url to a website



Distributed Profiles (WIP)

Distributed Profiles
Draft 1
Joshua Dickerson

 

In this document I aim to provide a layout of how a distributed profile system is to work in theory along with some early draft examples of it.

Why?

The modern web user is registered to a multitude of websites and applications. Each of those applications has it's own profile system. Along with registrations and profiles such as www.simplemachines.org or www.google.com there is an ever-growing number of social networking sites and even more people that use them. The problem here is that there is too much centralization. There are two key players in the social networking scene right now – Facebook and MySpace. Although, recently Facebook revolutionized the way closed source applications are going to work with each other, there is still the problem that a user doesn't have access to all of the back-end. They have limited control of their information. They can't do a lot of things because of this. MySpace is an excellent example of what happens when we let the users do whatever they want with their pages. We get poorly built pages using invalid Javascript and CSS. As well, the controlling company inundates us with ads every chance they can get.

How are we going to change that?

We are going to change that by giving the user viewing the profile the pure data in a XML format and creating applications that can handle this “pure data”. The user no longer has to worry about advertisements or poorly created pages. They will now have a “viewer” with options. No longer will the power be in the hands of those that have created the networking site. Now, the power will be in the hands of the users with help from profile hosts and profile search engines.

Who's who?

  • User: Person visiting the webpage, attempting to view the profile

  • Viewer: Application used to view the webpage (browser or another webpage)

  • Identity: Person that the profile is to “explain”

What can this be used for?

I envision that there are many uses for a distributed profile system. To start, when I register to a forum, I don't want to have to keep that profile up-to-date with all of my other ones. At the same time, if I did want to be someone else on that website, I could do so easily by changing my profile address. Another thing I envision is a distributed social network. People will use websites to view pages to formulate the XML data that is distributed all over the net or even downloaded applications and browser extensions in to something that a human would understand. Using stylesheets, one could create their own page, but if the user didn't want to see the identities background graphics anymore, they could easily turn that off.

The flow of information

The protocol

First and foremost, the protocol is meant to be open and versatile. A user and identity can request and accept as much information from each other as they choose. The identities are made to be expandable and little is set forth in the way of requirements. The fact that a human maybe reading your profile from it's source is always kept in mind. Tags are formed to be human readable.

Applications

Now we have to come up with ways to use this protocol. Although the documents should be readable to humans, they aren't pretty. I imagine the first things that will pop up are management websites which will host and create applications that will help the user create their profiles. As well, the management websites will most likely offer a viewer. By decentralizing the profiles, we are now opening it up to all developers and we will probably see a lot more applications built. There is the possibility for desktop applications to view and edit your profile just as LiveJournal has. There is also the very likelihood that someone will create browser extensions that will deliver feeds directly to you. When a person updates their profile, you may receive a notification on an instant messenger.

There will also be feed readers that do the same as they do in the blogosphere. They will read an identity's history and give the user an update. Along with those feed readers and profile readers, we can broaden the searching possibility with search engines. Much the same as the current social networking sites, a person can search for a friend or a group.

Security

One of the best and worst things about the current profile setup is security. Can you trust a website with your information? Do you trust that website to give you access to control who can and who can't see your information? Is there a permissions system? In many cases, one would expect a decent level of security. Although, when Facebook decided to release their mini-feed feature, many people were very angry when there were no controls for who can and who can't see your history. With a decentralized system, you have full access to your information and can make it as public or as private as you want.

A possible way to do permissions is by allowing the identity to setup groups that they want to put users in or by doing permissions based on each user. Each user would then use an identity system, such as OpenID, to authenticate themselves with the identity. That identity could possibly give the user a cookie so they no longer have to login.

Revenue

The world requires money to make things happen. This is understandable and has been thought of. Of course, with any new idea there are infinite number of off-shoot ideas that may come. Some possible ways that a company may profit from this.

This protocol does away with viewing ads on the identity's page... sort of. A feed can still include an advertisement just as any blog feed does now. That will certainly help the host with the costs. Those ads may still not be enough and there may be software that can find those ads and remove them. So, we come up with other solutions. The most important type of revenue to be made is through viral marketing. We are developing a social network which transcends all other websites. It brings together those people that like one social network but don't like another, those people that don't like social networks at all, and those people that don't even know about it.

As an example of a way to market to this distributed network I will use a fictitious company called Josh Inc. Josh Inc has a new product that they want to market. They create a group and give away one of their products each week for a period of 10 weeks. The marketing geniuses in their marketing department invite their friends and invite everyone in the company to invite their friends also. Before, the giveaway even starts they have 50 people (the number of people in the company) inviting all of their friends to join this group which is giving away a $100 product for 10 weeks. Every time a person joins this group, all of their friends see that they have joined the group on their friends' feed. Even when a person leaves the group, all of their friends will be notified. If they started the promotion at the very start of the giveaway (which is idiotic) and 3 friends of each friend joined every week, they would have a market of 1,476,200 that really read in to the product that they were possibly going to win. The cost of Josh Inc employing this strategy is $2,000 ($100 product X 10 weeks X 2 people per week).

There would also be search engines and caches that would store information to be found. Those could all have advertising. Then there is also the profile management websites that would host and create software designed to help the common user edit and manage their profile.

Version Control 'proposed' command

Just thinking about how much easier it would be if there was a command to propose a change to a version control system (cvs, svn, etc.). It would run on a permissions system where you would make a proposed change and then someone with the permission to do so would commit it. That person could still be you. I came up with the idea to make it easier for a group of people to review code. With a proper viewer, you could easily see the changes and catalog them. Maybe at another time you want to revisit the changes or you want to hold off on committing the changes because you want to let the code develop more. All of which makes perfect sense in development. Especially where you have a product line with many versions.

The commands would be slightly different. The new command 'propose' would need to be added and that would work like a commit. The commit command would be changed to allow for a server to server commit. I guess it would make sense to have a secondary branch of proposed changes or something.  

Documentation Software

Has anyone ever noticed that there is no decent, free, PHP powered documentation software out there? I have. If you look at MySQL documentation, they have the right idea. It isn't a wiki. Wiki being a Web 2.0 word. The idea behind a wiki - allowing users to edit content - has been around for a very long time.

What is needed is something that has a MVC architecture. The backend is powered by a RDBMS like MySQL. The rest is powered by PHP. The themes are powered by PHP. It also needs to be completely translatable. Everything from the application text to the content. There needs to be some way to include documentation for your software per branch. It also needs version control so you can see the changes that have been made and revert bad changes.

Below I have posted a basic pseudo schema. Note that I haven't included things like members and groups since they could be controlled from an outside source. I am hoping to make this work with SMF
pages
	ID_PAGE			-> The ID of the page
	ID_GROUPS		-> A comma delimited list of groups allowed to edit this page
	ID_TAGS			-> A comma delimited list of the IDs of the tags
	ID_BRANCHES		-> The IDs of the branches this document refers to
	redirect		-> Instead of content, this page redirects to another url

page_content
	ID_PAGE			-> The ID of the page this is referring to
	version			-> The version of this content
	ID_LANG			-> The ID of the language this is referring to
	pname			-> The name of the page
	content			-> The content of this page
	approved		-> A flag to signify if this page has been approved

tags
	ID_TAG			-> The ID of the tag
	ID_LANG			-> The ID of the language this tag is in
	name			-> The name of the tag

branches
	ID_BRANCH		-> The ID of this branch
	ID_LANG			-> The ID of the language this branch is in
	name			-> The name of the branch

languages
	ID_LANG			-> The ID of the language
	def_lang_name		-> The name in the default language (usually English)
	name			-> The name of this language



I could add to this by including a member table, permissions table, and a groups table. You add members to groups so you can more easily change permissions.

Some of the permissions that you would use would be: can create page, can create tag, can edit pages, can edit page content, can revert page content, can add/edit/remove branches, and can add/edit/remove languages.

Related pages would be done by doing a search for keywords and/or tags.

I also think that a table for comments would be good. A really quick makeup of that schema would be: comments -> ID_COMMENT, ID_PAGE, ID_USER, date, approved, comment

Another update to the Powerbook

My Brother suggested that I try to see if my PowerBook even works. To be honest, I have been a bit scared to even try to charge the battery since it might start a fire. So I plugged it in to the outlet in the bathroom since it has a ground fault disconnect and would trip if the computer shorted out. It didn't and booted up. The screen is extremely broken. I took it to the livingroom and plugged it in via a HDMI cable. The HDD works, the CPU works, the ports work, the battery works but the screen doesn't. So I have to sit directly in front of a 52" screen. It sounds pretty cool but it actually sucks. I need to get a wireless keyboard and mouse.