Idea

Random: Recording problems

I like to record the problems so I can use them in the future.
I like data to be portable. I should create some standard so I and possibility someone else can use to store problems for really easy manipulation later.(Minimal migration required).

Currently I haven't developed the system I need to manipulate those data. There will be some function map each JSON file to a directory of files.(each resource is a file) Someone going to write it, likely me.
Problems can be recorded with JSON or XML. I prefer JSON.

top level there are the field id, name, output and resources
where id is a unique string(here I use a 64bit integer in hex form).(btw I have this 64bit integer in hex script that generate it for you)
name is the name for the problem. In English or Romanization/translation of the name of the problem.

Output is an array of objects, each have 4 fields: type, format, language, and out. Type can be "problem_statement, sample_in, sample_out, input, output" and others I can't think of.
format include any possible plain text output format that might be useful. I think "latex, html" are pretty much it for now. out is either a string or an array of strings.
Language is the language it is in. Seems reasonable.

Resource field is there to store binary files. It's an dictionary of binary files. Currently I don't need it. It is possible to use it for the future.

BTW JSON is a context free language.

{
    "id": "7455689cc5d35040",
    "name": "Putnam and Beyond Problem 12",
    "output": [
        {
            "type": "problem_statement",
            "format": "latex",
            "language": "English",
            "out": [
                "Prove that $|\\sin nx| \\leq n |\\sin x|$ for any real number $x$ and positive integer $n$."
            ] 
        },
        {
            "type": "citation",
            "format": "plain",
            "language": "English",
            "out": [
                "Putnam and Beyond ISBN:9780387257655 p.6"
            ] 
        } 
    ]
}

Nice.
Of course, it can be XML files.

This will become useful later.
I'm keeping set of problems in some database. So I can keep a queue of problems I didn't figure out the first time by just record their ID's somewhere.

Idea: Interactive problem solving sessions on campus

I found it boring to only solving problems by myself.

Only a few classes I have attended have interactive problem solving sessions, those classes ROCKED.

---List of problem solving sessions I had on campus--- ignore if you don't care---
CSE 150, I think this is the best course I have taken in my entire life. I assume this class is somewhat like classes in AwesomeMath or other math camps. Students engaged and anticipated in solving the problems.
CSE 350, especially the recitation, is similar to CSE 150.

There are two other classes related to problem solving, but not that interactive.
CSE 392. Most of the thinking for the problems are done outside classroom. The class is basically explaining how someone solved it.
MAT 160. I been to the class only twice. It seems to be like: Do the hw, discuss how it is done. Instead of doing it in class. What's good about the class, is there are people who are enthusiastic about solving the problems.

I expect to try MAT 260 and see how it works.

Other than courses, there are 2 other places I had done some problem solving.
Math club. Last semester the preparation for Putnam, the clubbers have done some problems.
ACM practice was also similar.
--------------------end list---------------------

I feel it's not enough. There is a lack of interactive problem solving sessions on campus. Won't it be nice if there is some club that meet sometimes every week and work on some problem collaboratively. Problems of math, computer science and physics nature. i.e. Union of math/cs/physics club and intersect it with problem solving.

Some possible format.
ARML/HMMT team competition like.
People can organize them into smaller groups, working on a set of problems at a time.
Then people explain their ideas.

