Randoms

Just another WordPress weblog

Flower

Projects in hand !

While I was travelling, I worked on a bunch of projects.

CSULB Class Planner:

Making your class schedule is a pain….  You need to juggle between Rate my professor, the CSULB schedule of class for available classes, myCSULB (The school ERP) to register and the degree requirements.

I am thinking of building a web app that would automatically build a schedule for you.

Users would have to fill up information about major, year and classes already taken  (Maybe parse the unofficial transcript from myCSULB). Provide preferences about the time, availability and desired course load.

On the server side, I need an algorithm that build the schedule, a database of classes by parsing/scraping the CSULB class schedule and users.

Other possibilities:

  • Integration with Facebook to share info with friends (classes taken together).
  • Get info from ratemyprofessors as a factor for selecting the classes.
  • Open architecture to make it work with other colleges system.

My main question is about Intellectual Property and privacy. Technically it seems pretty straightforward.

Update (09/02):

I find out someone got this iddea before me: http://www.myedu.com/

It has all the functionalities I was talking about and even uses the GPA as a factor to choose the classes.  :(

Flikr Photo:

Following the fiasco with my pictures, I uploaded all my pictures on Flikr. You have unlimited storage with their paid account. I found out that there is no way of getting the pictures back in full resolution.

I played around with App engine for this script.  I would say it is 70% complete. I have a way of getting the pictures but still have to find a way to download the pictures on the desktop.

Projects:

Facebook data exporter

To follow on my Firefox extension…..

Since I am already scrapping Facebook for pictures I am tagged in, why not go all in with it !?

I do not want to get all the data but the ones that I find important: Friends, contacts info, pictures, messages and relationship between your friends.

I am pretty sure this would be against facebook terms so it will not be widely distributed and advertised. I just want to play around with javascript and Facebook API.

Finish work on OpenMRS:

I want to finish what we did as a group. First of all I need to do some house cleaning regarding the module: upload bug reports, update a page on the wiki, make a user manual. Then maybe finish the code to be more robust.

Facebook album downloader

I am working on a way to get some of the pictures I lost. I am writing a extension for Firefox that will be scraping pictures from Facebook.

Generally people upload albums based on events in time (parties, travel, reunion,….). If I am tagged in one picture there are chances I was present there and relate to the other pictures too. This is why I download the picture that my friends tagged me in but also the whole album.

It is not a very reliable but I rather get more picture and then manually delete the ones I do not want than miss something.

Solution:

Running through friends album from a tagged picture can not be done with the Facebook API (The picture object does not have an album field :( ). Therefore I dumbly iterate through the pages and scrape what I need (album name, picture,….).

I choose to make an extension for Firefox to  avoid the hassle of deployment and servers.

It also gives me the power of working on a desktop environment (Create folders, files, etc) and use the flexibility of JavaScript for all the web related elements (DOM traversal, authentication, etc ).

Sadly Facebook resizes the picture when uploaded to 5xx by 720 but I guess it is better than nothing at all.

Status:

At the moment, the extension is working:  I download about 3 000 pictures  from 400 tagged pictures in 20 min. I need to find a way to reduce this number by looking for doubles and avoid some recursion problems.

Also I need to test on a different OS if it is working correctly. I am relying on XPCOM components to write on the disk and I am afraid it might not work straight on a mac.

Extensions:

  • Get other data from facebook account
  • Test using Facebook API (run through all friends, run through all their album, search for my tag, download album…..)

TODO List:

  • Play with webworkers to multithread the whole thing.
  • Correct file name and script
  • Add test cases
  • Create manual page
  • Publishd to Mozilla website
  • Clean debug statements

Unfortunately, the extension is not available for the public. I am not sure how facebook would react with it. Also I only made it for me to play around with JavaScript and try different things.

If you ask me by mail I will send the code to you…

HDD failure

One way to save your photos is to store a backup in an external hard drive and keep the “originals” on your laptop/ home pc/ etc…..
But what happen when your “backup” fails !?!?

I just lost about 3 years of pictures.  Hopefully most of those pictures are shared by friends on Facebook…….

About OpenMRS

Time to write about our experience working on OpenMRS.
I have to say, the task was not easy. As newbies, we had to learn everything from scratch.

End results:

At the end, we ended up having a semi-functioning module. The main functionalities are implemented (Authentication,Add,Remove,Edit users) but some are missing (Group membership). Moreover the plugin at the moment is not robust at all. Although we tried to be as protective as possible, we only had one test platform (Linux+OpenLDAP)…..

Problems encountered:

I would trace all the setbacks and mediocre results to time consumption and bad communication.
This class just got added to the curriculum this semester so even the teacher were testing and looking out for solutions. We did not allocate enough time to do everything needed: research, programming, testing, house cleaning.

The team consisted of 4 students:

  • Me, a senior with a Java background, although I not very familiar with Spring, I worked with Tomcat and JEE.
  • Another senior with a C/C++ and PHP background.
  • A junior who just started learning java
  • A sophomore who just finished his lower division classes with java.

This diversity also took time and energy away from the completion of the module. The search of a project that would fit the capacities of the group took us about 2 weeks. We settled down on OpenMRS because the majority of us already worked with java. I also wanted to continue working with Spring.

The problem: none of us had ever worked with LDAP nor used any directory service. Understanding the uses cases and practical uses took us a while. We also did not have real life data or example to relate to in OpenMRS.

Problems in communication  was something not expected.
We knew how to use collaboration tools and SVN but we never had to base all our communication on a mailing list. In all my previous internship or projects, I always communicated face to face when facing a problem.
We used Google groups for communication inside the team and met every 2-3 days on campus.

Looking back at it, writing to the newsletter was not done early enough. We barely communicated to the OpenMRS team. I had the feeling that we were going to disturb the discussion or just ask a dumb question.

Conclusion:

Being designated the team leader was an eye opening experience. I learn that I should be more forward and stick to my views. We were dividing work on a volunteer basis and set a deadline (usually for the next week). I never stepped in as a leader and we all worked on the same level. I think this was a mistake.
Deadlines were not respected, work was not done correctly, especially researching a specific subject.
Since communication was not strictly enforced, we did redundant work and wasted time.

On the other hand we are all students and were pretty busy. I think enforcing the rules like a dictator would not have been more productive. A good thing we did not followed the classic “student project methodology”:  do nothing until 3 weeks to the deadline.

I do regret that we never had time to go into testing of the application. The curriculum at CSULB is weak on this subject. There is no class dedicated to this subject, professors do not require anything for their projects.
This class could have been a good starting point to research and get some experience.

Update on the site

School is now over.

I do need to post something on the outcome of the OpenMRS project.

Moreover I need to finish the website regarding my current job as a research assistant, I am tempted to use joonla but that would be an overkill in front of the lack of content.

Anyway, the resume is now updated and can be download here as a word document.

OpenMRS LDAP project

My CECS491 involves developing for an opensource project.
The syllabus can be found here.

OpenMRS Logo

OpenMRS Logo

The teams members were distributed by the professor, I am guessing it ended up being based on computer program knowledge: C/C++ and non C/C++. Good thing all of us have some knowledge of java.

With the other team member we decided on working with OpenMRS.

More specifically, we decided to implement one of the module listed in the project page: LDAP module. The goal is to add first user authentication on an LDAP server and then user management all together.

From the website:

OpenMRS® is a community-developed, open-source, enterprise electronic medical record system platform. We’ve come together to specifically respond to those actively building and managing health systems in the developing world, where AIDS, tuberculosis, and malaria afflict the lives of millions. Our mission is to foster self-sustaining health information technology implementations in these environments through peer mentorship, proactive collaboration, and a code base that equals or surpasses proprietary equivalents. You are welcome to come participate in our community, whether by implementing our software, or contributing your efforts to our mission!

I have been designated the “team leader”, we will see what happen with this.

The problem at the moment is the level in people skills in java. OpenMRS seams big and use the Spring Framework that none of us used before. On top of this, I have no idea what LDAP is used for.

This project is going to be interesting….

School is back !

Well school is back.
Looking at the last post, unfortunately I did not had time to finish on time the project I had.
I still need to make a description and post something about it.

On a brighter note, one of the class I am taking is going to involve working on an OpenSource project.
More update will be coming.

Color Tutorial

Color tutorial is an tool that let people see the relation between RGB and HSB colors.

There is also 2 sets of controls: One for background, one for text/foreground. It also have the ability to pick a color from the screen with an eyedropper.

This project was presented to me by Thomas Jewett who taught the CECS 470 Class. It was also the occasion to experiment with JavaFX that just came out at the start of the project.

A complete presentation of the application with the rest of his tutorial can be found there: http://www.tomjewett.com/colors/tutor.html

Language: JavaFX

COLOR Tutorial

COLOR Tutorial

JavaFX Challenge

 

JavaFX Logo

JavaFX Logo

Since I have nothing else to do…

General Education are sort of boring so why not try something new: JavaFX
A challenge started to promote this new “language”. The deadline is set to May 29th.

My idea is to implement an application that let students interact, propose or look for housing and roomates around campus. I guess the goal is to be better than craigslist  since it is the most used way to find an appartment on campus :D .

One particular point will be interaction with Facebook through their API.

I am also looking for any volunteers, Long Beach students with some background in Computer Science.

I may need some help in:

  • Database design and normalization. (Sort of done, but not my favorite skill)
  • Transposing the fracebook API from PHP to JavaFX.
  • UI design and graphism in general.
  • Someone to work on a website to explain the application.
  • In fact anything would do !!!

Also I need a name and a logo…

Project1984

The goal was to detect movement from a webcam. When a movement was detected, the stream will be recorded for 30 sec.

Different method of detection were implemented. To improve the application, preprocessing on the image can be done through various filters. Those filters can be added as plugin by third party.

The application is multi threaded  (preprocessing, view, detection, encoding) but no evaluation was made to see if it improved anything.

Language: Java

  • Uses JMF 2.1 from Sun to interface with webcams.
  • Multithread engine.
  • Image filtering before detection.
  • Video encoding and save to hard drive.
  • Plugin architecture for preprocessing filters and detection method.
  • Highly configurable (UI, Encoding, resolution).

Sorry, there is currently no code, nor screenshot… I need to rework the excecutable to run on java6 and Vista !