text:
User talk:Clio the Muse~enwikiversity

Hello Clio the Muse, and welcome to Wikiversity! If you need help, feel free to visit my talk page, or contact us and ask questions. When leaving comments for others to read, remember to sign and date; it helps everyone keep track of who is writing messages. The signature icon in the edit window makes it simple. To help you get started:
 * Take a guided tour and learn how to edit;
 * Explore our learning projects;
 * Browse our portals, schools, and research pages; and
 * Read and help develop our community policies.

If you're already excited about editing, our sandbox is the perfect place for all test edits. Also, don't forget to experiment with the links to your left. Be bold, and see you around Wikiversity!

P.S. Do you want live feedback ? You can find us in #wikiversity-en (see Chat) --JWSchmidt 02:13, 13 September 2007 (UTC)

civility
I just read your comments at Request custodian action. I feel more comfortable responding to your comments here because there is still no explicit request for custodian action. First, I want to make sure that you are aware of the Wikiversity policy about civility. Everyone is invited to remove incivil talk page comments. You should feel free to remove talk page comments that bother you. I suspect you are aware of this, but have your reasons for not acting to personally remove incivil talk page comments. What follows is a rather long-winded attempt to get you to change your mind about that.

In simple terms, I think you want me (or any other custodian) to act while I'd like you to act. In this stand off, I suspect we might be struggling against the effects of some fundamental barriers to effective communication. I'm tempted to say that there are cultural barriers involved, but I am reluctant to make too many assumptions about the backgrounds of individuals who I do not know well. However, I am fairly familiar with the cultures of Wikipedia and Wikiversity, so it might be safe for me to make a few comments about the differences between those two cultures.....comments that I think are relevant to the discussion at Request custodian action.

In some cultures people are encouraged to speak bluntly and develop a "thick skin". In other cultures people rarely hear direct criticism and feel that their honor is seriously damaged by even a minor insult. I suppose some people even tell themselves that their honor is reduced if they have to explain their sense of honor to people who do not share that same sense of honor. As soon as such positions (if you need that explained then you are not worth my time) are adopted, effective cross-cultural communication becomes impossible. In the case of Wikipedia, I think there has been a strong cultural trend towards trying to win arguments by provoking other editors and then punishing them for their use of "personal attacks". Some editors are very skilled at using subtle forms of insult while other editors are more direct when trading insults. It can come as a surprise to nobody that the blocks and bans are collected by the editors who are not subtle. At Wikiversity there has been an attempt to develop a different culture, one where the game of provoke/punish is not played. Given this cultural difference between Wikipedia and Wikiversity, it might be a shock for Wikipedians to discover that incivility is dealt with in a different way here.

I am puzzled by the fact that you have long known about the Wikiversity editing of Loomis/Lewis but now seem to be expecting Wikiversity custodians to step in and remove months old comments. From my perspective, the most direct path towards that goal is for you to remove any comments that you feel are incivil. The Wikiversity community is slowly working towards consensus on additional methods that will give us more options for dealing with participants who are not constructive editors, but for now the civility policy is our best tool for dealing with the incivil Loomis/Lewis. The Wikiversity civility policy does not really call upon custodians to play any special role in dealing with incivility.

Both you and other Wikipedians seem to be expecting custodians to spring into action at the mention of "attacks". Within Wikipedia nobody need explain such a strategy; there is always an administrator nearby who specializes in tasks such as removing attacks from talk pages. That just is not the case at Wikiversity. I guess it is possible that a custodian might be prodded into acting by suggesting that failure to so will be damaging to the credibility and value of the Wikiversity project. I can only speak for myself, and this is where other cultural variations come into play. In addition to valuing civility, I value honesty, exploration, free speech, academic freedom and empowering people to solve their own problems. I've known people who gladly admit, "I'm a real bastard," and they laugh heartily if anyone agrees with them. Personal experience has taught me not to jump to conclusions about what people consider to be incivil. I encourage you to trust your own subjective experience of your own feelings to guide you in removing comments from Wikiversity talk pages that you feel are not civil comments. "I leave it to your good sense to decide what is best." --JWSchmidt 04:11, 13 September 2007 (UTC)

 * Thank you, JW, both for the welcome and for the above message; but I really am not here to stay. Why did I raise this now when I have been aware of it for months?  If you read what I wrote on your custodians desk again (if you can bare to read it again!) you will see that a recent debate on Wikipedia, and the attendant advocacy of Wikiversity, was the immediate context of this issue being aired as it has.  I personally would have left the whole thing alone; for the remarks in question, their sheer incoherence, have caused me amusement, more than aything else.  However, for reasons I fully understand Wikipedia administrators brought the problem here, hence the lengthy debate on the custodian's page.  SB_Johnny invited me to give a view, and I did.  I think it would be quite the wrong thing for me personally to take on these indiividuals here; I can predict with some accuracy what the outcome of that would be.  But I am tough, and I really could not care less for their onslaught on me here.  You are now aware of this situation; you are now aware of Loomis/Lewis.  I personally am content to leave it at that.  My best wishes.  Clio the Muse 05:55, 13 September 2007 (UTC)

Insight Requested
Clio, I am not at all familar with the above situation. I ended up here perusing the recent changes log. Can you share with me why you do not find this site of long term interest and thus will not be sticking around? I have been expecting explosive growth in the site community and I am at a loss why this is not occurring. Any insight you can provide regarding why you do not find Wikiversity of use or interest in the short or long term would be greatly appreciated!. Thanks. Mirwin 06:12, 13 September 2007 (UTC)

 * Hi, Mirwin. I really do not think there is a place for Clio here.  You see, I only became aware of the existence of Wikiversity earlier this year, when some of your users were specifically developing it into a kind or redoubt from which to launch unrestrained attacks against me, the kind of personal offensive that could not be mounted on Wikipedia.  I have no choice but to share Wikipedia with two of the individuals in question, but there I can avoid them and am offered a degree of protection by the civility rules.  I note that you also have civility rules here, though how they are applied would seem to be considerably more lax.  For me Wikiversity has come to be associated with the worst forms of personal venom.  It's unfortunate, I know, and if I had come here from a different angle, and with a different kind of history, things might have been different.  Sadly, I did not.

 * On your wider point-and trying to depersonalise the issues-it seems to me that Wikiversity will always be in the shadow of Wikipedia, which has grown, I suppose, into a kind of internet monster! Look it the issue from another dimension: have you ever asked yourself how Wikiversity would cope with the kind of dramatic growth that you were hoping would occur?  I do not know what your own intellectual speciality is: mine is in history.  Even with the forms of control and supervision that exist on Wikipedia many of the pages on modern history are little better than political battlegrounds, disgracefully so, in some cases.  Could you cope with that here?  Perhaps you could, though my instincts suggest not.  But I confess I am still not fully conversant with the purpose of Wikiversity.  If circumstances had been different I might have helped where I could (my intellect is razor sharp; far too sharp for some!), but they were not.  Take care and visit me at Wikipedia any time you wish.  All the best from Anastasia, also Clio the Muse 22:31, 13 September 2007 (UTC)

 * That's an interesting question - whether Wikiversity would be able to cope with Wikipedia-style growth, particularly with heated topics. My broad take on that is that, while Wikipedia strives for a single article on a given subject, Wikiversity allows for multiple resources to be developed which give different perspectives on the given topic. However, we have been saying this for longer than we have been actually doing it - and how our ideas and policies work in practice largely remains to be seen. Cormaggio talk 23:28, 15 September 2007 (UTC)

Comment by A.Z.
"'Well, now I'm confused. At first I thought these remarks by Clio were evidence that she was an antisemite. I thought she wanted to kill Jewish people inside a gas chamber and she would do magic to curse them. Now I don't know if all of this is just my imagination. I hope to hear Lewis's and StuRat's thoughts on this. And whether we should just go and ask her whether she is an antisemite or not. a.z.'"

One could, if they wish, interpret the paragraph above as an attack at Clio. It isn't, though. It is just me looking for help concerning a subject that I wanted to learn more about. I expect she understands that I have never accused her of being a witch and wanting to gas all Jews. I said that I had thought she wanted to kill Jewish people inside a gas chamber. I also said I had thought she would do magic to curse them, though another possibility was that she had referred to black magic only as a metaphor, and wouldn't actually perform it. I have said on that same thread, 20 days after I started it, "I now realize that my original interpretation of those comments is silly. Thank you both for your help". Nevertheless, I never got the help I needed to understand why, if she wasn't an antisemite and a witch, she had looked like that to me. I understand now that my approach at trying to solve the problem was not well chosen, and it would be considerably better if I had talked to her at her talk page, and tried to explain my concerns more clearly. I am sorry for all that happened. a.z. 02:27, 15 September 2007 (UTC)

Your account will be renamed
Hello,

The developer team at Wikimedia is making some changes to how accounts work, as part of our on-going efforts to provide new and better tools for our users like cross-wiki notifications. These changes will mean you have the same account name everywhere. This will let us give you new features that will help you edit and discuss better, and allow more flexible user permissions for tools. One of the side-effects of this is that user accounts will now have to be unique across all 900 Wikimedia wikis. See the announcement for more information.

Unfortunately, your account clashes with another account also called Clio the Muse. To make sure that both of you can use all Wikimedia projects in future, we have reserved the name Clio the Muse~enwikiversity that only you will have. If you like it, you don't have to do anything. If you do not like it, you can pick out a different name.

Your account will still work as before, and you will be credited for all your edits made so far, but you will have to use the new account name when you log in.

Sorry for the inconvenience.

Yours, Keegan Peterzell Community Liaison, Wikimedia Foundation 23:32, 17 March 2015 (UTC)

Renamed
 This account has been renamed as part of single-user login finalisation. If you own this account you can |log in using your previous username and password for more information. If you do not like this account's new name, you can choose your own using this form after logging in: . -- Keegan (WMF) (talk) 06:05, 19 April 2015 (UTC)

title: User talk:Clio the Muse~enwikiversity


text:
User:Ianblair23

w:User:Ianblair23

license: Creative Commons - Attribution Share-Alike - https://creativecommons.org/licenses/by-sa/4.0/

title: User:Ianblair23


text:
User talk:Byte5115

Hello Byte5115, and welcome to Wikiversity! If you need help, feel free to visit my talk page, or contact us and ask questions. When leaving comments for others to read, remember to sign and date; it helps everyone keep track of who is writing messages. The signature icon in the edit window makes it simple. To help you get started:
 * Take a guided tour and learn how to edit;
 * Explore our learning projects;
 * Browse our portals, schools, and research pages; and
 * Read and help develop our community policies.

If you're already excited about editing, our sandbox is the perfect place for all test edits. Also, don't forget to experiment with the links to your left. Be bold, and see you around Wikiversity!

P.S. Do you want live feedback ? You can find us in #wikiversity-en (see Chat) Erkan Yilmaz ( evaluate me!, discussion ) 08:20, 13 September 2007 (UTC)