Seminar like. Someone pick out some set of problem, and direct the flow of the solvers, ask for participation, until the problem get solved.(Similar to last semester's math club)

Just putting the idea out there. I would totally come to events like this.

Revision repositories and text backup

Instead of using cvs, svn, git just for large open source projects. It can be used as a personal system for backups of text files.(that include source codes to essays)

Github gave each free user 300MB of space. Pretty nice. That should be enough for just storing texts, right?
It might be abusing the ToS a little. Github free should be used for free and open source projects. All the files one commit are open to everyone. Make sure only to back up things you allow others to see.

Let's assume one doesn't store the end product the first time they commit their work. And each commit should only create a small change in the work. To be safe, let all the revisions of a file 2 times the size of the original file. Then we have 100MB of space.

For some people, they use only ascii, thus 1 byte per characters. That would be 100 million characters.
I envy people who only know English, because they will never need to use any other language, thus live in ascii world happily. They never have to worry about charset, input method and some software might not support what ever they are going to type.
I digress.
Suppose someone use UTF in some of them. Then it need 50 million characters. Let's not consider them, just consider English and source codes.

Is it possible to write 100 million characters in one's life time?
Sure.
If one type at the speed of one character per second on average over a period of 3 years, it will surpass the limit.

Likely, that's not going to happen, especially if one use their brains before writing down anything. I use lots and lots of scrap papers. My notebooks are scrap papers. I only store information on the computer in electronic format.

The source of all the hw I have done from last semester to now is 0.2MB. All the source I submitted to any online judge this semester is 0.025MB. Certainly I have written other stuff, like my blog posts. Those doesn't require back up because it's in my blog. Suppose those do require backup, I would believe it is less than 0.25MB.
Thus a total of around 0.5MB of original data was generated for a period of around 6 months.

That means I can use github for backup for 100 years if my productivity stays the same.

The amount of keystrokes I had was "6163302", last updated 2010/01/23.(I don't have a linux version yet :() It was on the computer that I use less often after college, but I would believe it contained at least 6 months of keystrokes. Even if all those keystrokes are realized, it is only a 6MB file.
Github is at least good enough for 10 years. At least I can use it until I start to earn money to pay for extra storage. COOL.

If I got a new laptop, or I need to do something on someone else's computer. All I have to
do to sync is a few command line code. Nice.

Some people did all their work in Word or w/e, where do they back them up? Google Docs. LaTeX gave me more freedom because LaTeX codes are plain texts. WIN. That's why I stopped using word. Except I dislike how kile don't have automatic spell check function yet.

Computation during sleep

I had a dream a few nights ago, where I was asked the problem 100/6 to the nearest integer. (I was buying moon cakes, 300 for 50 dollars. Yeah, very strange dream)
It was 17. In the dream there was no calculation at all, the answer just popped up.
I woke up, and did the calculation, it was correct.
So where does 17 come from? Did I calculated it subconsciously? I didn't know I can do subconscious calculations. Maybe it's my subconscious memory of some calculation I did a long long time ago.

It could be just a random guess, because I'm sure the answer is between 10 and 20, and 11% chance getting it right.

There are instances when I go to sleep, and dream of more complex problems and solve it. I usually feels like I solved the problem in the dream. When I wake up, I can only remember the important insight. There are times where those insights are correct, and helps me solve the problem.

Do I do computation and math while I'm asleep? Or are those just random guesses that's incredibly lucky?

I wonder if there are books related to this. Google search like computation sleep doesn't help.

Idea: List 2.0

What's the most common type of document you update? I asked a few people, they say source codes. Ha, programmers.

For me, it's just plain text files. More specifically, lists (or "tuples" if you like math) of simple strings with no structure at all.

Lists are useful in many ways. It is SIMPLE. The only thing simpler would be a set of elements. Which is usually represented as a list anyway.

I maintain lists like books I want to read, topics I want to learn, things I want to buy, etc. They are everywhere. Everytime I need to group any objects together, I use lists.
Of course, there can be lot of structure in the above examples. Like I can assign books with what topics it concerns(even if it's just strings, like I can write "mathematical analysis #math", that's how twitter people introduced structure in first place, since twitter is just a list of status), which can make it into a list of lists, or even graphs. That will be a completely different story and it's not a concern in this topic.

Any structure beyond a set and one specific ordering is a overkill in my standards. In fact, most of the time I don't even consider the ordering of the list. Sometimes I just stumble upon a wikipedia article (currently, Language of thought) and want to put it in a list known as "Concepts I have to remember". Ordering comes helpful if I maintain a list like "What I did today"

So I'm going to write some methods and features of a really cool list
Methods: suppose list is similar to ArrayList in java.
1. insert
insert a string to the list. optionally add where to insert it to.
2. search
find and list string match some criteria
3. delete
remove a string
4. update
update a specific item in the list

That's all the operation there is, but it's possible to implement some features on top of it
1. Lists can be accessed anywhere
2. Lists can be edited anywhere, even by more than one person

oh hey, that's all...
wait, I missed out something
3. Manage the list is extremely ez, and can be done by command line, most importantly. Updating the list should be so ez, that "too much effort" can never be the excuse to not write down a list. I heard from one of my friend who says he want to create a list of books to read, but too lazy to write it down. I assume he would like it more if he can add something to the list without delay. I sometimes want to record something down, and then I get discouraged when I realize I have to open a new file, write something, then save, then give the file a name.

Hmm, with those creteria, one can make 500 different implmentations.
This sounds like remember the milk but even simpler. To-Do and task lists are lists with chronological features. That make RTM too complicated for just lists.

How do I maintain such lists? A few current simple options:
1. Use a text editor to edit the list. It's really simple. It's what I preferred before internet is widely available.
It is still inconvenient. I have to find the text file, and double click it, write something and save it. It doesn't allow collaboration
2. Use stuff like Google docs, evernotes and other online services for documents
Inconvenient.
3. FAST Command Line Database
Convenient for insert and search. Organizing the elements is a pain. Collaboration is possible if more than one person have permission to edit the file. It does what it suppose to do though, really convinent to insert and search.

So if we build something like FAST, but data is stored elsewhere on the web(or the cloud), adding a few more features(deletion and updates), it be epic to use. We will see, seems like a ez project I shall do soon.

Something like this would happen.
I set up a account and password, and I call command line window with some hotkey, then write stuff like
l -a books Mathematical Analysis
and press enter, it insert "Mathematical Analysis" into the list books

Non-related rant: AMS 311 is full! I'm no.1 on the waiting list. I hope someone switch out.

Honey Pot that kill bots