More research today. I've been mucking around with some of Collabora's code. They are releasing Farstream on Fedora 17 soon. I also found out that there will be a version of Sugar on F17 released in July. Farstream comes with python bindings by default and supports a lot of useful things by default including, RTP and ICE. ICE will be useful as it allows the program to navigate around firewalls and NATs. This should be a valid approach so long as I can get a hold of the development build of Sugar. I don't think I'll have any problems with that though.
If that isn't possible I should be able to continue with current Sugar builds by using telepathy-farsight. This should be very similar to farstream except I'll need to manually pull in the ICE library and perhaps a few other things.
Overall I feel like I'm getting a firm grasp of what needs to happen to get everything working properly. Next week I'm going to start hacking on the OVC code to figure out how I can integrate these new libraries.
Showing posts with label Foss. Show all posts
Showing posts with label Foss. Show all posts
Thursday, March 29, 2012
Tuesday, March 27, 2012
OVC Research
I dove into the pyGst docs today to try and wrap my head around what exactly is going on. I found the docs to be really confusing at first. Luckily there was an accompanying tutorial that explained things very nicely.
Unfortunately, the tutorial only outlined how to do local streaming. I searched around a little more and discovered that OLPC has a page about gstreamer on the XO's specifically. This page has a lot of information on it. According to that, I need to use a udpsink with an IP to send video to another XO.
At this point I started picking through the code to figure out where the problems might be. I know that somewhere along the way the connection isn't being set up correctly. Either the XO's are failing to get each other's IP's or the video connection isn't establishing.
The part of the code in tube_speak.py that deals with IP's is as such:
The other part of the code I've been looking at is here in gst_stack.py:
# Add udpsink
udp_sink = gst.element_factory_make("udpsink")
udp_sink.set_property("host", ip)
self._out_pipeline.add(udp_sink)
video_enc.link(udp_sink)
It may be the case that I need to find an alternative to udpsink. Maybe there is something like rtpsink? I'm not sure at this point. Next I think I will start picking at the code to try and determine exactly where it's failing to make the connection.
Unfortunately, the tutorial only outlined how to do local streaming. I searched around a little more and discovered that OLPC has a page about gstreamer on the XO's specifically. This page has a lot of information on it. According to that, I need to use a udpsink with an IP to send video to another XO.
At this point I started picking through the code to figure out where the problems might be. I know that somewhere along the way the connection isn't being set up correctly. Either the XO's are failing to get each other's IP's or the video connection isn't establishing.
The part of the code in tube_speak.py that deals with IP's is as such:
@signal(dbus_interface=IFACE, signature='s')
def announce_ip(self, ip):
self.ip = ip
def announce_ip_cb(self, ip, sender=None):This is most likely where the problem is occurring. Basically, the XO's are just spitting out their IP and hoping the other one gets it. If this is the root of the problem, I should be able to solve it with a home spun TCP-like interface where it listens for a return signal.
if sender != self.tube.get_unique_name():
self.cb('ip', ip)
The other part of the code I've been looking at is here in gst_stack.py:
# Add udpsink
udp_sink = gst.element_factory_make("udpsink")
udp_sink.set_property("host", ip)
self._out_pipeline.add(udp_sink)
video_enc.link(udp_sink)
It may be the case that I need to find an alternative to udpsink. Maybe there is something like rtpsink? I'm not sure at this point. Next I think I will start picking at the code to try and determine exactly where it's failing to make the connection.
Sunday, March 25, 2012
Migrating OVC
Well I haven't talked about Open Video Chat lately. The project has been pretty stagnant for a while. I'm picking it up again this quarter as part of an independent study. Expect weekly updates about the project.
The first order of business is to migrate the project to github. Fedora Hosted was nice but it simply doesn't compare to github for community involvement and collaboration tools. The new repo can be found here: https://github.com/OpenVideoChat/Open-Video-chat.
This quarter I would like to get OVC working with RTP. The current system uses UDP steaming 100% of the time. This means that more often than not the connection packets are dropped since the XO's have horrible connection reliability. RTP fixes this by using a hybrid of TCP and UDP. It uses TCP to ensure the connection is made, then UDP for fast media streaming.
After I complete the RTP conversion I want to focus on getting some more documentation and unit tests for OVC. Right now there is absolutely nothing. When I graduate in May there will no longer be any of the original collaborators at RIT. Providing docs and unit tests will make it easier for other students to pick this up when I'm gone.
The first order of business is to migrate the project to github. Fedora Hosted was nice but it simply doesn't compare to github for community involvement and collaboration tools. The new repo can be found here: https://github.com/OpenVideoChat/Open-Video-chat.
This quarter I would like to get OVC working with RTP. The current system uses UDP steaming 100% of the time. This means that more often than not the connection packets are dropped since the XO's have horrible connection reliability. RTP fixes this by using a hybrid of TCP and UDP. It uses TCP to ensure the connection is made, then UDP for fast media streaming.
After I complete the RTP conversion I want to focus on getting some more documentation and unit tests for OVC. Right now there is absolutely nothing. When I graduate in May there will no longer be any of the original collaborators at RIT. Providing docs and unit tests will make it easier for other students to pick this up when I'm gone.
Wednesday, August 10, 2011
POSSE Hackfest '11
I'm currently hanging out with the Foss Box and some professors from various local schools. We're trying to teach them about all things open source. I've been playing with Open Video Chat again to see if it works on the newest Sugar build. Sugar 0.92.2 is now running on Fedora 14. Hopefully this means it either has the version of Telepathy we need or we can install it. I was able to get OVC running on two XO's and connected them. When it tried to connect the pipes I got an error though. Seems to be a break at a file open :/ I'll have to look at this more.
Side Note: The XO's automagically start an adhoc network and connect to eachother again! WOOOOO!
Side Note: The XO's automagically start an adhoc network and connect to eachother again! WOOOOO!
Wednesday, July 13, 2011
RIP Gnome3 Hot Corner
FINALLY!
After weeks of anguish I have finally figured out how to disable the hot corner on Gnome 3 that has been the bain of my existence since switching to Fedora 15.
What's the problem with a Hot Corner?
Well if aren't familiar with Gnome 3 there is an Overview that allows you to quickly open programs and switch between currently open ones.
The hot corner is in the top left corner of the screen and activates when the cursor is in the (0,0) coordinate. The problem with the hot corner is that you often accidentally activate it when trying to click things close to the top left corner. It's also highly redundant since the "Activities" button there has the same functionality. Personally, when I want to use the Overview I just hit the super key (windows key).
The Solution
You need to modify the javascript backend for gnome panel. Yeah Gnome 3 is partly in javascript... You'll find the necessary file under /usr/share/gnome-shell/js/ui/. Next you want to open panel.js in your favorite text editor. I like Geany :P You'll need to find this line:
this._corner = new Clutter.Rectangle({ width: 1, height: 1, opacity: 0, reactive: true });
and modify it to say "reactive: false". This will disable the hot corner functionality without disabling Overview.
I found this solution here and credit goes to Jinx.
After weeks of anguish I have finally figured out how to disable the hot corner on Gnome 3 that has been the bain of my existence since switching to Fedora 15.
What's the problem with a Hot Corner?
Well if aren't familiar with Gnome 3 there is an Overview that allows you to quickly open programs and switch between currently open ones.
The hot corner is in the top left corner of the screen and activates when the cursor is in the (0,0) coordinate. The problem with the hot corner is that you often accidentally activate it when trying to click things close to the top left corner. It's also highly redundant since the "Activities" button there has the same functionality. Personally, when I want to use the Overview I just hit the super key (windows key).
The Solution
You need to modify the javascript backend for gnome panel. Yeah Gnome 3 is partly in javascript... You'll find the necessary file under /usr/share/gnome-shell/js/ui/. Next you want to open panel.js in your favorite text editor. I like Geany :P You'll need to find this line:
this._corner = new Clutter.Rectangle({ width: 1, height: 1, opacity: 0, reactive: true });
and modify it to say "reactive: false". This will disable the hot corner functionality without disabling Overview.
I found this solution here and credit goes to Jinx.
Monday, July 11, 2011
Success!!! kind of...
So I've got an interactive webpage made that dynamically generates buttons based on an xml file. It even updates on the fly with a drop down menu to switch between languages. One small problem though... the javascript I hacked together to make the pretty video popups is scanning the page before the other javascript has dynamically populated the page. So basically the video isn't working at all. Tomorrow I'll have to look at possible solutions. I think the best route is to actually get around to finishing jQuery-izing the video plugin. Then I can just attach a listener to a <div> and link it to the video proper. Luckily tomorrow is the Foss@Rit hackfest so I'll have plenty of time ^_^
Tuesday, June 28, 2011
Webpage Prototypes
I've been prototyping First EMT using html5 and css3. Things are starting to look pretty sexy. Right now I'm trying to find a work around to display video in a pretty popup. My first thought was the lightbox jQuery plugin. That doesn't support video though. There doesn't seem to be a very good video alternative with the same look. I think what I'm going to have to do is hack something together that looks similar. I'll post a tutorial tomorrow with the best method I come up with.
In other news, JT and I are going to start putting our prototypes online. We're going to put our source up on github tomorrow. I also want to look at hosting the webpages on Red Hat's cloud app service, Open Shift. Updates tomorrow.
In other news, JT and I are going to start putting our prototypes online. We're going to put our source up on github tomorrow. I also want to look at hosting the webpages on Red Hat's cloud app service, Open Shift. Updates tomorrow.
Monday, June 13, 2011
Internationalization in PHP
Our current game plan with First EMT is to build a Javascript and PHP web application so I've been looking at ways to do internationalization in PHP. If you're writing code that needs to be accessible in many different languages, internationalization is a must. Instead of hard coding text you create a variable for every body of text in your interface. Then you store translation files for every language your UI must support. By changing your locale variable you can quickly and easily switch the language your UI displays. If you make the translation files human readable it is also very easy to add new languages by simply hiring a professional translator for a few hours of work.
My first searches seemed fruitful... I found this documentation describing Resource Bundles. It seemed great until I noticed it was under the header "Future Directions". I'm a fairly proficient programmer but I'm certainly not ready to write a patch to PHP... time to look at other options...
The best option I've found so far is called Zend_Translate. Zend's translate framework is really flexible. You can provide something as basic as arrays of words to translate or as complex as importing a Translation Memory file and dynamically translating everything. For my purposes I think I'm going to use the TMX adapter. TMX is an extension of XML and it's an industry standard for this sort of application. It can be modified in any XML editor which makes it very easy to add new translations. An example TMX file would be something like:
- <?xml version="1.0" ?>
- <!DOCTYPE tmx SYSTEM "tmx14.dtd">
- <tmx version="1.4">
- <header creationtoolversion="1.0.0" datatype="winres"segtype="sentence"
- adminlang="en-us" srclang="de-at" o-tmf="abc"
- creationtool="XYZTool" >
- </header>
- <body>
- <tu tuid='message1'>
- <tuv xml:lang="de"><seg>Nachricht1</seg></tuv>
- <tuv xml:lang="en"><seg>message1</seg></tuv>
- </tu>
- <tu tuid='message2'>
- <tuv xml:lang="de"><seg>Nachricht2</seg></tuv>
- <tuv xml:lang="en"><seg>message2</seg></tuv>
- </tu>
- </body>
- </tmx>
Labels:
First_EMT,
Foss,
i18n,
internationalization,
php,
tmx,
translation,
xml,
zend
Wednesday, June 8, 2011
Research
Starting to find some good articles to use for our project and the paper later on in the summer. I'm going to aggregate them here for my own use :-P
These articles will be good for pointing out the existence of language barriers and the problems they cause in the medical profession:
Lost in translation? pediatric preventive care and language barriers
http://www.sciencedirect.com/science/article/pii/S0022347605011194
Language barriers and the use of interpreters in the public health services. A questionnaire-based survey
http://www.sciencedirect.com/science/article/pii/S0738399110002697
One of the ideas we've been throwing around was a what-if scenario where ambulances could have a 3G connection and send information from the tablet to the hospital before the patient arrives. It turns out this has already been an idea.
http://v-scheiner.brunel.ac.uk/bitstream/2438/2430/1/Ambulance%203G.pdf
We'll have to see if the Rochester area ambulances have 3G connections.
I am also interested in the translation aspect of the project. I want to make sure whatever translation we're using will be correct. Often times machine translation will have errors. This is obviously unacceptable for medical practice. We may need to look at simply providing hard-coded translation for the forms and leave MT for the open ended, less-important questions.
open source translation: http://www.apertium.org/
These articles will be good for pointing out the existence of language barriers and the problems they cause in the medical profession:
Lost in translation? pediatric preventive care and language barriers
http://www.sciencedirect.com/science/article/pii/S0022347605011194
Language barriers and the use of interpreters in the public health services. A questionnaire-based survey
http://www.sciencedirect.com/science/article/pii/S0738399110002697
One of the ideas we've been throwing around was a what-if scenario where ambulances could have a 3G connection and send information from the tablet to the hospital before the patient arrives. It turns out this has already been an idea.
http://v-scheiner.brunel.ac.uk/bitstream/2438/2430/1/Ambulance%203G.pdf
We'll have to see if the Rochester area ambulances have 3G connections.
I am also interested in the translation aspect of the project. I want to make sure whatever translation we're using will be correct. Often times machine translation will have errors. This is obviously unacceptable for medical practice. We may need to look at simply providing hard-coded translation for the forms and leave MT for the open ended, less-important questions.
open source translation: http://www.apertium.org/
Tuesday, June 7, 2011
First EMT
So I'm doing research again this summer. This time around I'm working on First EMT. First Encounter Medical Translator will be an EMT assistant providing several multilingual or language independent tools for first responders. I'm going to be working with my buddy JT throughout the summer. You can follow his blog here: http://www.jtmengel.com.
Medical professionals today run into problems with patients who do not speak English. Obviously they must help these people but communication can be very difficult. We're going to design a tablet-based system that will allow first responders to gather data in a number of different languages. It will also have a diagram of a person where a patient can zoom in and let an EMT know where they're injured. We may also add a page where an EMT can pull up common questions in several different languages so they can verbally ask things like "who is your primary doctor?" or "do you have any allergies?".
This first week we will be writing up the design documents and figuring out exactly what our user experience is going to be. I'm also going to be researching options for translation since Google is dropping their translation API (link). Moses looks like a good alternative. I'll be posting more information on it as I learn more.
I'm very excited about this project and can't wait to getcracking hacking.
Medical professionals today run into problems with patients who do not speak English. Obviously they must help these people but communication can be very difficult. We're going to design a tablet-based system that will allow first responders to gather data in a number of different languages. It will also have a diagram of a person where a patient can zoom in and let an EMT know where they're injured. We may also add a page where an EMT can pull up common questions in several different languages so they can verbally ask things like "who is your primary doctor?" or "do you have any allergies?".
This first week we will be writing up the design documents and figuring out exactly what our user experience is going to be. I'm also going to be researching options for translation since Google is dropping their translation API (link). Moses looks like a good alternative. I'll be posting more information on it as I learn more.
I'm very excited about this project and can't wait to get
Tuesday, February 1, 2011
Rochester GREAT Student Achievement Award
So Justin, Fran, and I received a Rochester GREAT Student Achievement Award tonight for our work with Open Video Chat. Thanks to Remy DeCausemaker and Steven Jacobs for making this possible. Special thanks to our project advisors Luke Macken and Mel Chua :D
p.s. Sorry about the squinty face, I can't deal with camera flash :(
Monday, January 24, 2011
PHP mini-project Update
I hit a small roadblock this weekend trying to get file uploading to work. That plus my AI homework really slowed down the project. I'm still banging away at it. Today I managed to get uploads to the web server. Next steps: Get the uploads to the right place. Password protect it! (O_O) Then I'm going to get the app pushing information to a database. From there I'll get the front page of the website reading information from that database.
Thursday, January 20, 2011
PHP: Photo Hero Project
So I'm the webmaster of the RIT Rock Climbing Club. What this basically means as far as the club is concerned is that I'm the only one that knows what a terminal window is. I figure since I know a thing or two more than that I should write some code to help future members of the club. So here's my idea:
Right now the club's front page has a slideshow of club members doing club-y stuff.(link) The members of the club wish to be able to change the images in the slideshow from time to time. Right now the current system is for them to send me an image. I crop the image to the right resolution and send it server side using sftp. Then I have to modify the index.php file to include the new image + alt text. The final step is using RIT's web manager to push everything to the production server. This is all really basic and easy since I program. However in the future the club might not have a programmer available to do this.
My goal this weekend is to create a web interface for uploading and deleting images from the slide show. This should allow club admins to easily modify the front page of the website.
Goals:
Right now the club's front page has a slideshow of club members doing club-y stuff.(link) The members of the club wish to be able to change the images in the slideshow from time to time. Right now the current system is for them to send me an image. I crop the image to the right resolution and send it server side using sftp. Then I have to modify the index.php file to include the new image + alt text. The final step is using RIT's web manager to push everything to the production server. This is all really basic and easy since I program. However in the future the club might not have a programmer available to do this.
My goal this weekend is to create a web interface for uploading and deleting images from the slide show. This should allow club admins to easily modify the front page of the website.
Goals:
- Simple web interface to upload and delete images from the server
- RIT LDAP authentication using a database of admin user names
- Database storing image location on server + image information (photographer, alt text, etc)
- modified index.php with generic data structure filled with info from the database
I only have passing knowledge of both PHP and SQL so this whole project should be rather interesting. I don't think it's going to be incredibly hard. Most of the work should be researching how to do the things I want in PHP.
Useful links:
- RIT LDAP PHP http://bjcpgd.cias.rit.edu/wordpress/archives/6
- PHP uploading http://www.tizag.com/phpT/fileupload.php
- PHP Database http://www.devshed.com/c/a/PHP/Website-Database-Basics-With-PHP-and-MySQL/
Wednesday, November 17, 2010
SilverStripe - Microsoft Certified
Surfing the web today I found something surprising, an open source web framework written in php under the BSD license, Silver Stripe. That's not the cool part though. Silver Stripe is Microsoft Certified. Check out their blog here for some more info on that.
This is truly ground breaking in my opinion. It seems that more and more the big software companies are seeing how beneficial open source development can be. I plan on checking out this framework soon and writing more about it's features. Even though I've had some bad experiences with Windows in the past and have since moved to Fedora Linux there is no reason we can't come to a truce. If Microsoft is going to accept open source as a viable option I think they should be commended.
I wish the developers of Silver Stripe the best of luck. I hope open source developers will find this project and really show the power of the open source community to Microsoft.
This is truly ground breaking in my opinion. It seems that more and more the big software companies are seeing how beneficial open source development can be. I plan on checking out this framework soon and writing more about it's features. Even though I've had some bad experiences with Windows in the past and have since moved to Fedora Linux there is no reason we can't come to a truce. If Microsoft is going to accept open source as a viable option I think they should be commended.
I wish the developers of Silver Stripe the best of luck. I hope open source developers will find this project and really show the power of the open source community to Microsoft.
Tuesday, October 12, 2010
Transbot wiki
Tuesday, September 28, 2010
TransBot is up and developing
So for the RIT HFOSS class my partner Mark and I are working on TransBot. TransBot is an IRC bot translation bot written in Python that uses the Google Translate API to translate between IRC channels. We grabbed the original code from John McLean's FedoraHosted repo. John noted in his wiki that he intended for the project to be picked up and improved. The base code looks very basic and we are looking forward to improving it quite a bit. Some of our preliminary goals:
- Modularize the code: We want to create a translation module that will take in a stream and output a translated stream. This could have other useful applications in the future.
- Port to Sugar: TransBot would be an invaluable tool to children in developing countries. It would allow them to communicate to the outside world without language barriers. We want this to work on the XO 1.0 as well as XO 1.5 and Sugar on a Stick.
- Involve the community: The existing version of TransBot is very basic and requires coding knowledge to configure properly. We'd like to add a more user-friendly interface to TransBot. Add a GUI instead of manually writing a config file.
Our source code is available a http://git.fedorahosted.org/git/transbot.git
Stay tuned for more updates!
Monday, September 27, 2010
Django
So over the weekend and today I've familiarized myself with Django, the web framework Ductus is built on. It seems fairly intuitive so far. I've also been debating this ticket. My quick fix for the ticket was a little too general. Ductus currently uses the first line of Creole code for a wiki page as it's title. This becomes a problem when Creole syntax characters are in the line ('=, *, [['). I've been thinking about the best way to handle this problem. If there are images or external URL's in the first line this is even worse. You can't just strip off some Creole characters and put a URL in the title of a page. I think I'm going to look at posting the page's URL in the title. It doesn't make sense to pull information from the page unless we mandate a page title at the beginning of every page. ie "= English Lessons =". Otherwise we could pull the first line which is a link to something else. An example would be having a page listing spanish lessons with the first link being "spanish introduction". The current code would pull "spanish introduction" when it really should be something like "All Spanish Lessons".
Thursday, September 23, 2010
Monday, September 20, 2010
Wikiotics "Day 1"
So It's Day 1 of my Wikiotics job. Today I'm trying to see about translating their intro lesson to ASL. Hopefully I can find some videos on youtube and embed them in the Ductus wiki. If I figure this out fast I'm going to look at finding a ticket I can close.
Friday, September 17, 2010
Hello Ductus
I just started my first "unofficial" day working on Wikiotics, a free open source language learning tool similar to Rosetta Stone. I just spent a couple hours today sifting through the code. I'm pumped to start in next week!
Subscribe to:
Posts (Atom)