Spanish course refreshed
Hi, if you are still interested in studying Spanish language, let me invite you to this refreshed course Spanish One. It uses Wikibookian textbook "Spanish" and includes an oportunity of live discussio with teacher via Skype. The course understood the importance of live speech and understanding, when letter is understood like a code of explanations.--Juan 14:19, 5 January 2008 (UTC)

title: User talk:Byte5115


text:
User:Dionysios/Pilcrow

Pilcrow
¶

title: User:Dionysios/Pilcrow


text:
User:Pachuau

Pachuau is a part-time audio engineer and is currently doing his engineering in computer sciences. He had already completed a course in audio engineering and is involved in both studio recording and live sound. He had done live sound setup for various artist including international bands such as Smokie and a jazz fusion band, which consist of Scott Kinsey, Matt Garrison, Seamus Blake and Kirk Covington.

title: User:Pachuau


text:
User talk:Pachuau

Hello Pachuau, and welcome to Wikiversity! If you need help, feel free to visit my talk page, or contact us and ask questions. When leaving comments for others to read, remember to sign and date; it helps everyone keep track of who is writing messages. The signature icon in the edit window makes it simple. To help you get started:
 * Take a guided tour and learn how to edit;
 * Explore our learning projects;
 * Browse our portals, schools, and research pages; and
 * Read and help develop our community policies.

If you're already excited about editing, our sandbox is the perfect place for all test edits. Also, don't forget to experiment with the links to your left. Be bold, and see you around Wikiversity!

P.S. Do you want live feedback ? You can find us in #wikiversity-en (see Chat) Erkan Yilmaz ( evaluate me!, discussion ) 14:03, 13 September 2007 (UTC)

Audio engineering
Great to see you on Topic:Audio engineering - I'm hoping to return to some interesting activities in this field over the coming year. Do you have any ideas for some interesting learning materials/projects/activities that we could have here on Wikiversity? Cormaggio talk 09:11, 14 September 2007 (UTC)

title: User talk:Pachuau


text:
User talk:Zink

Hello Zink, and welcome to Wikiversity! If you need help, feel free to visit my talk page, or contact us and ask questions. When leaving comments for others to read, remember to sign and date; it helps everyone keep track of who is writing messages. The signature icon in the edit window makes it simple. To help you get started:
 * Take a guided tour and learn how to edit;
 * Explore our learning projects;
 * Browse our portals, schools, and research pages; and
 * Read and help develop our community policies.

If you're already excited about editing, our sandbox is the perfect place for all test edits. Also, don't forget to experiment with the links to your left. Be bold, and see you around Wikiversity!

P.S. Do you want live feedback ? You can find us in #wikiversity-en (see Chat) Erkan Yilmaz ( evaluate me!, discussion ) 15:34, 13 September 2007 (UTC)

title: User talk:Zink


text:
C++/Templates 2

Templates 2
Templates can also be used with classes

title: C++/Templates 2


text:
User talk:Mawootad

Hello Mawootad, and welcome to Wikiversity! If you need help, feel free to visit my talk page, or contact us and ask questions. When leaving comments for others to read, remember to sign and date; it helps everyone keep track of who is writing messages. The signature icon in the edit window makes it simple. To help you get started:
 * Take a guided tour and learn how to edit;
 * Explore our learning projects;
 * Browse our portals, schools, and research pages; and
 * Read and help develop our community policies.

If you're already excited about editing, our sandbox is the perfect place for all test edits. Also, don't forget to experiment with the links to your left. Be bold, and see you around Wikiversity!

P.S. Do you want live feedback ? You can find us in #wikiversity-en (see Chat) Erkan Yilmaz ( evaluate me!, discussion ) 16:43, 13 September 2007 (UTC)

title: User talk:Mawootad


text:
Very Small Information Systems

Very Small Information Systems is a Wikiversity content development project where participants create, organize and develop learning resources for information systems that are very small.

The following summarizes the topics from two courses held at the Technical University in Vienna, Austria and two courses at the Institute of Informatics, CBS in Denmark.

This all is, of course, work in progress. We will evaluate it with a real course that runs during this summer semester.

Rasmus Pedersen, Martin Schoeberl

What are Very Small Information Systems?
Very Small Information Systems (VSIS for short) are similar to Embedded Systems. However, the focus of this course is a little bit different. The focus is more holistic and the class will feature a number of core topics in Java and JVM technology for example. The target group spans students from within electrical engineering to software engineering.

Information Systems is the discipline concerned with the development, use, application and influence of information systems. An information system, following a definition of Langefors, is a technologically implemented medium for recording, storing, and disseminating linguistic expressions, as well as for drawing conclusions from such expressions.

The technology used for implementing information systems by no means has to be computer technology. A notebook in which one lists certain items of interest is, according to that definition, an information system. Likewise, there are computer applications that do not comply with this definition of information systems. Embedded systems are an example. A computer application that is integrated into clothing or even the human body does not generally deal with linguistic expressions. One could, however, try to generalize Langefors' definition so as to cover more recent developments.

Introduction to Embedded Systems
Definition: An embedded system is a computer systems that is part of a larger system.

Examples:
 * Washing machine
 * Car engine control
 * Mobile phone

The course uses a Java processor board as an example for the lab. The processor (JOP) is open-source and implemented in an FPGA.

The example board provides a typical configuration of an embedded system:

 * Digital I/O
 * Analog input
 * Serial line
 * Ethernet connection
 * up to 100MHz CPU
 * 1MB memory
 * 512KB + 32MB Flash

Slides Detailed Source For Real Time Systems

Reading: Embedded Systems

Exercise: Get a Hello World program running on either the real hardware or the simulation of JOP. Exercise details

Introduction to JOP
A Video of a talk given at an ambedded Java workshop introduces JOP.

Introduction to Real-Time Programming
Real time programs are usualy written with several periodic threads. The Real-time Specification for Java (RTSJ) extends Java and the JVM to enable programming of real-time systems in Java.

The RTSJ is a quite complex specification. Therefore, on JOP a simpler real-time API for Java is available.

Real time programs are usually written with several periodic threads.

Introduction to Fixed Point Math
Definition: The ability to represent real numbers with a number representation intended for whole integer numbers.

Examples:
 * Use the Java  as a decimal number
 * Use one byte to hold the whole part of a number and a second byte to hold the fractional part of the number

Reading: First read about binary numbers and bit shifting to understand the low level details of fixed point operations. Then read the definition of Fixed Point Arithmetic and a book section on fixed point arithmetic in embedded systems.

Exercise:
 * By hand try to create the number 1.5 using a 4:4 byte (4:4 means that 4 bits are used for the whole part and 4 bits for the fraction)
 * Add it with it self
 * Subtract it
 * Multiply it and right shift to make it 4:4 again
 * Repeat the exercises with 32-bit Java  using the FP library below

Setup:
 * Download some fixed point (FP) Java library such as FPLib
 * Install it on your PC

Introduction to Embedded Real-Time Machine Learning
Definition: Machine learning is the ability learn and reason based on empirical data.

Examples:
 * Decide the category of an image based on previous seen images
 * Predict a future failure of an embedded system
 * Intelligent security system

Exercise: This is one comprehensive exercise to enable you to understand the basics of some selected algorithms that can help make your embedded system "smart".

The required parts are:
 * 1 JOP board
 * JOP code (BaseIO example)
 * DSVM code
 * 2 temperature sensors: X1 and X2 (RS components 191-2235)
 * 2 switches: S1 ans S2 (RS components 472-8229)
 * 2 LEDs: C1 and C2 (RS components 228-5607)

Setup:
 * Point the serial port toward yourself
 * JOP inputs are: G,A1,A2,5V,G,I1,I2,I3,I4,G,I5,I6,I7,I8,G,I9,I10,+VB
 * JOP outputs are (on the serial side): O1,O2,O3,O4, (VBAT,G,P1,P2)
 * Connect X1 and X2 to the analog inputs A1 and A2
 * Connect S1 and S2 to the digital inputs I1 and I2
 * Connect C1 and C2 to the output ports O1 and O2

General configuration: X1 and X2 (the temperature sensors) are used together with a lighter to provide 2 dimensional data points. The switch S1 is used to tell the system which class the current reading of X1 and X2 belongs to. If it is not pressed then it belongs to class 1 and if it is pressed then it belongs to class 2. Switch 2 is used to signal to the progam that the combination of X1, X2, and S1 is to be saved as training data. If the system is in testing state then S2 is used to ask for a classification of the current value of X1, X2. We will use the LEDs C1 and C2 to signal the result of a classification.

Classification exercise: The task is to train the system with a number of observations and then test if the system can classify new observations correctly.
 * Use X1, X2, S1 and S2 to create 10 new observations which are saved in appropriate data structures
 * Test the system using kNN to classify new observations. Use X1,X2,S2,C1, and C2 to do this
 * Try to vary the parameter k that determines the number of neighbors to look at

Clustering exercise: The task is to determine which cluster new observations belong to.
 * Use X1, X2, and S2 to create 10 new observations which are saved in appropriate data structures
 * Train the system using k-means to create perhaps 3 clusters
 * Test the system using X1, X2, C1 and C2. Perhaps use C1 and C2 as binary numbers or use System.out.println
 * Try to vary the parameter k that determines the number of clusters

Regression exercise: The task is work with dependent variables. We imagine that X2 depends on X1.
 * Use X1, X2, and S2 to sample 10 new observations which are saved in appropriate data structures
 * Estimate the regression function using least squares estimation
 * Test the system using X1, X2, and S2. Use System.out to print the predicted X2 based on the X1 input

Advanced classification exercise:
 * Repeat the classification exercise but use a support vector machine to perform the non-linear classification
 * Try both methods and see if you can create problems where one method is superior to the other

Extra exercise: You can use WEKA to run a classificatation, clustering, and regression on these example files.

HOW TO
A collection of tips and tricks for the JOP/baseio platform.

Sensor Interface
With the baseio board there are several ways to connect the signals from the physical worls to the embedded system:

 * Digital input: connect a switch between the input and GND
 * Digital output: connect the load between the output and V+
 * Analog input: a 20mA current input
 * FPGA pins

With a little help from an Opamp a wide variation of signals can be connect to the described inputs. A work horse type is an LM324. Tip: See Single supply op-amp circuit collection how to make your opamp circuit work with a single supply.

Voltage Input
The analog inputs are current inputs with a range between 0mA and 33mA. This current input is actually a 100R resistor connected to an 0-3.3V ADC. So a voltage source that can drive up to 33mA can be directly connected to this current input.

To extend the range simple use a series resistor at the input. E.g. to extend it to 0-10V use a 220R resistor.

If the voltage source has a to high source resistance use a voltage follower.

There is a nice description and diagram available that explains how to connect a sensor using a voltage follower, and how to construct a "simulator" with a variable resistor here.

Audio IO
See Creating a microphone for JOP for an ongoing project.

220V relay howto
There is a howto available on how to construct a 220V relay for the JOP here.

Semester Project and Academic Article
We emphasize that you make a project using the knowledge acquired throughout the semester. This project should be a functional prototype demonstrating some concept using the JOP processor. This project is described by you by writing an academically formatted article on prototype product.

