Archive for the ‘My Projects’ Category

Gmap Uploader – Custom Google Maps Tiles

Sunday, December 24th, 2006

Announcing Gmap Uploader, the easiest way to create custom Google Map tiles. Just upload an image and download a zip file with the tiles. Or, just copy the HTML source, change the API key, and just let Gmap Uploader host the tiles.

Campus Map Example:

Floor Plan Example:

Photo Example:

AJAX Grocery List Manager

Monday, November 27th, 2006

Here’s an idea I’ve had for an AJAX web application for a while, but have never actually got around to implementing yet. It’s pretty simple. My hope is that someone makes something like this so I don’t have to. There’s a lot of other stuff I’m working on, and this seems so simple, yet so hard to get perfect because this is competing with pen and paper, and pen and paper isn’t THAT bad for making grocery lists.

What I’m looking for is an application which manages my grocery list. The main point of it, is to remember what I usually buy, and have that be the default list for the next time I go shopping. From there, I should be able to add/edit/delete items. I should be able to print the list and/or send it to my cell phone or PDA somehow. There… that’s the basics.

A few other non-essential features come to mind with this grocery list manager. When giving my grocery list to someone else so that they can shop for me, they will need to know specifically which items I prefer. For example, below is a mapping from what I should be able to type and what should show up on the other person’s list based on what I usually buy. If I have to type this in the first time, no big deal, its a one time thing unless you want to change something.

milk => 1 Gallon Skim Milk
deli meat => Plumrose brand sliced turkey and ham
salad => 2 bags of Dole Greener Selection salad
carrots => large bag of Bolthouse Farms Baby-Cut Carrots
cereal => Granola with rasins, Basic 4
pasta sauce => Ragu Super Chunky Mushroom

So, if an entire house (ours being an example with 7 guys) wants to put their lists up on the site, people won’t have to go shopping as much because when someone goes, they can just pull up everyone’s individual lists and buy everything. When it aggregates these lists it should be able to indicate who wants what in order to keep track of money if its not all coming from the pot.

I’m thinking that the grocery list should have categories organized similarly to how a real grocery store is organized so that when you go to the store, items near each other in the store are near each other on your list. It should be able to tell you which isles you need to go down and which you can skip, but this may require some information on the layout of the specific store. A map of the store itself and where you can find everything is another feature which may be useful.

Also, it would be nice if the list knew how often you needed things, and could suggest things based on when you actually need them. I suppose it could make intelligent guesses based on how often you put things on your list.

Umich Cosign… A Conversation

Thursday, November 9th, 2006

So, one of my classmates a couple semesters ago IMed me today, and we had the following conversation about the University of Michigan‘s Cosign system (see previous post), and also how to get user information from the umich directory. I thought other people at UofM looking to implement web applications using the uniqname login system, might find this discussion useful.

