Yesterday, all the searches for “weiwatch” on Google didn’t return any of my sites.
Next target’s “iphone stopwatch” (:
Yesterday, all the searches for “weiwatch” on Google didn’t return any of my sites.
Next target’s “iphone stopwatch” (:
Posted in Uncategorized
WeiWatch has been approved by Apple and goes live in the App Store today!
Please check out the App at http://www.ganjianwei.com/iphone/weiwatch/ or go straight to WeiWatch in the App Store.
Thanks for all the support everyone, hope you like the app!
Posted in Career, Hobbies, Programming
I’ve made tons of progress with the iPhone app I’ve been working on. Tentatively the name’s going to be WeiWatch, and no I’m not trying to be egotistical, just thought it was catchy. Comments are more than welcome. You can use WeiWatch to time how long you take to do really routine things like your morning commute, or how long you take to shower. Wouldn’t it be really useful to know what your average time is so you can estimate better the next time, maybe avoid being late again?
There’s more to the App including a cute stopwatch minigame I created as well as prompts comparing your newest timing to the average. I’ll be writing more about that soon. Also, I plan to use Apple’s ad-hoc distribution to let some kind folks test it. Let me know if you have an iPhone/iPod touch and are interested in helping me try it out.
Meanwhile, here’s a screenshot of the first screen you see when you open the app:
Posted in Uncategorized
Our SEO project’s due tomorrow. Rankphiliac is someone who LOVES rank. (I guess that means loves a high ranking) I’m a rankphiliac and I really want our team of Alex Beutel’s Rankophilia and Caleb’s Rankophiliac and myself to win this. We’re hardcore rankphiliacs and we’re taking the rankphiliac crown.
Also see rankophilia, same thing…
Here’s links to Alex’s and Caleb’s sites:
Posted in Uncategorized
Posted in Geek, Hobbies, Idea, Programming, Uncategorized
Tagged programming projects iphone
For our class assignment, we have to be the highest ranking pages in a Google search for the words “Rankophilia Rankphilia Rankophiliac Rankphiliac”.
Here’s a link to our beloved site: http://rankophilia.dorm.duke.edu/index.php, and this too: http://rankophilia.dorm.duke.edu/rankophiliacs
Touché.
Posted in School
Django’s great. It lets you prototype a web app extremely quickly, there’s good design philosophies that rub off onto your app, there’s great documentation… but there are also quite a few limitations I came across when trying to make my app. Thankfully, like I said, there’s great documentation, which includes ways to get around these limitations. Here are the obstacles I came across when building my course management app, Whiteboard, and how I got around each of them.
Dealing with foreign keys to abstract model classes
I had an UploadedItem abstract model class and I wanted to let people comment on UploadedItems. In an ideal world, I would be able to write the Comment model class like this:
class Comment(models.Model):
comment = models.TextField()
uploader = models.ForeignKey(User)
upload_date = models.DateTimeField("Date uploaded", editable=True)
uploaded_item = models.ForeignKey(UploadedItem)
But then you’d get an error saying that you can’t specify an abstract class as a foreign key, which makes sense since Django doesn’t actually implement the abstract model class in the database.
Solution:
The contenttypes framework! More specifically, generic relations. In the end comment looks like this:
class Comment(models.Model):
comment = models.TextField()
uploader = models.ForeignKey(User)
upload_date = models.DateTimeField("Date uploaded", editable=True)
# Following fields are required for using GenericForeignKey
content_type = models.ForeignKey(ContentType)
object_id = models.PositiveIntegerField()
uploaded_item = generic.GenericForeignKey()
Also, to get the reverse relation from my UploadedItem instances such as Announcement, I had to include a comments GenericRelation field in each of the UploadedItem instances where I wanted to allow comments for.
class Announcement(UploadedItem):
"""Announcement"""
announcement = models.TextField()
comments = generic.GenericRelation(Comment)
So now, to get all the comments for an announcement, all I would have to do is:
>>> announcement.comments.all()
It might not be the simplest solution, but it really is simple enough, and after I followed instructions from the documentation, it really just worked. Pity I couldn’t have it the “ideal” way, but then again using the contenttypes framework made the final implementation simple enough.
(Next post on making models and forms dynamic)
I came across this watch online today. I like how wearing it will remind you to live life to your fullest every time you check what time it is.
Posted in Uncategorized
I’ve been working on a project of late, but sometimes I’m wondering how likely that idea and project will become worthy of starting a company with. After reading Paul Graham’s article on Ideas for Startups, I realize the search for ideas has to be something constant–I have to be constantly asking questions of things in life, finding problems and inefficiencies–at least until I find something that I think is viable to work with in the longer term.
I also just came across this article on The New York Times about a start-up that rents college textbooks. It’s incredible how such an obvious inefficiency that’s plain for all to see can be the spark for such a successful start-up. We’re often blind to such glaring problems. Don’t get me wrong, we surely notice the inefficiency, just that we try to ignore it, try to get around it and get on with our lives because it would be painful to dwell on every single problem like that since there are an uncountable number out there.
In a way, it’s harder to see problems than their solutions. Most people prefer to remain in denial about problems. It’s obvious why: problems are irritating. They’re problems! Imagine if people in 1700 saw their lives the way we’d see them. It would have been unbearable. This denial is such a powerful force that, even when presented with possible solutions, people often prefer to believe they wouldn’t work.
- Paul Graham
I’ll be looking for these problems now, and when I find them, asking the right questions about why they are problems, and asking the right questions on how to solve them. Hopefully this will get me started on something worthwhile.
Posted in Career
In Singapore, if a husband rapes his wife, the fact that it’s in marriage exempts him from being charged for rape by the law. I feel that this exemption is unacceptable as it protects rapists and it leaves wives completely unable to press criminal charges despite getting RAPED by another man, even if it is their husbands. This law is archaic and dates back to colonial times, a time where most didn’t have the privilege of acknowledging gender imbalances as we see it in the world today.
Please support this petition to repeal the exemption of marital rape from being charged as rape. Also, if you feel as strongly about this injustice as I do, please invite your friends to sign the petition as well.
Posted in Singapore, Uncategorized