Groups
You should form groups in the beginning of the semester. The optimal size is probably 2-4 students per group. When the group formation is done then you should create a Wiki page describing your project and code.

Projects
You can use the VSIS project plan as a starting point. It is a LaTeX file, which you can fill to suit the project needs.

Papers
The academic paper writing process can benefit from using the VSIS paper template. There is a nice template available here.

For references in BibTeX see http://liinwww.ira.uka.de/bibliography/, for articles:
 * http://citeseer.ist.psu.edu/
 * http://scholar.google.com/
 * ACM digital library
 * IEEE Xplore

Inserting Figures in Latex
An easy way of inserting a figure in latex is this:
 * Print the figure to a .pdf file.
 * Crop the PDF file by using Adobe Acrobat, so it only takes up the necessary space (Tools/Advanced editing/Crop tool).
 * Save the PDF file in a subfolder of your latex directory called figures.
 * To insert the figure in latex, insert the following:

\begin{figure} \includegraphics{figures/name_of_pdf-file} \caption{Insert text describing the figure.} \label{fig:examplefigure1} \end{figure}

"As shown in Figure \ref{fig:examplefigure1}."
 * You can reference the figure by using the syntax

Software
The VSIS class is about the process of creating a piece of working software. That includes the software development process using a source version control tool. There are a number of good version control tools available and we have chosen to offer the two dominating systems: CVS and Subversion for this class - it's up to the students to choose between the two systems. We are using a project at Sourceforge to supply a good CVS/Subversion practice server for the Wikiversity VSIS class. The process of creating a new project is roughly as follows: Schoeberl]]
 * Create a user account at Sourceforge with a recognizable name
 * E-mail your user account name to Rasmus Pedersen or [[b:User:Schoeberl|Martin
 * One of us will add you to the wsis project at SF
 * Then deside whether your project source should be controlled using CVS og Subversion.
 * GOING FOR CVS, two ways are obvious for creating your project (called a module):
 * 1) CVS MODULE, USING ECLIPSE:
 * Create a new project e.g. of type ‘Simple->Project’, the name of the project will be the module name
 * Right-click on the project and select Team->Share Project...
 * Create a new repository location with:
 * Host: wsis.cvs.sourceforge.net
 * Repository path: /cvsroot/wsis
 * User: [your sourceforge username]
 * Password: ...
 * Connection type: extssh
 * Proceed through the rest of the steps
 * 2) CVS MODULE, USING TORTOISE-CVS: 'Tortoise-cvs is a component of WinCvs Get WinCvs here.
 * Right click in the windows explorer and choose CVS->Make New Module...
 * In the "Make new module" dialog box, input the following information:
 * CVSROOT: :ext:'username'@cvs.sourgeforge.net/cvsroot/wsis
 * Server: wsis.cvs.sourceforge.net
 *  Repository folder: /cvsroot/wsis
 *  Username:  'username'
 *  Module:  'modulename'
 * Leave Protocol parameters and port blank.
 * You can also use WinCvs to access your module.
 * EXTERNAL CVS INFORMATION:
 * Information about WinCvs
 * WinCvs main page
 * WinCvs setup information
 * Information about Sourceforge CVS
 * CVS documentation - 'Another HowTo'
 * Information for Shell users
 * Using CVS from Shell FAQ
 * Understanding definition and concepts of the sourceforge CVS
 * General CVS terminology
 * GOING FOR SUBVERSION, these are ways to get started:
 * 1) SUBVERSION MODULE, USING TORTOISE-SVN
 * Create a folder containing at least one file.
 * Right click the folder and choose TortoiseSVN->import (no - not export?!)
 * URL of repository is https://svn.sourceforge.net/svnroot/wsis/a-name-for-your-module leave the rest and click 'ok'
 * Accept the unknown certificate?!
 * Type your sourceforge username/password when prompted
 * Check that the file(s) in you folder was added and click 'ok'.
 * At this point, you have created a project/module/folder called a-name-for-your-module. However, you have not checked out a working copy of your module - the folder you created is NOT a working copy, actually it’s useless and should be deleted. To get a working copy, right click on a new, empty folder and choose SVN Checkout... the URL for your module is - not surprisingly - the one you imported you file(s) into: https://svn.sourceforge.net/svnroot/wsis/the-name-of-your-module
 * 2) SUBVERSION FROM ECLIPSE
 * ...is possible, but it requires an Eclipse plugin, like Subclipse.
 * EXTERNAL SUBVERSION INFORMATION:
 * Guide for setting up TortoiseSVN for Sourceforge projects
 * The E-book: Version Control with Subversion

Please make your code GPL and feel free to use other groups' code

Workshop
The VSIS class should conduct a workshop at the end of the semester. See VSIS Workshop HOWTO.

Milestones
We will try to set up some milestones that you should try to aim for. It is presented in terms of percentage of the total semester length.
 * 10%: JOP installed, Latex working
 * 25%: Project template PDF filled out and confirmed OK by the teachers
 * 90%: First complete draft of academic paper and first running prototype presented on Workshop
 * 100%: Exam with prototype demonstration and oral defense of academic article

Quiz
At the end of this course you should be able to answer the following questions:

 * What is an embedded system? How was your experience during the project with an embedded system?

 * What are the limitations in embedded system programming? What was your experience with programming for an embedded system compared to programming for a PC or server?

 * What is a Java virtual machine (JVM)

 * Explain threads in general and their usage (programming model) in embedded (real-time) systems.

 * What is the heap?

 * Give some examples of the interface between the real world and an embedded computer. What have you used in your project?

 * Communication is, besides control, the second most important aspect for embedded systems. Describe different ways of communication you could realize with the baseio board (the one that you have used in your project work).

 * Explain the method of tuning the (machine learning) algorithms on the PC (using Matlab, WEKA, YALE, LIBSVM or another machine learning package) and subsequently embedding it.

 * What is the advantages and disadvantages of embedding the learning part of the algorithm in the embedded system?

 * Please explain the role of inner and outer cross-validation in relation to your project? What approach did you take?

 * What are the advantages of using fixed-point math on the embedded system? What are the disadvantages? What is the role of scaling?

 * Please name some classification algorithms, some regression algorithms, and some clustering algorithms? For each algorithm, please explain the primary parameters that influence embedded system constraints such as battery life, low frequency CPU, and limited memory.

Resources

 * [[Image:Vsis_exercises.pdf | Exercises in PDF]]

For a quick start, till we have incorporated the information into this course, we provide links to external resources.

 * The Java Virtual Machine in Hardware

 * The very small information systems (VSIS) plugin for JOP
 * Teaching Material on JOP
 * Very Small Information Systems
 * RS Components
 * Pinouts and adresses on the BaseIO board

All hands-on assignments will use an open-source Java processor.

For a deeper technical course take the Computer Architecture Lab

Embedded Systems Links

 * RoboCup
 * Lego Mindstorms

Students
Add yourself to this list for this semester. It is strongly suggested for our testbed, the students from CBS. However, feel free to join this course from all over the world.

Summer semester 2006

Summer semester 2007

Research
Teaching and research make up a University. Therefore we try to use Wikiversity also for research within the Research page.

Research Assistant Projects
On the Research Assistant page you can find follow-up projects of this course.

title: Very Small Information Systems


text:
Very Small Information Systems/RA

Here you find a list of projects as follow-up to the VSIS class. Some of these projects are funded.

Clinit Order (Tools1)
Analyze the application and produce a correct order of class initialization methods. Report an error when this order cannot be determined.

Classfile optimization (Tools1)
For embedded systems the memory footprint is of primary importance. However, the standard library contains many methods or fields that are probably never used by the application. JOPizer already analyzes the application and removes unused classes. The project here is to extend this optimization to remove unused methods and fields.

Java TCP/IP (CLDC2)
A TCP/IP stack written completely in Java based on ejip. API for the TCP/IP stack as in javax.microedition.io, part of CLDC. The TCP/IP stack has to be implemented for real-time applications (time predictable code and memory usage).

Java bytecode optimizer
The standard Java compiler (javac) performs no optimization at all. Optimization is postboned to the JIT compiler. For a Java processor (or an interpreting JVM) this is not an optimal solution. The idea is to implement standard compiler optimizations and processor specific optimizations at the bytecode level. See: JVM Specification, Byte Code Engineering Library and ASM

JOP Debugger (Tools2)
A debugger inteface, the JavaTM Debug Wire Protocol or a different solution with Eclipse, for JOP.

Real-time Library (CLDC1)
Implementation of the standard library (JDK CLDC subset) for real-time systems on JOP based on GNU Classpath (Java).

JVM Test Framework (CLDC3)
There is no free test suite available to verify the correctness of the JVM. Implementation of test cases to verify that an implementation of a JVM (Java Virtal Machine) confirms to the JVM specification. Test of JOP and other JVMs.

Library Test Cases (CLDC3)
Adaption of available JDK test cases for the embedded domain (JDK subset) and implementation of missing test cases. Test of JOP and other JVM implementations.

Documentation of Sample Applications (DOC1)
HOW TO documents with sample applications for an easy start with JOP. Shall be a beginning of a user manual.

WCET Analysis of Java Applications
Worst-case execution time (WCET) estimates are essential for real-time systems. The theory for static WCET analysis is mature. However, the tools are still missing. The tool shall provide WCET estimates for Java real-time applications running on a Java processor (JOP) that is designed to be an easy target (thesis) for WCET analysis.

SoftFloat
Porting a software implementation of floating-point operations (SoftFloat) from C to Java. Extensive tests of the implementation. Part of the implementation is done, you are not starting from scratch.

title: Very Small Information Systems/RA


text:
Very Small Information Systems/Research

This page is a start for an open discussion about a real-time API for Java. A summary of the result should be published at a relevant workshop (e.g. at JTRES2006).

Comments
Rup.inf(Rasmus): One thing to mention/discuss is the potential to use the embedded controllers for soft-real time tasks along the hard-real time tasks. Systems like JOP or JStamp represent fairly powerful processors and in the simplest case they run one control thread with WCET<<T (worst-case-execution-time much less than the period). In traditional real-time systems the designer would select the cheapest processor possible, but even so (and particularly for powerful 32 bit Java processors) there will be a large unused capacity. But the processor might be useful for other things in its vicinity such as measuring a number of temperature inputs and communicating these values across a UDP network or other non-mission-critical issues. Such soft-real-time tasks can occasionally return false from the waitForNextPeriod as they take longer than the allotted slot, but it would not matter. The Ravenscar profile on JStamp does not return true/false if the period is exceeded so that could not be used in this regard. In smart sensors, which might use some learning algorithm, it can be an advantage to get access to excess CPU power to continuously enhance the underlying model. The model might be use in the control loop. This could be achieved by assigning the lowest priority to this utility-thread (soft-real-time) such that the rest of the threads can preempt it and the hard-real time part of the system remains schedulable. Perhaps it could be an idea to discuss these things along the other issues. Perhaps the constructor of a thread can state if the thread is hard-real time or soft-real time. In the latter case the system would not see itself as failed if deadlines were broken. The real time garbage collection also needs to accommodate missed deadlines as a legal construct.