1:29:54 PM Yaniv: i am hoping for some advice about setting up and using cosign
1:30:23 PM Kyle Mulka: for what purpose?
1:30:30 PM Yaniv: the idea is to have students log into a site with kerberos uniqnames, and be able to submit a vote
1:30:41 PM Kyle Mulka: I ask because if its for a University thing, then you should have the University set it up for you
1:30:53 PM Kyle Mulka: on their servers
1:31:13 PM Yaniv: yeah, i’ve been talking to the UM webmaster team also
1:31:17 PM Kyle Mulka: ITCS is good about setting cosign up on their web servers if you ask them
1:31:23 PM Kyle Mulka: and usually pay them
1:32:07 PM Yaniv: is it possible to set up on an independent server, and communicate with kerberos somehow?
1:32:15 PM Kyle Mulka: yes, it is… but its hard
1:32:21 PM Yaniv: liveugli, for example, is its own domain right?
1:32:42 PM Kyle Mulka: we’ll… you’ll notice that you don’t actually login to the liveugli domain
1:32:50 PM Kyle Mulka: just hosts the front page
1:33:03 PM Kyle Mulka: but… it is possible to use cosign on a non-umich domain
1:33:28 PM Yaniv: but you’d recommend to have itcs host it and they would set up cosign?
1:33:43 PM Kyle Mulka: yes
1:33:51 PM Kyle Mulka: I mean… is there a reason not to go that route?
1:34:07 PM Kyle Mulka: liveugli was able to get cosign setup through the GROCS program
1:34:19 PM Kyle Mulka:
1:34:30 PM Kyle Mulka: we’re considered a “project in residence”
1:34:33 PM Yaniv: the group this project is for already has a webhost from a third party
1:35:11 PM Yaniv: so lets assume that ITCS would host it
1:35:42 PM Yaniv: then with some language, i could say something like:
1:35:58 PM Yaniv: authenticatedUser -> getGraduationYear()
1:36:06 PM Yaniv: and find some attributes about the person?
1:37:14 PM Kyle Mulka: you can query people’s year (Fresh, Soph., Junior, Senior) from the directory
1:37:28 PM Kyle Mulka: all cosign gives you is the uniqname
1:37:43 PM Yaniv: oh i see
1:37:49 PM Yaniv: and which directory are you talking about?
1:37:51 PM Kyle Mulka:
1:37:56 PM Yaniv:
1:38:11 PM Kyle Mulka: yes
1:38:19 PM Yaniv: oh very nice
1:38:24 PM Yaniv: is there an API for that?
1:38:31 PM Kyle Mulka: is just a front end for the LDAP directory
1:38:44 PM Kyle Mulka: LDAP is a standard directory protocal
1:39:03 PM Kyle Mulka: replace my uniqname in that URL with yours…
1:39:13 PM Kyle Mulka:
1:39:21 PM Kyle Mulka: that’s all the info you can pull from the directory…
1:39:34 PM Kyle Mulka: however, not all of it is public… some people have made theirs private
1:39:49 PM Yaniv: right
1:39:59 PM Kyle Mulka:
1:40:13 PM Yaniv: so the umich LDAP server is publicly available?
1:40:28 PM Kyle Mulka: yes
1:41:06 PM Kyle Mulka: here’s the source code for that script if you want to use it
1:41:06 PM Kyle Mulka:
1:41:39 PM Kyle Mulka: you’ll notice the host name for the ldap server:
1:41:40 PM Kyle Mulka:
1:42:40 PM Kyle Mulka: but… when it comes down to it, if you just want to run elections… I would recommend not writing your own program, and using the one MSA, LSA-SG, and UMEC uses
1:42:49 PM Kyle Mulka:
1:43:44 PM Yaniv: right right, i’ve been in contact with their developer about that, we’re trying to arrange something
1:43:59 PM Yaniv: but I wanted to have a sense of what is involved in case that doesn’t work out
1:44:25 PM Kyle Mulka: you have a better chance with that than getting cosign running yourself
1:45:06 PM Kyle Mulka: but… if you want the adventure, feel free to give it a try
1:45:41 PM Kyle Mulka: here’s some of my notes from when I did it a couple years ago
1:45:41 PM Kyle Mulka:
1:45:58 PM Kyle Mulka: and… you’ve probably seen the cosign page
1:45:59 PM Kyle Mulka:
1:46:26 PM Yaniv: suppose i get cosign installed on an independent server, i still have to tell it to communicate with the UM credentials somehow, right?
1:46:37 PM Kyle Mulka: uh… yea…
1:47:00 PM Kyle Mulka: basically, you have to generate a certificate and get it signed by the UM webmasters
1:47:37 PM Kyle Mulka: digital certificate, digitally signed if that wasn’t already clear
1:47:58 PM Yaniv: ok, so in these 10 minutes, i concluded that its much better to have itcs host it
1:48:09 PM Yaniv: and even better to use the existing voting site
1:48:23 PM Kyle Mulka: and… if you do an independent thing, you’ll have to pay for a certificate if you don’t want that annoying box coming up
1:48:33 PM Kyle Mulka: which … costs about $100
1:48:46 PM Yaniv: right, thats true, i forgot about that
1:48:50 PM Yaniv: needs the SSL
1:49:04 PM Kyle Mulka: ssl isn’t actually required though… just recommended
1:49:19 PM Kyle Mulka: liveugli doesn’t use ssl
1:49:31 PM Yaniv: oh.. i see..
1:49:52 PM Kyle Mulka: one reason we don’t use it is because IE would complain on every page load that there were “unsecure” things on the page
1:49:58 PM Kyle Mulka: like… the Google Maps APi
1:50:27 PM Yaniv: yes, that would be annoying
1:50:53 PM Yaniv: ok, well that was very helpful, i do have a much better understanding of the big picture
1:50:58 PM Yaniv: thank you very much
1:51:03 PM Kyle Mulka: you’re welcome
1:51:56 PM Kyle Mulka: I probably should have pointed you to this too…
1:51:57 PM Kyle Mulka:
1:52:09 PM Yaniv: oh and thanks for that php code, i’ll look at it more closely, i’ll let you know if i use it and credit you if i do
1:52:34 PM Kyle Mulka: k, thanks
1:54:01 PM Yaniv: your articles are very good, i should have searched for them :)
1:55:59 PM Kyle Mulka: I appreciate the compliment, thanks
2:02:17 PM Kyle Mulka: Yaniv, do you mind if I post the transcript of this conversation?
2:11:53 PM Yaniv: no, not at all, please do

