Friday, November 14, 2008

Planning, Programming, and Researching

It's been a long time since the presenting post of Elude. So for a short summary from the previous port: elude is the production name of my senior project. It is a program that let's you set a list of your programs that don't want to be able to open in a period of time that you set. So why doing this you ask? This way you don't get tempted to procrastinate to do your work.

Procrastination inspired it while I was procrastinating :P. I've done some research and I don't see any software like this out there, which surprises me. Then again I didn't do a very through research on that, since it's not as important for this project.

Ok now back to the point of the post which is the planning and researching. The planning has been happening throughout the project. Things happen, specially in college, and then I need to reschedule a couple of times. But all of that turned out good. There are different stages in the plan: Creating Procedures, Designing, Programming, Post-production,
  • Creating Procedures
    • blocking and/or killing process
    • Enlist installed programs
    • Events handling
  • Designing
    • UI and UX
    • Data Architecture
    • Modules
    • License
  • Programming
    • Data Structures implementation
    • Processes handling
    • Timer
    • Program Lists
    • Main
    • Features
    • Extra-Features(optional)
  • Post-Production
    • Debug
    • UI and UX
    • Security and Prevention
    • Refining
    • Final Test
  • Wrap it up
    • Deployment
    • Documentation
    • Report Paper
    • Presentation
That is the definite plan. I am working in between stages though, which it's not so good, but it has to be done like that. Why? because I am making the research to know more about the Window's API. It's an extensive API, but still it's easy to implement since it's all in one library windows.h and they are all functions. Yet I need understanding behind the API and how it interacts either with the sytem or the kernel itself so I can choose the best solution.

So it's a cycle of programming->research->programming->research and so on. In this case msdn have become a constant stop in researching.

Another thing is that I am trying to make it modular so it would be easy to change any essential procedures. So if I find a more efficient way to block programs or keep time of the clock I can only change that part. Also I plan to transfer this program to a linux system and changing windows data structures to linux data structures would be easier this way to. Oh, by the way I am using C++ since I am more used to that.

This is all for now, I'll try to keep more current on the project.

Tuesday, September 2, 2008

Introduction to elude project

What is this blog about?
Well, this blog is a bit too specific comparing it to the blogs going around. It's about logging the process of the
elude project.

What is elude?
Elude is the name of a senior project I need to make for my degree. Truth be told I also want it to make it as a personal project, so I guess in the long run everybody win, because I would dedicate more time to this personal project then others.

But first a little background story, the premises of the project. I am Francisco (Tony) Lara and I am studying Computer Science at Southewestern College in Winfield, Kansas. Every last year the students in that major need to create a senior project.

The senior project is done in one semester, but it needs to be somewhat challenging making me learn something new and use what I already have and know. I need to come up with the idea of the project and later discuss it with my instructor.

The idea I was rattling around in my head was to make an anti-procrastination tool. As you might think, the idea came around when I was procrastinating (we learn from our mistakes) and because I think it would come handy to my peers in college.

Description:
To not make it any longer the project consists of a program that main functionality would be to prevent other programs to be opened for a period of time determined by the user.

The project needs to be logged so I am putting this weblog for that reason and because it would be easier for my instructor or any one to acces the info and comment about the process of it.

For every project there should be small goals to acomplish along the way, so my instructor (Crystal Peng PhD) and I got together and joint down the "contract" of the project. Here it is:

Project process' goals to reach:

  • Do a complete research on how to obtain the main feature to work efficiently.

  • Very detailed planning and scheduling of every task that needs to be made to complete a unit for the program.

  • Design desired prototype user interface.

  • Program units:

    • Put programs from the user input in the lock list.

    • Find an efficient way to stored lock list.

    • Persistent listening of sockets, ports, and channels for locked programs.

    • Catch instance of a program when trying to access.

    • Check on timeout for time left on the time period instructed by user.

    • If timeout is still active, kill process right on the start or prevent it from starting.

    • Report occurrence to user interface.

  • Extra Program units (extra features if possible):

    • stored lists for future uses.

    • Able to store a default list.

    • Start program on windows start.

    • Able to continue working even after a restart.

  • Program security to prevent hacking (this might go at the same time as programing the units).

  • Debugging and refining.

  • Testing phase. Test it on a small fix number of computers for the final testing stage.

Grade would be based on:
  • Weekly meeting and report

  • A web blog to keep track of project progress

  • The end product – the project itself, source code, documentation, and etc.

  • Final report and presentation



As of now I haven't decided yet on which OS it would work on, but I am guessing it would be on Windows since most of the students use Windows XP in Southwestern College.

It sure would be an opensource project since I am bound by that philosophy from my early programming years, which was like 5 years ago not so long ago, but it sounds bold if said like that. But I am not sure which license it would be, I still need to find that out.

I would be putting resources about the project in the sidebar section and I am also thinking of opening a twitter account for those small quick updates on the project.

If you have any questions, advices, comments, or anything constructive and without rudeness or spam, shoot them in the comments.