Available APIs

 * RTSJ
 * Ravenscar Java
 * JOP real-time profile

title: Very Small Information Systems/Research


text:
Very Small Information Systems/Spring 2006

Information about the course in summer semester 2006.

Students, please add your group/project here under a main heading. If the content gets too large you can move it to a sub-page. See the example section below.

Project Page
What goes to your project page?

 * Short projects description
 * Draft version and final paper
 * Source

Group A - Intelligent Humidity and heating control
Jonas Kortsen, Niels Walhgreen, Per Chr. Møller and Christian Almskou

Wooden houses are known to have problems with low temperatures and extremes of relative humidity. It is known that wooden houses, and in particular summerhouses, that are not occupied all year round, need to be monitored to make sure that humidity and temperature does not exceed certain levels. Therefore our systems primary goal is to help avoid woodwork damages caused by humidity. This is solved through monitoring and adjustment of the indoors climate. This is done through the use of intelligent humidity and temperature control, and remote monitoring by use of a built in webserver. In addition, the system is capable of logging data about its surrounding conditions, enabling improvement of the enclosed algorithms. To support the control of humidity, we have developed a range of hardware devices providing the necessary inputs and enabling the actual environment control.

Continue to project page

Group B - Intelligent Home Control: Activity-based Intelligent Heat Regulation
Simon Andreassen, Thomas Lerche, Claus Egholm Nielsen and Morten Milbak.

Abstract: This project concerns the use of the JOP controller board in the effort of reducing the energy consumption used on heating in a regular residence. By means of a set of motion sensors, data is collected about activity in the residence. The intention is to predict periods during the day with inactivity in specific parts of the residence with the aim to reduce the power consumed within these periods. In order to accomplish this prediction, machine learning methods have been applied. To gain information of the activity level we have focused on the use of infrared motion sensors connected directly to the JOP controller board. Behavioral patterns are identified which is used to predict future events of activity. This prediction has enabled our system to successfully control the heating in a house without any manual user interaction.

Continue to project page

Group C - Barcode recognition under resource limitations
Morten Okholm, Troels Nielsen and Søren Krabbe.

Research has been conducted on recognising barcodes from images and a few commercial services has been developed. This document outlines a project that will look into the resource requirements for such recognition and try to take it one step further by experimenting with real time filtering of nonbarcode images from a stream of images, still under heavy resource limitations. This will allow barcode scanning on small camera devices to work more similar to traditional barcode scanners, where the scanner registers when a barcode is in view to be scanned with no user interaction. The role of JOP in this project is to act as a representative for small devices, meaning that a wishful outcome of the project is guidelines and recommendations for implementing the concept in 'real life' small devices like cell phones.

Continue to project page

Group D - Voice recognition
Christian B. Olsen, Jacob H. Svalastoga, Michael J. Moltke and Thomas S. Olesen

It has always been an issue in different situations to be able to identify an individual. Today when more and more interactions take place electronically it becomes increasingly relevant to be able to identify an individual in this way. The ultimate way to do this is by using biometrics. In this paper we will concentrate on the specific field in biometrics called speaker recognition, identifying a person from the sound of their voice. We will extract the easily found amplitude values per timeperiod from a normal voicesample soundwave. With the Fast Fourier Transform theorem we move from the time domain to the frequency domain, and by using the Nearest Neighbour data mining algorithm we are finally able to distinquish the voice of one individual from another.

Continue to project page

Group E - JOP Stock Monitor
Nikolaj Ostri and Christian Christiansen

The scope of this paper is to develop software for data mining on real-time stock rates to support buying decisions for stock traders. The application is intended to run on a mobile device like a mobile phone or PDA.

Trading stocks has become something every person with a computer can do. Unfortunately trading stocks can be very risky and especially short-term trading (less than one year)is close to 50/50 betting.

The concrete implementation of the stock monitor will first happen on a normal PC and several experiments will be run to decide which algorithm is most accurate and able to deliver the best return on investment.

Given this is an application which is intended to be run on a very small processor we will after deciding on algorithm implement a prototype on a FPGA board.

Continue to project page

Other Projects
Creating a microphone for JOP

JOP and Bluetooth


text:
Bluetooth enabling JOP

This project describes how to Bluetooth enable JOP.

In the initial phase of the project SDIO Card was considered, but I found the RS-232 adapter to be more valuable, since it provides a quick time-to-market development, while no software is needed implemented on the host (for example JOP).

RS232 Adapter
The RS232 to Bluetooth Adapter is shown at the picture below. It connects to a device, like JOP through, the COM-port (RS232). The adapter is intelligent, and you control it by sending Hayes AT-like commands over the COM-port. The command set reference can be dowloaded at Blu2i also quick guides and firmware updates can be downloaded.

Example
To communicate with the adapter from a desktop Java app. you can use the javax.comm package.

Inquiry
To search for remote Bluetooth devices you send the command (out is an java.io.OutputStream):

out.write("AT+BTIN\r".getBytes);

The RS232 adapter will reply with the example data (BD_ADDR, class type, friendly name):

123456789012,123456,"friendly name"

123456789013,123456,"friendly name2"

OK

Connect
out.write("ATD123456789012,1101\r".getBytes);

Send data
out.write("ATX\"Hello World\"\r".getBytes);

To send non-visual chars you can use \hh where hh is the hex value. For example to send the byte value 1 use \01

Disconnect
out.write("ATH\r".getBytes); out.write("ATH\r".getBytes);

Open a channel
You do not need to open a channel (socket) for a remote device can connect and send data. This is a bit strange, due to security reasons. But you can set the adapter up not to accept incomming connections, or for you to accept incomming connection before establishment is done. Please see the S-register settings.

Receive data
When data is received by the RS232 adapter it sends a string to the host starting with RX

RX"Hello World"

title: Bluetooth enabling JOP


text:
Very Small Information Systems/SS2006/Creating a microphone for JOP

This is a decription on how to make a microphone module for the JOP Board

The objective with this article is to descibe how to make a simple analog to digital converter using the Sigma Delta converter model: Sigma-Delta ADC Tutorial

Following components are needed to make the hardware part of the analog to digital converter:
 * A microphone
 * Two resistors- one 100K and one 1M
 * Two capacitors one 220 nF and one 47 pF
 * One Printed Wiring Board(PWB) to assemble it all on

The circuit diagram

Solder it all together and attach it to your JOP board, then you should end up with a result that looks like this.

Audio in and out with Baseio
Connection of external components for a simple sigma-delta ADC and PWM DAC to the baseio board.


text:
Very Small Information Systems/Spring 2006/Group A/Intelligent Humidity and Heating Control

The background for the system is, that one of the authors of this article have experienced the problem with damage to a summerhouse, first hand. Due to the lack of any monitoring device, some of the wooden construction in the house incurred damage. This damage could possibly have been avoided had a monitoring device alerted the owners to the fact that border values was being exceeded.

Wooden houses are known to have problems with low temperatures and extremes of relative humidity. It is known that wooden houses, and in particular summerhouses, that are not occupied all year round, need to be monitored to make sure that humidity and temperature does not exceed certain levels. Therefore our systems primary goal is to help avoid woodwork damages caused by humidity. This is solved through monitoring and adjustment of the indoors climate. This is done through the use of intelligent humidity and temperature control, and remote monitoring by use of a built in webserver. In addition, the system is capable of logging data about its surrounding conditions, enabling improvement of the enclosed algorithms. To support the control of humidity, we have developed a range of hardware devices providing the necessary inputs and enabling the actual environment control.

Papers
See our detailed projectplan using this link. The projectplan is now outdated, as the project has been handed in at the 31st of May 2006.

The handed in WoodSaver article is available here.

During the project, we have made three guides, one is for inserting figures in latex, by converting the figures to PDF. The other two are howto documents explaining how to construct a relay and an input simulator with a potentiometer and a voltage follower.

Sourcecode: check out our module 'WoodSaver' from the sourceforge.net project 'wsis' or use the web access.

Hardware guides
The two hardware guides are available here:
 * Howto: Construction of a 220V relay
 * Howto: Construction of a voltage follower/input simulator

Inserting Figures in Latex
An easy way of inserting a figure in latex is this:
 * Print the figure to a .pdf file.
 * Crop the PDF file by using Adobe Acrobat, so it only takes up the necessary space (Tools/Advanced editing/Crop tool).
 * Save the PDF file in a subfolder of your latex directory called figures.
 * To insert the figure in latex, insert the following:

\begin{figure} \includegraphics{figures/name_of_pdf-file} \caption{Insert text describing the figure.} \label{fig:examplefigure1} \end{figure}

"As shown in Figure \ref{fig:examplefigure1}."
 * You can reference the figure by using the syntax


text:
Very Small Information Systems/SS2006/Group B SmrtHeat

Members: Simon Andreassen, Thomas Lerche, Claus Egholm Nielsen and Morten Milbak.

Abstract: This project concerns the use of the JOP controller board in the effort of reducing the energy consumption used on heating in a regular residence. By means of a set of motion sensors, data is collected about activity in the residence. The intention is to predict periods during the day with inactivity in specific parts of the residence with the aim to reduce the power consumed within these periods. In order to accomplish this prediction, machine learning methods have been applied. To gain information of the activity level we have focused on the use of infrared motion sensors connected directly to the JOP controller board. Behavioral patterns are identified which is used to predict future events of activity. This prediction has enabled our system to successfully control the heating in a house without any manual user interaction.

Keywords: Intelligent home, motion sensors, heating control, machine learning, moving average, linear regression, context awareness, Java Optimized Processor

Project Article and Project Plan

Project Plan

Code for the projekt

Articles
A database of the articles we have read for research for the project. Database (Continuously updated)

Construction of relay unit
In case it could help other groups - here you can read how you can get the JOP to control high amp devices.

If you want the JOP-board to switch some high amp devices on and off, you need to connect them to a relay. A relay is what you can call an electric on/off switch. When you give it power it will make contact between to mechanic pads wich can led high amp power. A relay only needs low power (8-12 volt and very low amp) so the JOP can be the on/off switch of the relay power and in this way control high power devices. If you are able to find relays that operate as low as 5 volt you can even use the power from the JOP and in this way save a power supply. In this example we have to use a separate power supply for the relay power.

In this example we make a unit with three relays that is able to control three 8 amp devices. It is important to clarify, that soldering and connecting high amp devices has to be done with caution and you have to be aware, that this example is not safety approved in any way and the construction is at your own risk.

Despite to the security issue a relay unit is not hard to make – all you need is some soldering skills and some basic components:

- 1 soldering board (Individual soilingpads on either one or both sides.   (RS-components no. 206-5548)  - 3 relays (RS-components no. 351-572)  - 220v cord connectors (1 male and 3 female)  - Print mounting connectors (RS-components no. 193-0592 pairs of tree)  - Some meters of 220v cord.  - Some meters of solid mounting cord. (RS-components no. 148-7054  100meters)  - A mounting case.  - One power supply for the relay power (8-12 volt and amp is not an issue)

The relay unit is separated in two parts – one low power section and one high power section. The low power section is controlled by the JOP and is done by letting the plus of the power supply run through the JOP output-ports and back to the relays. The ground of the power supply you can connect directly to the relays. In this way the plus is only getting through the JOP when the particular output port is switch on.

The high power section is controlled by the relays. In same way of the low power section you connect one of the high power supplies to the relays and the other directly to the output ports on the relay unit. In this way the output devices only have power when the relay is switch on.

In order to make the right connections of low and high power to the relay we refer to the two enclosed pictures.

Calculating celcius from amp
There has been some problems calculating the correct degrees in Celsius from the data supplied by the JOP on the thermometer component available in the DIT lab (RS components 191-2235).

So to save the other groups the time we have spent on this endeavor – the below is an explanation and guide on how to have the component feed you with Celsius instead of just mili ampere and how to calculate from celcius back to mili ampere.

In the specs for the component (see below) there is no apparent guide to decipher the data listed – only three rows of numbers where one is clearly the degrees in Celsius but the other two are unclear what they represent. Since RS Component weren’t able to guide us in the right direction we had to use our heads and figure it out by ourselves ;)

This is the specs on the component as printed in the product guide:

As mentioned above there is neither an explanation on the numbers in the product guide nor given a way to calculate any of them. So we had to find the connection ourselves - since we figured that there had to be a connection… ;)

After doing some trial and error, we now know that row two is ohm. This gives us the possibility to calculate from amp to celcius with a little help from two friends called Georg Simon Ohm and his “Ohm’s law” and Bill Gates with his Excel. ;)

We have found three different ways to do the conversion: Singular linear regression, multiple linear regression and logarithmic conversion. The first is by far the fastest to implement (both code wise and execution wise). The later takes both more time to code and to execute - but in return you gain allot more accuracy. Below is a guide on how to implement the logarithmic conversion (in the buttom of this guide, there is a link to the java implementation of the single linear conversion).

What we did was to plot all the numbers into a spread sheet (in this case Excel – (please note that there are two sheets, and that sheet two continues down the page). Mark the two first rows (celcius and Rt/r25) and draw a graph based on all these numbers (curve graph). Then add an exponetial trend line to the graph and select to show the formula and R2 value (right click on the graph - choose add trend line - choose exponetial). This gives you a graphical and mathematical representation of the numbers. Since the trend line does not follow the line drawn by the numbers it is clear that there is no précis mathematical formula for the specified numbers by just using a exponential trend line. Greater precicion is given if you choose to add a six step poly. trend line - but this results in a more complex formula. We continue with using the exponential trend line. The R2 value tells you how well the formula is explaining the connection between the two rows of data. As you can see on the graphs - they are a looooong way apart in the range from -55 to -25 celcius – which means that calculations based on the formula will result in quite imprecise conversions between the two rows when calculation on numbers from -55 to -25 degrees celcius. So in order to get the highest amount of precision you should think about the usage domain of your system – since you will get higher degree of precision if you narrow your range and base your trend line calculation on a smaller and more useful segment/range. In our project we are dealing with indoor temperatures so we have narrowed it to the range from 0 to 40 degrees celcius which gives us a R2 value on 0,9988 – meaning that the formula can explain the connection between the two rows with 99,88% precision! Moving out of this range doesn’t produce extreme miscalculations – for instance we are only off by 0.3 degrees when calculating on 90 degrees celcius. So you are not limiting the usage of the formula just narrowing it in on the main usage to give you more precision. You could choose to use all the numbers as the basis for the formula and have all calculations be equally imprecise – it’s up to you.

So now we have a mathematical way to go from one row to another: Namely the formula for the trend line:

$$y = ce^{bx}$$

In our case from 0 to 40 degrees:

$$y = 2.9126e^{-0.0421x}$$

Above is from x to y. The reverse formula for y to x is:

$$x = \frac{ln\frac{y}{c}}{b}$$

Again in our case from 0 to 40 degrees:

$$x = \frac{ln\frac{y}{2.9126}}{-0.0421}$$

If you are unfamiliar with the term e – then google it. But in short it is a "magical" number like Pi and Phi. It can be represented numerically as 2.7182818284590452353603... instead of a function (which is better for our usage on the JOP with limited resources).

To complete the process you need to convert the results to something useful on the JOP. Since we already know that the JOP can read the changes in amp flowing through the component, we should convert to or from that by means of Ohm’s law.

So, if you want to go from amp to celcius (if you want to print or store the degress in a way everyone can understand them) then you need convert the amp->ohm->celcius:

$$ohm = \frac{volt}{amp}$$

But if you want to go from celcius to amp (if you only want the JOP to act on the readings from the component there is no need to calculate from amp to celcius, just keep everything in amps) then you need to convert from celcius->ohm->amp:

$$amp = \frac{volt}{ohm}$$

That should be it…

As promised above - here is our second implementation with linear regression: and

Happy measuring…


text:
Very Small Information Systems/Spring 2006/Group C Barcode

Group C - Barcode recognition under resource limitations
'''NOTE NOTE final exam/evaluation on June 21st. This page will be updated thereafter, and thereby include the lessons learned from the feedback. NOTE NOTE'''

Morten Okholm, Troels Nielsen and Søren Krabbe.

Currently the project is addressing two problems:

a) Is it realistic to do content-filtering on a stream of images in real time under heavy resource limitations?

b) How resource intensive is recognition of formal and known patterns in single images?

For more info, check out our module 'GroupC' from the sourceforge.net project 'wsis': svn co https://svn.sourceforge.net/svnroot/wsis/GroupC

The unfinished article: Documents\Working\Article\VSIS_article_groupC.[pdf|tex]

Java code is in: Java\Barcode_Recognition

Currently we're experimenting quite a lot with our Java code, so it's not runnable on JOP and it might seem a bit messy - sorry.

If you just want it running, run.bat in the Java folder could very well be your friend:

will process all images found in the folder 'Testimages' and print the results

will try (and succeed!) to recognize a simple hardcoded imageline. Not much fun at the moment!

Enjoy!


text:
Very Small Information Systems/SS2006/Group D Jop Voice Recognition

Group D - Voice recognition
Christian B. Olsen, Jacob H. Svalastoga, Michael J. Moltke and Thomas S. Olesen

Paper Abstract
It has always been an issue in different situations to be able to identify an individual. Today when more and more interactions take place electronically it becomes increasingly relevant to be able to identify an individual in this way. The ultimate way to do this is by using biometrics. In this paper we will concentrate on the specific field in biometrics called speaker recognition, identifying a person from the sound of their voice. We will extract the easily found amplitude values per timeperiod from a normal voicesample soundwave. With the Fast Fourier Transform theorem we move from the time domain to the frequency domain, and by using the Nearest Neighbour data mining algorithm we are finally able to distinquish the voice of one individual from another.

Paper and Source Code

 * Paper and source code is no longer online
 * Vsis-project-group-d.pdf - The paper
 * FFTLib CSharpCode.rar - Source code for sending sound to the JOP
 * JopServerWithFourier.rar - Source code for the JOP server

Previous project idea
Our main scope is to provide a dependable real-time distance calculation using laser equipment. In the end we hope to mount this equipment on a remote-controlled vehicle and make it able to brake at specified ranges from obstacles. The software will be developed in Java so it can run on a JOP. Project was abandoned due to the cost involved of acquiring a laser that could meet the requirements.


text:
Very Small Information Systems/SS2006/Group E Stock Monitor

The Stock Monitor by Nikolaj Ostri and Christian Christiansen
This page is the home of the Stock Monitor, we will during the spring 2006 keep this page updated with information concerning our project.

Project Desription
The scope of this paper is to develop software for data mining on real-time stock rates to support buying decisions for stock traders. The application is intended to run on a mobile device like a mobile phone or PDA.

Trading stocks has become something every person with a computer can do. Unfortunately trading stocks can be very risky and especially short-term trading (less than one year)is close to 50/50 betting.

The concrete implementation of the stock monitor will first happen on a normal PC and several experiments will be run to decide which algorithm is most accurate and able to deliver the best return on investment.

Given this is an application which is intended to be run on a very small processor we will after deciding on algorithm implement a prototype on a FPGA board.

Project Results
Our initial purpose for this project was to prove that it is possible to develop technical stock trading applications to be used on small processors, like the ones used in mobile devices. We hypothesized that even given the very limited resources we would be able to create extra-ordinary returns on investments. In order to do that we created a number of experiments which all used different classifiers, but the same data. We constructed our experiments with regard to the fact that stock prices are a time series, thereby not independent of each other. After the experiments it became clear that IB5 (5-nearest-neighbors) was the best-performing algorithm on our domain data, hence we decided to implement it on a small processor, to act as prototype. IB5 performed quite well on the small processor and were able to make the same predictions as WEKA’s IB5. During our evaluation we proved that IB5 on the small processor would be able to produce extra-ordinary returns, thus we can conclude that we fulfilled our goal with this project and proved that even given limited resources data mining on complex data is possible and development of future applications within this domain is possible. Our evaluations raised some questions concerning how reliable and generic our solution is and if it really is the success rate which is the best indicator for how suited an algorithm is for technical trading. Further studies should be conducted within this domain, but our initial findings claim that the number of wrong classifications leading to buying is a better indicator. Other studies which could be done in the future, was to try more advanced algorithms on the small processor and maybe derive even better results. In addition we could implement our solution in a portfolio of applications all aimed at predicting stock movements and thereby improve our success rate and in the end the return on investment.

Articles
Next-Day Stock Trend Prediction Using the Self-organizing Associative Memory (SAM) System

Landmarks: A New Model for Similarity-Based Pattern Querying in Time Series Databases

Gated Experts for Classification of Financial Time Series

Time series properties of an artifcial stock market

Mining The Stock Market: Which Measure Is Best ?

Stock-Market "Patterns" and Financial Analysis: Methodological Suggestions

Self-Organized Percolation Model for Stock Market Fluctuations

Volatility Prediction with Mixture Density Networks

Predictable Patterns in Stock Returns

Investment Decision Making Using FGP: A Case Study

Stock Portfolio Evaluation: An Application of Genetic-Programming-Based Technical Analysis

Resources
Online resources: Latest versions of source code for final product, applications for documentation and paper


text:
Very Small Information Systems/SS2007

MobileSurvey (HTTP vs Wap vs MIDLet)

Project 1

By Christian Christensen

The project is to be completed at the end of May 2007. Software versions will be placed at http://sourceforge.net/

Links: http://sourceforge.net/projects/mobilesurvey/ An assignment for http://sourceforge.net/projects/wsis/

-- Danish part that will be translated later... --

Den videnskabelige artikel:

En analyse af HTTP, WAP og MIDLet og disses påvirkninger på strømforbrug på mobile enheder, samt krypteringens effekt på strømforbrug.

-- Indholdsfortegnelse

• Introduktion