Startup… but How?

Tuesday, October 17th, 2006

Doing a start up… should I do it? How would I make money? Should I give up the masive salary that corporate America is offering me? Will my employer allow me to work on my side projects? If its competing with their main business, certainly they wouldn’t… but, its debatable whether or not the things I want to work on compete with the business or not. Hmm… Maybe I should just go work for a company that I’m sure has nothing to do with my side projects so that I’m able to work on them, AND make money.

Liquor Stores near Seattle, WA

Saturday, July 29th, 2006

Anouncing my newest Google Maps mashup using the Google Maps API:

Liquor Stores near Seattle, WA


In the state of Washington, in order to buy liquor, you have to go to a special store. You can’t just go to the grocery store like you can in Michigan where I’m originally from.

The Washington State Liquor Control Board has a website where you can locate the liquor store nearest you. However, the best you can do there is search by city. That doesn’t help much when you live in a big city like Seattle and don’t have a car.

So, in order to help the people of Seattle find their liquor, I’ve created a Google Maps mashup of the liquor stores near Seattle based on data from the full list of liquor stores.

I would have put all the stores in Washington on the map, but because of the way the Google Maps API works, it would take forever to load all the markers. Let me know if you are interested in any other part of Washington, and I’ll put it up.


Calendar + AJAX + iCal + Palm Desktop = Amazing!

Friday, April 21st, 2006

Title says basically what I’m looking for. I’m looking for a web based calendar which will publish and subscribe via iCal and will also sync with Palm Desktop on my laptop.

Why hasn’t there been a good AJAX calendar that you can use to publish and subscribe to calendars via the ical standard? Right now, the best I’ve seen is Planzo, but it has yet to publish or subscribe via iCal. Next on the list to evaluate is AirSet, which looks promising, but their site is so full of features that it is hard to get to the simple stuff you really want.

One really good use of this type of software is to plan semi-weekly meetings between a group of about 10 people when individuals schedules sometimes change depending on the week, but for the most part stay the same.

I started to do this with Mschedule a couple summers ago, but the only data I drew from was from the University of Michigan’s schedule of courses and individual students’ schedules that we’re imported into the site by simply copying and pasting from the official site hosted by the University called Wolverine Access. It was my first web application, so I didn’t really know what I was doing with PHP, CSS, or even HTML div tags (I used tables for all the layout).

liveUgli – Duderstadt Edition

Saturday, April 15th, 2006

We’ve added the Dudertstadt Center to the liveUgli service. So, now, when University of Michigan students are studying in the Duderstadt Center, they theoretically will be able to find their friends and classmates to study with. If you don’t have a UofM uniqname, sorry… you can’t access the service.

Google Maps API Version 2 Released

Monday, April 3rd, 2006

The documentation for the Google Maps API version 2 has been released. Oh my… I’ll have to read into this more next weekend. It’s looking like a lot of the stuff I’ve been doing beyond the basic features have been made easier to do. Looks like Google is encouraging the making of custom map types. Yey!

Mschedule ready for Fall 2006

Wednesday, March 29th, 2006

Spread the word…. Mschedule is up for Fall 2006 including the automatic schedule generator! I’ve fixed it once again… But, the domain is still dead, and probably won’t be coming back to life. Check it out and let me know if you have any problems.


Saturday, March 4th, 2006

So, my last entry was about Blue Puddle, my research project for the semester. This entry is about my other project for the semester called liveUgli.

What is liveUgli? Here’s the description straight from the about page:

“liveUgli is for finding students who are doing the same thing as you, right now. Find a classmate to ask a question, or a nearby friend to study with.”

Basically, a user sits down somewhere in a study space on campus either with a laptop or at a one of the many computers, logs into liveUgli selects a building and floor, and clicks on their location on a floorplan. We’re working hard to get location detection in place so that this process is semi-automated for the user. They can also tell us which class they are studying for and what specifically they are working on.

While on the site, they can browse through the floor plans and see who is studying what where. If they tell us what classes they are taking and who their friends are, we can limit the view to just their friends and classmates.

So, once they have found someone they may be interested in studying with, asking a question of, or taking a study break with, they can either visit them in person, or instant message them via AIM, MSN, etc. or our own messaging system which has yet to be implemented.

We’ve been in close contact with Jeff Powers who is building Mates pretty much by himself now. We plan on using the services Mates provides to power liveUgli.

The other project Jeff is working closely with is Ping. Basically, it is a smartphone client for Mates.

We like to think of liveUgli as a web-client for Mates, but its much more than that.