• Problemformulering

• Generelt om HTTP, WAP og MIDLets

• Struktur gennemgang og pseudokode forklaring med DIS aspekt.

• HTTP løsningens aspekter/fordele/ulemper

• WAP løsningens aspekter/fordele/ulemper

• MIDLet løsningens aspekter/fordele/ulemper

• Kryptering af data. Pakkekryptering vs. Modulkryptering vs. Egen kryptering.

• Konklusion og besvarelse af problemformulering.

• Afslutning og evaluering af projekt.

--

• Introduktion

Der ønskes at blive udviklet en applikation / et produkt som et alternativ til OnlineInterview.dk´s nuværende web browser baserede produkt. OnlineInterview.dk tilbyder værktøjet til udarbejdning af spørgeskemaer og indsamling af besvarelser via standard browsere på PCere. OnlineInterview.dk ønsker at give respondenter mulighed for at besvare spørgeskemaer uafhængigt af geografisk placering og kun ved brug af en mobiltelefon. Opgaven vil omhandle en produktanalyse med tilhørende designfase, samt en beskrivelse af produktets tekniske aspekter. Der vil under de tekniske aspekter blive foretaget en sammenligning mellem HTTP(Ren Internet), WAP(Ren Internet) og en MIDLet(Applikation med data udveksling til Internet). De tre typer af produkter vil blive fremstillet i et begrænset omfang, således at det er muligt at sammenligne teoriområder. Oprettelse af forbindelse fra den mobile enhed til Internet vil ikke blive belyst. Ud fra dokumentationen af produktet, vil en akademisk artikel blive udarbejdet hvori der gennemgås relevante teoretiske aspekter, herunder strømforbrug, komprimering og kryptering.

Om produktet MobileSurvey:

MobileSurvey skal give en respondent muligheden for at modtage og besvare et spørgeskema via mobiltelefonen. Spørgeskemaet konstrueres på en hjemmeside på Internettet og kan også besvares via f.eks. et link. MobileSurvey skal være et tillægsprodukt til den eksisterende løsning som kræver en pc med internetadgang.

Tekniske krav:

Applikations navn: MobileSurvey Tekniske krav: MIDLet: Mobiltelefon med Java understøttelse (formodentligt MIDL 1.0) og adgang til Internet. HTTP/WAP: Adgang til Internet. Produkt modtager: www.onlineinterview.dk / CBS (opgave samling) / Wikiversity.com

Produkt relevans:

Produktet vil betyde at www.onlineinterview.dk vil kunne tilbyde at besvarelser bliver indsamlet uafhængigt af respondentens geografiske placering. Derudover vil det altid være muligt at modtage besvarelser umiddelbart efter at man har forespurgt respondenten, da denne kan besvare spørgeskemaerne med det samme.

Problemformulering:

Der ønskes en analyse af følgende mulige Internet protokoller ved brug, under besvarelse af mobile spørgeskemaundersøgelser.

- HTTP

- WAP

- MIDLets

Herunder ønskes en analyse af ligheder og forskelle. Ved brug af krypteringsalgoritmer ønskes det at påvise påvirkningen, på strømforbruget under brug af en mobile enhed.

Generelt om HTTP, WAP og MIDLets

HTTP:

HTML, er forkortelsen for HyperText Markup Language, hvilken er en måde at beskrive opbygningen af hjemmesider på. HTTP er baseret på en klient server løsning. Dvs. alle dele skal overføres fra server til klient før brugeren kan se f.eks. layout og data. HTML løsningen er ikke baseret på cookies men derimod sessions. Dette sikrer brugervenlighed i form af lagring af variabel lokalt. HTML løsningen genereres ud fra serverens håndtering af PHP der trækker data fra en MySQL database. Klient siden levere både GET og POST kald, da der ønskes fleksibilitet, men også sikkerhed.

WAP:

Wireless Application Protocol eller WAP som det forkortes, er en åben international standard til brug ved mobilkommunikation. WAP er primært fokuseret på mobiltelefoner og i et begrænset omfang PDAer. WAP tilbyder de mest basale funktioner som en web-browser kan tilbyde indenfor begrænsningerne som den mobile enhed giver. WAP er skrevet i WML (Wireless Markup Language) og tolkes via en WAP browser. Wap løsningen er ikke baseret på cookies eller sessions, men derimod simpel variabel kast mellem instanser. Da WAP løsningen primært er baseret på variable lagring indenfor samme card, sikres en stabil håndtering af variable.

MILDet:

En MIDlet (Mobile Information Device) er en Java baseret applikation til embedded enheder. MIDlet benytter Java ME framework som er en speciel Micro Edition af Java. Normalt benyttes denne primært til spil og mindre programmer, da de mobile enheder stiller særlige krav til den software som skal afvikle den. MIDlets er baseret på "compile once, run anywhere"- filosofien, hvilket er meget praktisk indenfor mobilindustrien.

Strukturgennemgang og pseudokode forklaring med DIS aspekt.

MobileSurvey er baseret på en klient-server løsning, da spørgeskemaet skal kunne tilgås fra forskellige platforme og være geografisk uafhængige.

Illustration: https://archive.is/20140204220942/www-128.ibm.com/developerworks/library/wi-cloud/fig2.gif (Ny illustration skal udarbejdes i Visio)

HTTP, WAP, MIDLet – aspekter, fordele og ulemper

HTTP er den mest udbredte protokol til brug i Internet browsere. Derfor er langt de fleste browsere baseret på at kunne modtage og tolke http. WAP giver muligheden for at browse på både ældre og nyere mobile enheder. Dog er denne form, ved at blive udfaset da nye mobile enheder giver mulighed for http, der levere tekst, billeder, video og andre grafiske elementer som WAP ikke kan tilbyde. Både http og wap er baseret på at alle data skal sendes fra serveren til klienten, ved hver forespørgsel. Dette betyder at der er et stort behov for data overførsel. Der er blevet foretaget tre målinger på størrelsen af de tre typer, herunder ses resultaterne:

HTTP: LINK: http://mobilesurvey.onlineinterview.dk/ Antal kode linier: 200 linier kode, kun første side der indlæses. Størrelse: 8 kb, uden billeder (Længere linier end de andre, da løsningen er komplet) Test software: "almindelig browser”

WAP: LINK: http://wap.onlineinterview.dk/index.wml Antal kode linier: 150 linier kode Størrelse: 2 kb, uden billeder. Test software: "WAP Proof" - freeware.

MIDLet: LINK: http://sourceforge.net/projects/mobilesurvey/ Antal kode linier: 250 linier kode Størrelse: Under 100 bytes, da programmet (10 kb) allerede er tolket/kompileret og installeret. Test software: MIDLet emulator. (Indbygget i udviklingsværktøj)

 * RESULTATER INDSÆTTES HER MED GRAF*

Resultaterne bekræfter den typiske tendens at http-løsninger ofte er mere data krævende pga. større designmæssige krav/muligheder. WAP-løsningen giver samme funktionalitet, men med mindre krav til mængde af data. Den tredje og mest interessante er MIDLet-løsningen der har samme størrelse som http, dog med den store forskel at den allerede er på den mobile enhed, der kræves derfor kun overførsel af resultat-data, hvilket er en promille af http løsningen. HTML tilbyder GET kald, der kan give fleksibilitet i form af foruddefineret svar via link, og POST kald der levere højere modstandsdygtighed overfor misbrug af variabelkald. På trods af dette, vælges MILDet ud fra den påstand, at muligheden for at en bruger vælger at foretage reverse-engineering og ændre i programmet, ikke er relevant. Herudover er kompatibiliteten meget større da ældre mobile telefoner kan bruge MIDlet og ikke http. En stor overraskelse er dog at MIDLet kræver et større forbrug af strøm under oprettelse af forbindelse og afvikling af programmet end WAP versionen. Det formodes at dette skyldes at Java kræver mere processor kraft.

Kryptering af data - Pakning vs. Modulkryptering vs. Egen kryptering. HTML versionen af MobileSurvey kan udvides men HTTPS, da dette kunne være interessant pga. sikkerhedsmæssige aspekter. Dog vil det være de færreste besvarelser der vil kræve en sikker protokol. Pakning af data, vil ikke gøre det muligt at aflæse data-strømmen direkte da den derved ikke sendes i klart sprog. Dette er dog den ”laveste” form for sikkerhed, da standard pakning også leveres med en standard udpakning som er frit tilgængelig. Kryptering via private eller offentlige nøgler kan også være interessante såfremt der en tale om følsomme data. Ligeledes kan begrænsninger indenfor IP-ranges og give et højere sikkerheds niveau. Desværre kræver alle løsninger en tredje part involveret og da disse krypterings alternativer ikke tilbydes til MIDLets vælges en lokal kryptering. HTTPS, vil kunne supplere en lokal kryptering såfremt man ønsker at kryptere mere end blot data fra besvarelsen.

Der blev indarbejdet denne TEA (Tiny Encryption Algorithm):

---

// use 16 chars of 'password' to encrypt 'plaintext' with xTEA function encrypt(plaintext, password) { var v = new Array(2), k = new Array(4), s = "", i;

plaintext = escape(plaintext); // use escape so only have single-byte chars to encode

// build key directly from 1st 16 chars of password k[0] = Str4ToLong(password.slice(0,4)); k[1] = Str4ToLong(password.slice(4,8)); k[2] = Str4ToLong(password.slice(8,12)); k[3] = Str4ToLong(password.slice(12,16));

for (i=0; i<plaintext.length; i+=8) { // encode plaintext into s in 64-bit (8 char) blocks v[0] = Str4ToLong(plaintext.slice(i,i+4)); // ... note this is 'electronic codebook' mode v[1] = Str4ToLong(plaintext.slice(i+4,i+8)); code(v, k); s += LongToStr4(v[0]) + LongToStr4(v[1]); }

return escCtrlCh(s); }

// use 16 chars of 'password' to decrypt 'ciphertext' with xTEA function decrypt(ciphertext, password) { var v = new Array(2), k = new Array(4), s = "", i;

k[0] = Str4ToLong(password.slice(0,4)); k[1] = Str4ToLong(password.slice(4,8)); k[2] = Str4ToLong(password.slice(8,12)); k[3] = Str4ToLong(password.slice(12,16));

ciphertext = unescCtrlCh(ciphertext); for (i=0; i<ciphertext.length; i+=8) { // decode ciphertext into s in 64-bit (8 char) blocks v[0] = Str4ToLong(ciphertext.slice(i,i+4)); v[1] = Str4ToLong(ciphertext.slice(i+4,i+8)); decode(v, k); s += LongToStr4(v[0]) + LongToStr4(v[1]); }

// strip trailing null chars resulting from filling 4-char blocks: if (s.search(/\0/) != -1) s = s.slice(0, s.search(/\0/));

return unescape(s); }

---

 * Krypteringen medførte dette….. * TEKST *

Konklusion og besvarelse af problemformulering. Vi har set at http og MIDLet har ca. samme strømforbrug men tilbyder en række designmæssige forbedringer i forhold til WAP. MIDLet og WAP har den store fordel at de også kan afvikles på ældre mobile enheder. Dog var det signifikant meget forskel på WAP og http/MIDLet´s strømforbrug. WAP benyttede generelt 25-50 % mindre strøm, hvilket kan være afgørende såfremt det skal besvares mange spørgeskemaer på samme mobile enhed. Da MobileSurvey i starten skal benyttes af flere personer der har hver deres mobile enhed og ikke skal besvare flere spørgeskemaer efter hinanden, vælges MIDLet. Det kan forventes at WAP løsningen vil bliver videreudviklet med henblik på respondenter der skal besvare flere spørgeskemaer efter hinanden som f.eks. en person fra Gallup der indsamler data på Strøget.

-- Den tekniske artikel med review af arbejdsprocessen. --

En analyse af HTTP, WAP og MIDLet og disses påvirkninger på strømforbrug på mobile enheder, samt krypteringens effekt på strømforbrug.

Indholdsfortegnelse

• Introduktion

• Problemformulering

• HTTP, WAP og MIDLet løsningens alternativer.

• Opgavens gennemførsel og review heraf

• Konklusion og besvarelse af problemformulering.

• Afslutning og evaluering af projekts gennemførsel

• Introduktion

I denne opgave vil de praktiske tekniske aspekter blive gennemgået. Opgaven vil belyse det praktiske arbejde som ligger til grund for opgaven og applikationen. MobileSurvey blev udarbejdet i foråret af 2007 og har belyst en række interessante problemstillinger som f.eks. applikationers forskel på strømforbrug i en mobilenhed, samt forskelle og ligheder mellem http, WAP og MIDLet. Problemer i forbindelse med opsætning og udvikling vil ligeledes blive beskrevet.

• Problemformulering

-	Hvilke alternative sprog kunne MobileSurvey have været udviklet i?

-	Hvilke software-produkter blev brugt i opgaven?

-	Hvordan blev softwaren brugt?

-	Hvordan blev målingerne indsamlet?

Det ønskes at alternativer bliver analyseret for relevans, for at sikre et optimalt valg af udviklingssprog. Dette kan have stor betydning da en mere effektiv udnyttelse af frameworks kan give store besparelser indenfor f.eks. strømforbrug og afviklingstider. Opgaven skal vise hvorledes applikationen er fremkommet og hvorledes målinger er blevet målt og sammenlignet.

• HTTP, WAP og MIDLet løsningens alternativer.

ALTERNATIVER TIL SPROG ?

• Opgavens gennemførsel og review heraf

Da det ønskes at MobileSurvey skaber værdi for andre end opgaveafsender og opgavemodtager, er der valgt løsninger som er Open Source baseret. Dette gælder f.eks. værktøjet NetBeans, Apache, MySql og hjemmesiderne wikibooks.org og sourceforge.net. Disse værktøjer kan benyttes frit så længe det endelige produkt overholder GNU, der overordnet set henviser til at kildekoden skal deles og må frit benyttes af alle.

I opgaven blev der benyttet JavaME og NetBeans IDE med NetBeans Mobility Pack. Dette Software Development Kit (SDK) indeholder alle de elementer der er nødvendige for at skabe et komplet mobilprodukt. NetBeans kan kompilere og pakke koden således at den er klar til at blive testet på enhver mobil telefon. Den klarekode kompileres til en java fil der derefter pakkes i en JAR fil. Ud over JAR filen genereres også en JAD fil der fortæller navnet på applikationen, versionen, forfatteren, JAR filens størrelse og JAR filens placering.

Sådan blev applikationen afprøvet:

Da NetBeans komplette SDK indeholder en emulator der kan emulere både MIDL 1.0 og 2.0, samt vise eksempler på hvor store skærme er på angivne mobile enheder, findes denne tilstrækkelig. Applikationen er indstillet til lavest mulige versions krav da dette sikrer den højeste kompatibilitet. Emulatoren virker som en hver anden mobil telefon, der navigerer med piletaster og indtaster data med tastaturet. Den benyttede emulator simulerede en ældre Nokia uden farveskærm. For at kontrollere emulatorens resultater, oplades applikationen direkte til en mobile enhed for derefter at afprøve applikationen. Dette kræver at den mobile enhed kan overføre filer direkte fra PC til enhed. Oftest sker dette via et USB-kabel eller en infrarød port. Når filerne er overført skal de typisk installeres, således at enheden ved hvor den skal henvise til. Såfremt man ikke har mulighed for at overføre filerne traditionelt, er der mulighed for at oploade filerne via FTP og skabe en HTML side med link til JAD filen. Dette vil sikre at enheden kan hente og installere JAR filen korrekt. Dog kræver det at den mobile enhed har adgang til Internettet, men da applikationen kræver dette bør det ikke være en hindring. Her er filerne lagt op http://mobilesurvey.onlineinterview.dk/index.htm (bemærk ikke html)

Sådan blev strømmen målt ved brug af http, WAP og MIDLet.

Multimeter

* Opstilling – diagram * INDSÆT HER *

Parallelt pga. strømforbrug (Amp) Serielt pga. spænding (Volt)

• Konklusion og besvarelse af problemformulering.

Ud fra analyser og data fra målinger, er det bevist at MIDLet er det rigtige valg til MobileSurvey. Det skal dog bemærkes at nyere mobile enheder, bliver mere og mere energi efficiente og bedre til at udnytte netværksforbindelser til Internettet. Dette medfører at HTML løsningen kan bliver mere anvendelig i takt med brugernes krav til fleksibilitet, brugervenlighed og design. MIDLet tilbyder en betydelig større kompatibilitet til ældre mobile enheder, og med mange af de samme fordele som http levere i dag.

• Afslutning og evaluering af projekts gennemførsel

Problemer med Netbeans Da NetBeans giver mulighed for at arbejde flere på samme udviklingsprojekt er den sat op på således at NetBeans danner en server. Dette skaber dog problemer når man flytter fra et netværk til et andet, da IP adressen ændres. NetBeans server IP skal opdateres manuelt, hvilket har givet anledning til flere problemer.

Udvikling på flere platforme Projektet har medvirket udvikling af både WAP og MIDLet programmering. Dette har givet et større indblik i de to sprog og har vist at WAP er mindre problematisk at udvikle i.

Projektet har været en succes der har givet OnlineInterview den grundsten som skal danne fundamentet til et nyt mobilt produkt. MobileSurvey, giver den geografiske uafhængighed som der blev efterlyst og de indsamlede data giver kvalitative informationer nok, til at træffe en beslutning om at arbejde videre med denne beta-version af MobileSurvey. WAP versionen vil ligeledes blive videreudviklet, da OnlineInterview.dk dermed kan tilbyde spørgeskemaer på alle relevante platforme.

title: Very Small Information Systems/SS2007


text:
Very Small Information Systems/weka/arff

classification-jop.arff:

@relation 'classification-jop' @attribute X1 real @attribute X2 real @attribute C1 {one, two} @data 10.0,12.2,one 21.1,24.3,two

clustering-jop.arff:

@relation 'clustering-jop' @attribute X1 real @attribute X2 real @data 10.0,12.2 11.0,9.5 21.1,24.3 20.1,22.3

regression-jop.arff; @relation 'regression-jop' @attribute X1 real @attribute X2 real @data 10.0,12.2 15.0,16.5 21.1,24.3 25.1,28.3


text:
Category:The Great War and Versailles

Here you find the pages from The Great War and Versailles.

title: Category:The Great War and Versailles


text:
Talk:Wikiversity community blog

ComProj initiative
''This section was moved from a page which had been set up to aggregate mini blog posts to a centralised blog, but which has turned out to be "too buggy" (according to Angela). The idea was to get word from Wikiversity out to other projects - and, even though I've reframed the page now with a different focus (having a group space for us, the Wikiversity community), ideas are still very much welcome for how we might go about informing the wider Wikimedia community of our work. Cormaggio talk 10:08, 30 July 2008 (UTC) ''

Since the launch of planet wikimedia there have been several #wikiversity chat channel discussions about having a community blog for Wikiversity. We have Wikiversity Blog howto for support of in-wiki learning blogs, but there is apparently a technical problem which prevents in-wiki blogs from working with planetwikimedia. I wonder if we should start a page such as Wikiversity community blog and try to have it feed into the "blog snippet" system and also a more "formal" blog that would work with planetwikimedia. --JWSchmidt 23:40, 13 September 2007 (UTC)

 * I very much like the idea of a Wikiversity community blog. However, it needn't be thought of "feeding in" to the Blog snippet blog - as far as I can discern, the latter is almost like an announcement or news system. It is thought that it might go some way to addressing the possible demise of Wikizine, which is trying to find a new editor-in-chief, as well as correspondents, in order to keep going. Cormaggio talk 08:43, 14 September 2007 (UTC)

title: Talk:Wikiversity community blog


text:
User:BL~enwikiversity

September 13, 2007

title: User:BL~enwikiversity


text:
User:Wikiguru/monobook.js

// This user script allows quick preview with the help of Ajax

if (wgAction == 'edit' || wgAction == 'submit') addOnloadHook(addQPreviewButton); function addQPreviewButton{ if (!window.qPreviewName) qPreviewName = 'QPreview'; var accesskey = window.qPreviewKey || ''; if (window.qPreviewAtBottom) addSystemButton(qPreviewName, qPreview, 'btnQPreview', 'Quick Preview', accesskey); else addToolbarButton(qPreviewName, qPreview, 'btnQPreview', 'Quick Preview', accesskey); } function qPreview{ var divPreview = document.getElementById('wikiPreview'); if (!divPreview) return; var btnQPreview = document.getElementById('btnQPreview'); var btnWidth = Math.max(btnQPreview.scrollWidth, btnQPreview.offsetWidth); if (btnQPreview) btnQPreview.value = window.qPreviewWait || 'Wait...'; btnQPreview.style.width = btnWidth + 'px'; a = sajax_init_object; a.open('POST', document.editform.action+'&live', true); var Boundary = 'p1415'; a.setRequestHeader('Content-Type', 'multipart/form-data; boundary='+Boundary); var PostData = '--' + Boundary + '\nContent-Disposition: form-data; name="wpTextbox1"\n\n' + document.getElementById('wpTextbox1').value + '\n--'+Boundary; if (a.overrideMimeType) a.overrideMimeType('text/html'); a.send(PostData); a.onreadystatechange = function{ if (a.readyState != 4) return; var html = a.responseText; html = html.replace(/>/g,'>').replace(/</g,'<').replace(/"/g,'"').replace(/&/g,'&').replace(/'/g,"'");		divPreview.innerHTML = html;		if (btnQPreview) btnQPreview.value = qPreviewName;	}; } function addSystemButton(name, onclick, id, tooltip, accesskey){ 	var wpPreview = document.getElementById('wpPreview');	if (!wpPreview) return;	var btn = document.createElement('input');	btn.type = 'button'; 	if (name) btn.value = name; 	if (onclick) btn.onclick = onclick;	if (id) btn.id = id;	if (tooltip) btn.title = tooltip; 	if (accesskey) { 		btn.accessKey = accesskey; 		btn.title += ' [' + tooltipAccessKeyPrefix + btn.accessKey + ']';	}		wpPreview.parentNode.insertBefore(btn, wpPreview);	return btn; } function addToolbarButton(name, onclick, id, tooltip, accesskey){	var toolbar = document.getElementById('toolbar');	if (!toolbar) return;	var btn = document.createElement('input'); btn.type = 'button'; btn.style.background = '#adbede'; btn.style.height = '22px'; btn.style.verticalAlign = 'middle'; if (name) btn.value = name; if (onclick) btn.onclick = onclick; if (id) btn.id = id; if (tooltip) btn.title = tooltip; if (accesskey) btn.accessKey = accesskey; toolbar.appendChild(btn); return btn; }

title: User:Wikiguru/monobook.js


text:
BCP/Pseudognaphalium obtusifolium

Pseudognaphalium obtusifolium

title: BCP/Pseudognaphalium obtusifolium


text:
BCP/Pseudognaphalium obtusifolium/Logs

2007 Logs

 * --Jomegat 01:58, 14 September 2007 (UTC)
 * --Jomegat 13:49, 19 September 2007 (UTC)
 * --Jomegat 23:07, 21 September 2007 (UTC)
 * --Jomegat 03:01, 2 October 2007 (UTC)
 * --Jomegat 17:24, 8 October 2007 (UTC)
 * --Jomegat 15:02, 14 October 2007 (UTC)
 * --Jomegat 18:17, 15 October 2007 (UTC)
 * --Jomegat 00:52, 7 November 2007 (UTC)

2008 Logs

 * Jomegat 00:34, 2 August 2008 (UTC)
 * Jomegat 03:10, 21 August 2008 (UTC)
 * Jomegat 23:17, 1 September 2008 (UTC)
 * Jomegat 21:37, 18 September 2008 (UTC)
 * Jomegat 02:23, 13 October 2008 (UTC)
 * Jomegat 18:13, 3 November 2008 (UTC)

2009 Logs

 * (no archived logs yet)

Recent Logs

 * Jomegat 00:46, 22 July 2009 (UTC)

title: BCP/Pseudognaphalium obtusifolium/Logs


text:
BCP/Polygonum pensylvanicum

Polygonum pensylvanicum

title: BCP/Polygonum pensylvanicum


text:
BCP/Polygonum pensylvanicum/Logs

2007 Logs

 * --Jomegat 18:31, 6 Aug 2007 (UTC)
 * --Jomegat 16:10, 12 September 2007 (UTC)
 * --Jomegat 02:35, 14 September 2007 (UTC)
 * --SB_Johnny | talk 09:55, 15 September 2007 (UTC)
 * --Jomegat 23:06, 21 September 2007 (UTC)
 * --Jomegat 17:22, 25 September 2007 (UTC)
 * --SB_Johnny | talk 07:48, 2 October 2007 (UTC)
 * --Jomegat 17:06, 3 October 2007 (UTC)
 * --Jomegat 17:23, 8 October 2007 (UTC)
 * --Jomegat 18:17, 15 October 2007 (UTC)
 * --Jomegat 23:15, 30 October 2007 (UTC)
 * --Jomegat 23:09, 1 November 2007 (UTC)
 * --SB_Johnny | talk 10:03, 2 November 2007 (UTC)
 * --Jomegat 22:59, 5 November 2007 (UTC)

2008 Logs

 * Jomegat 17:27, 27 June 2008 (UTC)
 * Jomegat 23:11, 1 July 2008 (UTC)
 * --SB_Johnny | talk 10:22, 14 July 2008 (UTC)
 * Jomegat 02:41, 15 July 2008 (UTC)
 * Jomegat 17:14, 22 July 2008 (UTC)
 * Jomegat 19:45, 26 July 2008 (UTC)
 * Jomegat 00:52, 2 August 2008 (UTC)
 * --SB_Johnny | talk 11:13, 3 August 2008 (UTC)
 * Jomegat 01:17, 17 August 2008 (UTC)
 * Jomegat 20 August, 2008
 * Jomegat 01:07, 31 August 2008 (UTC)
 * Jomegat 23:42, 4 September 2008 (UTC)
 * Jomegat 22:42, 10 September 2008 (UTC)
 * Jomegat 20:08, 20 September 2008 (UTC)
 * Jomegat 18:08, 7 October 2008 (UTC)

Recent Logs

 * Jomegat 00:22, 15 July 2009 (UTC)
 * Jomegat 00:47, 22 July 2009 (UTC)

title: BCP/Polygonum pensylvanicum/Logs


text:
C++/STL

STL refers to the Standard Template Library, a collection of data structures that can be used in any program. Common classes available in the STL include the dynamic array (vector), linked list (list), the stack, the queue, and the deque (think "deck of cards"). When creating an instance of these aggregate data types, which are templated, one must specify what class is intended to be stored in that data structure.

Example:

The Standard Template Library
The Standard Template Library (STL) is a standard. This is important to note when trying to learn how to use the library. At first, the conventions in the library may seem unfamiliar and strange; however, because the library is based on the same underlying principles, once you learn how to properly use one class in the STL, knowing how to use another STL class is relatively easy.

The first and, possibly, the most common use of the STL for programmers learning C++ are using the container classes. An example container class is the  template, which is one of the simplest and most versatile used classes in the library.

Iterator
An iterator is a special pointer designed for use with the STL containers shown below.

Iterators can traverse the contents of a container, using either the ++ or -- operators.

vector
A vector is a variable sized array.

The vector supports the following methods:
 * push_back: adds an element to the end
 * pop_back: destroys the last element
 * size: Returns size of vector
 * resize: Resizes the vector
 * insert(position, value): Inserts an item
 * insert(position, number, value): Adds number values.
 * insert(position, start, end): Inserts values between start and end.

To get iterators to the beginning or end:
 * begin
 * end: returns an iterator to the end of the vector (not readable)
 * rbegin: Returns a reverse iterator
 * rend: Returns a reverse iterator pointing to the end

bitset
The bitset is a statically sized storage container that handles boolean values.

The bits can be accessed as if they were an array, but the following functions are available:
 * set(pos, value=true): sets the bit at pos to value.
 * reset(pos): sets the bit at pos to false.
 * flip(pos): toggles the bit at pos.

All three functions return a reference to the current bitset.

If a variable-sized container is needed, deque should be used instead.

stack
The stack is a data structure that serves as a first-in, last-out storage. That is, items most recently entered onto the stack will be retrieved first.

The push method adds an element to the structure, top provides a reference to the latest element added, and pop removes the topmost element. You can check the size of the stack with size and see if there are elements through the empty method.

queue
A queue is a data structure that serves as a first-in, first-out storage system. It allows items to be processed in order.

priority_queue
A priority queue is a data structure that causes elements to be returned based on a weak ordering system. In particular, the greatest value in the list is removed first.

deque
A deque is a double-ended queue. In this structure, elements may be added or removed at the beginning or end.

The most common methods are:
 * back
 * front
 * pop_back
 * pop_front
 * push_back
 * push_front

While you can use the insert and erase funtions to arbitrarly add or remove elements, this structure is most efficiently used for elements at the front or back.

list
The list structure is a double linked list. It is efficient at iterating through elements within the structure, but is slow when randomly accessing elements.

The methods :
 * back
 * front
 * pop_back
 * pop_front
 * push_back
 * push_front
 * splice: Moves elements from one list into a specified position.
 * remove, remove_if: Removes matching elements from the list.
 * unique: Removes duplicate entries.
 * merge: Merges two sorted lists.
 * sort: Sorts the elements in a list.

map
A map is a container, where elements are accessed by a key. While effective for random access and arbitrary insertion and removal, it is not designed for sequential access.

The methods incldue:
 * operator [x]: Finds and returns element with key x, creating a new element if necessary.
 * find: Searches for and returns an element with a given key, returning map::end if not found.
 * erase: Removes an element.

The iterators for a map will provide a pair that contains a key and the element for that key.
 * first: References a key
 * second: References the value.

multimap
A variation of map, where several values may be given the same key.

The methods inlcude:
 * find: Searches for and returns an element with a given key, returning multimap::end if not found.  Note that only one element is returned.
 * erase: Removes an element.
 * insert: Adds an element.
 * count: Provides the number of elements associates with a given key.
 * equal_range: Returns an iterator for a list of elements matching a key.

set
A set is a container, where elements are accessed by a key. Unlike the map, a set is usually implemented as a binary tree.

The methods incldue:
 * operator [x]: Finds and returns element with key x, creating a new element if necessary.
 * find: Searches for and returns an element with a given key, returning map::end if not found.
 * erase: Removes an element.

The iterators for a set will provide a pair that contains a key and the element for that key.
 * first: References a key
 * second: References the value.

multiset
A variation of set, where several values may be given the same key.

The methods inlcude:
 * find: Searches for and returns an element with a given key, returning multimap::end if not found.  Note that only one element is returned.
 * erase: Removes an element.
 * insert: Adds an element.
 * count: Provides the number of elements associates with a given key.
 * equal_range: Returns an iterator for a list of elements matching a key.

complex
Complex is a template class that supports operating on complex numbers, i.e. those that have a real and imaginary part. The constructor allows complex numbers with components of any type that supports the required underlying mathematical operations but has specializations to efficiently handle float, double and long double. The constructors are written to prevent implicit conversions that aren't known to be safe, so float to double would be safe but not double to float is not and so would have to be done explicitly. However the assignment operator does not have this requirement and will do implicit conversion where the conversion on the components is defined.

The only comparison functions defined are equality and non-equality (== and !=). The arithmetic operations of addition, subtraction, multiplication and division (+, -, *, /) and the assignments notations (like *=) are defined as are unary positive and negative signs (e.g. the unary negative in c + -k ). Certain transcendental functions are defined for complex numbers such as exponent, log (base e and base 10), trigonometric and hyperbolic trigonometric functions.

valarray
std::valarray is a container that holds an array of values, and designed for operations that affect all elements in the array. Operations may include basic arithmetic, or may apply a function to each element of the array.

When performing a valarray operator with another valarray, the number of elements should be the same (different-sized arrays may cause undefined behavior), or be based on a single instance of the number.

title: C++/STL


text:
Category:Family Medicine (LMCC)

The LMCC (Licentiate of the Medical Council of Canada) is the licensing examination for all Canadian medical students upon entering residency. The MCC website is located at http://www.mcc.ca. This category covers the family medicine objectives.

title: Category:Family Medicine (LMCC)


text:
LMCC/Periodic Health Examination

Purpose of the PHE
 * primary prevention
 * identifying risk factors for common diseases
 * promotion of healthy behaviour
 * secondary prevention
 * early disease detection to allow early treatment and prevent progression
 * update patient's clinical data
 * fostering the patient-physician relationship

The College of Family Practitioners of Canada provides up to date evidence based PHE checklist forms

title: LMCC/Periodic Health Examination