https://wiki.cdot.senecacollege.ca/w/api.php?action=feedcontributions&user=Jboelen&feedformat=atomCDOT Wiki - User contributions [en]2024-03-28T13:31:14ZUser contributionsMediaWiki 1.30.0https://wiki.cdot.senecacollege.ca/w/index.php?title=GPU610/DPS915_Student_Resources&diff=88093GPU610/DPS915 Student Resources2012-09-20T20:41:48Z<p>Jboelen: /* Student Resources */</p>
<hr />
<div>{{GPU610/DPS915 Index | 20123}}<br />
=Student Resources=<br />
The purpose of this page is to share useful information that can help groups with their CUDA projects.<br />
<br />
==BLAS Documentation==<br />
<br />
Note: This information applies to the '''gsl_cblas''' library <br />
<br />
There are 2 main functions to use<br />
<br />
===segmv===<br />
void '''cblas_sgemv''' (''const enum CBLAS_ORDER '''order''', const enum CBLAS_TRANSPOSE '''TransA''', const int '''M''', const int '''N''', const float '''alpha''', const float * '''A''', const int '''lda''', const float * '''x''', const int '''incx''', const float '''beta''', float * '''y''', const int '''incy''''')[http://www.gnu.org/software/gsl/manual/html_node/Level-2-CBLAS-Functions.html 1] [http://www.prism.gatech.edu/~ndantam3/cblas-doc/doc/html/cblas_8h.html#23ac27150577c29a7ad4ddb427f255f7 2] [http://publib.boulder.ibm.com/infocenter/comphelp/v8v101/index.jsp?topic=%2Fcom.ibm.xlcpp8a.doc%2Fproguide%2Fref%2Fblaslib.htm 3]<br />
<br />
<br />
'''''order'''''<br />
:Whether matrices are row major order (C-Style) for column major order (Fortran-style). One of enum CblasRowMajor or CblasColMajor.<br />
<br />
'''''TransA''''' <br />
:Whether to transpose matrix A. One of enum CblasNoTrans, CBlasTrans.<br />
<br />
'''''M'''''<br />
:represents:<br />
::the number of rows in input matrix a<br />
:The number of rows must be greater than or equal to zero, and less than the leading dimension of the matrix a (specified in lda)<br />
<br />
'''''N'''''<br />
:represents:<br />
::the number of columns in input matrix a<br />
:The number of columns must be greater than or equal to zero.<br />
<br />
'''''alpha'''''<br />
:is the scaling constant for matrix a<br />
<br />
'''''A'''''<br />
:is the input matrix of float (for sgemv) or double (for dgemv) values<br />
<br />
'''''lda'''''<br />
:is the leading dimension of the array specified by a. The leading dimension must be greater than zero. The leading dimension must be greater than or equal to 1 and greater than or equal to the value specified in m.<br />
<br />
'''''x'''''<br />
:is the input vector of float (for sgemv) or double (for dgemv) values.<br />
<br />
'''''incx'''''<br />
:is the stride for vector x. It can have any value.<br />
<br />
'''''beta'''''<br />
:is the scaling constant for vector y<br />
<br />
'''''y'''''<br />
:is the output vector of float (for sgemv) or double (for dgemv) values.<br />
<br />
'''''incy'''''<br />
:is the stride for vector y. It must not be zero.<br />
<br />
===segmm===<br />
void '''cblas_sgemm''' (''const enum CBLAS_ORDER '''Order''', const enum CBLAS_TRANSPOSE '''TransA''', const enum CBLAS_TRANSPOSE '''TransB''', const int '''M''', const int '''N''', const int '''K''', const float '''alpha''', const float * '''A''', const int '''lda''', const float * '''B''', const int '''ldb''', const float '''beta''', float * '''C''', const int '''ldc''''')[http://www.gnu.org/software/gsl/manual/html_node/Level-3-CBLAS-Functions.html 1] [http://www.prism.gatech.edu/~ndantam3/cblas-doc/doc/html/cblas_8h.html#7d42dfcb6073c56391fee28494809cc5 2] [http://publib.boulder.ibm.com/infocenter/comphelp/v8v101/index.jsp?topic=%2Fcom.ibm.xlcpp8a.doc%2Fproguide%2Fref%2Fblaslib.htm 3]<br />
<br />
<br />
<br />
'''''Order'''''<br />
:Whether matrices are row major order (C-Style) for column major order (Fortran-style). One of enum CblasRowMajor or CblasColMajor.<br />
<br />
'''''TransA'''''<br />
:Whether to transpose matrix A. One of enum CblasNoTrans, CBlasTrans, CBlasConjTrans<br />
<br />
'''''TransB'''''<br />
:Whether to transpose matrix B. One of enum CblasNoTrans, CBlasTrans, CBlasConjTrans.<br />
<br />
'''''M'''''<br />
: is the number of Rows in matrices A and C<br />
:M must be greater than or equal to zero. <br />
<br />
'''''N'''''<br />
:is the number of Columns in Matrices B and C<br />
<br />
'''''K'''''<br />
:is the number of Columns in matrix A and Rows in matrix B<br />
<br />
'''''alpha'''''<br />
:is the scaling constant for matrix a<br />
<br />
'''''A'''''<br />
:is the input matrix a of float (for sgemm).<br />
<br />
'''''lda'''''<br />
:is the leading dimension of the array specified by a. The leading dimension must be greater than zero. If transa is specified as 'N' or 'n', the leading dimension must be greater than or equal to 1. If transa is specified as 'T' or 't', the leading dimension must be greater than or equal to the value specified in m.<br />
<br />
'''''B'''''<br />
:is the input matrix b of float (for sgemm).<br />
<br />
'''''ldb'''''<br />
:is the leading dimension of the array specified by b. The leading dimension must be greater than zero. If transb is specified as 'N' or 'n', the leading dimension must be greater than or equal to the value specified in m. If transa is specified as 'T' or 't', the leading dimension must be greater than or equal to the value specified in n.<br />
<br />
'''''beta'''''<br />
:is the scaling constant for matrix c<br />
<br />
'''''C'''''<br />
:is the output matrix c of float (for sgemm) or double (for dgemm) values.<br />
<br />
'''''ldc'''''<br />
:is the leading dimension of the array specified by c. The leading dimension must be greater than zero. If transb is specified as 'N' or 'n', the leading dimension must be greater than or equal to 0 and greater than or equal to the value specified in l.<br />
<br />
https://scs.senecac.on.ca/~gpu610/pages/content/lines.html<br />
<br />
==Getting Started on Mac==<br />
http://developer.download.nvidia.com/compute/DevZone/docs/html/C/doc/CUDA_Getting_Started_Mac.pdf<br />
<br />
http://developer.nvidia.com/cuda/cuda-downloads<br />
<br />
====Troubleshooting====<br />
Problem with CUDA driver version 5.0.24 on MacBook Pro 2012 [http://blogs.adobe.com/premiereprotraining/2012/08/known-issues-with-cuda-5-0-17-driver-including-crashes-and-kernel-panics.html Fix]</div>Jboelenhttps://wiki.cdot.senecacollege.ca/w/index.php?title=GPU610/DPS915_Student_Resources&diff=88092GPU610/DPS915 Student Resources2012-09-20T20:41:13Z<p>Jboelen: /* BLAS Documentation --- Please do not remove the reference tags */</p>
<hr />
<div>{{GPU610/DPS915 Index | 20123}}<br />
=Student Resources=<br />
The purpose of this page is to share useful information that can help groups with their CUDA projects.<br />
<br />
==BLAS Documentation==<br />
<br />
Note: This information applies to the '''gsl_cblas''' library <br />
<br />
There are 2 main functions to use<br />
<br />
===segmv===<br />
void '''cblas_sgemv''' (''const enum CBLAS_ORDER '''order''', const enum CBLAS_TRANSPOSE '''TransA''', const int '''M''', const int '''N''', const float '''alpha''', const float * '''A''', const int '''lda''', const float * '''x''', const int '''incx''', const float '''beta''', float * '''y''', const int '''incy''''')[http://www.gnu.org/software/gsl/manual/html_node/Level-2-CBLAS-Functions.html 1] [http://www.prism.gatech.edu/~ndantam3/cblas-doc/doc/html/cblas_8h.html#23ac27150577c29a7ad4ddb427f255f7 2] [http://publib.boulder.ibm.com/infocenter/comphelp/v8v101/index.jsp?topic=%2Fcom.ibm.xlcpp8a.doc%2Fproguide%2Fref%2Fblaslib.htm 3]<br />
<br />
'''''order'''''<br />
:Whether matrices are row major order (C-Style) for column major order (Fortran-style). One of enum CblasRowMajor or CblasColMajor.<br />
<br />
'''''TransA''''' <br />
:Whether to transpose matrix A. One of enum CblasNoTrans, CBlasTrans.<br />
<br />
'''''M'''''<br />
:represents:<br />
::the number of rows in input matrix a<br />
:The number of rows must be greater than or equal to zero, and less than the leading dimension of the matrix a (specified in lda)<br />
<br />
'''''N'''''<br />
:represents:<br />
::the number of columns in input matrix a<br />
:The number of columns must be greater than or equal to zero.<br />
<br />
'''''alpha'''''<br />
:is the scaling constant for matrix a<br />
<br />
'''''A'''''<br />
:is the input matrix of float (for sgemv) or double (for dgemv) values<br />
<br />
'''''lda'''''<br />
:is the leading dimension of the array specified by a. The leading dimension must be greater than zero. The leading dimension must be greater than or equal to 1 and greater than or equal to the value specified in m.<br />
<br />
'''''x'''''<br />
:is the input vector of float (for sgemv) or double (for dgemv) values.<br />
<br />
'''''incx'''''<br />
:is the stride for vector x. It can have any value.<br />
<br />
'''''beta'''''<br />
:is the scaling constant for vector y<br />
<br />
'''''y'''''<br />
:is the output vector of float (for sgemv) or double (for dgemv) values.<br />
<br />
'''''incy'''''<br />
:is the stride for vector y. It must not be zero.<br />
<br />
===segmm===<br />
void '''cblas_sgemm''' (''const enum CBLAS_ORDER '''Order''', const enum CBLAS_TRANSPOSE '''TransA''', const enum CBLAS_TRANSPOSE '''TransB''', const int '''M''', const int '''N''', const int '''K''', const float '''alpha''', const float * '''A''', const int '''lda''', const float * '''B''', const int '''ldb''', const float '''beta''', float * '''C''', const int '''ldc''''')[http://www.gnu.org/software/gsl/manual/html_node/Level-3-CBLAS-Functions.html 1] [http://www.prism.gatech.edu/~ndantam3/cblas-doc/doc/html/cblas_8h.html#7d42dfcb6073c56391fee28494809cc5 2] [http://publib.boulder.ibm.com/infocenter/comphelp/v8v101/index.jsp?topic=%2Fcom.ibm.xlcpp8a.doc%2Fproguide%2Fref%2Fblaslib.htm 3]<br />
<br />
'''''Order'''''<br />
:Whether matrices are row major order (C-Style) for column major order (Fortran-style). One of enum CblasRowMajor or CblasColMajor.<br />
<br />
'''''TransA'''''<br />
:Whether to transpose matrix A. One of enum CblasNoTrans, CBlasTrans, CBlasConjTrans<br />
<br />
'''''TransB'''''<br />
:Whether to transpose matrix B. One of enum CblasNoTrans, CBlasTrans, CBlasConjTrans.<br />
<br />
'''''M'''''<br />
: is the number of Rows in matrices A and C<br />
:M must be greater than or equal to zero. <br />
<br />
'''''N'''''<br />
:is the number of Columns in Matrices B and C<br />
<br />
'''''K'''''<br />
:is the number of Columns in matrix A and Rows in matrix B<br />
<br />
'''''alpha'''''<br />
:is the scaling constant for matrix a<br />
<br />
'''''A'''''<br />
:is the input matrix a of float (for sgemm).<br />
<br />
'''''lda'''''<br />
:is the leading dimension of the array specified by a. The leading dimension must be greater than zero. If transa is specified as 'N' or 'n', the leading dimension must be greater than or equal to 1. If transa is specified as 'T' or 't', the leading dimension must be greater than or equal to the value specified in m.<br />
<br />
'''''B'''''<br />
:is the input matrix b of float (for sgemm).<br />
<br />
'''''ldb'''''<br />
:is the leading dimension of the array specified by b. The leading dimension must be greater than zero. If transb is specified as 'N' or 'n', the leading dimension must be greater than or equal to the value specified in m. If transa is specified as 'T' or 't', the leading dimension must be greater than or equal to the value specified in n.<br />
<br />
'''''beta'''''<br />
:is the scaling constant for matrix c<br />
<br />
'''''C'''''<br />
:is the output matrix c of float (for sgemm) or double (for dgemm) values.<br />
<br />
'''''ldc'''''<br />
:is the leading dimension of the array specified by c. The leading dimension must be greater than zero. If transb is specified as 'N' or 'n', the leading dimension must be greater than or equal to 0 and greater than or equal to the value specified in l.<br />
<br />
https://scs.senecac.on.ca/~gpu610/pages/content/lines.html<br />
<br />
==Getting Started on Mac==<br />
http://developer.download.nvidia.com/compute/DevZone/docs/html/C/doc/CUDA_Getting_Started_Mac.pdf<br />
<br />
http://developer.nvidia.com/cuda/cuda-downloads<br />
<br />
====Troubleshooting====<br />
Problem with CUDA driver version 5.0.24 on MacBook Pro 2012 [http://blogs.adobe.com/premiereprotraining/2012/08/known-issues-with-cuda-5-0-17-driver-including-crashes-and-kernel-panics.html Fix]<br />
<br />
<br />
<br />
==References==<br />
<br />
<references/></div>Jboelenhttps://wiki.cdot.senecacollege.ca/w/index.php?title=GPU610/DPS915_Student_Resources&diff=88090GPU610/DPS915 Student Resources2012-09-20T20:34:57Z<p>Jboelen: /* BLAS Documentation --- This section is a work in progress -- please do not edit [jboelen] */</p>
<hr />
<div>{{GPU610/DPS915 Index | 20123}}<br />
=Student Resources=<br />
The purpose of this page is to share useful information that can help groups with their CUDA projects.<br />
<br />
==BLAS Documentation --- Please do not remove the reference tags==<br />
<br />
Note: This information applies to the '''gsl_cblas''' library <br />
<br />
There are 2 main functions to use<br />
<br />
===segmv===<br />
void '''cblas_sgemv''' (''const enum CBLAS_ORDER '''order''', const enum CBLAS_TRANSPOSE '''TransA''', const int '''M''', const int '''N''', const float '''alpha''', const float * '''A''', const int '''lda''', const float * '''x''', const int '''incx''', const float '''beta''', float * '''y''', const int '''incy''''')<ref>http://www.gnu.org/software/gsl/manual/html_node/Level-2-CBLAS-Functions.html</ref><ref>http://www.prism.gatech.edu/~ndantam3/cblas-doc/doc/html/cblas_8h.html#23ac27150577c29a7ad4ddb427f255f7</ref><ref>http://publib.boulder.ibm.com/infocenter/comphelp/v8v101/index.jsp?topic=%2Fcom.ibm.xlcpp8a.doc%2Fproguide%2Fref%2Fblaslib.htm</ref><br />
<br />
'''''order'''''<br />
:Whether matrices are row major order (C-Style) for column major order (Fortran-style). One of enum CblasRowMajor or CblasColMajor.<br />
<br />
'''''TransA''''' <br />
:Whether to transpose matrix A. One of enum CblasNoTrans, CBlasTrans.<br />
<br />
'''''M'''''<br />
:represents:<br />
::the number of rows in input matrix a<br />
:The number of rows must be greater than or equal to zero, and less than the leading dimension of the matrix a (specified in lda)<br />
<br />
'''''N'''''<br />
:represents:<br />
::the number of columns in input matrix a<br />
:The number of columns must be greater than or equal to zero.<br />
<br />
'''''alpha'''''<br />
:is the scaling constant for matrix a<br />
<br />
'''''A'''''<br />
:is the input matrix of float (for sgemv) or double (for dgemv) values<br />
<br />
'''''lda'''''<br />
:is the leading dimension of the array specified by a. The leading dimension must be greater than zero. The leading dimension must be greater than or equal to 1 and greater than or equal to the value specified in m.<br />
<br />
'''''x'''''<br />
:is the input vector of float (for sgemv) or double (for dgemv) values.<br />
<br />
'''''incx'''''<br />
:is the stride for vector x. It can have any value.<br />
<br />
'''''beta'''''<br />
:is the scaling constant for vector y<br />
<br />
'''''y'''''<br />
:is the output vector of float (for sgemv) or double (for dgemv) values.<br />
<br />
'''''incy'''''<br />
:is the stride for vector y. It must not be zero.<br />
<br />
===segmm===<br />
void '''cblas_sgemm''' (''const enum CBLAS_ORDER '''Order''', const enum CBLAS_TRANSPOSE '''TransA''', const enum CBLAS_TRANSPOSE '''TransB''', const int '''M''', const int '''N''', const int '''K''', const float '''alpha''', const float * '''A''', const int '''lda''', const float * '''B''', const int '''ldb''', const float '''beta''', float * '''C''', const int '''ldc''''')<ref>http://www.gnu.org/software/gsl/manual/html_node/Level-3-CBLAS-Functions.html</ref><ref>http://www.prism.gatech.edu/~ndantam3/cblas-doc/doc/html/cblas_8h.html#7d42dfcb6073c56391fee28494809cc5</ref><ref>http://publib.boulder.ibm.com/infocenter/comphelp/v8v101/index.jsp?topic=%2Fcom.ibm.xlcpp8a.doc%2Fproguide%2Fref%2Fblaslib.htm</ref><br />
<br />
'''''Order'''''<br />
:Whether matrices are row major order (C-Style) for column major order (Fortran-style). One of enum CblasRowMajor or CblasColMajor.<br />
<br />
'''''TransA'''''<br />
:Whether to transpose matrix A. One of enum CblasNoTrans, CBlasTrans, CBlasConjTrans<br />
<br />
'''''TransB'''''<br />
:Whether to transpose matrix B. One of enum CblasNoTrans, CBlasTrans, CBlasConjTrans.<br />
<br />
'''''M'''''<br />
: is the number of Rows in matrices A and C<br />
:M must be greater than or equal to zero. <br />
<br />
'''''N'''''<br />
:is the number of Columns in Matrices B and C<br />
<br />
'''''K'''''<br />
:is the number of Columns in matrix A and Rows in matrix B<br />
<br />
'''''alpha'''''<br />
:is the scaling constant for matrix a<br />
<br />
'''''A'''''<br />
:is the input matrix a of float (for sgemm).<br />
<br />
'''''lda'''''<br />
:is the leading dimension of the array specified by a. The leading dimension must be greater than zero. If transa is specified as 'N' or 'n', the leading dimension must be greater than or equal to 1. If transa is specified as 'T' or 't', the leading dimension must be greater than or equal to the value specified in m.<br />
<br />
'''''B'''''<br />
:is the input matrix b of float (for sgemm).<br />
<br />
'''''ldb'''''<br />
:is the leading dimension of the array specified by b. The leading dimension must be greater than zero. If transb is specified as 'N' or 'n', the leading dimension must be greater than or equal to the value specified in m. If transa is specified as 'T' or 't', the leading dimension must be greater than or equal to the value specified in n.<br />
<br />
'''''beta'''''<br />
:is the scaling constant for matrix c<br />
<br />
'''''C'''''<br />
:is the output matrix c of float (for sgemm) or double (for dgemm) values.<br />
<br />
'''''ldc'''''<br />
:is the leading dimension of the array specified by c. The leading dimension must be greater than zero. If transb is specified as 'N' or 'n', the leading dimension must be greater than or equal to 0 and greater than or equal to the value specified in l.<br />
<br />
https://scs.senecac.on.ca/~gpu610/pages/content/lines.html<br />
<br />
==Getting Started on Mac==<br />
http://developer.download.nvidia.com/compute/DevZone/docs/html/C/doc/CUDA_Getting_Started_Mac.pdf<br />
<br />
http://developer.nvidia.com/cuda/cuda-downloads<br />
<br />
====Troubleshooting====<br />
Problem with CUDA driver version 5.0.24 on MacBook Pro 2012 [http://blogs.adobe.com/premiereprotraining/2012/08/known-issues-with-cuda-5-0-17-driver-including-crashes-and-kernel-panics.html Fix]<br />
<br />
<br />
<br />
==References==<br />
<br />
<references/></div>Jboelenhttps://wiki.cdot.senecacollege.ca/w/index.php?title=GPU610/DPS915_Student_Resources&diff=88088GPU610/DPS915 Student Resources2012-09-20T20:33:57Z<p>Jboelen: /* Student Resources */</p>
<hr />
<div>{{GPU610/DPS915 Index | 20123}}<br />
=Student Resources=<br />
The purpose of this page is to share useful information that can help groups with their CUDA projects.<br />
<br />
==BLAS Documentation --- This section is a work in progress -- please do not edit [jboelen] ==<br />
<br />
Note: This information applies to the '''gsl_cblas''' library <br />
<br />
There are 2 main functions to use<br />
<br />
===segmv===<br />
void '''cblas_sgemv''' (''const enum CBLAS_ORDER '''order''', const enum CBLAS_TRANSPOSE '''TransA''', const int '''M''', const int '''N''', const float '''alpha''', const float * '''A''', const int '''lda''', const float * '''x''', const int '''incx''', const float '''beta''', float * '''y''', const int '''incy''''')<ref>http://www.gnu.org/software/gsl/manual/html_node/Level-2-CBLAS-Functions.html</ref><ref>http://www.prism.gatech.edu/~ndantam3/cblas-doc/doc/html/cblas_8h.html#23ac27150577c29a7ad4ddb427f255f7</ref><ref>http://publib.boulder.ibm.com/infocenter/comphelp/v8v101/index.jsp?topic=%2Fcom.ibm.xlcpp8a.doc%2Fproguide%2Fref%2Fblaslib.htm</ref><br />
<br />
'''''order'''''<br />
:Whether matrices are row major order (C-Style) for column major order (Fortran-style). One of enum CblasRowMajor or CblasColMajor.<br />
<br />
'''''TransA''''' <br />
:Whether to transpose matrix A. One of enum CblasNoTrans, CBlasTrans.<br />
<br />
'''''M'''''<br />
:represents:<br />
::the number of rows in input matrix a<br />
:The number of rows must be greater than or equal to zero, and less than the leading dimension of the matrix a (specified in lda)<br />
<br />
'''''N'''''<br />
:represents:<br />
::the number of columns in input matrix a<br />
:The number of columns must be greater than or equal to zero.<br />
<br />
'''''alpha'''''<br />
:is the scaling constant for matrix a<br />
<br />
'''''A'''''<br />
:is the input matrix of float (for sgemv) or double (for dgemv) values<br />
<br />
'''''lda'''''<br />
:is the leading dimension of the array specified by a. The leading dimension must be greater than zero. The leading dimension must be greater than or equal to 1 and greater than or equal to the value specified in m.<br />
<br />
'''''x'''''<br />
:is the input vector of float (for sgemv) or double (for dgemv) values.<br />
<br />
'''''incx'''''<br />
:is the stride for vector x. It can have any value.<br />
<br />
'''''beta'''''<br />
:is the scaling constant for vector y<br />
<br />
'''''y'''''<br />
:is the output vector of float (for sgemv) or double (for dgemv) values.<br />
<br />
'''''incy'''''<br />
:is the stride for vector y. It must not be zero.<br />
<br />
===segmm===<br />
void '''cblas_sgemm''' (''const enum CBLAS_ORDER '''Order''', const enum CBLAS_TRANSPOSE '''TransA''', const enum CBLAS_TRANSPOSE '''TransB''', const int '''M''', const int '''N''', const int '''K''', const float '''alpha''', const float * '''A''', const int '''lda''', const float * '''B''', const int '''ldb''', const float '''beta''', float * '''C''', const int '''ldc''''')<ref>http://www.gnu.org/software/gsl/manual/html_node/Level-3-CBLAS-Functions.html</ref><ref>http://www.prism.gatech.edu/~ndantam3/cblas-doc/doc/html/cblas_8h.html#7d42dfcb6073c56391fee28494809cc5</ref><ref>http://publib.boulder.ibm.com/infocenter/comphelp/v8v101/index.jsp?topic=%2Fcom.ibm.xlcpp8a.doc%2Fproguide%2Fref%2Fblaslib.htm</ref><br />
<br />
'''''Order'''''<br />
:Whether matrices are row major order (C-Style) for column major order (Fortran-style). One of enum CblasRowMajor or CblasColMajor.<br />
<br />
'''''TransA'''''<br />
:Whether to transpose matrix A. One of enum CblasNoTrans, CBlasTrans, CBlasConjTrans<br />
<br />
'''''TransB'''''<br />
:Whether to transpose matrix B. One of enum CblasNoTrans, CBlasTrans, CBlasConjTrans.<br />
<br />
'''''M'''''<br />
: is the number of Rows in matrices A and C<br />
:M must be greater than or equal to zero. <br />
<br />
'''''N'''''<br />
:is the number of Columns in Matrices B and C<br />
<br />
'''''K'''''<br />
:is the number of Columns in matrix A and Rows in matrix B<br />
<br />
'''''alpha'''''<br />
:is the scaling constant for matrix a<br />
<br />
'''''A'''''<br />
:is the input matrix a of float (for sgemm).<br />
<br />
'''''lda'''''<br />
:is the leading dimension of the array specified by a. The leading dimension must be greater than zero. If transa is specified as 'N' or 'n', the leading dimension must be greater than or equal to 1. If transa is specified as 'T' or 't', the leading dimension must be greater than or equal to the value specified in m.<br />
<br />
'''''B'''''<br />
:is the input matrix b of float (for sgemm).<br />
<br />
'''''ldb'''''<br />
:is the leading dimension of the array specified by b. The leading dimension must be greater than zero. If transb is specified as 'N' or 'n', the leading dimension must be greater than or equal to the value specified in m. If transa is specified as 'T' or 't', the leading dimension must be greater than or equal to the value specified in n.<br />
<br />
'''''beta'''''<br />
:is the scaling constant for matrix c<br />
<br />
'''''C'''''<br />
:is the output matrix c of float (for sgemm) or double (for dgemm) values.<br />
<br />
'''''ldc'''''<br />
:is the leading dimension of the array specified by c. The leading dimension must be greater than zero. If transb is specified as 'N' or 'n', the leading dimension must be greater than or equal to 0 and greater than or equal to the value specified in l.<br />
<br />
https://scs.senecac.on.ca/~gpu610/pages/content/lines.html<br />
<br />
==Getting Started on Mac==<br />
http://developer.download.nvidia.com/compute/DevZone/docs/html/C/doc/CUDA_Getting_Started_Mac.pdf<br />
<br />
http://developer.nvidia.com/cuda/cuda-downloads<br />
<br />
====Troubleshooting====<br />
Problem with CUDA driver version 5.0.24 on MacBook Pro 2012 [http://blogs.adobe.com/premiereprotraining/2012/08/known-issues-with-cuda-5-0-17-driver-including-crashes-and-kernel-panics.html Fix]<br />
<br />
<br />
<br />
==References==<br />
<br />
<references/></div>Jboelenhttps://wiki.cdot.senecacollege.ca/w/index.php?title=GPU610/DPS915_Student_Resources&diff=88087GPU610/DPS915 Student Resources2012-09-20T20:33:23Z<p>Jboelen: /* Student Resources */</p>
<hr />
<div>{{GPU610/DPS915 Index | 20123}}<br />
=Student Resources=<br />
The purpose of this page is to share useful information that can help groups with their CUDA projects.<br />
<br />
==BLAS Documentation --- This section is a work in progress -- please do not edit [jboelen] ==<br />
<br />
Note: This information applies to the '''gsl_cblas''' library <br />
<br />
There are 2 main functions to use<br />
<br />
===segmv===<br />
void '''cblas_sgemv''' (''const enum CBLAS_ORDER '''order''', const enum CBLAS_TRANSPOSE '''TransA''', const int '''M''', const int '''N''', const float '''alpha''', const float * '''A''', const int '''lda''', const float * '''x''', const int '''incx''', const float '''beta''', float * '''y''', const int '''incy''''')<ref>http://www.gnu.org/software/gsl/manual/html_node/Level-2-CBLAS-Functions.html</ref><ref>http://www.prism.gatech.edu/~ndantam3/cblas-doc/doc/html/cblas_8h.html#23ac27150577c29a7ad4ddb427f255f7</ref><ref>http://publib.boulder.ibm.com/infocenter/comphelp/v8v101/index.jsp?topic=%2Fcom.ibm.xlcpp8a.doc%2Fproguide%2Fref%2Fblaslib.htm</ref><br />
<br />
'''''order'''''<br />
:Whether matrices are row major order (C-Style) for column major order (Fortran-style). One of enum CblasRowMajor or CblasColMajor.<br />
<br />
'''''TransA''''' <br />
:Whether to transpose matrix A. One of enum CblasNoTrans, CBlasTrans.<br />
<br />
'''''M'''''<br />
:represents:<br />
::the number of rows in input matrix a<br />
:The number of rows must be greater than or equal to zero, and less than the leading dimension of the matrix a (specified in lda)<br />
<br />
'''''N'''''<br />
:represents:<br />
::the number of columns in input matrix a<br />
:The number of columns must be greater than or equal to zero.<br />
<br />
'''''alpha'''''<br />
:is the scaling constant for matrix a<br />
<br />
'''''A'''''<br />
:is the input matrix of float (for sgemv) or double (for dgemv) values<br />
<br />
'''''lda'''''<br />
:is the leading dimension of the array specified by a. The leading dimension must be greater than zero. The leading dimension must be greater than or equal to 1 and greater than or equal to the value specified in m.<br />
<br />
'''''x'''''<br />
:is the input vector of float (for sgemv) or double (for dgemv) values.<br />
<br />
'''''incx'''''<br />
:is the stride for vector x. It can have any value.<br />
<br />
'''''beta'''''<br />
:is the scaling constant for vector y<br />
<br />
'''''y'''''<br />
:is the output vector of float (for sgemv) or double (for dgemv) values.<br />
<br />
'''''incy'''''<br />
:is the stride for vector y. It must not be zero.<br />
<br />
===segmm===<br />
void '''cblas_sgemm''' (''const enum CBLAS_ORDER '''Order''', const enum CBLAS_TRANSPOSE '''TransA''', const enum CBLAS_TRANSPOSE '''TransB''', const int '''M''', const int '''N''', const int '''K''', const float '''alpha''', const float * '''A''', const int '''lda''', const float * '''B''', const int '''ldb''', const float '''beta''', float * '''C''', const int '''ldc''''')<ref>http://www.gnu.org/software/gsl/manual/html_node/Level-3-CBLAS-Functions.html</ref><ref>http://www.prism.gatech.edu/~ndantam3/cblas-doc/doc/html/cblas_8h.html#7d42dfcb6073c56391fee28494809cc5</ref><ref>http://publib.boulder.ibm.com/infocenter/comphelp/v8v101/index.jsp?topic=%2Fcom.ibm.xlcpp8a.doc%2Fproguide%2Fref%2Fblaslib.htm</ref><br />
<br />
'''''Order'''''<br />
:Whether matrices are row major order (C-Style) for column major order (Fortran-style). One of enum CblasRowMajor or CblasColMajor.<br />
<br />
<br />
'''''TransA'''''<br />
:Whether to transpose matrix A. One of enum CblasNoTrans, CBlasTrans, CBlasConjTrans<br />
<br />
<br />
'''''TransB'''''<br />
<br />
:Whether to transpose matrix B. One of enum CblasNoTrans, CBlasTrans, CBlasConjTrans.<br />
<br />
<br />
'''''M'''''<br />
: is the number of Rows in matrices A and C<br />
:M must be greater than or equal to zero. <br />
<br />
'''''N'''''<br />
:is the number of Columns in Matrices B and C<br />
<br />
'''''K'''''<br />
:is the number of Columns in matrix A and Rows in matrix B<br />
<br />
'''''alpha'''''<br />
:is the scaling constant for matrix a<br />
<br />
'''''A'''''<br />
:is the input matrix a of float (for sgemm).<br />
<br />
'''''lda'''''<br />
:is the leading dimension of the array specified by a. The leading dimension must be greater than zero. If transa is specified as 'N' or 'n', the leading dimension must be greater than or equal to 1. If transa is specified as 'T' or 't', the leading dimension must be greater than or equal to the value specified in m.<br />
<br />
'''''B'''''<br />
:is the input matrix b of float (for sgemm).<br />
<br />
'''''ldb'''''<br />
:is the leading dimension of the array specified by b. The leading dimension must be greater than zero. If transb is specified as 'N' or 'n', the leading dimension must be greater than or equal to the value specified in m. If transa is specified as 'T' or 't', the leading dimension must be greater than or equal to the value specified in n.<br />
<br />
'''''beta'''''<br />
:is the scaling constant for matrix c<br />
<br />
'''''C'''''<br />
:is the output matrix c of float (for sgemm) or double (for dgemm) values.<br />
<br />
'''''ldc'''''<br />
:is the leading dimension of the array specified by c. The leading dimension must be greater than zero. If transb is specified as 'N' or 'n', the leading dimension must be greater than or equal to 0 and greater than or equal to the value specified in l.<br />
<br />
https://scs.senecac.on.ca/~gpu610/pages/content/lines.html<br />
<br />
==Getting Started on Mac==<br />
http://developer.download.nvidia.com/compute/DevZone/docs/html/C/doc/CUDA_Getting_Started_Mac.pdf<br />
<br />
http://developer.nvidia.com/cuda/cuda-downloads<br />
<br />
====Troubleshooting====<br />
Problem with CUDA driver version 5.0.24 on MacBook Pro 2012 [http://blogs.adobe.com/premiereprotraining/2012/08/known-issues-with-cuda-5-0-17-driver-including-crashes-and-kernel-panics.html Fix]<br />
<br />
<br />
<br />
==References==<br />
<br />
<references/></div>Jboelenhttps://wiki.cdot.senecacollege.ca/w/index.php?title=GPU610/DPS915_Student_Resources&diff=88086GPU610/DPS915 Student Resources2012-09-20T20:32:18Z<p>Jboelen: /* segmv */</p>
<hr />
<div>{{GPU610/DPS915 Index | 20123}}<br />
=Student Resources=<br />
The purpose of this page is to share useful information that can help groups with their CUDA projects.<br />
<br />
==BLAS Documentation --- This section is a work in progress -- please do not edit [jboelen] ==<br />
<br />
Note: This information applies to the '''gsl_cblas''' library <br />
<br />
There are 2 main functions to use<br />
<br />
===segmv===<br />
void '''cblas_sgemv''' (''const enum CBLAS_ORDER '''order''', const enum CBLAS_TRANSPOSE '''TransA''', const int '''M''', const int '''N''', const float '''alpha''', const float * '''A''', const int '''lda''', const float * '''x''', const int '''incx''', const float '''beta''', float * '''y''', const int '''incy''''')<ref>http://www.gnu.org/software/gsl/manual/html_node/Level-2-CBLAS-Functions.html</ref><ref>http://www.prism.gatech.edu/~ndantam3/cblas-doc/doc/html/cblas_8h.html#23ac27150577c29a7ad4ddb427f255f7</ref><br />
<br />
'''''order'''''<br />
:Whether matrices are row major order (C-Style) for column major order (Fortran-style). One of enum CblasRowMajor or CblasColMajor.<br />
<br />
'''''TransA''''' <br />
:Whether to transpose matrix A. One of enum CblasNoTrans, CBlasTrans.<br />
<br />
'''''M'''''<br />
:represents:<br />
::the number of rows in input matrix a<br />
:The number of rows must be greater than or equal to zero, and less than the leading dimension of the matrix a (specified in lda)<br />
<br />
'''''N'''''<br />
:represents:<br />
::the number of columns in input matrix a<br />
:The number of columns must be greater than or equal to zero.<br />
<br />
'''''alpha'''''<br />
:is the scaling constant for matrix a<br />
<br />
'''''A'''''<br />
:is the input matrix of float (for sgemv) or double (for dgemv) values<br />
<br />
'''''lda'''''<br />
:is the leading dimension of the array specified by a. The leading dimension must be greater than zero. The leading dimension must be greater than or equal to 1 and greater than or equal to the value specified in m.<br />
<br />
'''''x'''''<br />
:is the input vector of float (for sgemv) or double (for dgemv) values.<br />
<br />
'''''incx'''''<br />
:is the stride for vector x. It can have any value.<br />
<br />
'''''beta'''''<br />
:is the scaling constant for vector y<br />
<br />
'''''y'''''<br />
:is the output vector of float (for sgemv) or double (for dgemv) values.<br />
<br />
'''''incy'''''<br />
:is the stride for vector y. It must not be zero.<br />
<br />
===segmm===<br />
void '''cblas_sgemm''' (''const enum CBLAS_ORDER '''Order''', const enum CBLAS_TRANSPOSE '''TransA''', const enum CBLAS_TRANSPOSE '''TransB''', const int '''M''', const int '''N''', const int '''K''', const float '''alpha''', const float * '''A''', const int '''lda''', const float * '''B''', const int '''ldb''', const float '''beta''', float * '''C''', const int '''ldc''''')<ref>http://www.gnu.org/software/gsl/manual/html_node/Level-3-CBLAS-Functions.html</ref><ref>http://www.prism.gatech.edu/~ndantam3/cblas-doc/doc/html/cblas_8h.html#7d42dfcb6073c56391fee28494809cc5</ref><br />
<br />
'''''Order'''''<br />
:Whether matrices are row major order (C-Style) for column major order (Fortran-style). One of enum CblasRowMajor or CblasColMajor.<br />
<br />
<br />
'''''TransA'''''<br />
:Whether to transpose matrix A. One of enum CblasNoTrans, CBlasTrans, CBlasConjTrans<br />
<br />
<br />
'''''TransB'''''<br />
<br />
:Whether to transpose matrix B. One of enum CblasNoTrans, CBlasTrans, CBlasConjTrans.<br />
<br />
<br />
'''''M'''''<br />
: is the number of Rows in matrices A and C<br />
:M must be greater than or equal to zero. <br />
<br />
'''''N'''''<br />
:is the number of Columns in Matrices B and C<br />
<br />
'''''K'''''<br />
:is the number of Columns in matrix A and Rows in matrix B<br />
<br />
'''''alpha'''''<br />
:is the scaling constant for matrix a<br />
<br />
'''''A'''''<br />
:is the input matrix a of float (for sgemm).<br />
<br />
'''''lda'''''<br />
:is the leading dimension of the array specified by a. The leading dimension must be greater than zero. If transa is specified as 'N' or 'n', the leading dimension must be greater than or equal to 1. If transa is specified as 'T' or 't', the leading dimension must be greater than or equal to the value specified in m.<br />
<br />
'''''B'''''<br />
:is the input matrix b of float (for sgemm).<br />
<br />
'''''ldb'''''<br />
:is the leading dimension of the array specified by b. The leading dimension must be greater than zero. If transb is specified as 'N' or 'n', the leading dimension must be greater than or equal to the value specified in m. If transa is specified as 'T' or 't', the leading dimension must be greater than or equal to the value specified in n.<br />
<br />
'''''beta'''''<br />
:is the scaling constant for matrix c<br />
<br />
'''''C'''''<br />
:is the output matrix c of float (for sgemm) or double (for dgemm) values.<br />
<br />
'''''ldc'''''<br />
:is the leading dimension of the array specified by c. The leading dimension must be greater than zero. If transb is specified as 'N' or 'n', the leading dimension must be greater than or equal to 0 and greater than or equal to the value specified in l.<br />
<br />
https://scs.senecac.on.ca/~gpu610/pages/content/lines.html<br />
<br />
==Getting Started on Mac==<br />
http://developer.download.nvidia.com/compute/DevZone/docs/html/C/doc/CUDA_Getting_Started_Mac.pdf<br />
<br />
http://developer.nvidia.com/cuda/cuda-downloads<br />
<br />
====Troubleshooting====<br />
Problem with CUDA driver version 5.0.24 on MacBook Pro 2012 [http://blogs.adobe.com/premiereprotraining/2012/08/known-issues-with-cuda-5-0-17-driver-including-crashes-and-kernel-panics.html Fix]<br />
<br />
<br />
<br />
==References==<br />
<br />
<references/></div>Jboelenhttps://wiki.cdot.senecacollege.ca/w/index.php?title=GPU610/DPS915_Student_Resources&diff=88085GPU610/DPS915 Student Resources2012-09-20T20:31:42Z<p>Jboelen: /* segmm */</p>
<hr />
<div>{{GPU610/DPS915 Index | 20123}}<br />
=Student Resources=<br />
The purpose of this page is to share useful information that can help groups with their CUDA projects.<br />
<br />
==BLAS Documentation --- This section is a work in progress -- please do not edit [jboelen] ==<br />
<br />
Note: This information applies to the '''gsl_cblas''' library <br />
<br />
There are 2 main functions to use<br />
<br />
===segmv===<br />
void '''cblas_sgemv''' (''const enum CBLAS_ORDER '''order''', const enum CBLAS_TRANSPOSE '''TransA''', const int '''M''', const int '''N''', const float '''alpha''', const float * '''A''', const int '''lda''', const float * '''x''', const int '''incx''', const float '''beta''', float * '''y''', const int '''incy''''')<ref>http://www.gnu.org/software/gsl/manual/html_node/Level-2-CBLAS-Functions.html</ref><ref> http://www.prism.gatech.edu/~ndantam3/cblas-doc/doc/html/cblas_8h.html#23ac27150577c29a7ad4ddb427f255f7</ref><br />
<br />
'''''order'''''<br />
:Whether matrices are row major order (C-Style) for column major order (Fortran-style). One of enum CblasRowMajor or CblasColMajor.<br />
<br />
'''''TransA''''' <br />
:Whether to transpose matrix A. One of enum CblasNoTrans, CBlasTrans.<br />
<br />
'''''M'''''<br />
:represents:<br />
::the number of rows in input matrix a<br />
:The number of rows must be greater than or equal to zero, and less than the leading dimension of the matrix a (specified in lda)<br />
<br />
'''''N'''''<br />
:represents:<br />
::the number of columns in input matrix a<br />
:The number of columns must be greater than or equal to zero.<br />
<br />
'''''alpha'''''<br />
:is the scaling constant for matrix a<br />
<br />
'''''A'''''<br />
:is the input matrix of float (for sgemv) or double (for dgemv) values<br />
<br />
'''''lda'''''<br />
:is the leading dimension of the array specified by a. The leading dimension must be greater than zero. The leading dimension must be greater than or equal to 1 and greater than or equal to the value specified in m.<br />
<br />
'''''x'''''<br />
:is the input vector of float (for sgemv) or double (for dgemv) values.<br />
<br />
'''''incx'''''<br />
:is the stride for vector x. It can have any value.<br />
<br />
'''''beta'''''<br />
:is the scaling constant for vector y<br />
<br />
'''''y'''''<br />
:is the output vector of float (for sgemv) or double (for dgemv) values.<br />
<br />
'''''incy'''''<br />
:is the stride for vector y. It must not be zero.<br />
<br />
===segmm===<br />
void '''cblas_sgemm''' (''const enum CBLAS_ORDER '''Order''', const enum CBLAS_TRANSPOSE '''TransA''', const enum CBLAS_TRANSPOSE '''TransB''', const int '''M''', const int '''N''', const int '''K''', const float '''alpha''', const float * '''A''', const int '''lda''', const float * '''B''', const int '''ldb''', const float '''beta''', float * '''C''', const int '''ldc''''')<ref>http://www.gnu.org/software/gsl/manual/html_node/Level-3-CBLAS-Functions.html</ref><ref>http://www.prism.gatech.edu/~ndantam3/cblas-doc/doc/html/cblas_8h.html#7d42dfcb6073c56391fee28494809cc5</ref><br />
<br />
'''''Order'''''<br />
:Whether matrices are row major order (C-Style) for column major order (Fortran-style). One of enum CblasRowMajor or CblasColMajor.<br />
<br />
<br />
'''''TransA'''''<br />
:Whether to transpose matrix A. One of enum CblasNoTrans, CBlasTrans, CBlasConjTrans<br />
<br />
<br />
'''''TransB'''''<br />
<br />
:Whether to transpose matrix B. One of enum CblasNoTrans, CBlasTrans, CBlasConjTrans.<br />
<br />
<br />
'''''M'''''<br />
: is the number of Rows in matrices A and C<br />
:M must be greater than or equal to zero. <br />
<br />
'''''N'''''<br />
:is the number of Columns in Matrices B and C<br />
<br />
'''''K'''''<br />
:is the number of Columns in matrix A and Rows in matrix B<br />
<br />
'''''alpha'''''<br />
:is the scaling constant for matrix a<br />
<br />
'''''A'''''<br />
:is the input matrix a of float (for sgemm).<br />
<br />
'''''lda'''''<br />
:is the leading dimension of the array specified by a. The leading dimension must be greater than zero. If transa is specified as 'N' or 'n', the leading dimension must be greater than or equal to 1. If transa is specified as 'T' or 't', the leading dimension must be greater than or equal to the value specified in m.<br />
<br />
'''''B'''''<br />
:is the input matrix b of float (for sgemm).<br />
<br />
'''''ldb'''''<br />
:is the leading dimension of the array specified by b. The leading dimension must be greater than zero. If transb is specified as 'N' or 'n', the leading dimension must be greater than or equal to the value specified in m. If transa is specified as 'T' or 't', the leading dimension must be greater than or equal to the value specified in n.<br />
<br />
'''''beta'''''<br />
:is the scaling constant for matrix c<br />
<br />
'''''C'''''<br />
:is the output matrix c of float (for sgemm) or double (for dgemm) values.<br />
<br />
'''''ldc'''''<br />
:is the leading dimension of the array specified by c. The leading dimension must be greater than zero. If transb is specified as 'N' or 'n', the leading dimension must be greater than or equal to 0 and greater than or equal to the value specified in l.<br />
<br />
https://scs.senecac.on.ca/~gpu610/pages/content/lines.html<br />
<br />
==Getting Started on Mac==<br />
http://developer.download.nvidia.com/compute/DevZone/docs/html/C/doc/CUDA_Getting_Started_Mac.pdf<br />
<br />
http://developer.nvidia.com/cuda/cuda-downloads<br />
<br />
====Troubleshooting====<br />
Problem with CUDA driver version 5.0.24 on MacBook Pro 2012 [http://blogs.adobe.com/premiereprotraining/2012/08/known-issues-with-cuda-5-0-17-driver-including-crashes-and-kernel-panics.html Fix]<br />
<br />
<br />
<br />
==References==<br />
<br />
<references/></div>Jboelenhttps://wiki.cdot.senecacollege.ca/w/index.php?title=GPU610/DPS915_Student_Resources&diff=88084GPU610/DPS915 Student Resources2012-09-20T20:30:21Z<p>Jboelen: /* segmv */</p>
<hr />
<div>{{GPU610/DPS915 Index | 20123}}<br />
=Student Resources=<br />
The purpose of this page is to share useful information that can help groups with their CUDA projects.<br />
<br />
==BLAS Documentation --- This section is a work in progress -- please do not edit [jboelen] ==<br />
<br />
Note: This information applies to the '''gsl_cblas''' library <br />
<br />
There are 2 main functions to use<br />
<br />
===segmv===<br />
void '''cblas_sgemv''' (''const enum CBLAS_ORDER '''order''', const enum CBLAS_TRANSPOSE '''TransA''', const int '''M''', const int '''N''', const float '''alpha''', const float * '''A''', const int '''lda''', const float * '''x''', const int '''incx''', const float '''beta''', float * '''y''', const int '''incy''''')<ref>http://www.gnu.org/software/gsl/manual/html_node/Level-2-CBLAS-Functions.html</ref><ref> http://www.prism.gatech.edu/~ndantam3/cblas-doc/doc/html/cblas_8h.html#23ac27150577c29a7ad4ddb427f255f7</ref><br />
<br />
'''''order'''''<br />
:Whether matrices are row major order (C-Style) for column major order (Fortran-style). One of enum CblasRowMajor or CblasColMajor.<br />
<br />
'''''TransA''''' <br />
:Whether to transpose matrix A. One of enum CblasNoTrans, CBlasTrans.<br />
<br />
'''''M'''''<br />
:represents:<br />
::the number of rows in input matrix a<br />
:The number of rows must be greater than or equal to zero, and less than the leading dimension of the matrix a (specified in lda)<br />
<br />
'''''N'''''<br />
:represents:<br />
::the number of columns in input matrix a<br />
:The number of columns must be greater than or equal to zero.<br />
<br />
'''''alpha'''''<br />
:is the scaling constant for matrix a<br />
<br />
'''''A'''''<br />
:is the input matrix of float (for sgemv) or double (for dgemv) values<br />
<br />
'''''lda'''''<br />
:is the leading dimension of the array specified by a. The leading dimension must be greater than zero. The leading dimension must be greater than or equal to 1 and greater than or equal to the value specified in m.<br />
<br />
'''''x'''''<br />
:is the input vector of float (for sgemv) or double (for dgemv) values.<br />
<br />
'''''incx'''''<br />
:is the stride for vector x. It can have any value.<br />
<br />
'''''beta'''''<br />
:is the scaling constant for vector y<br />
<br />
'''''y'''''<br />
:is the output vector of float (for sgemv) or double (for dgemv) values.<br />
<br />
'''''incy'''''<br />
:is the stride for vector y. It must not be zero.<br />
<br />
===segmm===<br />
void '''cblas_sgemm''' (''const enum CBLAS_ORDER '''Order''', const enum CBLAS_TRANSPOSE '''TransA''', const enum CBLAS_TRANSPOSE '''TransB''', const int '''M''', const int '''N''', const int '''K''', const float '''alpha''', const float * '''A''', const int '''lda''', const float * '''B''', const int '''ldb''', const float '''beta''', float * '''C''', const int '''ldc''''')<ref> http://www.gnu.org/software/gsl/manual/html_node/Level-3-CBLAS-Functions.html</ref><br />
<br />
'''''Order'''''<br />
:Whether matrices are row major order (C-Style) for column major order (Fortran-style). One of enum CblasRowMajor or CblasColMajor.<br />
<br />
<br />
'''''TransA'''''<br />
:Whether to transpose matrix A. One of enum CblasNoTrans, CBlasTrans, CBlasConjTrans<br />
<br />
<br />
'''''TransB'''''<br />
<br />
:Whether to transpose matrix B. One of enum CblasNoTrans, CBlasTrans, CBlasConjTrans.<br />
<br />
<br />
'''''M'''''<br />
: is the number of Rows in matrices A and C<br />
:M must be greater than or equal to zero. <br />
<br />
'''''N'''''<br />
:is the number of Columns in Matrices B and C<br />
<br />
'''''K'''''<br />
:is the number of Columns in matrix A and Rows in matrix B<br />
<br />
'''''alpha'''''<br />
:is the scaling constant for matrix a<br />
<br />
'''''A'''''<br />
:is the input matrix a of float (for sgemm).<br />
<br />
'''''lda'''''<br />
:is the leading dimension of the array specified by a. The leading dimension must be greater than zero. If transa is specified as 'N' or 'n', the leading dimension must be greater than or equal to 1. If transa is specified as 'T' or 't', the leading dimension must be greater than or equal to the value specified in m.<br />
<br />
'''''B'''''<br />
:is the input matrix b of float (for sgemm).<br />
<br />
'''''ldb'''''<br />
:is the leading dimension of the array specified by b. The leading dimension must be greater than zero. If transb is specified as 'N' or 'n', the leading dimension must be greater than or equal to the value specified in m. If transa is specified as 'T' or 't', the leading dimension must be greater than or equal to the value specified in n.<br />
<br />
'''''beta'''''<br />
:is the scaling constant for matrix c<br />
<br />
'''''C'''''<br />
:is the output matrix c of float (for sgemm) or double (for dgemm) values.<br />
<br />
'''''ldc'''''<br />
:is the leading dimension of the array specified by c. The leading dimension must be greater than zero. If transb is specified as 'N' or 'n', the leading dimension must be greater than or equal to 0 and greater than or equal to the value specified in l.<br />
<br />
https://scs.senecac.on.ca/~gpu610/pages/content/lines.html<br />
<br />
==Getting Started on Mac==<br />
http://developer.download.nvidia.com/compute/DevZone/docs/html/C/doc/CUDA_Getting_Started_Mac.pdf<br />
<br />
http://developer.nvidia.com/cuda/cuda-downloads<br />
<br />
====Troubleshooting====<br />
Problem with CUDA driver version 5.0.24 on MacBook Pro 2012 [http://blogs.adobe.com/premiereprotraining/2012/08/known-issues-with-cuda-5-0-17-driver-including-crashes-and-kernel-panics.html Fix]<br />
<br />
<br />
<br />
==References==<br />
<br />
<references/></div>Jboelenhttps://wiki.cdot.senecacollege.ca/w/index.php?title=GPU610/DPS915_Student_Resources&diff=88083GPU610/DPS915 Student Resources2012-09-20T20:29:30Z<p>Jboelen: /* segmm */</p>
<hr />
<div>{{GPU610/DPS915 Index | 20123}}<br />
=Student Resources=<br />
The purpose of this page is to share useful information that can help groups with their CUDA projects.<br />
<br />
==BLAS Documentation --- This section is a work in progress -- please do not edit [jboelen] ==<br />
<br />
Note: This information applies to the '''gsl_cblas''' library <br />
<br />
There are 2 main functions to use<br />
<br />
===segmv===<br />
void '''cblas_sgemv''' (''const enum CBLAS_ORDER '''order''', const enum CBLAS_TRANSPOSE '''TransA''', const int '''M''', const int '''N''', const float '''alpha''', const float * '''A''', const int '''lda''', const float * '''x''', const int '''incx''', const float '''beta''', float * '''y''', const int '''incy''''')<ref>http://www.gnu.org/software/gsl/manual/html_node/Level-2-CBLAS-Functions.html</ref><br />
<br />
'''''order'''''<br />
:Whether matrices are row major order (C-Style) for column major order (Fortran-style). One of enum CblasRowMajor or CblasColMajor.<br />
<br />
'''''TransA''''' <br />
:Whether to transpose matrix A. One of enum CblasNoTrans, CBlasTrans.<br />
<br />
'''''M'''''<br />
:represents:<br />
::the number of rows in input matrix a<br />
:The number of rows must be greater than or equal to zero, and less than the leading dimension of the matrix a (specified in lda)<br />
<br />
'''''N'''''<br />
:represents:<br />
::the number of columns in input matrix a<br />
:The number of columns must be greater than or equal to zero.<br />
<br />
'''''alpha'''''<br />
:is the scaling constant for matrix a<br />
<br />
'''''A'''''<br />
:is the input matrix of float (for sgemv) or double (for dgemv) values<br />
<br />
'''''lda'''''<br />
:is the leading dimension of the array specified by a. The leading dimension must be greater than zero. The leading dimension must be greater than or equal to 1 and greater than or equal to the value specified in m.<br />
<br />
'''''x'''''<br />
:is the input vector of float (for sgemv) or double (for dgemv) values.<br />
<br />
'''''incx'''''<br />
:is the stride for vector x. It can have any value.<br />
<br />
'''''beta'''''<br />
:is the scaling constant for vector y<br />
<br />
'''''y'''''<br />
:is the output vector of float (for sgemv) or double (for dgemv) values.<br />
<br />
'''''incy'''''<br />
:is the stride for vector y. It must not be zero.<br />
<br />
===segmm===<br />
void '''cblas_sgemm''' (''const enum CBLAS_ORDER '''Order''', const enum CBLAS_TRANSPOSE '''TransA''', const enum CBLAS_TRANSPOSE '''TransB''', const int '''M''', const int '''N''', const int '''K''', const float '''alpha''', const float * '''A''', const int '''lda''', const float * '''B''', const int '''ldb''', const float '''beta''', float * '''C''', const int '''ldc''''')<ref> http://www.gnu.org/software/gsl/manual/html_node/Level-3-CBLAS-Functions.html</ref><br />
<br />
'''''Order'''''<br />
:Whether matrices are row major order (C-Style) for column major order (Fortran-style). One of enum CblasRowMajor or CblasColMajor.<br />
<br />
<br />
'''''TransA'''''<br />
:Whether to transpose matrix A. One of enum CblasNoTrans, CBlasTrans, CBlasConjTrans<br />
<br />
<br />
'''''TransB'''''<br />
<br />
:Whether to transpose matrix B. One of enum CblasNoTrans, CBlasTrans, CBlasConjTrans.<br />
<br />
<br />
'''''M'''''<br />
: is the number of Rows in matrices A and C<br />
:M must be greater than or equal to zero. <br />
<br />
'''''N'''''<br />
:is the number of Columns in Matrices B and C<br />
<br />
'''''K'''''<br />
:is the number of Columns in matrix A and Rows in matrix B<br />
<br />
'''''alpha'''''<br />
:is the scaling constant for matrix a<br />
<br />
'''''A'''''<br />
:is the input matrix a of float (for sgemm).<br />
<br />
'''''lda'''''<br />
:is the leading dimension of the array specified by a. The leading dimension must be greater than zero. If transa is specified as 'N' or 'n', the leading dimension must be greater than or equal to 1. If transa is specified as 'T' or 't', the leading dimension must be greater than or equal to the value specified in m.<br />
<br />
'''''B'''''<br />
:is the input matrix b of float (for sgemm).<br />
<br />
'''''ldb'''''<br />
:is the leading dimension of the array specified by b. The leading dimension must be greater than zero. If transb is specified as 'N' or 'n', the leading dimension must be greater than or equal to the value specified in m. If transa is specified as 'T' or 't', the leading dimension must be greater than or equal to the value specified in n.<br />
<br />
'''''beta'''''<br />
:is the scaling constant for matrix c<br />
<br />
'''''C'''''<br />
:is the output matrix c of float (for sgemm) or double (for dgemm) values.<br />
<br />
'''''ldc'''''<br />
:is the leading dimension of the array specified by c. The leading dimension must be greater than zero. If transb is specified as 'N' or 'n', the leading dimension must be greater than or equal to 0 and greater than or equal to the value specified in l.<br />
<br />
https://scs.senecac.on.ca/~gpu610/pages/content/lines.html<br />
<br />
==Getting Started on Mac==<br />
http://developer.download.nvidia.com/compute/DevZone/docs/html/C/doc/CUDA_Getting_Started_Mac.pdf<br />
<br />
http://developer.nvidia.com/cuda/cuda-downloads<br />
<br />
====Troubleshooting====<br />
Problem with CUDA driver version 5.0.24 on MacBook Pro 2012 [http://blogs.adobe.com/premiereprotraining/2012/08/known-issues-with-cuda-5-0-17-driver-including-crashes-and-kernel-panics.html Fix]<br />
<br />
<br />
<br />
==References==<br />
<br />
<references/></div>Jboelenhttps://wiki.cdot.senecacollege.ca/w/index.php?title=GPU610/DPS915_Student_Resources&diff=88081GPU610/DPS915 Student Resources2012-09-20T20:29:14Z<p>Jboelen: /* segmv */</p>
<hr />
<div>{{GPU610/DPS915 Index | 20123}}<br />
=Student Resources=<br />
The purpose of this page is to share useful information that can help groups with their CUDA projects.<br />
<br />
==BLAS Documentation --- This section is a work in progress -- please do not edit [jboelen] ==<br />
<br />
Note: This information applies to the '''gsl_cblas''' library <br />
<br />
There are 2 main functions to use<br />
<br />
===segmv===<br />
void '''cblas_sgemv''' (''const enum CBLAS_ORDER '''order''', const enum CBLAS_TRANSPOSE '''TransA''', const int '''M''', const int '''N''', const float '''alpha''', const float * '''A''', const int '''lda''', const float * '''x''', const int '''incx''', const float '''beta''', float * '''y''', const int '''incy''''')<ref>http://www.gnu.org/software/gsl/manual/html_node/Level-2-CBLAS-Functions.html</ref><br />
<br />
'''''order'''''<br />
:Whether matrices are row major order (C-Style) for column major order (Fortran-style). One of enum CblasRowMajor or CblasColMajor.<br />
<br />
'''''TransA''''' <br />
:Whether to transpose matrix A. One of enum CblasNoTrans, CBlasTrans.<br />
<br />
'''''M'''''<br />
:represents:<br />
::the number of rows in input matrix a<br />
:The number of rows must be greater than or equal to zero, and less than the leading dimension of the matrix a (specified in lda)<br />
<br />
'''''N'''''<br />
:represents:<br />
::the number of columns in input matrix a<br />
:The number of columns must be greater than or equal to zero.<br />
<br />
'''''alpha'''''<br />
:is the scaling constant for matrix a<br />
<br />
'''''A'''''<br />
:is the input matrix of float (for sgemv) or double (for dgemv) values<br />
<br />
'''''lda'''''<br />
:is the leading dimension of the array specified by a. The leading dimension must be greater than zero. The leading dimension must be greater than or equal to 1 and greater than or equal to the value specified in m.<br />
<br />
'''''x'''''<br />
:is the input vector of float (for sgemv) or double (for dgemv) values.<br />
<br />
'''''incx'''''<br />
:is the stride for vector x. It can have any value.<br />
<br />
'''''beta'''''<br />
:is the scaling constant for vector y<br />
<br />
'''''y'''''<br />
:is the output vector of float (for sgemv) or double (for dgemv) values.<br />
<br />
'''''incy'''''<br />
:is the stride for vector y. It must not be zero.<br />
<br />
===segmm===<br />
void '''cblas_sgemm''' (''const enum CBLAS_ORDER '''Order''', const enum CBLAS_TRANSPOSE '''TransA''', const enum CBLAS_TRANSPOSE '''TransB''', const int '''M''', const int '''N''', const int '''K''', const float '''alpha''', const float * '''A''', const int '''lda''', const float * '''B''', const int '''ldb''', const float '''beta''', float * '''C''', const int '''ldc''''') <ref> http://www.gnu.org/software/gsl/manual/html_node/Level-3-CBLAS-Functions.html</ref><br />
<br />
'''''Order'''''<br />
:Whether matrices are row major order (C-Style) for column major order (Fortran-style). One of enum CblasRowMajor or CblasColMajor.<br />
<br />
<br />
'''''TransA'''''<br />
:Whether to transpose matrix A. One of enum CblasNoTrans, CBlasTrans, CBlasConjTrans<br />
<br />
<br />
'''''TransB'''''<br />
<br />
:Whether to transpose matrix B. One of enum CblasNoTrans, CBlasTrans, CBlasConjTrans.<br />
<br />
<br />
'''''M'''''<br />
: is the number of Rows in matrices A and C<br />
:M must be greater than or equal to zero. <br />
<br />
'''''N'''''<br />
:is the number of Columns in Matrices B and C<br />
<br />
'''''K'''''<br />
:is the number of Columns in matrix A and Rows in matrix B<br />
<br />
'''''alpha'''''<br />
:is the scaling constant for matrix a<br />
<br />
'''''A'''''<br />
:is the input matrix a of float (for sgemm).<br />
<br />
'''''lda'''''<br />
:is the leading dimension of the array specified by a. The leading dimension must be greater than zero. If transa is specified as 'N' or 'n', the leading dimension must be greater than or equal to 1. If transa is specified as 'T' or 't', the leading dimension must be greater than or equal to the value specified in m.<br />
<br />
'''''B'''''<br />
:is the input matrix b of float (for sgemm).<br />
<br />
'''''ldb'''''<br />
:is the leading dimension of the array specified by b. The leading dimension must be greater than zero. If transb is specified as 'N' or 'n', the leading dimension must be greater than or equal to the value specified in m. If transa is specified as 'T' or 't', the leading dimension must be greater than or equal to the value specified in n.<br />
<br />
'''''beta'''''<br />
:is the scaling constant for matrix c<br />
<br />
'''''C'''''<br />
:is the output matrix c of float (for sgemm) or double (for dgemm) values.<br />
<br />
'''''ldc'''''<br />
:is the leading dimension of the array specified by c. The leading dimension must be greater than zero. If transb is specified as 'N' or 'n', the leading dimension must be greater than or equal to 0 and greater than or equal to the value specified in l.<br />
<br />
https://scs.senecac.on.ca/~gpu610/pages/content/lines.html<br />
<br />
==Getting Started on Mac==<br />
http://developer.download.nvidia.com/compute/DevZone/docs/html/C/doc/CUDA_Getting_Started_Mac.pdf<br />
<br />
http://developer.nvidia.com/cuda/cuda-downloads<br />
<br />
====Troubleshooting====<br />
Problem with CUDA driver version 5.0.24 on MacBook Pro 2012 [http://blogs.adobe.com/premiereprotraining/2012/08/known-issues-with-cuda-5-0-17-driver-including-crashes-and-kernel-panics.html Fix]<br />
<br />
<br />
<br />
==References==<br />
<br />
<references/></div>Jboelenhttps://wiki.cdot.senecacollege.ca/w/index.php?title=GPU610/DPS915_Student_Resources&diff=88080GPU610/DPS915 Student Resources2012-09-20T20:28:19Z<p>Jboelen: /* segmm */</p>
<hr />
<div>{{GPU610/DPS915 Index | 20123}}<br />
=Student Resources=<br />
The purpose of this page is to share useful information that can help groups with their CUDA projects.<br />
<br />
==BLAS Documentation --- This section is a work in progress -- please do not edit [jboelen] ==<br />
<br />
Note: This information applies to the '''gsl_cblas''' library <br />
<br />
There are 2 main functions to use<br />
<br />
===segmv===<br />
void '''cblas_sgemv''' (''const enum CBLAS_ORDER order, const enum CBLAS_TRANSPOSE TransA, const int M, const int N, const float alpha, const float * A, const int lda, const float * x, const int incx, const float beta, float * y, const int incy'')<ref>http://www.gnu.org/software/gsl/manual/html_node/Level-2-CBLAS-Functions.html</ref><br />
<br />
'''''order'''''<br />
:Whether matrices are row major order (C-Style) for column major order (Fortran-style). One of enum CblasRowMajor or CblasColMajor.<br />
<br />
'''''TransA''''' <br />
:Whether to transpose matrix A. One of enum CblasNoTrans, CBlasTrans.<br />
<br />
'''''M'''''<br />
:represents:<br />
::the number of rows in input matrix a<br />
:The number of rows must be greater than or equal to zero, and less than the leading dimension of the matrix a (specified in lda)<br />
<br />
'''''N'''''<br />
:represents:<br />
::the number of columns in input matrix a<br />
:The number of columns must be greater than or equal to zero.<br />
<br />
'''''alpha'''''<br />
:is the scaling constant for matrix a<br />
<br />
'''''A'''''<br />
:is the input matrix of float (for sgemv) or double (for dgemv) values<br />
<br />
'''''lda'''''<br />
:is the leading dimension of the array specified by a. The leading dimension must be greater than zero. The leading dimension must be greater than or equal to 1 and greater than or equal to the value specified in m.<br />
<br />
'''''x'''''<br />
:is the input vector of float (for sgemv) or double (for dgemv) values.<br />
<br />
'''''incx'''''<br />
:is the stride for vector x. It can have any value.<br />
<br />
'''''beta'''''<br />
:is the scaling constant for vector y<br />
<br />
'''''y'''''<br />
:is the output vector of float (for sgemv) or double (for dgemv) values.<br />
<br />
'''''incy'''''<br />
:is the stride for vector y. It must not be zero.<br />
<br />
===segmm===<br />
void '''cblas_sgemm''' (''const enum CBLAS_ORDER '''Order''', const enum CBLAS_TRANSPOSE '''TransA''', const enum CBLAS_TRANSPOSE '''TransB''', const int '''M''', const int '''N''', const int '''K''', const float '''alpha''', const float * '''A''', const int '''lda''', const float * '''B''', const int '''ldb''', const float '''beta''', float * '''C''', const int '''ldc''''') <ref> http://www.gnu.org/software/gsl/manual/html_node/Level-3-CBLAS-Functions.html</ref><br />
<br />
'''''Order'''''<br />
:Whether matrices are row major order (C-Style) for column major order (Fortran-style). One of enum CblasRowMajor or CblasColMajor.<br />
<br />
<br />
'''''TransA'''''<br />
:Whether to transpose matrix A. One of enum CblasNoTrans, CBlasTrans, CBlasConjTrans<br />
<br />
<br />
'''''TransB'''''<br />
<br />
:Whether to transpose matrix B. One of enum CblasNoTrans, CBlasTrans, CBlasConjTrans.<br />
<br />
<br />
'''''M'''''<br />
: is the number of Rows in matrices A and C<br />
:M must be greater than or equal to zero. <br />
<br />
'''''N'''''<br />
:is the number of Columns in Matrices B and C<br />
<br />
'''''K'''''<br />
:is the number of Columns in matrix A and Rows in matrix B<br />
<br />
'''''alpha'''''<br />
:is the scaling constant for matrix a<br />
<br />
'''''A'''''<br />
:is the input matrix a of float (for sgemm).<br />
<br />
'''''lda'''''<br />
:is the leading dimension of the array specified by a. The leading dimension must be greater than zero. If transa is specified as 'N' or 'n', the leading dimension must be greater than or equal to 1. If transa is specified as 'T' or 't', the leading dimension must be greater than or equal to the value specified in m.<br />
<br />
'''''B'''''<br />
:is the input matrix b of float (for sgemm).<br />
<br />
'''''ldb'''''<br />
:is the leading dimension of the array specified by b. The leading dimension must be greater than zero. If transb is specified as 'N' or 'n', the leading dimension must be greater than or equal to the value specified in m. If transa is specified as 'T' or 't', the leading dimension must be greater than or equal to the value specified in n.<br />
<br />
'''''beta'''''<br />
:is the scaling constant for matrix c<br />
<br />
'''''C'''''<br />
:is the output matrix c of float (for sgemm) or double (for dgemm) values.<br />
<br />
'''''ldc'''''<br />
:is the leading dimension of the array specified by c. The leading dimension must be greater than zero. If transb is specified as 'N' or 'n', the leading dimension must be greater than or equal to 0 and greater than or equal to the value specified in l.<br />
<br />
https://scs.senecac.on.ca/~gpu610/pages/content/lines.html<br />
<br />
==Getting Started on Mac==<br />
http://developer.download.nvidia.com/compute/DevZone/docs/html/C/doc/CUDA_Getting_Started_Mac.pdf<br />
<br />
http://developer.nvidia.com/cuda/cuda-downloads<br />
<br />
====Troubleshooting====<br />
Problem with CUDA driver version 5.0.24 on MacBook Pro 2012 [http://blogs.adobe.com/premiereprotraining/2012/08/known-issues-with-cuda-5-0-17-driver-including-crashes-and-kernel-panics.html Fix]<br />
<br />
<br />
<br />
==References==<br />
<br />
<references/></div>Jboelenhttps://wiki.cdot.senecacollege.ca/w/index.php?title=GPU610/DPS915_Student_Resources&diff=88078GPU610/DPS915 Student Resources2012-09-20T20:25:02Z<p>Jboelen: /* Student Resources */</p>
<hr />
<div>{{GPU610/DPS915 Index | 20123}}<br />
=Student Resources=<br />
The purpose of this page is to share useful information that can help groups with their CUDA projects.<br />
<br />
==BLAS Documentation --- This section is a work in progress -- please do not edit [jboelen] ==<br />
<br />
Note: This information applies to the '''gsl_cblas''' library <br />
<br />
There are 2 main functions to use<br />
<br />
===segmv===<br />
void '''cblas_sgemv''' (''const enum CBLAS_ORDER order, const enum CBLAS_TRANSPOSE TransA, const int M, const int N, const float alpha, const float * A, const int lda, const float * x, const int incx, const float beta, float * y, const int incy'')<ref>http://www.gnu.org/software/gsl/manual/html_node/Level-2-CBLAS-Functions.html</ref><br />
<br />
'''''order'''''<br />
:Whether matrices are row major order (C-Style) for column major order (Fortran-style). One of enum CblasRowMajor or CblasColMajor.<br />
<br />
'''''TransA''''' <br />
:Whether to transpose matrix A. One of enum CblasNoTrans, CBlasTrans.<br />
<br />
'''''M'''''<br />
:represents:<br />
::the number of rows in input matrix a<br />
:The number of rows must be greater than or equal to zero, and less than the leading dimension of the matrix a (specified in lda)<br />
<br />
'''''N'''''<br />
:represents:<br />
::the number of columns in input matrix a<br />
:The number of columns must be greater than or equal to zero.<br />
<br />
'''''alpha'''''<br />
:is the scaling constant for matrix a<br />
<br />
'''''A'''''<br />
:is the input matrix of float (for sgemv) or double (for dgemv) values<br />
<br />
'''''lda'''''<br />
:is the leading dimension of the array specified by a. The leading dimension must be greater than zero. The leading dimension must be greater than or equal to 1 and greater than or equal to the value specified in m.<br />
<br />
'''''x'''''<br />
:is the input vector of float (for sgemv) or double (for dgemv) values.<br />
<br />
'''''incx'''''<br />
:is the stride for vector x. It can have any value.<br />
<br />
'''''beta'''''<br />
:is the scaling constant for vector y<br />
<br />
'''''y'''''<br />
:is the output vector of float (for sgemv) or double (for dgemv) values.<br />
<br />
'''''incy'''''<br />
:is the stride for vector y. It must not be zero.<br />
<br />
===segmm===<br />
void '''cblas_sgemm''' (''const enum CBLAS_ORDER Order, const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_TRANSPOSE TransB, const int M, const int N, const int K, const float alpha, const float * A, const int lda, const float * B, const int ldb, const float beta, float * C, const int ldc'') <ref> http://www.gnu.org/software/gsl/manual/html_node/Level-3-CBLAS-Functions.html</ref><br />
<br />
'''''M'''''<br />
: is the number of Rows in matrices A and C<br />
:M must be greater than or equal to zero. <br />
<br />
'''''N'''''<br />
:is the number of Columns in Matrices B and C<br />
<br />
'''''K'''''<br />
:is the number of Columns in matrix A and Rows in matrix B<br />
<br />
'''''alpha'''''<br />
:is the scaling constant for matrix a<br />
<br />
'''''A'''''<br />
:is the input matrix a of float (for sgemm).<br />
<br />
'''''lda'''''<br />
:is the leading dimension of the array specified by a. The leading dimension must be greater than zero. If transa is specified as 'N' or 'n', the leading dimension must be greater than or equal to 1. If transa is specified as 'T' or 't', the leading dimension must be greater than or equal to the value specified in m.<br />
<br />
'''''B'''''<br />
:is the input matrix b of float (for sgemm).<br />
<br />
'''''ldb'''''<br />
:is the leading dimension of the array specified by b. The leading dimension must be greater than zero. If transb is specified as 'N' or 'n', the leading dimension must be greater than or equal to the value specified in m. If transa is specified as 'T' or 't', the leading dimension must be greater than or equal to the value specified in n.<br />
<br />
'''''beta'''''<br />
:is the scaling constant for matrix c<br />
<br />
'''''C'''''<br />
:is the output matrix c of float (for sgemm) or double (for dgemm) values.<br />
<br />
'''''ldc'''''<br />
:is the leading dimension of the array specified by c. The leading dimension must be greater than zero. If transb is specified as 'N' or 'n', the leading dimension must be greater than or equal to 0 and greater than or equal to the value specified in l.<br />
<br />
https://scs.senecac.on.ca/~gpu610/pages/content/lines.html<br />
<br />
==Getting Started on Mac==<br />
http://developer.download.nvidia.com/compute/DevZone/docs/html/C/doc/CUDA_Getting_Started_Mac.pdf<br />
<br />
http://developer.nvidia.com/cuda/cuda-downloads<br />
<br />
====Troubleshooting====<br />
Problem with CUDA driver version 5.0.24 on MacBook Pro 2012 [http://blogs.adobe.com/premiereprotraining/2012/08/known-issues-with-cuda-5-0-17-driver-including-crashes-and-kernel-panics.html Fix]<br />
<br />
<br />
<br />
==References==<br />
<br />
<references/></div>Jboelenhttps://wiki.cdot.senecacollege.ca/w/index.php?title=GPU610/DPS915_Student_Resources&diff=88076GPU610/DPS915 Student Resources2012-09-20T20:24:03Z<p>Jboelen: /* segmm */</p>
<hr />
<div>{{GPU610/DPS915 Index | 20123}}<br />
=Student Resources=<br />
The purpose of this page is to share useful information that can help groups with their game projects.<br />
<br />
==BLAS Documentation --- This section is a work in progress -- please do not edit [jboelen] ==<br />
<br />
Note: This information applies to the '''gsl_cblas''' library <br />
<br />
There are 2 main functions to use<br />
<br />
===segmv===<br />
void '''cblas_sgemv''' (''const enum CBLAS_ORDER order, const enum CBLAS_TRANSPOSE TransA, const int M, const int N, const float alpha, const float * A, const int lda, const float * x, const int incx, const float beta, float * y, const int incy'')<ref>http://www.gnu.org/software/gsl/manual/html_node/Level-2-CBLAS-Functions.html</ref><br />
<br />
'''''order'''''<br />
:Whether matrices are row major order (C-Style) for column major order (Fortran-style). One of enum CblasRowMajor or CblasColMajor.<br />
<br />
'''''TransA''''' <br />
:Whether to transpose matrix A. One of enum CblasNoTrans, CBlasTrans.<br />
<br />
'''''M'''''<br />
:represents:<br />
::the number of rows in input matrix a<br />
:The number of rows must be greater than or equal to zero, and less than the leading dimension of the matrix a (specified in lda)<br />
<br />
'''''N'''''<br />
:represents:<br />
::the number of columns in input matrix a<br />
:The number of columns must be greater than or equal to zero.<br />
<br />
'''''alpha'''''<br />
:is the scaling constant for matrix a<br />
<br />
'''''A'''''<br />
:is the input matrix of float (for sgemv) or double (for dgemv) values<br />
<br />
'''''lda'''''<br />
:is the leading dimension of the array specified by a. The leading dimension must be greater than zero. The leading dimension must be greater than or equal to 1 and greater than or equal to the value specified in m.<br />
<br />
'''''x'''''<br />
:is the input vector of float (for sgemv) or double (for dgemv) values.<br />
<br />
'''''incx'''''<br />
:is the stride for vector x. It can have any value.<br />
<br />
'''''beta'''''<br />
:is the scaling constant for vector y<br />
<br />
'''''y'''''<br />
:is the output vector of float (for sgemv) or double (for dgemv) values.<br />
<br />
'''''incy'''''<br />
:is the stride for vector y. It must not be zero.<br />
<br />
===segmm===<br />
void '''cblas_sgemm''' (''const enum CBLAS_ORDER Order, const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_TRANSPOSE TransB, const int M, const int N, const int K, const float alpha, const float * A, const int lda, const float * B, const int ldb, const float beta, float * C, const int ldc'') <ref> http://www.gnu.org/software/gsl/manual/html_node/Level-3-CBLAS-Functions.html</ref><br />
<br />
'''''M'''''<br />
: is the number of Rows in matrices A and C<br />
:M must be greater than or equal to zero. <br />
<br />
'''''N'''''<br />
:is the number of Columns in Matrices B and C<br />
<br />
'''''K'''''<br />
:is the number of Columns in matrix A and Rows in matrix B<br />
<br />
'''''alpha'''''<br />
:is the scaling constant for matrix a<br />
<br />
'''''A'''''<br />
:is the input matrix a of float (for sgemm).<br />
<br />
'''''lda'''''<br />
:is the leading dimension of the array specified by a. The leading dimension must be greater than zero. If transa is specified as 'N' or 'n', the leading dimension must be greater than or equal to 1. If transa is specified as 'T' or 't', the leading dimension must be greater than or equal to the value specified in m.<br />
<br />
'''''B'''''<br />
:is the input matrix b of float (for sgemm).<br />
<br />
'''''ldb'''''<br />
:is the leading dimension of the array specified by b. The leading dimension must be greater than zero. If transb is specified as 'N' or 'n', the leading dimension must be greater than or equal to the value specified in m. If transa is specified as 'T' or 't', the leading dimension must be greater than or equal to the value specified in n.<br />
<br />
'''''beta'''''<br />
:is the scaling constant for matrix c<br />
<br />
'''''C'''''<br />
:is the output matrix c of float (for sgemm) or double (for dgemm) values.<br />
<br />
'''''ldc'''''<br />
:is the leading dimension of the array specified by c. The leading dimension must be greater than zero. If transb is specified as 'N' or 'n', the leading dimension must be greater than or equal to 0 and greater than or equal to the value specified in l.<br />
<br />
https://scs.senecac.on.ca/~gpu610/pages/content/lines.html<br />
<br />
==Getting Started on Mac==<br />
http://developer.download.nvidia.com/compute/DevZone/docs/html/C/doc/CUDA_Getting_Started_Mac.pdf<br />
<br />
http://developer.nvidia.com/cuda/cuda-downloads<br />
<br />
====Troubleshooting====<br />
Problem with CUDA driver version 5.0.24 on MacBook Pro 2012 [http://blogs.adobe.com/premiereprotraining/2012/08/known-issues-with-cuda-5-0-17-driver-including-crashes-and-kernel-panics.html Fix]<br />
<br />
<br />
<br />
==References==<br />
<br />
<references/></div>Jboelenhttps://wiki.cdot.senecacollege.ca/w/index.php?title=GPU610/DPS915_Student_Resources&diff=88074GPU610/DPS915 Student Resources2012-09-20T20:20:36Z<p>Jboelen: /* BLAS Documentation --- This section is a work in progress -- please do not edit [jboelen] */</p>
<hr />
<div>{{GPU610/DPS915 Index | 20123}}<br />
=Student Resources=<br />
The purpose of this page is to share useful information that can help groups with their game projects.<br />
<br />
==BLAS Documentation --- This section is a work in progress -- please do not edit [jboelen] ==<br />
<br />
Note: This information applies to the '''gsl_cblas''' library <br />
<br />
There are 2 main functions to use<br />
<br />
===segmv===<br />
void '''cblas_sgemv''' (''const enum CBLAS_ORDER order, const enum CBLAS_TRANSPOSE TransA, const int M, const int N, const float alpha, const float * A, const int lda, const float * x, const int incx, const float beta, float * y, const int incy'')<ref>http://www.gnu.org/software/gsl/manual/html_node/Level-2-CBLAS-Functions.html</ref><br />
<br />
'''''order'''''<br />
:Whether matrices are row major order (C-Style) for column major order (Fortran-style). One of enum CblasRowMajor or CblasColMajor.<br />
<br />
'''''TransA''''' <br />
:Whether to transpose matrix A. One of enum CblasNoTrans, CBlasTrans.<br />
<br />
'''''M'''''<br />
:represents:<br />
::the number of rows in input matrix a<br />
:The number of rows must be greater than or equal to zero, and less than the leading dimension of the matrix a (specified in lda)<br />
<br />
'''''N'''''<br />
:represents:<br />
::the number of columns in input matrix a<br />
:The number of columns must be greater than or equal to zero.<br />
<br />
'''''alpha'''''<br />
:is the scaling constant for matrix a<br />
<br />
'''''A'''''<br />
:is the input matrix of float (for sgemv) or double (for dgemv) values<br />
<br />
'''''lda'''''<br />
:is the leading dimension of the array specified by a. The leading dimension must be greater than zero. The leading dimension must be greater than or equal to 1 and greater than or equal to the value specified in m.<br />
<br />
'''''x'''''<br />
:is the input vector of float (for sgemv) or double (for dgemv) values.<br />
<br />
'''''incx'''''<br />
:is the stride for vector x. It can have any value.<br />
<br />
'''''beta'''''<br />
:is the scaling constant for vector y<br />
<br />
'''''y'''''<br />
:is the output vector of float (for sgemv) or double (for dgemv) values.<br />
<br />
'''''incy'''''<br />
:is the stride for vector y. It must not be zero.<br />
<br />
===segmm===<br />
void '''cblas_sgemm''' (''const enum CBLAS_ORDER Order, const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_TRANSPOSE TransB, const int M, const int N, const int K, const float alpha, const float * A, const int lda, const float * B, const int ldb, const float beta, float * C, const int ldc'') <ref> http://www.gnu.org/software/gsl/manual/html_node/Level-3-CBLAS-Functions.html</ref><br />
<br />
'''''M'''''<br />
:represents:<br />
::the number of rows in matrix A<br />
::and:<br />
::the number of rows in matrix B<br />
:M must be greater than or equal to zero. <br />
<br />
'''''N'''''<br />
:represents the number of columns in output matrix c. The number of columns must be greater than or equal to zero.<br />
<br />
'''''alpha'''''<br />
:is the scaling constant for matrix a<br />
<br />
<br />
'''''A'''''<br />
:is the input matrix a of float (for sgemm).<br />
<br />
'''''lda'''''<br />
:is the leading dimension of the array specified by a. The leading dimension must be greater than zero. If transa is specified as 'N' or 'n', the leading dimension must be greater than or equal to 1. If transa is specified as 'T' or 't', the leading dimension must be greater than or equal to the value specified in m.<br />
<br />
'''''b'''''<br />
:is the input matrix b of float (for sgemm).<br />
<br />
'''''ldb'''''<br />
:is the leading dimension of the array specified by b. The leading dimension must be greater than zero. If transb is specified as 'N' or 'n', the leading dimension must be greater than or equal to the value specified in m. If transa is specified as 'T' or 't', the leading dimension must be greater than or equal to the value specified in n.<br />
<br />
'''''beta'''''<br />
:is the scaling constant for matrix c<br />
<br />
'''''c'''''<br />
:is the output matrix c of float (for sgemm) or double (for dgemm) values.<br />
<br />
'''''ldc'''''<br />
:is the leading dimension of the array specified by c. The leading dimension must be greater than zero. If transb is specified as 'N' or 'n', the leading dimension must be greater than or equal to 0 and greater than or equal to the value specified in l.<br />
<br />
https://scs.senecac.on.ca/~gpu610/pages/content/lines.html<br />
<br />
==Getting Started on Mac==<br />
http://developer.download.nvidia.com/compute/DevZone/docs/html/C/doc/CUDA_Getting_Started_Mac.pdf<br />
<br />
http://developer.nvidia.com/cuda/cuda-downloads<br />
<br />
====Troubleshooting====<br />
Problem with CUDA driver version 5.0.24 on MacBook Pro 2012 [http://blogs.adobe.com/premiereprotraining/2012/08/known-issues-with-cuda-5-0-17-driver-including-crashes-and-kernel-panics.html Fix]<br />
<br />
<br />
<br />
==References==<br />
<br />
<references/></div>Jboelenhttps://wiki.cdot.senecacollege.ca/w/index.php?title=GPU610/DPS915_Student_Resources&diff=88073GPU610/DPS915 Student Resources2012-09-20T20:19:08Z<p>Jboelen: /* segmm */</p>
<hr />
<div>{{GPU610/DPS915 Index | 20123}}<br />
=Student Resources=<br />
The purpose of this page is to share useful information that can help groups with their game projects.<br />
<br />
==BLAS Documentation --- This section is a work in progress -- please do not edit [jboelen] ==<br />
<br />
Note: This information applies to the '''gsl_cblas''' library <br />
<br />
There are 2 main functions to use<br />
<br />
===segmv===<br />
void '''cblas_sgemv''' (''const enum CBLAS_ORDER order, const enum CBLAS_TRANSPOSE TransA, const int M, const int N, const float alpha, const float * A, const int lda, const float * x, const int incx, const float beta, float * y, const int incy'')<ref>http://www.gnu.org/software/gsl/manual/html_node/Level-2-CBLAS-Functions.html</ref><br />
<br />
'''''order'''''<br />
:Whether matrices are row major order (C-Style) for column major order (Fortran-style). One of enum CblasRowMajor or CblasColMajor.<br />
<br />
'''''TransA''''' <br />
:Whether to transpose matrix A. One of enum CblasNoTrans, CBlasTrans.<br />
<br />
'''''M'''''<br />
:represents:<br />
::the number of rows in input matrix a<br />
::: the length of vector y, if 'N' or 'n' is used for the trans parameter<br />
:::the length of vector x, if 'T' or 't' is used for the trans parameter<br />
:The number of rows must be greater than or equal to zero, and less than the leading dimension of the matrix a (specified in lda)<br />
<br />
'''''N'''''<br />
:represents:<br />
::the number of columns in input matrix a<br />
:::the length of vector x, if 'N' or 'n' is used for the trans parameter<br />
:::the length of vector y, if 'T' or 't' is used for the trans parameter<br />
:The number of columns must be greater than or equal to zero.<br />
<br />
'''''alpha'''''<br />
:is the scaling constant for matrix a<br />
<br />
'''''A'''''<br />
:is the input matrix of float (for sgemv) or double (for dgemv) values<br />
<br />
'''''lda'''''<br />
:is the leading dimension of the array specified by a. The leading dimension must be greater than zero. The leading dimension must be greater than or equal to 1 and greater than or equal to the value specified in m.<br />
<br />
'''''x'''''<br />
:is the input vector of float (for sgemv) or double (for dgemv) values.<br />
<br />
'''''incx'''''<br />
:is the stride for vector x. It can have any value.<br />
<br />
'''''beta'''''<br />
:is the scaling constant for vector y<br />
<br />
'''''y'''''<br />
:is the output vector of float (for sgemv) or double (for dgemv) values.<br />
<br />
'''''incy'''''<br />
:is the stride for vector y. It must not be zero.<br />
<br />
===segmm===<br />
void '''cblas_sgemm''' (''const enum CBLAS_ORDER Order, const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_TRANSPOSE TransB, const int M, const int N, const int K, const float alpha, const float * A, const int lda, const float * B, const int ldb, const float beta, float * C, const int ldc'') <ref> http://www.gnu.org/software/gsl/manual/html_node/Level-3-CBLAS-Functions.html</ref><br />
<br />
'''''M'''''<br />
:represents:<br />
::the number of rows in matrix a<br />
<br />
::and:<br />
<br />
::the number of rows in matrix b, if 'N' or 'n' is used for the transb parameter<br />
<br />
::the number of columns in matrix b, if 'T' or 't' is used for the transb parameter<br />
<br />
:m must be greater than or equal to zero. <br />
<br />
<br />
<br />
<br />
'''''N'''''<br />
:represents the number of columns in output matrix c. The number of columns must be greater than or equal to zero.<br />
<br />
'''''alpha'''''<br />
:is the scaling constant for matrix a<br />
<br />
<br />
'''''A'''''<br />
:is the input matrix a of float (for sgemm).<br />
<br />
'''''lda'''''<br />
:is the leading dimension of the array specified by a. The leading dimension must be greater than zero. If transa is specified as 'N' or 'n', the leading dimension must be greater than or equal to 1. If transa is specified as 'T' or 't', the leading dimension must be greater than or equal to the value specified in m.<br />
<br />
'''''b'''''<br />
:is the input matrix b of float (for sgemm).<br />
<br />
'''''ldb'''''<br />
:is the leading dimension of the array specified by b. The leading dimension must be greater than zero. If transb is specified as 'N' or 'n', the leading dimension must be greater than or equal to the value specified in m. If transa is specified as 'T' or 't', the leading dimension must be greater than or equal to the value specified in n.<br />
<br />
'''''beta'''''<br />
:is the scaling constant for matrix c<br />
<br />
'''''c'''''<br />
:is the output matrix c of float (for sgemm) or double (for dgemm) values.<br />
<br />
'''''ldc'''''<br />
:is the leading dimension of the array specified by c. The leading dimension must be greater than zero. If transb is specified as 'N' or 'n', the leading dimension must be greater than or equal to 0 and greater than or equal to the value specified in l.<br />
<br />
https://scs.senecac.on.ca/~gpu610/pages/content/lines.html<br />
<br />
==Getting Started on Mac==<br />
http://developer.download.nvidia.com/compute/DevZone/docs/html/C/doc/CUDA_Getting_Started_Mac.pdf<br />
<br />
http://developer.nvidia.com/cuda/cuda-downloads<br />
<br />
====Troubleshooting====<br />
Problem with CUDA driver version 5.0.24 on MacBook Pro 2012 [http://blogs.adobe.com/premiereprotraining/2012/08/known-issues-with-cuda-5-0-17-driver-including-crashes-and-kernel-panics.html Fix]<br />
<br />
<br />
<br />
==References==<br />
<br />
<references/></div>Jboelenhttps://wiki.cdot.senecacollege.ca/w/index.php?title=GPU610/DPS915_Student_Resources&diff=88072GPU610/DPS915 Student Resources2012-09-20T20:15:32Z<p>Jboelen: /* segmvhttp://publib.boulder.ibm.com/infocenter/comphelp/v8v101/index.jsp?topic=%2Fcom.ibm.xlcpp8a.doc%2Fproguide%2Fref%2Fblaslib.htm */</p>
<hr />
<div>{{GPU610/DPS915 Index | 20123}}<br />
=Student Resources=<br />
The purpose of this page is to share useful information that can help groups with their game projects.<br />
<br />
==BLAS Documentation --- This section is a work in progress -- please do not edit [jboelen] ==<br />
<br />
Note: This information applies to the '''gsl_cblas''' library <br />
<br />
There are 2 main functions to use<br />
<br />
===segmv===<br />
void '''cblas_sgemv''' (''const enum CBLAS_ORDER order, const enum CBLAS_TRANSPOSE TransA, const int M, const int N, const float alpha, const float * A, const int lda, const float * x, const int incx, const float beta, float * y, const int incy'')<ref>http://www.gnu.org/software/gsl/manual/html_node/Level-2-CBLAS-Functions.html</ref><br />
<br />
'''''order'''''<br />
:Whether matrices are row major order (C-Style) for column major order (Fortran-style). One of enum CblasRowMajor or CblasColMajor.<br />
<br />
'''''TransA''''' <br />
:Whether to transpose matrix A. One of enum CblasNoTrans, CBlasTrans.<br />
<br />
'''''M'''''<br />
:represents:<br />
::the number of rows in input matrix a<br />
::: the length of vector y, if 'N' or 'n' is used for the trans parameter<br />
:::the length of vector x, if 'T' or 't' is used for the trans parameter<br />
:The number of rows must be greater than or equal to zero, and less than the leading dimension of the matrix a (specified in lda)<br />
<br />
'''''N'''''<br />
:represents:<br />
::the number of columns in input matrix a<br />
:::the length of vector x, if 'N' or 'n' is used for the trans parameter<br />
:::the length of vector y, if 'T' or 't' is used for the trans parameter<br />
:The number of columns must be greater than or equal to zero.<br />
<br />
'''''alpha'''''<br />
:is the scaling constant for matrix a<br />
<br />
'''''A'''''<br />
:is the input matrix of float (for sgemv) or double (for dgemv) values<br />
<br />
'''''lda'''''<br />
:is the leading dimension of the array specified by a. The leading dimension must be greater than zero. The leading dimension must be greater than or equal to 1 and greater than or equal to the value specified in m.<br />
<br />
'''''x'''''<br />
:is the input vector of float (for sgemv) or double (for dgemv) values.<br />
<br />
'''''incx'''''<br />
:is the stride for vector x. It can have any value.<br />
<br />
'''''beta'''''<br />
:is the scaling constant for vector y<br />
<br />
'''''y'''''<br />
:is the output vector of float (for sgemv) or double (for dgemv) values.<br />
<br />
'''''incy'''''<br />
:is the stride for vector y. It must not be zero.<br />
<br />
===segmm===<br />
void '''cblas_sgemm''' (''const enum CBLAS_ORDER Order, const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_TRANSPOSE TransB, const int M, const int N, const int K, const float alpha, const float * A, const int lda, const float * B, const int ldb, const float beta, float * C, const int ldc'') <ref> http://www.gnu.org/software/gsl/manual/html_node/Level-3-CBLAS-Functions.html</ref><br />
'''''l'''''<br />
<br />
:represents the number of rows in output matrix c. The number of rows must be greater than or equal to zero, and less than the leading dimension of c.<br />
<br />
<br />
<br />
'''''n'''''<br />
<br />
:represents the number of columns in output matrix c. The number of columns must be greater than or equal to zero.<br />
<br />
<br />
<br />
'''''m'''''<br />
<br />
:represents:<br />
<br />
::the number of columns in matrix a, if 'N' or 'n' is used for the transa parameter<br />
<br />
::the number of rows in matrix a, if 'T' or 't' is used for the transa parameter<br />
<br />
::and:<br />
<br />
::the number of rows in matrix b, if 'N' or 'n' is used for the transb parameter<br />
<br />
::the number of columns in matrix b, if 'T' or 't' is used for the transb parameter<br />
<br />
:m must be greater than or equal to zero.<br />
<br />
<br />
<br />
'''''alpha'''''<br />
<br />
:is the scaling constant for matrix a<br />
<br />
<br />
<br />
'''''a'''''<br />
<br />
:is the input matrix a of float (for sgemm) or double (for dgemm) values<br />
<br />
<br />
<br />
'''''lda'''''<br />
<br />
:is the leading dimension of the array specified by a. The leading dimension must be greater than zero. If transa is specified as 'N' or 'n', the leading dimension must be greater than or equal to 1. If transa is specified as 'T' or 't', the leading dimension must be greater than or equal to the value specified in m.<br />
<br />
<br />
<br />
'''''b'''''<br />
<br />
:is the input matrix b of float (for sgemm) or double (for dgemm) values.<br />
<br />
<br />
<br />
'''''ldb'''''<br />
<br />
:is the leading dimension of the array specified by b. The leading dimension must be greater than zero. If transb is specified as 'N' or 'n', the leading dimension must be greater than or equal to the value specified in m. If transa is specified as 'T' or 't', the leading dimension must be greater than or equal to the value specified in n.<br />
<br />
<br />
<br />
'''''beta'''''<br />
<br />
:is the scaling constant for matrix c<br />
<br />
<br />
<br />
'''''c'''''<br />
<br />
:is the output matrix c of float (for sgemm) or double (for dgemm) values.<br />
<br />
<br />
<br />
'''''ldc'''''<br />
<br />
:is the leading dimension of the array specified by c. The leading dimension must be greater than zero. If transb is specified as 'N' or 'n', the leading dimension must be greater than or equal to 0 and greater than or equal to the value specified in l.<br />
<br />
https://scs.senecac.on.ca/~gpu610/pages/content/lines.html<br />
<br />
==Getting Started on Mac==<br />
http://developer.download.nvidia.com/compute/DevZone/docs/html/C/doc/CUDA_Getting_Started_Mac.pdf<br />
<br />
http://developer.nvidia.com/cuda/cuda-downloads<br />
<br />
====Troubleshooting====<br />
Problem with CUDA driver version 5.0.24 on MacBook Pro 2012 [http://blogs.adobe.com/premiereprotraining/2012/08/known-issues-with-cuda-5-0-17-driver-including-crashes-and-kernel-panics.html Fix]<br />
<br />
<br />
<br />
==References==<br />
<br />
<references/></div>Jboelenhttps://wiki.cdot.senecacollege.ca/w/index.php?title=GPU610/DPS915_Student_Resources&diff=88071GPU610/DPS915 Student Resources2012-09-20T20:08:33Z<p>Jboelen: /* segmm */</p>
<hr />
<div>{{GPU610/DPS915 Index | 20123}}<br />
=Student Resources=<br />
The purpose of this page is to share useful information that can help groups with their game projects.<br />
<br />
==BLAS Documentation --- This section is a work in progress -- please do not edit [jboelen] ==<br />
<br />
Note: This information applies to the '''gsl_cblas''' library <br />
<br />
There are 2 main functions to use<br />
<br />
===segmv<ref>http://publib.boulder.ibm.com/infocenter/comphelp/v8v101/index.jsp?topic=%2Fcom.ibm.xlcpp8a.doc%2Fproguide%2Fref%2Fblaslib.htm</ref> ===<br />
void '''cblas_sgemv''' (''const enum CBLAS_ORDER order, const enum CBLAS_TRANSPOSE TransA, const int M, const int N, const float alpha, const float * A, const int lda, const float * x, const int incx, const float beta, float * y, const int incy'')<ref>http://www.gnu.org/software/gsl/manual/html_node/Level-2-CBLAS-Functions.html</ref><br />
<br />
'''''order'''''<br />
:Whether matrices are row major order (C-Style) for column major order (Fortran-style). One of enum CblasRowMajor or CblasColMajor.<br />
<br />
'''''TransA''''' <br />
:Whether to transpose matrix A. One of enum CblasNoTrans, CBlasTrans.<br />
<br />
'''''M'''''<br />
:represents:<br />
::the number of rows in input matrix a<br />
::: the length of vector y, if 'N' or 'n' is used for the trans parameter<br />
:::the length of vector x, if 'T' or 't' is used for the trans parameter<br />
:The number of rows must be greater than or equal to zero, and less than the leading dimension of the matrix a (specified in lda)<br />
<br />
'''''N'''''<br />
:represents:<br />
::the number of columns in input matrix a<br />
:::the length of vector x, if 'N' or 'n' is used for the trans parameter<br />
:::the length of vector y, if 'T' or 't' is used for the trans parameter<br />
:The number of columns must be greater than or equal to zero.<br />
<br />
'''''alpha'''''<br />
:is the scaling constant for matrix a<br />
<br />
'''''A'''''<br />
:is the input matrix of float (for sgemv) or double (for dgemv) values<br />
<br />
'''''lda'''''<br />
:is the leading dimension of the array specified by a. The leading dimension must be greater than zero. The leading dimension must be greater than or equal to 1 and greater than or equal to the value specified in m.<br />
<br />
'''''x'''''<br />
:is the input vector of float (for sgemv) or double (for dgemv) values.<br />
<br />
'''''incx'''''<br />
:is the stride for vector x. It can have any value.<br />
<br />
'''''beta'''''<br />
:is the scaling constant for vector y<br />
<br />
'''''y'''''<br />
:is the output vector of float (for sgemv) or double (for dgemv) values.<br />
<br />
'''''incy'''''<br />
:is the stride for vector y. It must not be zero.<br />
<br />
===segmm===<br />
void '''cblas_sgemm''' (''const enum CBLAS_ORDER Order, const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_TRANSPOSE TransB, const int M, const int N, const int K, const float alpha, const float * A, const int lda, const float * B, const int ldb, const float beta, float * C, const int ldc'') <ref> http://www.gnu.org/software/gsl/manual/html_node/Level-3-CBLAS-Functions.html</ref><br />
'''''l'''''<br />
<br />
:represents the number of rows in output matrix c. The number of rows must be greater than or equal to zero, and less than the leading dimension of c.<br />
<br />
<br />
<br />
'''''n'''''<br />
<br />
:represents the number of columns in output matrix c. The number of columns must be greater than or equal to zero.<br />
<br />
<br />
<br />
'''''m'''''<br />
<br />
:represents:<br />
<br />
::the number of columns in matrix a, if 'N' or 'n' is used for the transa parameter<br />
<br />
::the number of rows in matrix a, if 'T' or 't' is used for the transa parameter<br />
<br />
::and:<br />
<br />
::the number of rows in matrix b, if 'N' or 'n' is used for the transb parameter<br />
<br />
::the number of columns in matrix b, if 'T' or 't' is used for the transb parameter<br />
<br />
:m must be greater than or equal to zero.<br />
<br />
<br />
<br />
'''''alpha'''''<br />
<br />
:is the scaling constant for matrix a<br />
<br />
<br />
<br />
'''''a'''''<br />
<br />
:is the input matrix a of float (for sgemm) or double (for dgemm) values<br />
<br />
<br />
<br />
'''''lda'''''<br />
<br />
:is the leading dimension of the array specified by a. The leading dimension must be greater than zero. If transa is specified as 'N' or 'n', the leading dimension must be greater than or equal to 1. If transa is specified as 'T' or 't', the leading dimension must be greater than or equal to the value specified in m.<br />
<br />
<br />
<br />
'''''b'''''<br />
<br />
:is the input matrix b of float (for sgemm) or double (for dgemm) values.<br />
<br />
<br />
<br />
'''''ldb'''''<br />
<br />
:is the leading dimension of the array specified by b. The leading dimension must be greater than zero. If transb is specified as 'N' or 'n', the leading dimension must be greater than or equal to the value specified in m. If transa is specified as 'T' or 't', the leading dimension must be greater than or equal to the value specified in n.<br />
<br />
<br />
<br />
'''''beta'''''<br />
<br />
:is the scaling constant for matrix c<br />
<br />
<br />
<br />
'''''c'''''<br />
<br />
:is the output matrix c of float (for sgemm) or double (for dgemm) values.<br />
<br />
<br />
<br />
'''''ldc'''''<br />
<br />
:is the leading dimension of the array specified by c. The leading dimension must be greater than zero. If transb is specified as 'N' or 'n', the leading dimension must be greater than or equal to 0 and greater than or equal to the value specified in l.<br />
<br />
https://scs.senecac.on.ca/~gpu610/pages/content/lines.html<br />
<br />
==Getting Started on Mac==<br />
http://developer.download.nvidia.com/compute/DevZone/docs/html/C/doc/CUDA_Getting_Started_Mac.pdf<br />
<br />
http://developer.nvidia.com/cuda/cuda-downloads<br />
<br />
====Troubleshooting====<br />
Problem with CUDA driver version 5.0.24 on MacBook Pro 2012 [http://blogs.adobe.com/premiereprotraining/2012/08/known-issues-with-cuda-5-0-17-driver-including-crashes-and-kernel-panics.html Fix]<br />
<br />
<br />
<br />
==References==<br />
<br />
<references/></div>Jboelenhttps://wiki.cdot.senecacollege.ca/w/index.php?title=GPU610/DPS915_Student_Resources&diff=88068GPU610/DPS915 Student Resources2012-09-20T20:02:45Z<p>Jboelen: /* segmm */</p>
<hr />
<div>{{GPU610/DPS915 Index | 20123}}<br />
=Student Resources=<br />
The purpose of this page is to share useful information that can help groups with their game projects.<br />
<br />
==BLAS Documentation --- This section is a work in progress -- please do not edit [jboelen] ==<br />
<br />
Note: This information applies to the '''gsl_cblas''' library <br />
<br />
There are 2 main functions to use<br />
<br />
===segmv<ref>http://publib.boulder.ibm.com/infocenter/comphelp/v8v101/index.jsp?topic=%2Fcom.ibm.xlcpp8a.doc%2Fproguide%2Fref%2Fblaslib.htm</ref> ===<br />
void '''cblas_sgemv''' (''const enum CBLAS_ORDER order, const enum CBLAS_TRANSPOSE TransA, const int M, const int N, const float alpha, const float * A, const int lda, const float * x, const int incx, const float beta, float * y, const int incy'')<ref>http://www.gnu.org/software/gsl/manual/html_node/Level-2-CBLAS-Functions.html</ref><br />
<br />
'''''order'''''<br />
:Whether matrices are row major order (C-Style) for column major order (Fortran-style). One of enum CblasRowMajor or CblasColMajor.<br />
<br />
'''''TransA''''' <br />
:Whether to transpose matrix A. One of enum CblasNoTrans, CBlasTrans.<br />
<br />
'''''M'''''<br />
:represents:<br />
::the number of rows in input matrix a<br />
::: the length of vector y, if 'N' or 'n' is used for the trans parameter<br />
:::the length of vector x, if 'T' or 't' is used for the trans parameter<br />
:The number of rows must be greater than or equal to zero, and less than the leading dimension of the matrix a (specified in lda)<br />
<br />
'''''N'''''<br />
:represents:<br />
::the number of columns in input matrix a<br />
:::the length of vector x, if 'N' or 'n' is used for the trans parameter<br />
:::the length of vector y, if 'T' or 't' is used for the trans parameter<br />
:The number of columns must be greater than or equal to zero.<br />
<br />
'''''alpha'''''<br />
:is the scaling constant for matrix a<br />
<br />
'''''A'''''<br />
:is the input matrix of float (for sgemv) or double (for dgemv) values<br />
<br />
'''''lda'''''<br />
:is the leading dimension of the array specified by a. The leading dimension must be greater than zero. The leading dimension must be greater than or equal to 1 and greater than or equal to the value specified in m.<br />
<br />
'''''x'''''<br />
:is the input vector of float (for sgemv) or double (for dgemv) values.<br />
<br />
'''''incx'''''<br />
:is the stride for vector x. It can have any value.<br />
<br />
'''''beta'''''<br />
:is the scaling constant for vector y<br />
<br />
'''''y'''''<br />
:is the output vector of float (for sgemv) or double (for dgemv) values.<br />
<br />
'''''incy'''''<br />
:is the stride for vector y. It must not be zero.<br />
<br />
===segmm===<br />
void '''cblas_sgemm''' (''const enum CBLAS_ORDER Order, const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_TRANSPOSE TransB, const int M, const int N, const int K, const float alpha, const float * A, const int lda, const float * B, const int ldb, const float beta, float * C, const int ldc'') <ref> http://www.gnu.org/software/gsl/manual/html_node/Level-3-CBLAS-Functions.html</ref><br />
<br />
https://scs.senecac.on.ca/~gpu610/pages/content/lines.html<br />
<br />
==Getting Started on Mac==<br />
http://developer.download.nvidia.com/compute/DevZone/docs/html/C/doc/CUDA_Getting_Started_Mac.pdf<br />
<br />
http://developer.nvidia.com/cuda/cuda-downloads<br />
<br />
====Troubleshooting====<br />
Problem with CUDA driver version 5.0.24 on MacBook Pro 2012 [http://blogs.adobe.com/premiereprotraining/2012/08/known-issues-with-cuda-5-0-17-driver-including-crashes-and-kernel-panics.html Fix]<br />
<br />
<br />
<br />
==References==<br />
<br />
<references/></div>Jboelenhttps://wiki.cdot.senecacollege.ca/w/index.php?title=GPU610/DPS915_Student_Resources&diff=88066GPU610/DPS915 Student Resources2012-09-20T19:56:46Z<p>Jboelen: /* segmm */</p>
<hr />
<div>{{GPU610/DPS915 Index | 20123}}<br />
=Student Resources=<br />
The purpose of this page is to share useful information that can help groups with their game projects.<br />
<br />
==BLAS Documentation --- This section is a work in progress -- please do not edit [jboelen] ==<br />
<br />
Note: This information applies to the '''gsl_cblas''' library <br />
<br />
There are 2 main functions to use<br />
<br />
===segmv<ref>http://publib.boulder.ibm.com/infocenter/comphelp/v8v101/index.jsp?topic=%2Fcom.ibm.xlcpp8a.doc%2Fproguide%2Fref%2Fblaslib.htm</ref> ===<br />
void '''cblas_sgemv''' (''const enum CBLAS_ORDER order, const enum CBLAS_TRANSPOSE TransA, const int M, const int N, const float alpha, const float * A, const int lda, const float * x, const int incx, const float beta, float * y, const int incy'')<ref>http://www.gnu.org/software/gsl/manual/html_node/Level-2-CBLAS-Functions.html</ref><br />
<br />
'''''order'''''<br />
:Whether matrices are row major order (C-Style) for column major order (Fortran-style). One of enum CblasRowMajor or CblasColMajor.<br />
<br />
'''''TransA''''' <br />
:Whether to transpose matrix A. One of enum CblasNoTrans, CBlasTrans.<br />
<br />
'''''M'''''<br />
:represents:<br />
::the number of rows in input matrix a<br />
::: the length of vector y, if 'N' or 'n' is used for the trans parameter<br />
:::the length of vector x, if 'T' or 't' is used for the trans parameter<br />
:The number of rows must be greater than or equal to zero, and less than the leading dimension of the matrix a (specified in lda)<br />
<br />
'''''N'''''<br />
:represents:<br />
::the number of columns in input matrix a<br />
:::the length of vector x, if 'N' or 'n' is used for the trans parameter<br />
:::the length of vector y, if 'T' or 't' is used for the trans parameter<br />
:The number of columns must be greater than or equal to zero.<br />
<br />
'''''alpha'''''<br />
:is the scaling constant for matrix a<br />
<br />
'''''A'''''<br />
:is the input matrix of float (for sgemv) or double (for dgemv) values<br />
<br />
'''''lda'''''<br />
:is the leading dimension of the array specified by a. The leading dimension must be greater than zero. The leading dimension must be greater than or equal to 1 and greater than or equal to the value specified in m.<br />
<br />
'''''x'''''<br />
:is the input vector of float (for sgemv) or double (for dgemv) values.<br />
<br />
'''''incx'''''<br />
:is the stride for vector x. It can have any value.<br />
<br />
'''''beta'''''<br />
:is the scaling constant for vector y<br />
<br />
'''''y'''''<br />
:is the output vector of float (for sgemv) or double (for dgemv) values.<br />
<br />
'''''incy'''''<br />
:is the stride for vector y. It must not be zero.<br />
<br />
===segmm===<br />
void '''cblas_sgemm''' (''const enum CBLAS_ORDER Order, const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_TRANSPOSE TransB, const int M, const int N, const int K, const float alpha, const float * A, const int lda, const float * B, const int ldb, const float beta, float * C, const int ldc'') <br />
<br />
https://scs.senecac.on.ca/~gpu610/pages/content/lines.html<br />
<br />
==Getting Started on Mac==<br />
http://developer.download.nvidia.com/compute/DevZone/docs/html/C/doc/CUDA_Getting_Started_Mac.pdf<br />
<br />
http://developer.nvidia.com/cuda/cuda-downloads<br />
<br />
====Troubleshooting====<br />
Problem with CUDA driver version 5.0.24 on MacBook Pro 2012 [http://blogs.adobe.com/premiereprotraining/2012/08/known-issues-with-cuda-5-0-17-driver-including-crashes-and-kernel-panics.html Fix]<br />
<br />
<br />
<br />
==References==<br />
<br />
<references/></div>Jboelenhttps://wiki.cdot.senecacollege.ca/w/index.php?title=GPU610/DPS915_Student_Resources&diff=88064GPU610/DPS915 Student Resources2012-09-20T19:55:34Z<p>Jboelen: /* segmvhttp://publib.boulder.ibm.com/infocenter/comphelp/v8v101/index.jsp?topic=%2Fcom.ibm.xlcpp8a.doc%2Fproguide%2Fref%2Fblaslib.htm */</p>
<hr />
<div>{{GPU610/DPS915 Index | 20123}}<br />
=Student Resources=<br />
The purpose of this page is to share useful information that can help groups with their game projects.<br />
<br />
==BLAS Documentation --- This section is a work in progress -- please do not edit [jboelen] ==<br />
<br />
Note: This information applies to the '''gsl_cblas''' library <br />
<br />
There are 2 main functions to use<br />
<br />
===segmv<ref>http://publib.boulder.ibm.com/infocenter/comphelp/v8v101/index.jsp?topic=%2Fcom.ibm.xlcpp8a.doc%2Fproguide%2Fref%2Fblaslib.htm</ref> ===<br />
void '''cblas_sgemv''' (''const enum CBLAS_ORDER order, const enum CBLAS_TRANSPOSE TransA, const int M, const int N, const float alpha, const float * A, const int lda, const float * x, const int incx, const float beta, float * y, const int incy'')<ref>http://www.gnu.org/software/gsl/manual/html_node/Level-2-CBLAS-Functions.html</ref><br />
<br />
'''''order'''''<br />
:Whether matrices are row major order (C-Style) for column major order (Fortran-style). One of enum CblasRowMajor or CblasColMajor.<br />
<br />
'''''TransA''''' <br />
:Whether to transpose matrix A. One of enum CblasNoTrans, CBlasTrans.<br />
<br />
'''''M'''''<br />
:represents:<br />
::the number of rows in input matrix a<br />
::: the length of vector y, if 'N' or 'n' is used for the trans parameter<br />
:::the length of vector x, if 'T' or 't' is used for the trans parameter<br />
:The number of rows must be greater than or equal to zero, and less than the leading dimension of the matrix a (specified in lda)<br />
<br />
'''''N'''''<br />
:represents:<br />
::the number of columns in input matrix a<br />
:::the length of vector x, if 'N' or 'n' is used for the trans parameter<br />
:::the length of vector y, if 'T' or 't' is used for the trans parameter<br />
:The number of columns must be greater than or equal to zero.<br />
<br />
'''''alpha'''''<br />
:is the scaling constant for matrix a<br />
<br />
'''''A'''''<br />
:is the input matrix of float (for sgemv) or double (for dgemv) values<br />
<br />
'''''lda'''''<br />
:is the leading dimension of the array specified by a. The leading dimension must be greater than zero. The leading dimension must be greater than or equal to 1 and greater than or equal to the value specified in m.<br />
<br />
'''''x'''''<br />
:is the input vector of float (for sgemv) or double (for dgemv) values.<br />
<br />
'''''incx'''''<br />
:is the stride for vector x. It can have any value.<br />
<br />
'''''beta'''''<br />
:is the scaling constant for vector y<br />
<br />
'''''y'''''<br />
:is the output vector of float (for sgemv) or double (for dgemv) values.<br />
<br />
'''''incy'''''<br />
:is the stride for vector y. It must not be zero.<br />
<br />
===segmm===<br />
void cblas_sgemm (const enum CBLAS_ORDER Order, const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_TRANSPOSE TransB, const int M, const int N, const int K, const float alpha, const float * A, const int lda, const float * B, const int ldb, const float beta, float * C, const int ldc) <br />
<br />
https://scs.senecac.on.ca/~gpu610/pages/content/lines.html<br />
<br />
==Getting Started on Mac==<br />
http://developer.download.nvidia.com/compute/DevZone/docs/html/C/doc/CUDA_Getting_Started_Mac.pdf<br />
<br />
http://developer.nvidia.com/cuda/cuda-downloads<br />
<br />
====Troubleshooting====<br />
Problem with CUDA driver version 5.0.24 on MacBook Pro 2012 [http://blogs.adobe.com/premiereprotraining/2012/08/known-issues-with-cuda-5-0-17-driver-including-crashes-and-kernel-panics.html Fix]<br />
<br />
<br />
<br />
==References==<br />
<br />
<references/></div>Jboelenhttps://wiki.cdot.senecacollege.ca/w/index.php?title=GPU610/DPS915_Student_Resources&diff=88062GPU610/DPS915 Student Resources2012-09-20T19:55:03Z<p>Jboelen: /* segmm */</p>
<hr />
<div>{{GPU610/DPS915 Index | 20123}}<br />
=Student Resources=<br />
The purpose of this page is to share useful information that can help groups with their game projects.<br />
<br />
==BLAS Documentation --- This section is a work in progress -- please do not edit [jboelen] ==<br />
<br />
Note: This information applies to the '''gsl_cblas''' library <br />
<br />
There are 2 main functions to use<br />
<br />
===segmv<ref>http://publib.boulder.ibm.com/infocenter/comphelp/v8v101/index.jsp?topic=%2Fcom.ibm.xlcpp8a.doc%2Fproguide%2Fref%2Fblaslib.htm</ref> ===<br />
void cblas_sgemv (const enum CBLAS_ORDER order, const enum CBLAS_TRANSPOSE TransA, const int M, const int N, const float alpha, const float * A, const int lda, const float * x, const int incx, const float beta, float * y, const int incy)<ref>http://www.gnu.org/software/gsl/manual/html_node/Level-2-CBLAS-Functions.html</ref><br />
<br />
'''''order'''''<br />
:Whether matrices are row major order (C-Style) for column major order (Fortran-style). One of enum CblasRowMajor or CblasColMajor.<br />
<br />
'''''TransA''''' <br />
:Whether to transpose matrix A. One of enum CblasNoTrans, CBlasTrans.<br />
<br />
'''''M'''''<br />
:represents:<br />
::the number of rows in input matrix a<br />
::: the length of vector y, if 'N' or 'n' is used for the trans parameter<br />
:::the length of vector x, if 'T' or 't' is used for the trans parameter<br />
:The number of rows must be greater than or equal to zero, and less than the leading dimension of the matrix a (specified in lda)<br />
<br />
'''''N'''''<br />
:represents:<br />
::the number of columns in input matrix a<br />
:::the length of vector x, if 'N' or 'n' is used for the trans parameter<br />
:::the length of vector y, if 'T' or 't' is used for the trans parameter<br />
:The number of columns must be greater than or equal to zero.<br />
<br />
'''''alpha'''''<br />
:is the scaling constant for matrix a<br />
<br />
'''''A'''''<br />
:is the input matrix of float (for sgemv) or double (for dgemv) values<br />
<br />
'''''lda'''''<br />
:is the leading dimension of the array specified by a. The leading dimension must be greater than zero. The leading dimension must be greater than or equal to 1 and greater than or equal to the value specified in m.<br />
<br />
'''''x'''''<br />
:is the input vector of float (for sgemv) or double (for dgemv) values.<br />
<br />
'''''incx'''''<br />
:is the stride for vector x. It can have any value.<br />
<br />
'''''beta'''''<br />
:is the scaling constant for vector y<br />
<br />
'''''y'''''<br />
:is the output vector of float (for sgemv) or double (for dgemv) values.<br />
<br />
'''''incy'''''<br />
:is the stride for vector y. It must not be zero.<br />
<br />
===segmm===<br />
void cblas_sgemm (const enum CBLAS_ORDER Order, const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_TRANSPOSE TransB, const int M, const int N, const int K, const float alpha, const float * A, const int lda, const float * B, const int ldb, const float beta, float * C, const int ldc) <br />
<br />
https://scs.senecac.on.ca/~gpu610/pages/content/lines.html<br />
<br />
==Getting Started on Mac==<br />
http://developer.download.nvidia.com/compute/DevZone/docs/html/C/doc/CUDA_Getting_Started_Mac.pdf<br />
<br />
http://developer.nvidia.com/cuda/cuda-downloads<br />
<br />
====Troubleshooting====<br />
Problem with CUDA driver version 5.0.24 on MacBook Pro 2012 [http://blogs.adobe.com/premiereprotraining/2012/08/known-issues-with-cuda-5-0-17-driver-including-crashes-and-kernel-panics.html Fix]<br />
<br />
<br />
<br />
==References==<br />
<br />
<references/></div>Jboelenhttps://wiki.cdot.senecacollege.ca/w/index.php?title=GPU610/DPS915_Student_Resources&diff=88060GPU610/DPS915 Student Resources2012-09-20T19:53:34Z<p>Jboelen: /* segmvhttp://publib.boulder.ibm.com/infocenter/comphelp/v8v101/index.jsp?topic=%2Fcom.ibm.xlcpp8a.doc%2Fproguide%2Fref%2Fblaslib.htm */</p>
<hr />
<div>{{GPU610/DPS915 Index | 20123}}<br />
=Student Resources=<br />
The purpose of this page is to share useful information that can help groups with their game projects.<br />
<br />
==BLAS Documentation --- This section is a work in progress -- please do not edit [jboelen] ==<br />
<br />
Note: This information applies to the '''gsl_cblas''' library <br />
<br />
There are 2 main functions to use<br />
<br />
===segmv<ref>http://publib.boulder.ibm.com/infocenter/comphelp/v8v101/index.jsp?topic=%2Fcom.ibm.xlcpp8a.doc%2Fproguide%2Fref%2Fblaslib.htm</ref> ===<br />
void cblas_sgemv (const enum CBLAS_ORDER order, const enum CBLAS_TRANSPOSE TransA, const int M, const int N, const float alpha, const float * A, const int lda, const float * x, const int incx, const float beta, float * y, const int incy)<ref>http://www.gnu.org/software/gsl/manual/html_node/Level-2-CBLAS-Functions.html</ref><br />
<br />
'''''order'''''<br />
:Whether matrices are row major order (C-Style) for column major order (Fortran-style). One of enum CblasRowMajor or CblasColMajor.<br />
<br />
'''''TransA''''' <br />
:Whether to transpose matrix A. One of enum CblasNoTrans, CBlasTrans.<br />
<br />
'''''M'''''<br />
:represents:<br />
::the number of rows in input matrix a<br />
::: the length of vector y, if 'N' or 'n' is used for the trans parameter<br />
:::the length of vector x, if 'T' or 't' is used for the trans parameter<br />
:The number of rows must be greater than or equal to zero, and less than the leading dimension of the matrix a (specified in lda)<br />
<br />
'''''N'''''<br />
:represents:<br />
::the number of columns in input matrix a<br />
:::the length of vector x, if 'N' or 'n' is used for the trans parameter<br />
:::the length of vector y, if 'T' or 't' is used for the trans parameter<br />
:The number of columns must be greater than or equal to zero.<br />
<br />
'''''alpha'''''<br />
:is the scaling constant for matrix a<br />
<br />
'''''A'''''<br />
:is the input matrix of float (for sgemv) or double (for dgemv) values<br />
<br />
'''''lda'''''<br />
:is the leading dimension of the array specified by a. The leading dimension must be greater than zero. The leading dimension must be greater than or equal to 1 and greater than or equal to the value specified in m.<br />
<br />
'''''x'''''<br />
:is the input vector of float (for sgemv) or double (for dgemv) values.<br />
<br />
'''''incx'''''<br />
:is the stride for vector x. It can have any value.<br />
<br />
'''''beta'''''<br />
:is the scaling constant for vector y<br />
<br />
'''''y'''''<br />
:is the output vector of float (for sgemv) or double (for dgemv) values.<br />
<br />
'''''incy'''''<br />
:is the stride for vector y. It must not be zero.<br />
<br />
===segmm===<br />
<br />
https://scs.senecac.on.ca/~gpu610/pages/content/lines.html<br />
<br />
==Getting Started on Mac==<br />
http://developer.download.nvidia.com/compute/DevZone/docs/html/C/doc/CUDA_Getting_Started_Mac.pdf<br />
<br />
http://developer.nvidia.com/cuda/cuda-downloads<br />
<br />
====Troubleshooting====<br />
Problem with CUDA driver version 5.0.24 on MacBook Pro 2012 [http://blogs.adobe.com/premiereprotraining/2012/08/known-issues-with-cuda-5-0-17-driver-including-crashes-and-kernel-panics.html Fix]<br />
<br />
<br />
<br />
==References==<br />
<br />
<references/></div>Jboelenhttps://wiki.cdot.senecacollege.ca/w/index.php?title=GPU610/DPS915_Student_Resources&diff=88052GPU610/DPS915 Student Resources2012-09-20T19:42:26Z<p>Jboelen: </p>
<hr />
<div>{{GPU610/DPS915 Index | 20123}}<br />
=Student Resources=<br />
The purpose of this page is to share useful information that can help groups with their game projects.<br />
<br />
==BLAS Documentation --- This section is a work in progress -- please do not edit [jboelen] ==<br />
<br />
Note: This information applies to the '''gsl_cblas''' library <br />
<br />
There are 2 main functions to use<br />
<br />
===segmv<ref>http://publib.boulder.ibm.com/infocenter/comphelp/v8v101/index.jsp?topic=%2Fcom.ibm.xlcpp8a.doc%2Fproguide%2Fref%2Fblaslib.htm</ref> ===<br />
void cblas_sgemv (const enum CBLAS_ORDER order, const enum CBLAS_TRANSPOSE TransA, const int M, const int N, const float alpha, const float * A, const int lda, const float * x, const int incx, const float beta, float * y, const int incy)<ref>http://www.gnu.org/software/gsl/manual/html_node/Level-2-CBLAS-Functions.html</ref><br />
<br />
'''''m'''''<br />
<br />
:represents:<br />
::the number of rows in input matrix a<br />
::: the length of vector y, if 'N' or 'n' is used for the trans parameter<br />
:::the length of vector x, if 'T' or 't' is used for the trans parameter<br />
:The number of rows must be greater than or equal to zero, and less than the leading dimension of the matrix a (specified in lda)<br />
<br />
'''''n'''''<br />
<br />
:represents:<br />
::the number of columns in input matrix a<br />
:::the length of vector x, if 'N' or 'n' is used for the trans parameter<br />
:::the length of vector y, if 'T' or 't' is used for the trans parameter<br />
:The number of columns must be greater than or equal to zero.<br />
<br />
'''''alpha'''''<br />
<br />
:is the scaling constant for matrix a<br />
<br />
'''''a'''''<br />
<br />
:is the input matrix of float (for sgemv) or double (for dgemv) values<br />
<br />
'''''lda'''''<br />
<br />
:is the leading dimension of the array specified by a. The leading dimension must be greater than zero. The leading dimension must be greater than or equal to 1 and greater than or equal to the value specified in m.<br />
<br />
'''''x'''''<br />
<br />
:is the input vector of float (for sgemv) or double (for dgemv) values.<br />
<br />
'''''incx'''''<br />
<br />
:is the stride for vector x. It can have any value.<br />
<br />
'''''beta'''''<br />
<br />
:is the scaling constant for vector y<br />
<br />
'''''y'''''<br />
<br />
:is the output vector of float (for sgemv) or double (for dgemv) values.<br />
<br />
'''''incy'''''<br />
<br />
:is the stride for vector y. It must not be zero.<br />
<br />
===segmm===<br />
<br />
https://scs.senecac.on.ca/~gpu610/pages/content/lines.html<br />
<br />
==Getting Started on Mac==<br />
http://developer.download.nvidia.com/compute/DevZone/docs/html/C/doc/CUDA_Getting_Started_Mac.pdf<br />
<br />
http://developer.nvidia.com/cuda/cuda-downloads<br />
<br />
====Troubleshooting====<br />
Problem with CUDA driver version 5.0.24 on MacBook Pro 2012 [http://blogs.adobe.com/premiereprotraining/2012/08/known-issues-with-cuda-5-0-17-driver-including-crashes-and-kernel-panics.html Fix]<br />
<br />
<br />
<br />
==References==<br />
<br />
<references/></div>Jboelenhttps://wiki.cdot.senecacollege.ca/w/index.php?title=GPU610/DPS915_Student_Resources&diff=88051GPU610/DPS915 Student Resources2012-09-20T19:41:54Z<p>Jboelen: /* BLAS Documentation --- This section is a work in progress -- please do not edit [jboelen] */</p>
<hr />
<div>{{GPU610/DPS915 Index | 20123}}<br />
=Student Resources=<br />
The purpose of this page is to share useful information that can help groups with their game projects.<br />
<br />
==BLAS Documentation --- This section is a work in progress -- please do not edit [jboelen] ==<br />
<br />
Note: This information applies to the '''gsl_cblas''' library <br />
<br />
There are 2 main functions to use<br />
<br />
===segmv<ref>http://publib.boulder.ibm.com/infocenter/comphelp/v8v101/index.jsp?topic=%2Fcom.ibm.xlcpp8a.doc%2Fproguide%2Fref%2Fblaslib.htm</ref> ===<br />
void cblas_sgemv (const enum CBLAS_ORDER order, const enum CBLAS_TRANSPOSE TransA, const int M, const int N, const float alpha, const float * A, const int lda, const float * x, const int incx, const float beta, float * y, const int incy)<ref>http://www.gnu.org/software/gsl/manual/html_node/Level-2-CBLAS-Functions.html</ref><br />
<br />
'''''m'''''<br />
<br />
:represents:<br />
::the number of rows in input matrix a<br />
::: the length of vector y, if 'N' or 'n' is used for the trans parameter<br />
:::the length of vector x, if 'T' or 't' is used for the trans parameter<br />
:The number of rows must be greater than or equal to zero, and less than the leading dimension of the matrix a (specified in lda)<br />
<br />
'''''n'''''<br />
<br />
:represents:<br />
::the number of columns in input matrix a<br />
:::the length of vector x, if 'N' or 'n' is used for the trans parameter<br />
:::the length of vector y, if 'T' or 't' is used for the trans parameter<br />
:The number of columns must be greater than or equal to zero.<br />
<br />
'''''alpha'''''<br />
<br />
:is the scaling constant for matrix a<br />
<br />
'''''a'''''<br />
<br />
:is the input matrix of float (for sgemv) or double (for dgemv) values<br />
<br />
'''''lda'''''<br />
<br />
:is the leading dimension of the array specified by a. The leading dimension must be greater than zero. The leading dimension must be greater than or equal to 1 and greater than or equal to the value specified in m.<br />
<br />
'''''x'''''<br />
<br />
:is the input vector of float (for sgemv) or double (for dgemv) values.<br />
<br />
'''''incx'''''<br />
<br />
:is the stride for vector x. It can have any value.<br />
<br />
'''''beta'''''<br />
<br />
:is the scaling constant for vector y<br />
<br />
'''''y'''''<br />
<br />
:is the output vector of float (for sgemv) or double (for dgemv) values.<br />
<br />
'''''incy'''''<br />
<br />
:is the stride for vector y. It must not be zero.<br />
<br />
===segmm===<br />
<br />
https://scs.senecac.on.ca/~gpu610/pages/content/lines.html<br />
<br />
==Getting Started on Mac==<br />
http://developer.download.nvidia.com/compute/DevZone/docs/html/C/doc/CUDA_Getting_Started_Mac.pdf<br />
<br />
http://developer.nvidia.com/cuda/cuda-downloads<br />
<br />
====Troubleshooting====<br />
Problem with CUDA driver version 5.0.24 on MacBook Pro 2012 [http://blogs.adobe.com/premiereprotraining/2012/08/known-issues-with-cuda-5-0-17-driver-including-crashes-and-kernel-panics.html Fix]</div>Jboelenhttps://wiki.cdot.senecacollege.ca/w/index.php?title=GPU610/DPS915_Student_Resources&diff=88050GPU610/DPS915 Student Resources2012-09-20T19:35:33Z<p>Jboelen: /* segmv */</p>
<hr />
<div>{{GPU610/DPS915 Index | 20123}}<br />
=Student Resources=<br />
The purpose of this page is to share useful information that can help groups with their game projects.<br />
<br />
==BLAS Documentation --- This section is a work in progress -- please do not edit [jboelen] ==<br />
<br />
Note: This information applies to the '''gsl_cblas''' library <br />
<br />
There are 2 main functions to use<br />
<br />
===segmv<ref>http://publib.boulder.ibm.com/infocenter/comphelp/v8v101/index.jsp?topic=%2Fcom.ibm.xlcpp8a.doc%2Fproguide%2Fref%2Fblaslib.htm</ref> ===<br />
void cblas_sgemv (const enum CBLAS_ORDER order, const enum CBLAS_TRANSPOSE TransA, const int M, const int N, const float alpha, const float * A, const int lda, const float * x, const int incx, const float beta, float * y, const int incy)<ref>http://www.gnu.org/software/gsl/manual/html_node/Level-2-CBLAS-Functions.html</ref><br />
<br />
'''''m'''''<br />
<br />
:represents:<br />
::the number of rows in input matrix a<br />
::: the length of vector y, if 'N' or 'n' is used for the trans parameter<br />
:::the length of vector x, if 'T' or 't' is used for the trans parameter<br />
:The number of rows must be greater than or equal to zero, and less than the leading dimension of the matrix a (specified in lda)<br />
<br />
'''''n'''''<br />
<br />
:represents:<br />
::the number of columns in input matrix a<br />
:::the length of vector x, if 'N' or 'n' is used for the trans parameter<br />
:::the length of vector y, if 'T' or 't' is used for the trans parameter<br />
:The number of columns must be greater than or equal to zero.<br />
<br />
'''''alpha'''''<br />
<br />
:is the scaling constant for matrix a<br />
<br />
'''''a'''''<br />
<br />
:is the input matrix of float (for sgemv) or double (for dgemv) values<br />
<br />
'''''lda'''''<br />
<br />
:is the leading dimension of the array specified by a. The leading dimension must be greater than zero. The leading dimension must be greater than or equal to 1 and greater than or equal to the value specified in m.<br />
<br />
'''''x'''''<br />
<br />
:is the input vector of float (for sgemv) or double (for dgemv) values.<br />
<br />
'''''incx'''''<br />
<br />
:is the stride for vector x. It can have any value.<br />
<br />
'''''beta'''''<br />
<br />
:is the scaling constant for vector y<br />
<br />
'''''y'''''<br />
<br />
:is the output vector of float (for sgemv) or double (for dgemv) values.<br />
<br />
'''''incy'''''<br />
<br />
:is the stride for vector y. It must not be zero.<br />
<br />
===segmm===<br />
<br />
https://scs.senecac.on.ca/~gpu610/pages/content/lines.html <br />
<br />
==Getting Started on Mac==<br />
http://developer.download.nvidia.com/compute/DevZone/docs/html/C/doc/CUDA_Getting_Started_Mac.pdf<br />
<br />
http://developer.nvidia.com/cuda/cuda-downloads<br />
<br />
====Troubleshooting====<br />
Problem with CUDA driver version 5.0.24 on MacBook Pro 2012 [http://blogs.adobe.com/premiereprotraining/2012/08/known-issues-with-cuda-5-0-17-driver-including-crashes-and-kernel-panics.html Fix]</div>Jboelenhttps://wiki.cdot.senecacollege.ca/w/index.php?title=GPU610/DPS915_Student_Resources&diff=88047GPU610/DPS915 Student Resources2012-09-20T19:18:41Z<p>Jboelen: </p>
<hr />
<div>{{GPU610/DPS915 Index | 20123}}<br />
=Student Resources=<br />
The purpose of this page is to share useful information that can help groups with their game projects.<br />
<br />
==BLAS Documentation --- This section is a work in progress -- please do not edit [jboelen] ==<br />
<br />
Note: This information applies to the '''gsl_cblas''' library <br />
<br />
There are 2 main functions to use<br />
<br />
===segmv=== <br />
void cblas_sgemv (const enum CBLAS_ORDER order, const enum CBLAS_TRANSPOSE TransA, const int M, const int N, const float alpha, const float * A, const int lda, const float * x, const int incx, const float beta, float * y, const int incy) [http://www.gnu.org/software/gsl/manual/html_node/Level-2-CBLAS-Functions.html 1]<br />
<br />
'''''m'''''<br />
<br />
:represents:<br />
::the number of rows in input matrix a<br />
::: the length of vector y, if 'N' or 'n' is used for the trans parameter<br />
:::the length of vector x, if 'T' or 't' is used for the trans parameter<br />
:The number of rows must be greater than or equal to zero, and less than the leading dimension of the matrix a (specified in lda)<br />
<br />
'''''n'''''<br />
<br />
:represents:<br />
::the number of columns in input matrix a<br />
:::the length of vector x, if 'N' or 'n' is used for the trans parameter<br />
:::the length of vector y, if 'T' or 't' is used for the trans parameter<br />
:The number of columns must be greater than or equal to zero.<br />
<br />
'''''alpha'''''<br />
<br />
:is the scaling constant for matrix a<br />
<br />
'''''a'''''<br />
<br />
:is the input matrix of float (for sgemv) or double (for dgemv) values<br />
<br />
'''''lda'''''<br />
<br />
:is the leading dimension of the array specified by a. The leading dimension must be greater than zero. The leading dimension must be greater than or equal to 1 and greater than or equal to the value specified in m.<br />
<br />
'''''x'''''<br />
<br />
:is the input vector of float (for sgemv) or double (for dgemv) values.<br />
<br />
'''''incx'''''<br />
<br />
:is the stride for vector x. It can have any value.<br />
<br />
'''''beta'''''<br />
<br />
:is the scaling constant for vector y<br />
<br />
'''''y'''''<br />
<br />
:is the output vector of float (for sgemv) or double (for dgemv) values.<br />
<br />
'''''incy'''''<br />
<br />
:is the stride for vector y. It must not be zero.<br />
<br />
[http://publib.boulder.ibm.com/infocenter/comphelp/v8v101/index.jsp?topic=%2Fcom.ibm.xlcpp8a.doc%2Fproguide%2Fref%2Fblaslib.htm 2] <br />
===segmm===<br />
<br />
https://scs.senecac.on.ca/~gpu610/pages/content/lines.html <br />
<br />
==Getting Started on Mac==<br />
http://developer.download.nvidia.com/compute/DevZone/docs/html/C/doc/CUDA_Getting_Started_Mac.pdf<br />
<br />
http://developer.nvidia.com/cuda/cuda-downloads<br />
<br />
====Troubleshooting====<br />
Problem with CUDA driver version 5.0.24 on MacBook Pro 2012 [http://blogs.adobe.com/premiereprotraining/2012/08/known-issues-with-cuda-5-0-17-driver-including-crashes-and-kernel-panics.html Fix]</div>Jboelenhttps://wiki.cdot.senecacollege.ca/w/index.php?title=User:JBoelen/FSOSS_2011&diff=77170User:JBoelen/FSOSS 20112012-01-08T01:33:26Z<p>Jboelen: /* Introduction */</p>
<hr />
<div>=Free Software and Open Source Symposium Paper - Tiki & Pi=<br />
==Introduction==<br />
<br />
For my class in open source development, I was tasked with attending the Free Software and Open Source Symposium (FSOSS) conference in Toronto Canada, and reporting on 2 of the talks that I viewed. FSOSS is a collection of talks and workshops about new, upcoming, and current projects from members throughout the open technologies communities about how they are shaping the future of multimedia (including web, video and education), what projects they are currently working on, and other technologies.<br />
<br />
The conference took place between October 27th and 29th of 2011 and the Seneca @ York and during that time I attended several of the talks, but the two that stood out for me was a presentation by Eben Upton on Raspberry Pi, a a new 25$ computer, and on by Neson Ko and Pascal St-Jean about TikiWiki, a robust and powerful wiki option for open source development.<br />
<br />
For me, the main ideals that I hold for open technologies are access and collaboration. What I love most about open technologies is that anyone can use them. The traditional monetary obstacles that exist for software are not a problem because for the most part, it’s free. This puts everyone on the same playing field to use and learn about tools and methods for achieving their goals. If access is the heart of open technologies, collaboration is the soul. Seeing people from all over the world, come together and produce functional and high quality software is incredible. Not only do the solutions work, many of the people contributing to projects are doing it for free. In the busy world that we live in, it’s great to see people finding the time to help out and share with the global community.<br />
<br />
Though I enjoyed all of the talks that I attended, the two aforementioned presentations stood out for me as I felt that they both hit home with the values I hold highest for open development.<br />
<br />
==Raspberry Pi==<br />
<br />
“A Slice of Raspberry Pi” by Eben Upton was a fascinating talk about a new 25$ linux box. He noted that when he was a professor in computer science at Cambridge University, he found that the quality of applicants was steadily decreasing. Gone were the once adept students applying for entry, replaced by those with lackluster experience and little pre-existing knowledge of computer programming. Not only did applicants know less, they were dwindling in number. Though he and his colleagues had several ideas about why this was happening, they felt that their best efforts of helping curb this issue would be placed in trying to increase access to the hardware itself. Thus, the idea for Raspberry Pi was formed. A computer that was cheap and easy to produce that also had a decent amount of processing power.<br />
<br />
What Raspberry Pi turned out to be holds a lot of potential. The hardware, about the same size as a credit card with the depth of about 1 inch, was able to run a full Linux distribution and even play HD video. It also boasted a somewhat powerful processor considering it’s size (similar to what is also being used in modern smartphones), ran at a low temperature, and required very little power.<br />
<br />
With a small, lightweight computer that has a low initial cost and low upkeep costs, it opens a world of possibilities and creates a huge potential market. The current iteration of computers is quite expensive. With this technology, it opens the doors so that more computers are available in schools for students of all ages to learn on and use; enables those of lower income or underdeveloped countries to gain access to decent quality technology.<br />
<br />
As I mentioned before, access is an integral pillar of open technology. Raspberry Pi has the potential to remove the monetary roadblock for a huge portion of the global population. This computer is a tenth of the cost of the tradition variety and could easily be bought or donated en masse to many different groups in need. In places with shared access, the number of available stations could increase so that individuals who want to use and learn more have the ability. Though the initial idea that started this project off may have been to increase enrollment at college and have more people interested with programming, the implications of this are far greater than merely that. The ever-expanding global village will be able to hugely benefit and allow access to many users that have never been able to enjoy the benefits of using a computer.<br />
<br />
A lot of open development is focused on the software aspect and not nearly enough on the hardware aspect. Though there have been other efforts in creating accessible hardware for everyone, to the best of my knowledge, this is one of the cheapest options soon to be available. I can only image that this could have a big impact for the One Laptop Per Child mission. With even cheaper hardware, they would be able to donate even more laptops to underprivileged children throughout the world. With more access, kids and students will be able to have a hands-on approach to learning too. Instead of merely reading or seeing demonstrations, they themselves would be able to actively participate and hopefully gain an appreciation and interest of the hardware and software. Computer skills are necessary for almost any job. This technology will level the field for many, many people.<br />
<br />
Philanthropic possibilities aside, this computer could even allow those with a general interest to explore subjects like hardware modification (since the unit is easily replaced) or distributed computing (as the units are cheap and can be bought in bulk). People will no longer need to use a specialized lab to learn and work with these paradigms.<br />
<br />
Obviously there are other barriers to have nearly barrier free access to computers for everyone in the world. Hopefully though, this will start the ball rolling so that cheaply available computer systems (monitor, computer, peripherals) are easily available. Computers offer a huge advantage and affording everyone the opportunity to use and learn how to use and work with them will increase the quality of life around the globe.<br />
<br />
<br />
==Tiki==<br />
<br />
“Tiki Wiki CMS Groupware – Software the Wiki Way” by Nelson Ko and Pascal St-Jean was an interesting presentation on the TikiWiki software and how their community functions. With 250 active developers, 1,000,000 lines of code and over 1000 features, they had to collaborate and work as a cohesive group. While there have been some negatives, the benefits of writing software in a wiki way have been far greater. Applying the wiki idea to creating software has ended up with one of the most successful open technologies for content management, wiki and groupware all in one product.<br />
<br />
While the project does have certain priorities, it is mainly a “do-ocracy”. What this means is that you only have to work on the stuff you want to do or use. Much like a wiki, you can also edit or code on anything else that already exists. In many projects, there are owners to certain features. In the Tiki case, much like a wiki, anyone can edit anything and everyone can request access. Most of the people that are contributing are doing so because there is a need that they had and filled and wanted to share it back with the community. This is the main reason that they so many features. This methodology is manageable because all of the code is in one repository. With other systems that have thousands of features, the code is scattered and it’s hard to continue development on features that no longer have a developer. In the Tiki case, if a developer fails to maintain a feature that they created or if someone else wants to add some new sub features, they can do it on their own and not bother trying to request the original developer to do it or have to start their own completely new feature.<br />
<br />
With so many people editing different parts of the code base, there needs to be a way to test to make sure that the features work properly and are bug free before the software is released. A process called “Dogfood” achieves this. The beauty of Tiki is that the contributors of the software are themselves using the software to contribute. This recursive system of software development means that any bugs or issues are quickly resolved and fixed. This also means that not only do you have end-users that can inform you of issues should they occur, but Tiki will themselves encounter the same issues because it is its own platform for development. This also increases the confidence that users have in the product because they are using it as a proof of concept.<br />
<br />
I found this talk really interesting. Typically few people have access to the software repository when development occurs in the open source world. Normally, one person has access to the main repository and all code changes need to go through them (whether it’s patch files in Subversion or pull requests in Git). This successful shift in the fundamental way that the software is developed and how it grows is really amazing. With the wiki idea behind the development it also ensure that there is still accountability. While access to the repository is controlled, it’s still considerably open (considering 250 people have full read/write access). It’s also nice because no one has to wait for something to be fixed. If a developer fails to fix their code in a timely manner, someone else can do it. Sure this introduces other issues but for the most part it seems to have worked incredibly well for Tiki and many other projects could probably benefit from a similar system. I also found that Tiki using the software it’s developing to run itself very cool. It’s a very easy way to build confidence in the software when you can see the success that they’ve had. A lot of open technologies are built by people who use their own product, but have no real proof of concept to show others. Tiki is a huge stakeholder since it’s run off of its own software and has a development cycle that almost ensure that features will always have developers shows that it works incredibly well. The idea of having a collaborative effort akin to Wikipedia for building software would be a very hard sell, except that Tiki has already shown how well it works.<br />
<br />
<br />
==Comparison==<br />
<br />
It’s hard to compare the two technologies because, for me, they both represent different parts of the open technologies community. Raspberry Pi deals with access and Tiki, collaboration. This being said, there are two things they are both doing extremely well. They are both challenging existing notions of how thing are or how they should be done and removing existing obstacles that were preventing people from achieving their goals.<br />
<br />
Raspberry Pi is challenging the way that we thing about hardware and how access to it is controlled by large monetary blockades. What was once exclusively available to those who could afford it, can now be purchased by nearly anyone. Moreover, it allows institutions who allowed those who could not afford it, the ability to grant greater access by purchasing more units for the same amount of money. Places like libraries that only need computers to browse a catalogue, browse the Internet, or for simple word processing will find machines like this fantastic for this purpose.<br />
<br />
Tiki on the other hand is challenging the way that we develop software in the open community. Until now, software has been typically developed in a way where very few people have write access to the code repository. Now we can see the great success that can be found in developing software the same way that Wikipedia built it’s gargantuan compendium of knowledge. It’s exciting to see the wiki method applied to software development because it has huge implications for future projects. As a developer, it’s interesting to see how the burden of effectively being a gatekeeper for a project can be lifted under the right circumstances. Volunteer open technology developers are almost exclusively made up of people who want to improve software. This completely removes the roadblocks that were preventing them from directly adding their contributions and completely opens open technology development.<br />
<br />
<br />
==Conclusion==<br />
<br />
I’m really glad that I attended these two talks. I love seeing existing notions challenged and shaken to the core. As a developer, these changes could prove to completely change the way we think about hardware and software. Both Tiki and Raspberry Pi are showing us that you can do things a new way and that nothing is set in stone. I’ve mentioned throughout this that my two central ideas in open technologies is providing access to as many people as possible, and collaborating to create something far greater than a single person could ever achieve. Both of these projects relate directly to that and I think it’s encouraging to see that developments are still being made to these central columns of what I think it means to be “open”.<br />
<br />
I look forward to attending FSOSS again next year where I will hopefully get to see more about how the world of open technologies is being shaped and change. I enjoyed all the quality talks this year and encourage anyone else who enjoys and is active in open technologies to attend.</div>Jboelenhttps://wiki.cdot.senecacollege.ca/w/index.php?title=User:JBoelen/FSOSS_2011&diff=77169User:JBoelen/FSOSS 20112012-01-08T01:29:25Z<p>Jboelen: /* Free Software and Open Source Symposium Paper */</p>
<hr />
<div>=Free Software and Open Source Symposium Paper - Tiki & Pi=<br />
==Introduction==<br />
<br />
For my class in open source development, I was tasked with attending the Free Software and Open Source Symposium (FSOSS) conference in Toronto Canada, and reporting on 2 of the talks that I viewed. FSOSS is a collection of talks and workshops about new, upcoming, and current projects from members throughout the open technologies communities about how they are shaping the future of multimedia (including web, video and education).<br />
<br />
The conference took place between October 27th and 29th of 2011 and the Seneca @ York and during that time I attended several of the talks, but the two that stood out for me was a presentation by Eben Upton on Raspberry Pi, a a new 25$ computer, and on by Neson Ko and Pascal St-Jean about TikiWiki, a robust and powerful wiki option for open source development.<br />
<br />
For me, the main ideals that I hold for open technologies are access and collaboration. What I love most about open technologies is that anyone can use them. The traditional monetary obstacles that exist for software are not a problem because for the most part, it’s free. This puts everyone on the same playing field to use and learn about tools and methods for achieving their goals. If access is the heart of open technologies, collaboration is the soul. Seeing people from all over the world, come together and produce functional and high quality software is incredible. Not only do the solutions work, many of the people contributing to projects are doing it for free. In the busy world that we live in, it’s great to see people finding the time to help out and share with the global community.<br />
<br />
Though I enjoyed all of the talks that I attended, the two aforementioned presentations stood out for me as I felt that they both hit home with the values I hold highest for open development.<br />
<br />
<br />
==Raspberry Pi==<br />
<br />
“A Slice of Raspberry Pi” by Eben Upton was a fascinating talk about a new 25$ linux box. He noted that when he was a professor in computer science at Cambridge University, he found that the quality of applicants was steadily decreasing. Gone were the once adept students applying for entry, replaced by those with lackluster experience and little pre-existing knowledge of computer programming. Not only did applicants know less, they were dwindling in number. Though he and his colleagues had several ideas about why this was happening, they felt that their best efforts of helping curb this issue would be placed in trying to increase access to the hardware itself. Thus, the idea for Raspberry Pi was formed. A computer that was cheap and easy to produce that also had a decent amount of processing power.<br />
<br />
What Raspberry Pi turned out to be holds a lot of potential. The hardware, about the same size as a credit card with the depth of about 1 inch, was able to run a full Linux distribution and even play HD video. It also boasted a somewhat powerful processor considering it’s size (similar to what is also being used in modern smartphones), ran at a low temperature, and required very little power.<br />
<br />
With a small, lightweight computer that has a low initial cost and low upkeep costs, it opens a world of possibilities and creates a huge potential market. The current iteration of computers is quite expensive. With this technology, it opens the doors so that more computers are available in schools for students of all ages to learn on and use; enables those of lower income or underdeveloped countries to gain access to decent quality technology.<br />
<br />
As I mentioned before, access is an integral pillar of open technology. Raspberry Pi has the potential to remove the monetary roadblock for a huge portion of the global population. This computer is a tenth of the cost of the tradition variety and could easily be bought or donated en masse to many different groups in need. In places with shared access, the number of available stations could increase so that individuals who want to use and learn more have the ability. Though the initial idea that started this project off may have been to increase enrollment at college and have more people interested with programming, the implications of this are far greater than merely that. The ever-expanding global village will be able to hugely benefit and allow access to many users that have never been able to enjoy the benefits of using a computer.<br />
<br />
A lot of open development is focused on the software aspect and not nearly enough on the hardware aspect. Though there have been other efforts in creating accessible hardware for everyone, to the best of my knowledge, this is one of the cheapest options soon to be available. I can only image that this could have a big impact for the One Laptop Per Child mission. With even cheaper hardware, they would be able to donate even more laptops to underprivileged children throughout the world. With more access, kids and students will be able to have a hands-on approach to learning too. Instead of merely reading or seeing demonstrations, they themselves would be able to actively participate and hopefully gain an appreciation and interest of the hardware and software. Computer skills are necessary for almost any job. This technology will level the field for many, many people.<br />
<br />
Philanthropic possibilities aside, this computer could even allow those with a general interest to explore subjects like hardware modification (since the unit is easily replaced) or distributed computing (as the units are cheap and can be bought in bulk). People will no longer need to use a specialized lab to learn and work with these paradigms.<br />
<br />
Obviously there are other barriers to have nearly barrier free access to computers for everyone in the world. Hopefully though, this will start the ball rolling so that cheaply available computer systems (monitor, computer, peripherals) are easily available. Computers offer a huge advantage and affording everyone the opportunity to use and learn how to use and work with them will increase the quality of life around the globe.<br />
<br />
<br />
==Tiki==<br />
<br />
“Tiki Wiki CMS Groupware – Software the Wiki Way” by Nelson Ko and Pascal St-Jean was an interesting presentation on the TikiWiki software and how their community functions. With 250 active developers, 1,000,000 lines of code and over 1000 features, they had to collaborate and work as a cohesive group. While there have been some negatives, the benefits of writing software in a wiki way have been far greater. Applying the wiki idea to creating software has ended up with one of the most successful open technologies for content management, wiki and groupware all in one product.<br />
<br />
While the project does have certain priorities, it is mainly a “do-ocracy”. What this means is that you only have to work on the stuff you want to do or use. Much like a wiki, you can also edit or code on anything else that already exists. In many projects, there are owners to certain features. In the Tiki case, much like a wiki, anyone can edit anything and everyone can request access. Most of the people that are contributing are doing so because there is a need that they had and filled and wanted to share it back with the community. This is the main reason that they so many features. This methodology is manageable because all of the code is in one repository. With other systems that have thousands of features, the code is scattered and it’s hard to continue development on features that no longer have a developer. In the Tiki case, if a developer fails to maintain a feature that they created or if someone else wants to add some new sub features, they can do it on their own and not bother trying to request the original developer to do it or have to start their own completely new feature.<br />
<br />
With so many people editing different parts of the code base, there needs to be a way to test to make sure that the features work properly and are bug free before the software is released. A process called “Dogfood” achieves this. The beauty of Tiki is that the contributors of the software are themselves using the software to contribute. This recursive system of software development means that any bugs or issues are quickly resolved and fixed. This also means that not only do you have end-users that can inform you of issues should they occur, but Tiki will themselves encounter the same issues because it is its own platform for development. This also increases the confidence that users have in the product because they are using it as a proof of concept.<br />
<br />
I found this talk really interesting. Typically few people have access to the software repository when development occurs in the open source world. Normally, one person has access to the main repository and all code changes need to go through them (whether it’s patch files in Subversion or pull requests in Git). This successful shift in the fundamental way that the software is developed and how it grows is really amazing. With the wiki idea behind the development it also ensure that there is still accountability. While access to the repository is controlled, it’s still considerably open (considering 250 people have full read/write access). It’s also nice because no one has to wait for something to be fixed. If a developer fails to fix their code in a timely manner, someone else can do it. Sure this introduces other issues but for the most part it seems to have worked incredibly well for Tiki and many other projects could probably benefit from a similar system. I also found that Tiki using the software it’s developing to run itself very cool. It’s a very easy way to build confidence in the software when you can see the success that they’ve had. A lot of open technologies are built by people who use their own product, but have no real proof of concept to show others. Tiki is a huge stakeholder since it’s run off of its own software and has a development cycle that almost ensure that features will always have developers shows that it works incredibly well. The idea of having a collaborative effort akin to Wikipedia for building software would be a very hard sell, except that Tiki has already shown how well it works.<br />
<br />
<br />
==Comparison==<br />
<br />
It’s hard to compare the two technologies because, for me, they both represent different parts of the open technologies community. Raspberry Pi deals with access and Tiki, collaboration. This being said, there are two things they are both doing extremely well. They are both challenging existing notions of how thing are or how they should be done and removing existing obstacles that were preventing people from achieving their goals.<br />
<br />
Raspberry Pi is challenging the way that we thing about hardware and how access to it is controlled by large monetary blockades. What was once exclusively available to those who could afford it, can now be purchased by nearly anyone. Moreover, it allows institutions who allowed those who could not afford it, the ability to grant greater access by purchasing more units for the same amount of money. Places like libraries that only need computers to browse a catalogue, browse the Internet, or for simple word processing will find machines like this fantastic for this purpose.<br />
<br />
Tiki on the other hand is challenging the way that we develop software in the open community. Until now, software has been typically developed in a way where very few people have write access to the code repository. Now we can see the great success that can be found in developing software the same way that Wikipedia built it’s gargantuan compendium of knowledge. It’s exciting to see the wiki method applied to software development because it has huge implications for future projects. As a developer, it’s interesting to see how the burden of effectively being a gatekeeper for a project can be lifted under the right circumstances. Volunteer open technology developers are almost exclusively made up of people who want to improve software. This completely removes the roadblocks that were preventing them from directly adding their contributions and completely opens open technology development.<br />
<br />
<br />
==Conclusion==<br />
<br />
I’m really glad that I attended these two talks. I love seeing existing notions challenged and shaken to the core. As a developer, these changes could prove to completely change the way we think about hardware and software. Both Tiki and Raspberry Pi are showing us that you can do things a new way and that nothing is set in stone. I’ve mentioned throughout this that my two central ideas in open technologies is providing access to as many people as possible, and collaborating to create something far greater than a single person could ever achieve. Both of these projects relate directly to that and I think it’s encouraging to see that developments are still being made to these central columns of what I think it means to be “open”.<br />
<br />
I look forward to attending FSOSS again next year where I will hopefully get to see more about how the world of open technologies is being shaped and change. I enjoyed all the quality talks this year and encourage anyone else who enjoys and is active in open technologies to attend.</div>Jboelenhttps://wiki.cdot.senecacollege.ca/w/index.php?title=FSOSS_2011_Research_Paper&diff=77168FSOSS 2011 Research Paper2012-01-08T01:29:10Z<p>Jboelen: /* Student Reports */</p>
<hr />
<div>==Introduction==<br />
<br />
The [http://fsoss.ca Free Software and Open Source Symposium], or FSOSS, is a major gathering of North American open source developers, businesses, educators, and users. The goal of the symposium is to explore how open source, open standards, and open content are changing technology, the web, the media and arts, education, and business.<br />
<br />
You will document a portion of the symposium, and provide a critical analysis of what you hear.<br />
<br />
==Requirements==<br />
<br />
You must attend two talks and write a report and analysis of the two. Your report must be 2,500 words in length and include:<br />
<br />
* Summaries of two talks.<br />
** What was each talk about?<br />
** What was the speaker's main point?<br />
** What was the speaker's background and point of view? <br />
* Analysis of each speaker's views on open source. He/she may not mention it explicitly. You must listen and try to understand based on what they are saying, and perhaps not saying.<br />
** Comparison of the points made by the presenters.<br />
** What can you say about open source in the light of the points they made?<br />
** Do the speakers have similar views of open source or do they disagree? How so? <br />
* Conclusion about your views on open source<br />
* Does the picture of open source you've seen presented in these talks challenge or confirm your own views about what open source is and how it functions?<br />
<br />
==Submission==<br />
<br />
Due Date: '''Friday November 4th'''. Please submit your work via the wiki (i.e., no paper copy required) by adding a link to your report below. Note: It would be a good idea to put any FSOSS reports under your personal page and username like so: http://zenit.senecac.on.ca/wiki/index.php/User:Dominic/FSOSS_07 to decrease the use of generic article names.<br />
<br />
==Student Reports==<br />
<br />
Link your finished reports below:<br />
<br />
'''Student Name, Link to wiki paper with Title'''<br />
<br />
Stanley Tsang, http://zenit.senecac.on.ca/wiki/index.php/User:Nm486/FSOSS_2011<br />
<br />
Anurag Bhatnagar, http://zenit.senecac.on.ca/wiki/index.php/FSOSS_2011_-_Anurag<br />
<br />
Greg Krilov, http://zenit.senecac.on.ca/wiki/index.php/User:Gkrilov/fsoss_2011<br />
<br />
roman hotin, http://zenit.senecac.on.ca/wiki/index.php/User:Rhotin , http://zenit.senecac.on.ca/wiki/index.php/User_talk:Rhotin<br />
<br />
Archana Sahota, http://zenit.senecac.on.ca/wiki/index.php/User:Asahota1/FSOSS_2011<br />
<br />
Hyungryul Chun, http://zenit.senecac.on.ca/wiki/index.php/User:Hchun/FSOSS_11<br />
<br />
Dennis Villasenor, [http://zenit.senecac.on.ca/wiki/index.php/User:Dvillase/FSOSS_2011 http://zenit.senecac.on.ca/wiki/index.php/User:Dvillase/FSOSS_2011]<br />
<br />
Ching Wei Tseng, http://zenit.senecac.on.ca/wiki/index.php/User:Cwtseng/FSOSS_2011<br />
<br />
Raymond Hung, http://zenit.senecac.on.ca/wiki/index.php/User:RHung/FSOSS_2011<br />
<br />
Diogo Golovanevsky Monteiro, http://zenit.senecac.on.ca/wiki/index.php/User:Diogogmt/FSOSS_2011<br />
<br />
Moussa Tabcharani, http://zenit.senecac.on.ca/wiki/index.php/User:Moussa1/FSOSS_2011<br />
<br />
Denise Rigato, http://zenit.senecac.on.ca/wiki/index.php/User:Drigato/FSOSS_11<br />
<br />
James Boelen, [[User:JBoelen/FSOSS_2011 | Free Software and Open Source Symposium Paper - Tiki & Pi]]</div>Jboelenhttps://wiki.cdot.senecacollege.ca/w/index.php?title=FSOSS_2011_Research_Paper&diff=77167FSOSS 2011 Research Paper2012-01-08T01:26:56Z<p>Jboelen: /* Student Reports */</p>
<hr />
<div>==Introduction==<br />
<br />
The [http://fsoss.ca Free Software and Open Source Symposium], or FSOSS, is a major gathering of North American open source developers, businesses, educators, and users. The goal of the symposium is to explore how open source, open standards, and open content are changing technology, the web, the media and arts, education, and business.<br />
<br />
You will document a portion of the symposium, and provide a critical analysis of what you hear.<br />
<br />
==Requirements==<br />
<br />
You must attend two talks and write a report and analysis of the two. Your report must be 2,500 words in length and include:<br />
<br />
* Summaries of two talks.<br />
** What was each talk about?<br />
** What was the speaker's main point?<br />
** What was the speaker's background and point of view? <br />
* Analysis of each speaker's views on open source. He/she may not mention it explicitly. You must listen and try to understand based on what they are saying, and perhaps not saying.<br />
** Comparison of the points made by the presenters.<br />
** What can you say about open source in the light of the points they made?<br />
** Do the speakers have similar views of open source or do they disagree? How so? <br />
* Conclusion about your views on open source<br />
* Does the picture of open source you've seen presented in these talks challenge or confirm your own views about what open source is and how it functions?<br />
<br />
==Submission==<br />
<br />
Due Date: '''Friday November 4th'''. Please submit your work via the wiki (i.e., no paper copy required) by adding a link to your report below. Note: It would be a good idea to put any FSOSS reports under your personal page and username like so: http://zenit.senecac.on.ca/wiki/index.php/User:Dominic/FSOSS_07 to decrease the use of generic article names.<br />
<br />
==Student Reports==<br />
<br />
Link your finished reports below:<br />
<br />
'''Student Name, Link to wiki paper with Title'''<br />
<br />
Stanley Tsang, http://zenit.senecac.on.ca/wiki/index.php/User:Nm486/FSOSS_2011<br />
<br />
Anurag Bhatnagar, http://zenit.senecac.on.ca/wiki/index.php/FSOSS_2011_-_Anurag<br />
<br />
Greg Krilov, http://zenit.senecac.on.ca/wiki/index.php/User:Gkrilov/fsoss_2011<br />
<br />
roman hotin, http://zenit.senecac.on.ca/wiki/index.php/User:Rhotin , http://zenit.senecac.on.ca/wiki/index.php/User_talk:Rhotin<br />
<br />
Archana Sahota, http://zenit.senecac.on.ca/wiki/index.php/User:Asahota1/FSOSS_2011<br />
<br />
Hyungryul Chun, http://zenit.senecac.on.ca/wiki/index.php/User:Hchun/FSOSS_11<br />
<br />
Dennis Villasenor, [http://zenit.senecac.on.ca/wiki/index.php/User:Dvillase/FSOSS_2011 http://zenit.senecac.on.ca/wiki/index.php/User:Dvillase/FSOSS_2011]<br />
<br />
Ching Wei Tseng, http://zenit.senecac.on.ca/wiki/index.php/User:Cwtseng/FSOSS_2011<br />
<br />
Raymond Hung, http://zenit.senecac.on.ca/wiki/index.php/User:RHung/FSOSS_2011<br />
<br />
Diogo Golovanevsky Monteiro, http://zenit.senecac.on.ca/wiki/index.php/User:Diogogmt/FSOSS_2011<br />
<br />
Moussa Tabcharani, http://zenit.senecac.on.ca/wiki/index.php/User:Moussa1/FSOSS_2011<br />
<br />
Denise Rigato, http://zenit.senecac.on.ca/wiki/index.php/User:Drigato/FSOSS_11<br />
<br />
James Boelen, [[User:JBoelen/FSOSS_11]]</div>Jboelenhttps://wiki.cdot.senecacollege.ca/w/index.php?title=User:JBoelen&diff=77166User:JBoelen2012-01-08T01:25:25Z<p>Jboelen: </p>
<hr />
<div>__TOC__<br />
=James Boelen=<br />
==About==<br />
I'm a student in DPS909 (Open Source Development). For this semester, the project that I have chosen to work on is processing.js. I'll be completing bug tickets to improve the software and help out in the open source community. You can follow my work on my website (below)<br />
<br />
<br />
==Papers==<br />
FSOSS 2011 Paper on Tiki and Raspberry Pi - [[User:JBoelen/FSOSS_2011 | link]]<br />
<br />
Adventures in Open Source - [http://james.boelen.ca/open_source/adventures-in-open-source/ link]<br />
<br />
<br />
==Links==<br />
Website: [http://james.boelen.ca http://james.boelen.ca]<br />
<br />
Twitter: [http://twitter.com/JamesBoelen http://twitter.com/JamesBoelen]<br />
<br />
Github: [https://github.com/JamesBoelen https://github.com/JamesBoelen]</div>Jboelenhttps://wiki.cdot.senecacollege.ca/w/index.php?title=User:JBoelen&diff=77165User:JBoelen2012-01-08T01:21:51Z<p>Jboelen: /* James Boelen */</p>
<hr />
<div>=James Boelen=<br />
I'm a student in DPS909 (Open Source Development). For this semester, the project that I have chosen to work on is processing.js. I'll be completing bug tickets to improve the software and help out in the open source community. You can follow my work on my website (below)<br />
<br />
<br />
==FSOSS Paper==<br />
Here is a [[User:JBoelen/FSOSS_2011 | link]] to my FSOSS 2011 Paper on Tiki and Raspberry Pi<br />
<br />
==Links==<br />
Website: [http://james.boelen.ca http://james.boelen.ca]<br />
<br />
Twitter: [http://twitter.com/JamesBoelen http://twitter.com/JamesBoelen]<br />
<br />
Github: [https://github.com/JamesBoelen https://github.com/JamesBoelen]</div>Jboelenhttps://wiki.cdot.senecacollege.ca/w/index.php?title=User:JBoelen/FSOSS_2011&diff=77164User:JBoelen/FSOSS 20112012-01-08T01:10:01Z<p>Jboelen: </p>
<hr />
<div>=Free Software and Open Source Symposium Paper=<br />
==Introduction==<br />
<br />
For my class in open source development, I was tasked with attending the Free Software and Open Source Symposium (FSOSS) conference in Toronto Canada, and reporting on 2 of the talks that I viewed. FSOSS is a collection of talks and workshops about new, upcoming, and current projects from members throughout the open technologies communities about how they are shaping the future of multimedia (including web, video and education).<br />
<br />
The conference took place between October 27th and 29th of 2011 and the Seneca @ York and during that time I attended several of the talks, but the two that stood out for me was a presentation by Eben Upton on Raspberry Pi, a a new 25$ computer, and on by Neson Ko and Pascal St-Jean about TikiWiki, a robust and powerful wiki option for open source development.<br />
<br />
For me, the main ideals that I hold for open technologies are access and collaboration. What I love most about open technologies is that anyone can use them. The traditional monetary obstacles that exist for software are not a problem because for the most part, it’s free. This puts everyone on the same playing field to use and learn about tools and methods for achieving their goals. If access is the heart of open technologies, collaboration is the soul. Seeing people from all over the world, come together and produce functional and high quality software is incredible. Not only do the solutions work, many of the people contributing to projects are doing it for free. In the busy world that we live in, it’s great to see people finding the time to help out and share with the global community.<br />
<br />
Though I enjoyed all of the talks that I attended, the two aforementioned presentations stood out for me as I felt that they both hit home with the values I hold highest for open development.<br />
<br />
<br />
==Raspberry Pi==<br />
<br />
“A Slice of Raspberry Pi” by Eben Upton was a fascinating talk about a new 25$ linux box. He noted that when he was a professor in computer science at Cambridge University, he found that the quality of applicants was steadily decreasing. Gone were the once adept students applying for entry, replaced by those with lackluster experience and little pre-existing knowledge of computer programming. Not only did applicants know less, they were dwindling in number. Though he and his colleagues had several ideas about why this was happening, they felt that their best efforts of helping curb this issue would be placed in trying to increase access to the hardware itself. Thus, the idea for Raspberry Pi was formed. A computer that was cheap and easy to produce that also had a decent amount of processing power.<br />
<br />
What Raspberry Pi turned out to be holds a lot of potential. The hardware, about the same size as a credit card with the depth of about 1 inch, was able to run a full Linux distribution and even play HD video. It also boasted a somewhat powerful processor considering it’s size (similar to what is also being used in modern smartphones), ran at a low temperature, and required very little power.<br />
<br />
With a small, lightweight computer that has a low initial cost and low upkeep costs, it opens a world of possibilities and creates a huge potential market. The current iteration of computers is quite expensive. With this technology, it opens the doors so that more computers are available in schools for students of all ages to learn on and use; enables those of lower income or underdeveloped countries to gain access to decent quality technology.<br />
<br />
As I mentioned before, access is an integral pillar of open technology. Raspberry Pi has the potential to remove the monetary roadblock for a huge portion of the global population. This computer is a tenth of the cost of the tradition variety and could easily be bought or donated en masse to many different groups in need. In places with shared access, the number of available stations could increase so that individuals who want to use and learn more have the ability. Though the initial idea that started this project off may have been to increase enrollment at college and have more people interested with programming, the implications of this are far greater than merely that. The ever-expanding global village will be able to hugely benefit and allow access to many users that have never been able to enjoy the benefits of using a computer.<br />
<br />
A lot of open development is focused on the software aspect and not nearly enough on the hardware aspect. Though there have been other efforts in creating accessible hardware for everyone, to the best of my knowledge, this is one of the cheapest options soon to be available. I can only image that this could have a big impact for the One Laptop Per Child mission. With even cheaper hardware, they would be able to donate even more laptops to underprivileged children throughout the world. With more access, kids and students will be able to have a hands-on approach to learning too. Instead of merely reading or seeing demonstrations, they themselves would be able to actively participate and hopefully gain an appreciation and interest of the hardware and software. Computer skills are necessary for almost any job. This technology will level the field for many, many people.<br />
<br />
Philanthropic possibilities aside, this computer could even allow those with a general interest to explore subjects like hardware modification (since the unit is easily replaced) or distributed computing (as the units are cheap and can be bought in bulk). People will no longer need to use a specialized lab to learn and work with these paradigms.<br />
<br />
Obviously there are other barriers to have nearly barrier free access to computers for everyone in the world. Hopefully though, this will start the ball rolling so that cheaply available computer systems (monitor, computer, peripherals) are easily available. Computers offer a huge advantage and affording everyone the opportunity to use and learn how to use and work with them will increase the quality of life around the globe.<br />
<br />
<br />
==Tiki==<br />
<br />
“Tiki Wiki CMS Groupware – Software the Wiki Way” by Nelson Ko and Pascal St-Jean was an interesting presentation on the TikiWiki software and how their community functions. With 250 active developers, 1,000,000 lines of code and over 1000 features, they had to collaborate and work as a cohesive group. While there have been some negatives, the benefits of writing software in a wiki way have been far greater. Applying the wiki idea to creating software has ended up with one of the most successful open technologies for content management, wiki and groupware all in one product.<br />
<br />
While the project does have certain priorities, it is mainly a “do-ocracy”. What this means is that you only have to work on the stuff you want to do or use. Much like a wiki, you can also edit or code on anything else that already exists. In many projects, there are owners to certain features. In the Tiki case, much like a wiki, anyone can edit anything and everyone can request access. Most of the people that are contributing are doing so because there is a need that they had and filled and wanted to share it back with the community. This is the main reason that they so many features. This methodology is manageable because all of the code is in one repository. With other systems that have thousands of features, the code is scattered and it’s hard to continue development on features that no longer have a developer. In the Tiki case, if a developer fails to maintain a feature that they created or if someone else wants to add some new sub features, they can do it on their own and not bother trying to request the original developer to do it or have to start their own completely new feature.<br />
<br />
With so many people editing different parts of the code base, there needs to be a way to test to make sure that the features work properly and are bug free before the software is released. A process called “Dogfood” achieves this. The beauty of Tiki is that the contributors of the software are themselves using the software to contribute. This recursive system of software development means that any bugs or issues are quickly resolved and fixed. This also means that not only do you have end-users that can inform you of issues should they occur, but Tiki will themselves encounter the same issues because it is its own platform for development. This also increases the confidence that users have in the product because they are using it as a proof of concept.<br />
<br />
I found this talk really interesting. Typically few people have access to the software repository when development occurs in the open source world. Normally, one person has access to the main repository and all code changes need to go through them (whether it’s patch files in Subversion or pull requests in Git). This successful shift in the fundamental way that the software is developed and how it grows is really amazing. With the wiki idea behind the development it also ensure that there is still accountability. While access to the repository is controlled, it’s still considerably open (considering 250 people have full read/write access). It’s also nice because no one has to wait for something to be fixed. If a developer fails to fix their code in a timely manner, someone else can do it. Sure this introduces other issues but for the most part it seems to have worked incredibly well for Tiki and many other projects could probably benefit from a similar system. I also found that Tiki using the software it’s developing to run itself very cool. It’s a very easy way to build confidence in the software when you can see the success that they’ve had. A lot of open technologies are built by people who use their own product, but have no real proof of concept to show others. Tiki is a huge stakeholder since it’s run off of its own software and has a development cycle that almost ensure that features will always have developers shows that it works incredibly well. The idea of having a collaborative effort akin to Wikipedia for building software would be a very hard sell, except that Tiki has already shown how well it works.<br />
<br />
<br />
==Comparison==<br />
<br />
It’s hard to compare the two technologies because, for me, they both represent different parts of the open technologies community. Raspberry Pi deals with access and Tiki, collaboration. This being said, there are two things they are both doing extremely well. They are both challenging existing notions of how thing are or how they should be done and removing existing obstacles that were preventing people from achieving their goals.<br />
<br />
Raspberry Pi is challenging the way that we thing about hardware and how access to it is controlled by large monetary blockades. What was once exclusively available to those who could afford it, can now be purchased by nearly anyone. Moreover, it allows institutions who allowed those who could not afford it, the ability to grant greater access by purchasing more units for the same amount of money. Places like libraries that only need computers to browse a catalogue, browse the Internet, or for simple word processing will find machines like this fantastic for this purpose.<br />
<br />
Tiki on the other hand is challenging the way that we develop software in the open community. Until now, software has been typically developed in a way where very few people have write access to the code repository. Now we can see the great success that can be found in developing software the same way that Wikipedia built it’s gargantuan compendium of knowledge. It’s exciting to see the wiki method applied to software development because it has huge implications for future projects. As a developer, it’s interesting to see how the burden of effectively being a gatekeeper for a project can be lifted under the right circumstances. Volunteer open technology developers are almost exclusively made up of people who want to improve software. This completely removes the roadblocks that were preventing them from directly adding their contributions and completely opens open technology development.<br />
<br />
<br />
==Conclusion==<br />
<br />
I’m really glad that I attended these two talks. I love seeing existing notions challenged and shaken to the core. As a developer, these changes could prove to completely change the way we think about hardware and software. Both Tiki and Raspberry Pi are showing us that you can do things a new way and that nothing is set in stone. I’ve mentioned throughout this that my two central ideas in open technologies is providing access to as many people as possible, and collaborating to create something far greater than a single person could ever achieve. Both of these projects relate directly to that and I think it’s encouraging to see that developments are still being made to these central columns of what I think it means to be “open”.<br />
<br />
I look forward to attending FSOSS again next year where I will hopefully get to see more about how the world of open technologies is being shaped and change. I enjoyed all the quality talks this year and encourage anyone else who enjoys and is active in open technologies to attend.</div>Jboelenhttps://wiki.cdot.senecacollege.ca/w/index.php?title=User:JBoelen/FSOSS_2011&diff=77163User:JBoelen/FSOSS 20112012-01-08T01:09:15Z<p>Jboelen: Created page with ' Normal 0 false false false EN-US JA X-NONE =Free Software and Open Source Symposium Paper= ==Introduction== For my class in open source develo…'</p>
<hr />
<div> Normal 0 false false false EN-US JA X-NONE<br />
<br />
=Free Software and Open Source Symposium Paper=<br />
==Introduction==<br />
<br />
For my class in open source development, I was tasked with attending the Free Software and Open Source Symposium (FSOSS) conference in Toronto Canada, and reporting on 2 of the talks that I viewed. FSOSS is a collection of talks and workshops about new, upcoming, and current projects from members throughout the open technologies communities about how they are shaping the future of multimedia (including web, video and education).<br />
<br />
The conference took place between October 27th and 29th of 2011 and the Seneca @ York and during that time I attended several of the talks, but the two that stood out for me was a presentation by Eben Upton on Raspberry Pi, a a new 25$ computer, and on by Neson Ko and Pascal St-Jean about TikiWiki, a robust and powerful wiki option for open source development.<br />
<br />
For me, the main ideals that I hold for open technologies are access and collaboration. What I love most about open technologies is that anyone can use them. The traditional monetary obstacles that exist for software are not a problem because for the most part, it’s free. This puts everyone on the same playing field to use and learn about tools and methods for achieving their goals. If access is the heart of open technologies, collaboration is the soul. Seeing people from all over the world, come together and produce functional and high quality software is incredible. Not only do the solutions work, many of the people contributing to projects are doing it for free. In the busy world that we live in, it’s great to see people finding the time to help out and share with the global community.<br />
<br />
Though I enjoyed all of the talks that I attended, the two aforementioned presentations stood out for me as I felt that they both hit home with the values I hold highest for open development.<br />
<br />
<br />
==Raspberry Pi==<br />
<br />
“A Slice of Raspberry Pi” by Eben Upton was a fascinating talk about a new 25$ linux box. He noted that when he was a professor in computer science at Cambridge University, he found that the quality of applicants was steadily decreasing. Gone were the once adept students applying for entry, replaced by those with lackluster experience and little pre-existing knowledge of computer programming. Not only did applicants know less, they were dwindling in number. Though he and his colleagues had several ideas about why this was happening, they felt that their best efforts of helping curb this issue would be placed in trying to increase access to the hardware itself. Thus, the idea for Raspberry Pi was formed. A computer that was cheap and easy to produce that also had a decent amount of processing power.<br />
<br />
What Raspberry Pi turned out to be holds a lot of potential. The hardware, about the same size as a credit card with the depth of about 1 inch, was able to run a full Linux distribution and even play HD video. It also boasted a somewhat powerful processor considering it’s size (similar to what is also being used in modern smartphones), ran at a low temperature, and required very little power.<br />
<br />
With a small, lightweight computer that has a low initial cost and low upkeep costs, it opens a world of possibilities and creates a huge potential market. The current iteration of computers is quite expensive. With this technology, it opens the doors so that more computers are available in schools for students of all ages to learn on and use; enables those of lower income or underdeveloped countries to gain access to decent quality technology.<br />
<br />
As I mentioned before, access is an integral pillar of open technology. Raspberry Pi has the potential to remove the monetary roadblock for a huge portion of the global population. This computer is a tenth of the cost of the tradition variety and could easily be bought or donated en masse to many different groups in need. In places with shared access, the number of available stations could increase so that individuals who want to use and learn more have the ability. Though the initial idea that started this project off may have been to increase enrollment at college and have more people interested with programming, the implications of this are far greater than merely that. The ever-expanding global village will be able to hugely benefit and allow access to many users that have never been able to enjoy the benefits of using a computer.<br />
<br />
A lot of open development is focused on the software aspect and not nearly enough on the hardware aspect. Though there have been other efforts in creating accessible hardware for everyone, to the best of my knowledge, this is one of the cheapest options soon to be available. I can only image that this could have a big impact for the One Laptop Per Child mission. With even cheaper hardware, they would be able to donate even more laptops to underprivileged children throughout the world. With more access, kids and students will be able to have a hands-on approach to learning too. Instead of merely reading or seeing demonstrations, they themselves would be able to actively participate and hopefully gain an appreciation and interest of the hardware and software. Computer skills are necessary for almost any job. This technology will level the field for many, many people.<br />
<br />
Philanthropic possibilities aside, this computer could even allow those with a general interest to explore subjects like hardware modification (since the unit is easily replaced) or distributed computing (as the units are cheap and can be bought in bulk). People will no longer need to use a specialized lab to learn and work with these paradigms.<br />
<br />
Obviously there are other barriers to have nearly barrier free access to computers for everyone in the world. Hopefully though, this will start the ball rolling so that cheaply available computer systems (monitor, computer, peripherals) are easily available. Computers offer a huge advantage and affording everyone the opportunity to use and learn how to use and work with them will increase the quality of life around the globe.<br />
<br />
<br />
==Tiki==<br />
<br />
“Tiki Wiki CMS Groupware – Software the Wiki Way” by Nelson Ko and Pascal St-Jean was an interesting presentation on the TikiWiki software and how their community functions. With 250 active developers, 1,000,000 lines of code and over 1000 features, they had to collaborate and work as a cohesive group. While there have been some negatives, the benefits of writing software in a wiki way have been far greater. Applying the wiki idea to creating software has ended up with one of the most successful open technologies for content management, wiki and groupware all in one product.<br />
<br />
While the project does have certain priorities, it is mainly a “do-ocracy”. What this means is that you only have to work on the stuff you want to do or use. Much like a wiki, you can also edit or code on anything else that already exists. In many projects, there are owners to certain features. In the Tiki case, much like a wiki, anyone can edit anything and everyone can request access. Most of the people that are contributing are doing so because there is a need that they had and filled and wanted to share it back with the community. This is the main reason that they so many features. This methodology is manageable because all of the code is in one repository. With other systems that have thousands of features, the code is scattered and it’s hard to continue development on features that no longer have a developer. In the Tiki case, if a developer fails to maintain a feature that they created or if someone else wants to add some new sub features, they can do it on their own and not bother trying to request the original developer to do it or have to start their own completely new feature.<br />
<br />
With so many people editing different parts of the code base, there needs to be a way to test to make sure that the features work properly and are bug free before the software is released. A process called “Dogfood” achieves this. The beauty of Tiki is that the contributors of the software are themselves using the software to contribute. This recursive system of software development means that any bugs or issues are quickly resolved and fixed. This also means that not only do you have end-users that can inform you of issues should they occur, but Tiki will themselves encounter the same issues because it is its own platform for development. This also increases the confidence that users have in the product because they are using it as a proof of concept.<br />
<br />
I found this talk really interesting. Typically few people have access to the software repository when development occurs in the open source world. Normally, one person has access to the main repository and all code changes need to go through them (whether it’s patch files in Subversion or pull requests in Git). This successful shift in the fundamental way that the software is developed and how it grows is really amazing. With the wiki idea behind the development it also ensure that there is still accountability. While access to the repository is controlled, it’s still considerably open (considering 250 people have full read/write access). It’s also nice because no one has to wait for something to be fixed. If a developer fails to fix their code in a timely manner, someone else can do it. Sure this introduces other issues but for the most part it seems to have worked incredibly well for Tiki and many other projects could probably benefit from a similar system. I also found that Tiki using the software it’s developing to run itself very cool. It’s a very easy way to build confidence in the software when you can see the success that they’ve had. A lot of open technologies are built by people who use their own product, but have no real proof of concept to show others. Tiki is a huge stakeholder since it’s run off of its own software and has a development cycle that almost ensure that features will always have developers shows that it works incredibly well. The idea of having a collaborative effort akin to Wikipedia for building software would be a very hard sell, except that Tiki has already shown how well it works.<br />
<br />
<br />
==Comparison==<br />
<br />
It’s hard to compare the two technologies because, for me, they both represent different parts of the open technologies community. Raspberry Pi deals with access and Tiki, collaboration. This being said, there are two things they are both doing extremely well. They are both challenging existing notions of how thing are or how they should be done and removing existing obstacles that were preventing people from achieving their goals.<br />
<br />
Raspberry Pi is challenging the way that we thing about hardware and how access to it is controlled by large monetary blockades. What was once exclusively available to those who could afford it, can now be purchased by nearly anyone. Moreover, it allows institutions who allowed those who could not afford it, the ability to grant greater access by purchasing more units for the same amount of money. Places like libraries that only need computers to browse a catalogue, browse the Internet, or for simple word processing will find machines like this fantastic for this purpose.<br />
<br />
Tiki on the other hand is challenging the way that we develop software in the open community. Until now, software has been typically developed in a way where very few people have write access to the code repository. Now we can see the great success that can be found in developing software the same way that Wikipedia built it’s gargantuan compendium of knowledge. It’s exciting to see the wiki method applied to software development because it has huge implications for future projects. As a developer, it’s interesting to see how the burden of effectively being a gatekeeper for a project can be lifted under the right circumstances. Volunteer open technology developers are almost exclusively made up of people who want to improve software. This completely removes the roadblocks that were preventing them from directly adding their contributions and completely opens open technology development.<br />
<br />
<br />
==Conclusion==<br />
<br />
I’m really glad that I attended these two talks. I love seeing existing notions challenged and shaken to the core. As a developer, these changes could prove to completely change the way we think about hardware and software. Both Tiki and Raspberry Pi are showing us that you can do things a new way and that nothing is set in stone. I’ve mentioned throughout this that my two central ideas in open technologies is providing access to as many people as possible, and collaborating to create something far greater than a single person could ever achieve. Both of these projects relate directly to that and I think it’s encouraging to see that developments are still being made to these central columns of what I think it means to be “open”.<br />
<br />
I look forward to attending FSOSS again next year where I will hopefully get to see more about how the world of open technologies is being shaped and change. I enjoyed all the quality talks this year and encourage anyone else who enjoys and is active in open technologies to attend.</div>Jboelenhttps://wiki.cdot.senecacollege.ca/w/index.php?title=User:JBoelen&diff=77162User:JBoelen2012-01-07T22:35:59Z<p>Jboelen: Created page with '=James Boelen= Website: [http://james.boelen.ca http://james.boelen.ca]'</p>
<hr />
<div>=James Boelen=<br />
Website: [http://james.boelen.ca http://james.boelen.ca]</div>Jboelenhttps://wiki.cdot.senecacollege.ca/w/index.php?title=Implementing_the_Mouse_Lock_API_in_Firefox&diff=75780Implementing the Mouse Lock API in Firefox2011-12-09T15:36:43Z<p>Jboelen: /* Test Reviews */</p>
<hr />
<div>==Introduction==<br />
<br />
This is a working document for the implementation of the [http://dvcs.w3.org/hg/webevents/raw-file/default/mouse-lock.html Mouse Lock API spec] in Mozilla by students in David Humphrey's Mozilla Development class at Seneca College.<br />
<br />
Please add, edit, correct, expand, etc. as necessary. This page should contain any links or other info we need.<br />
<br />
==Participants==<br />
<br />
While the project is primarily meant for students in DPS909/OSD600, feel free to join us if you want to work on things.<br />
<br />
* David Humphrey (lead developer, professor, [http://twitter.com/humphd @humphd])<br />
* Hasan Kamal-Al-Deen (tardy student, [http://twitter.com/NorthWind87 @NorthWind87])<br />
* Matthew Schranz (Student, OSD600, [http://twitter.com/mjschranz @mjschranz])<br />
* Yevgeniy Ivanchenko (Student, OSD600)<br />
* Chris Gosselin (Student, OSD600)<br />
* Anurag Bhatnagar (Student, DPS909, [http://twitter.com/anuragbh @anuragbh])<br />
* Raymond Hung (Wannabe Developer, Student, [http://twitter.com/Raymond_Hung @Raymond_Hung])<br />
* Ausley Johnson(Student, OSD600)<br />
* Jesse Silver (Student, OSD600)<br />
* Ching Wei Tseng(Student, DPS909)<br />
* Michelle Mendoza (Student, DPS909)<br />
* Archana Sahota (Student, DPS909)<br />
* Greg Krilov (Student, DPS909)<br />
* Roman Hotin (Student, DPS909)<br />
* Sergiu Ecob (Student, OSD600)<br />
* Jordan Raffoul (Student)<br />
* Hyungryul Chun (Student, DPS909)<br />
* James Boelen ([http://25.media.tumblr.com/tumblr_ln817mfAfn1qlj6hwo1_500.jpg Masked Crusader], [http://twitter.com/jamesboelen @jamesboelen])<br />
* Jacky Siu (Student, OSD600)<br />
* Abhishek Bhatnagar (Student, [http://twitter.com/abhishekToronto @abhishekToronto])<br />
* Diogo Golovanevsky Monteiro ([http://twitter.com/diogogmt @diogogmt])<br />
* Simon de Almeida(Student) ([http://twitter.com/simon661 @simon661])<br />
* Stanley Tsang (Student, DPS909)<br />
* Denise Rigato (Student, DPS909)<br />
* Qian (Ken) Xu (Student, DPS909)<br />
* Moussa Tabcharani (Student, DPS909)<br />
* Keyan Ren (Student, OSD600)<br />
* Joseph Hughes (Student, OSD600)<br />
<br />
==Communication==<br />
<br />
Development work will be done using a combination of the following:<br />
<br />
* In class discussions: 11:40-1:30 Tuesday and Thursday in TEL T2110<br />
* IRC discussions: [irc://irc.mozilla.org/seneca #seneca], [irc://irc.mozilla.org/paladin #paladin]<br />
* Questions: ask and answer any questions here: [[Mouse Lock Implementation FAQ]]<br />
* Blog Series: http://vocamus.net/dave/?cat=28<br />
<br />
==Tasks==<br />
<br />
===Getting Started===<br />
<br />
# Clone our repo and build a debug version locally<br />
# Get a https://bugzilla.mozilla.org account and CC yourself on the [https://bugzilla.mozilla.org/show_bug.cgi?id=633602 bug].<br />
# Set a Watch on this page and the Q/A page so you know when things change.<br />
# Break the spec down into an itemized list of things we need to do, tests we need to write, features we have to add, edge cases we have to worry about, demos we need to build, etc. Put the info into this page. We need to know everything we'll have to write and schedule when we'll do each bit.<br />
# Blog about your work on this implementation<br />
# Add questions/answers to [[Mouse Lock Implementation FAQ]]<br />
<br />
===High-Level Mouse Lock Implementation Tasks===<br />
<br />
====Implementation====<br />
<br />
# <s>No mouse cursor is displayed when the mouse is locked</s> - rhung<br />
# <s>MouseLockable DOM Implementation, navigator.pointer ([[Notes on MouseLock DOM Implementation Nov 13, 2011]])</s> - humph<br />
## <strike>[[void lock (in Element target, optional in VoidCallback successCallback, optional in VoidCallback failureCallback);]]</strike> diogogmt, humph<br />
## <strike>void unlock ();</strike> humph, diogogmt<br />
## <strike>bool islocked ();</strike> - humph<br />
# <strike>Mouse Lock Platform Implementations</strike> JSilver999, humph<br />
## <strike>Windows: [http://msdn.microsoft.com/en-us/library/windows/desktop/ms648394%28v=vs.85%29.aspx SetCursorPos(x, y)]</strike><br />
## <strike>OS X [http://www.cocoabuilder.com/archive/cocoa/77124-setting-cursor-position.html CGWarpMouseCursorPosition(CGPointMake(x, y))]</strike><br />
## <strike>Linux (GTK) [http://www.gtkforums.com/viewtopic.php?t=182 gdk_display_warp_pointer (display, screen, x, y)], add to http://mxr.mozilla.org/mozilla-central/source/widget/src/gtk2/nsWindow.cpp ???</strike><br />
## Mobile?<br />
# <strike>Investigate whether we can get movement information directly from OS</strke> - northWind<br />
# <s>mouselocklost event DOM Implementation</s> - diogogmt<br />
# <s>Extend MouseEvent DOM implementation with movementX, movementY</s> - humph, JSilver999<br />
## <s>[[Stack Trace for nsDOMMouseEvent::nsDOMMouseEvent ctor]] (created on mouse move)</s><br />
## <s>[[Stack Trace for nsDOMMouseEvent::GetScreenX]]</s><br />
## <s>[[Where to store the state info (e.g., previous position) between mouse events?]]</s><br />
# <s>The browser must exit the mouse lock state if the user agent, window, or tab loses focus</s> - diogogmt<br />
# <strike>Fixup NULLs being returned from lock() C++ implementation, should be NS*</strike> - Anachid<br />
# <strike>Mouse lock should only work when in Full Screen Mode</strike> - diogogmt, rhung<br />
# <strike>[[Refactor nsIDOMNavigator changes for pointer attribute to be in separate interface]]</strike> humph<br />
# <strike>Do we need to do conditional compilation for mouse lock?</strike> humph (not going to bother for now)<br />
# <strike>When mouse lock is enabled clientX, clientY, screenX, and screenY must hold constant values as if the mouse did not move at all once mouse lock was entered.</strike> humph<br />
# <s>Freeze mouse pointer in centre of window when mouse lock is enabled (e.g., moving the mouse causes an event, but forces the mouse to go back to the original position).</s> - JSilver999<br />
# <strike>"Events that require the concept of a mouse cursor must not be dispatched (for example: mouseover, mouseout)"</strike> - humph<br />
# <strike>Figure out [[Mac Crash with Jesse's SynthesizeMouseMove change]]</strike> humph<br />
# <strike>When the locked element is removed from the DOM Tree, the mouse should be unlocked</strike> diogogmt<br />
# <strike>Save the screenX and screenY position before locking the mouse.</strike> - humph<br />
# <strike>Reset the mouse position back to the original position when unlocking.</strike> - humph<br />
# <s>"When unlocked, the system cursor can exit and re-enter the user agent window. If it does so and the user agent was not the target of operating system mouse move events then the most recent mouse position will be unknown to the user agent and movementX/Y can not be computed and must be set to zero"</s> diogogmt<br />
# <s>Trying to lock a locked element should fire the success callback</s> CloudScorpion<br />
# <s>Before locking the mouse check if the element is a DOM element and if it is in the DOM Tree</s> diogogmt<br />
# <s>Fix accurateness of mouse positioning on unlock() (should be the same point as when lock() was called). Currently works, but is offset. See nsEventStateManager::SetMouseLock. </s> JSilver999<br />
# <s>Restructure Lock method to do most of its operations in a separate thread.</s> humph<br />
# <s>Fix license headers for new files to use proper [http://www.mozilla.org/MPL/boilerplate-1.1/ MPL boilerplate]</s> humph<br />
# <s>Do we need to add a user pref to enable/disable mouse lock? Nice to have, not blocking.</s> northwind, mjschranz<br />
# "Once mouse lock is acquired, stop mouse events from being fired to other elements that are not locked (e.g., only fire to locked element)." Only the fullscreen element will get events. Need advice in review on how to do this properly.<br />
<br />
=====Out of Scope Implementation=====<br />
<br />
Because we are only implementing Mouse Lock for Fullscreen elements, some aspects of the spec can/must be put off until later. Other items below are simply not in scope for this first round of implementation.<br />
<br />
# The ESC key should exit mouse lock. This will currently exit fullscreen, and therefore mouse lock - diogogmt<br />
# "User agents may prompt for confirmation before locking, this preference may be saved as a content setting" How to deal with this? What UI do we use? See also, "Repeated escapes of mouse lock can signal user agent to not re-lock the mouse without more specific user intent gesture, e.g. similar to how Chrome suppresses repeated alert() calls"<br />
# "The Mouse Lock API must exit the mouse lock state if the user agent, window, or tab loses focus"<br />
# Clip the mouse so it doesn't leave the locked element with a mouse movement large enough to exceed its bounds. See:<br />
## [http://msdn.microsoft.com/en-us/library/windows/desktop/ms648383%28v=vs.85%29.aspx ClipCursor] on Windows<br />
## [http://developer.apple.com/library/mac/#documentation/GraphicsImaging/Reference/Quartz_Services_Ref/Reference/reference.html CGAssociateMouseAndMouseCursorPosition and CGGetLastMouseDelta] on OS X<br />
## [http://www.x.org/archive/X11R6.8.2/doc/XGrabPointer.3.html XGrabPointer] on Linux<br />
<br />
===Tests===<br />
<br />
The central repo with all the tests are located [https://github.com/rhung/mozilla-central/tree/mouselock-tests here]. For more information on how to make mochitests and how to send the pull request to the appropriate person, check out the [http://zenit.senecac.on.ca/wiki/index.php/Mochitest_FAQ Mochitest FAQ] List tests we need below:<br />
# <s>"there is no limit to how far movement can go...not limited by screen boundaries" -- mouse lock should mean infinite movement in the X and Y axes...There will be no limit to movementX/Y values if the mouse is continuously moved in a single direction"</s> - '''hchun'''<br />
# <s>"The concept of the mouse cursor will have been removed, and it will not move off the window or be clamped by a screen edge"</s> - '''hchun'''<br />
# "no mouse cursor is displayed" -- mouse cursor should be hidden while locked - '''dvillase'''<br />
# <s>navigator.pointer (readonly) is a MouseLockable</s> - <strong>abhatnagar</strong><br />
# <s>MouseLockable has lock(), unlock(), islocked()</s> - <strong>abhatnagar</strong><br />
# <s>islocked() returns true if mouse is locked, false if not locked</s> - <strong>JSilver999</strong><br />
# <s>lock(target) expects a DOM element, and takes two optional callbacks: successcallback, failurecallback.</s> - <strong>JSilver999</strong><br />
# <s>lock() should return immediately and call callbacks when lock succeeds or fails</s> - <strong>JSilver999</strong><br />
# <s>"Mouse lock must succeed only if the window is in focus" - '''johnno'''</s><br />
# <s>"Mouse lock must succeed only if...the user-agent is the active application of the operating system"</s> - '''johnno'''<br />
# <s>"The target of lock need not be in focus" - '''johnno'''</s><br />
# <s>"Mouse lock must succeed only if the target is in the DOM tree"</s> - '''Anachid'''<br />
# <s>"If the target is removed from the DOM tree after mouse lock is entered then mouse lock will be lost."</s> - '''Anachid'''<br />
# <s>"If the mouse is already locked to the same element, a repeated call to lock will succeed and the successCallback called"</s> - '''jboelen'''<br />
# <s>"If another element is locked [and lock() is called] a user agent must transfer the mouse lock to the new target and call the mouselocklost callback for the previous target"</s> - '''jboelen'''<br />
# <s>"The Mouse Lock API must provide a default system action to unlock the mouse" namely ESC.</s> - '''CloudScorpian'''<br />
# <s>"Once in the locked state the user agent must fire all relevant user generated MouseEvent events (for example: mousemove, mousedown, mouseup, click, wheel)[DOM-LEVEL-3-CORE] to the target of mouse lock, and not fire mouse events to other elements"</s> - '''rhung'''<br />
# <s>"Events that require the concept of a mouse cursor must not be dispatched (for example: mouseover, mouseout)"</s> - '''rhung'''<br />
# "Movement and button presses of the mouse must not cause the window to lose focus" - <br />
# <s>"Synthetic mouse events created by application script act the same regardless of lock state"</s> - '''Tentacle'''<br />
# <s>"The unlock method cancels the mouse lock state"</s> - '''abhatnagar1'''<br />
# "[Upon unlock() t]he system mouse cursor must be displayed again and positioned at the same location that it was when mouse lock was entered (the same location that is reported in screenX/Y when the mouse is locked)" - '''dvillase'''<br />
# <s>"When mouse lock is lost or disabled for any reason user agents must fire an event named mouselocklost with its bubble attribute set to true to the mouse lock target element"</s> - '''stsang'''<br />
# <s>MouseEvent must contain (readonly) movementX and movementY</s> - '''KeyR, JSilver999'''<br />
# <s>"The members movementX and movementY must provide the change in position of the mouse, as if the values of screenX/Y were stored between two subsequent mousemove events eNow and ePrevious and the difference taken movementX = eNow.screenX-ePrevious.screenX"</s> - '''KeyR, JSilver999'''<br />
# <s>"movementX/Y must be valid regardless of mouse lock state"</s> - '''KeyR, JSilver999'''<br />
# <s>"When unlocked, the system cursor can exit and re-enter the user agent window. If it does so and the user agent was not the target of operating system mouse move events then the most recent mouse position will be unknown to the user agent and movementX/Y can not be computed and must be set to zero"</s> - '''moussa1'''<br />
# <s>"When mouse lock is enabled clientX, clientY, screenX, and screenY must hold constant values as if the mouse did not move at all once mouse lock was entered"</s> - '''jbraffoul'''<br />
# <s>"The Mouse Lock API must exit the mouse lock state if the user agent, window, or tab loses focus"</s> - '''drigato'''<br />
# Test to make sure that mouse lock only occurs when an element is in full screen mode (not F11 or done via the menus). This includes:<br />
## Switching focus to another window - '''jsiu3'''<br />
# <s>Tests for mouselocklost event</s> - '''stsang'''<br />
<br />
=====Reviewing Tests=====<br />
<br />
There are a series of common mistakes in the tests that need to get fixed. Here are some of them:<br />
<br />
# Need to clean-up tabs vs. spaces and indentation issues (2-spaces per tab) in many test files. Use https://github.com/einars/js-beautify. [https://github.com/rhung/mozilla-central/blob/mouselock-tests/dom/tests/mochitest/mouselock/test_userPref.html This is a test that is formatted correctly], in terms of indentation and spaces vs. tabs.<br />
# No line of code should be 80 characters or longer--break them so they are under 80<br />
# No Windows end-of-lines, use Unix end-of-lines<br />
# No whitespace at the end of a line<br />
# Run your test code through http://www.jshint.com/. Note, it will complain about unknown globals like SimpleTest. Make sure the rest of the JavaScript is good.<br />
# Remove unnecessary comments. Only things that explain the test.<br />
# If you need constants, use const instead of var<br />
# Don't use variables if they aren't needed. For example, don't introduce a variable to store a value, only to pass it into ok() or is(). Just test the expression in ok() or is().<br />
# Make sure your JavaScript follows proper naming: goodVariableName, bad_variable_name, badvariablename;<br />
# Tests should follow the template as closely as makes sense: http://pastebin.com/vxmsepVh<br />
# Tests should include a simple comment block describing what is being tested<br />
# Only use <code>SimpleTest.waitForFocus()</code> if you really need it.<br />
# Be consistent with "..." vs. '...' for strings. Pick one and use it throughout the file.<br />
# Remove <code>console.log()</code><br />
# Prefer <code>document.body</code> to <code>document.getElementsByTagName('body')[0]</code><br />
# Braces on the same line: <code>if (...) {\n</code> and <code>} else {\n</code><br />
# An error message for is() or ok() of "Error message" is not acceptable. Make sure you understand the failure.<br />
# If you need to actually lock the mouse, you'll need <code>SpecialPowers.setBoolPref("full-screen-api.allow-trusted-requests-only", false);</code> to allow non-user initiated fullscreen mode (i.e., normally it requires a user to click a button or trigger some other event).<br />
# If you're testing that variable foo or expression fooFunction() are true, use ok(), not is(): <code>ok(foo, "Error message if not true.");</code> or <code>ok(fooFunction(), "Error message if function returns false");</code>. Don't do <code>is(foo, true, "Error message if false.");<br />
# Make sure code that relies on things happening in asynchronous code gets called in a callback or event handler, not on the next line. For example, if you call navigator.pointer.lock(), you can't check navigator.pointer.islocked() on the next line, you need to use the successCallback/errorCallback. Same for focus or blur calls and events. Actions that trigger something happening in the future often need a callback or event handler.<br />
# Prefer <code>i++;</code> to <code>i+=1;</code><br />
<br />
One or more tests have to deal with switching the lock between multiple elements, and the [[Changes to Fullscreen Unlock|spec is changing]] on that front.<br />
<br />
====Test Reviews====<br />
<br />
The following tests need review and/or fixes, and to then get updated in [https://github.com/rhung/mozilla-central/tree/mouselock-tests/dom/tests/mochitest/mouselock rhung's mouslock-tests] branch on github. Please add your name beside test(s) you are reviewing/fixing. Once a test is complete and updated in his branch, please cross it off below.<br />
{| border=1 style="border: 1px solid darkgray;"<br />
| Num<br />
| Name<br />
| Owner<br />
| Has Harness<br />
| Rev.<br />
| Peer Rev.<br />
| Pull<br />
| Contrib.<br />
|- <br />
| colspan=8 bgcolor="yellow" style="text-align:center;" | '''Ensure you have actually tested your test before sending a pull request'''<br />
|-<br />
|- <br />
| colspan=8 bgcolor="lightgreen" style="text-align:center;" | '''Fill Out the Contrib cell with "First Last <email>" or leave blank for none.'''<br />
|-<br />
|1<br />
|test_FullScreenHarness.html<br />
|Anachid<br />
|X<br />
|X<br />
|humph<br />
|X<br />
|Ching Wei Tseng (Steven) <steven_tseng15@hotmail.com><br />
|-<br />
|2<br />
|mouselock_util.js<br />
|Anachid<br />
|X<br />
|X<br />
|humph<br />
|X<br />
|Ching Wei Tseng (Steven) <steven_tseng15@hotmail.com><br />
|-<br />
|3<br />
|file_DOMtree.html<br />
|Anachid<br />
|X<br />
|X<br />
|humph<br />
|X<br />
| Ching Wei Tseng (Steven) <steven_tseng15@hotmail.com><br />
|-<br />
|4<br />
|test_MouseEvents.html<br />
|rhung<br />
|X<br />
|X<br />
|jboelen<br />
|X<br />
|Raymond Hung <hung.raymond@gmail.com><br />
|-<br />
|5<br />
|test_TargetOutOfFocus.html<br />
|johnno<br />
|<br />
|<br />
|<br />
|<br />
|<br />
|-<br />
|6<br />
|test_UserAgentIsActive<br />
|johnno<br />
|<br />
|<br />
|<br />
|<br />
|<br />
|-<br />
|7<br />
|test_constantxy.html<br />
|jbraffoul<br />
|X<br />
|X<br />
|Anachid<br />
|X<br />
|<br />
|-<br />
|8<br />
|test_defaultUnlock.html<br />
|KeyR<br />
|X<br />
|X<br />
|nm486<br />
|X<br />
|Stanley Tsang <nm486@hotmail.com><br />
|-<br />
|9<br />
|test_doubleLockCallBack.html<br />
|jboelen<br />
|<br />
|X<br />
|rhung<br />
|<br />
|James Boelen <james@boelen.ca><br />
|-<br />
|10<br />
|test_exitMouselockOnLoseFocus.html<br />
|drigato / johnno<br />
|<br />
|<br />
|<br />
|<br />
|<br />
|-<br />
|11<br />
|test_isInstanceofMouselockable.html<br />
|abhatnagar<br />
|N/A<br />
|X<br />
|hchun<br />
|X<br />
|Hyungryul Chun (Steven) <hello.ryul@gmail.com><br />
|-<br />
|12<br />
|file_limitlessScroll.html<br />
|hchun<br />
|X<br />
|X<br />
|rhung, nm486<br />
|X<br />
|Hyungryul Chun (Steven) <hello.ryul@gmail.com>, Stanley Tsang <nm486@hotmail.com>, Raymond Hung <hung.raymond@gmail.com><br />
|-<br />
|13<br />
|test_mouseLockableHasRequiredMethods.html <br />
|abhatnagar<br />
|N/A<br />
|X<br />
|hchun<br />
|X<br />
|Hyungryul Chun (Steven) <hello.ryul@gmail.com><br />
|-<br />
|14<br />
|test_mousePos.html<br />
|<br />
|<br />
|<br />
|<br />
|<br />
|<br />
|-<br />
|15<br />
|test_mouselocklost.html<br />
|nm486<br />
|X<br />
|X<br />
|hchun<br />
|X<br />
|Stanley Tsang <nm486@hotmail.com>, Hyungryul Chun (Steven) <hello.ryul@gmail.com><br />
|-<br />
|16<br />
|file_movement.html<br />
|hchun<br />
|X<br />
|X<br />
|rhung, nm486<br />
|X<br />
|Hyungryul Chun (Steven) <hello.ryul@gmail.com>, Stanley Tsang <nm486@hotmail.com>, Raymond Hung <hung.raymond@gmail.com><br />
|-<br />
|17<br />
|test_navigatorPointer.html<br />
|abhatnagar<br />
|<br />
|<br />
|<br />
|<br />
|<br />
|-<br />
|18<br />
|test_userPref.html<br />
|mjschranz<br />
|X<br />
|X<br />
|jboelen/rhung<br />
|X<br />
|Matthew Schranz <schranz.m@gmail.com><br />
|-<br />
|19<br />
|test_fullscreen.html<br />
|abhatnagar1<br />
|x<br />
|x<br />
|<br />
|<br />
|Abhishek Bhatnagar <abhatnagar1@learn.senecac.on.ca><br />
|-<br />
|20<br />
|test_syntheticMouseEvent.html<br />
|Tentacle<br />
|x<br />
|x<br />
|Anachid<br />
|x<br />
|Qian Xu <qxu26@learn.senecac.on.ca><br />
|}<br />
<br />
<br />
# test_FullScreenHarness.html - Anachid<br />
# mouselock_util.js - Anachid<br />
# file_DOMtree.html - Anachid<br />
# <s>test_LockWhenOutOfFocus.html</s> Note: Removed<br />
# test_MouseEvents.html - rhung<br />
# <s>test_TargetOutOfFocus.html</s> - johnno<br />
# test_UserAgentIsActive.html - johnno<br />
# test_constantxy.html - jbraffoul<br />
# <s>test_defaultUnlock.html</s><br />
# <s>test_doesunlock.html</s> Note: Removed, redundant;<br />
# <s>test_doubleLockCallBack.html</s><br />
# <s>test_exitMouselockOnLoseFocus.html</s> drigato,johnno(merged)<br />
# <s>test_fullscreen.html</s><br />
# <s>test_isInstanceofMouselockable.html</s> - abhatnagar<br />
# <s>test_limitlessScroll.html</s> - hchun<br />
# <s>test_lockLostCallBack.html</s><br />
# <s>test_mouseLockableHasRequiredMethods.html</s> - abhatnagar<br />
# test_mousePos.html<br />
# <s>test_mouselocklost.html</s> - nm486<br />
# <s>test_movement.html</s> -hchun<br />
# <s>test_navigatorPointer.html</s> - abhatnagar<br />
# <s>test_syntheticMouseEvent.html</s><br />
# <s>test_userPref.html</s> - mjschranz<br />
<br />
====Using the Test Harness====<br />
'''Note: This harness assumes that your test runs properly as a stand-alone application and is not being used as one of the test amongst others.'''<br />
<br />
The problem with the test timing out is due to the fact that the Mochitest '''iframe does not allow fullscreen''' from the html code inside the frame. To solve this problem, it needs a small work around like using the harness.<br />
<br />
To make use of the harness, you will need to add the '''mouselock_util.js''' file to your test html file. I would recommend renaming your file to '''file_something.html''' (vs. test_something.html), as this denotes that this not a direct test under the mochitest.<br />
<br />
The same applies to the Makefile.in. '''Change the filename to their appropriate name in the Makefile.in'''<br />
<br />
Thus, add the following line, AFTER the EventUtil.js and SimpleTest.js script tag<br />
<br />
<pre><br />
<script type="application/javascript" src="mouselock_util.js"></script><br />
</pre><br />
<br />
Another, thing that needs to be done is to add your file to the '''gTestFiles''' array inside the '''test_FullScreenHarness.html''' file<br />
<br />
After that, do a run of the whole mochitest directory on your machine before doing a pull request.<br />
(use this):<br />
<pre><br />
TEST_PATH=dom/tests/mochitest/mouselock/ make -C $(replace with OBJDIR) mochitest-plain<br />
</pre><br />
<br />
<br />
Finally, since the fullscreen needs the harness, the harness will provide the special powers. So please do '''NOT add any special powers''' in your child files.<br />
<br />
====Demos, Docs, Other====<br />
<br />
# Proper IDL documentation for navigator.pointer (see example in https://mxr.mozilla.org/mozilla-central/source/dom/interfaces/html/nsIDOMHTMLElement.idl#103), MouseLockable and its methods, MouseLockLost event, etc.<br />
# Write a JavaScript library to somehow combine element.mozRequestFullScreen() and navigator.pointer.lock(). It would be good to hide the complexities of doing fullscreen then locking in a single API call. <br />
<br />
<pre><br />
var canvas = document.getElementById('canvas');<br />
<br />
// Will put element into fullscreen then try to do mouse lock<br />
var lock = acquireMouseLock({<br />
element: canvas,<br />
onLock: function() {<br />
// OPTIONAL<br />
// fullscreen + mouse lock are now setup for element<br />
},<br />
onUnlock: function() {<br />
// OPTIONAL<br />
// the user or browser took us out of fullscreen/mouse lock<br />
},<br />
onError: function() {<br />
// OPTIONAL<br />
// there was an error getting fullscreen/mouse lock<br />
},<br />
onMovemennt: function(e) {<br />
// OPTIONAL<br />
// movementX and movementY for mousemove are passed in<br />
var deltaX = e.movementX;<br />
var deltaY = e.movementY;<br />
}<br />
});<br />
<br />
...<br />
lock.islocked; // true or false<br />
lock.unlock();<br />
</pre><br />
<br />
# Mouse lock specification fix requests<br />
# Convert Rescue Fox to use Mouse Lock, see https://github.com/mozilla/rescuefox<br />
# <strike>Convert http://cjcliffe.github.com/CubicVR.js/cubicvr/samples/fps_demo/level1.html to use Mouse Lock</strike> - JSilver999<br />
# Create a tutorial on how to use Mouse Lock, with code examples<br />
# Add demo pages to [http://humphd.github.com/mozilla-central/mouselock/index.html gh-pages branch]<br />
# Review https://developer.mozilla.org/en/API/Mouse_Lock_API for correctness with spec + our implementation<br />
<br />
==Resources==<br />
<br />
* Spec Document: http://dvcs.w3.org/hg/webevents/raw-file/default/mouse-lock.html<br />
* Implementation Repo: https://github.com/humphd/mozilla-central on the '''mouselock''' branch.<br />
* Mozilla Bug: https://bugzilla.mozilla.org/show_bug.cgi?id=633602<br />
* WebKit Bug: https://bugs.webkit.org/show_bug.cgi?id=68468<br />
* Chromium Bug: http://code.google.com/p/chromium/issues/detail?id=72754<br />
* Points of Interest: http://zenit.senecac.on.ca/wiki/index.php/Mouse_Lock_API_Points_of_Interest<br />
* Mochitest: https://developer.mozilla.org/en/Mochitest<br />
* Mochitest FAQ: http://zenit.senecac.on.ca/wiki/index.php/Mochitest_FAQ<br />
* Mozilla Cross Reference: http://mxr.mozilla.org/mozilla-central/<br />
* MouseLock Demos Link: http://humphd.github.com/mozilla-central/mouselock/index.html<br />
* MouseLock Stage Build download: http://stage.mozilla.org/pub/mozilla.org/firefox/try-builds/david.humphrey@senecac.on.ca-f4e5849f1ae7/</div>Jboelenhttps://wiki.cdot.senecacollege.ca/w/index.php?title=Implementing_the_Mouse_Lock_API_in_Firefox&diff=75687Implementing the Mouse Lock API in Firefox2011-12-08T17:56:59Z<p>Jboelen: /* Test Reviews */</p>
<hr />
<div>==Introduction==<br />
<br />
This is a working document for the implementation of the [http://dvcs.w3.org/hg/webevents/raw-file/default/mouse-lock.html Mouse Lock API spec] in Mozilla by students in David Humphrey's Mozilla Development class at Seneca College.<br />
<br />
Please add, edit, correct, expand, etc. as necessary. This page should contain any links or other info we need.<br />
<br />
==Participants==<br />
<br />
While the project is primarily meant for students in DPS909/OSD600, feel free to join us if you want to work on things.<br />
<br />
* David Humphrey (lead developer, professor, [http://twitter.com/humphd @humphd])<br />
* Hasan Kamal-Al-Deen (tardy student, [http://twitter.com/NorthWind87 @NorthWind87])<br />
* Matthew Schranz (Student, OSD600, [http://twitter.com/mjschranz @mjschranz])<br />
* Yevgeniy Ivanchenko (Student, OSD600)<br />
* Chris Gosselin (Student, OSD600)<br />
* Anurag Bhatnagar (Student, DPS909, [http://twitter.com/anuragbh @anuragbh])<br />
* Raymond Hung (Wannabe Developer, Student, [http://twitter.com/Raymond_Hung @Raymond_Hung])<br />
* Ausley Johnson(Student, OSD600)<br />
* Jesse Silver (Student, OSD600)<br />
* Ching Wei Tseng(Student, DPS909)<br />
* Michelle Mendoza (Student, DPS909)<br />
* Archana Sahota (Student, DPS909)<br />
* Greg Krilov (Student, DPS909)<br />
* Roman Hotin (Student, DPS909)<br />
* Sergiu Ecob (Student, OSD600)<br />
* Jordan Raffoul (Student)<br />
* Hyungryul Chun (Student, DPS909)<br />
* James Boelen ([http://25.media.tumblr.com/tumblr_ln817mfAfn1qlj6hwo1_500.jpg Masked Crusader], [http://twitter.com/jamesboelen @jamesboelen])<br />
* Jacky Siu (Student, OSD600)<br />
* Abhishek Bhatnagar (Student, [http://twitter.com/abhishekToronto @abhishekToronto])<br />
* Diogo Golovanevsky Monteiro ([http://twitter.com/diogogmt @diogogmt])<br />
* Simon de Almeida(Student) ([http://twitter.com/simon661 @simon661])<br />
* Stanley Tsang (Student, DPS909)<br />
* Denise Rigato (Student, DPS909)<br />
* Qian (Ken) Xu (Student, DPS909)<br />
* Moussa Tabcharani (Student, DPS909)<br />
* Keyan Ren (Student, OSD600)<br />
* Joseph Hughes (Student, OSD600)<br />
<br />
==Communication==<br />
<br />
Development work will be done using a combination of the following:<br />
<br />
* In class discussions: 11:40-1:30 Tuesday and Thursday in TEL T2110<br />
* IRC discussions: [irc://irc.mozilla.org/seneca #seneca], [irc://irc.mozilla.org/paladin #paladin]<br />
* Questions: ask and answer any questions here: [[Mouse Lock Implementation FAQ]]<br />
* Blog Series: http://vocamus.net/dave/?cat=28<br />
<br />
==Tasks==<br />
<br />
===Getting Started===<br />
<br />
# Clone our repo and build a debug version locally<br />
# Get a https://bugzilla.mozilla.org account and CC yourself on the [https://bugzilla.mozilla.org/show_bug.cgi?id=633602 bug].<br />
# Set a Watch on this page and the Q/A page so you know when things change.<br />
# Break the spec down into an itemized list of things we need to do, tests we need to write, features we have to add, edge cases we have to worry about, demos we need to build, etc. Put the info into this page. We need to know everything we'll have to write and schedule when we'll do each bit.<br />
# Blog about your work on this implementation<br />
# Add questions/answers to [[Mouse Lock Implementation FAQ]]<br />
<br />
===High-Level Mouse Lock Implementation Tasks===<br />
<br />
====Implementation====<br />
<br />
# <s>No mouse cursor is displayed when the mouse is locked</s> - rhung<br />
# <s>MouseLockable DOM Implementation, navigator.pointer ([[Notes on MouseLock DOM Implementation Nov 13, 2011]])</s> - humph<br />
## <strike>[[void lock (in Element target, optional in VoidCallback successCallback, optional in VoidCallback failureCallback);]]</strike> diogogmt, humph<br />
## <strike>void unlock ();</strike> humph, diogogmt<br />
## <strike>bool islocked ();</strike> - humph<br />
# <strike>Mouse Lock Platform Implementations</strike> JSilver999, humph<br />
## <strike>Windows: [http://msdn.microsoft.com/en-us/library/windows/desktop/ms648394%28v=vs.85%29.aspx SetCursorPos(x, y)]</strike><br />
## <strike>OS X [http://www.cocoabuilder.com/archive/cocoa/77124-setting-cursor-position.html CGWarpMouseCursorPosition(CGPointMake(x, y))]</strike><br />
## <strike>Linux (GTK) [http://www.gtkforums.com/viewtopic.php?t=182 gdk_display_warp_pointer (display, screen, x, y)], add to http://mxr.mozilla.org/mozilla-central/source/widget/src/gtk2/nsWindow.cpp ???</strike><br />
## Mobile?<br />
# <strike>Investigate whether we can get movement information directly from OS</strke> - northWind<br />
# <s>mouselocklost event DOM Implementation</s> - diogogmt<br />
# <s>Extend MouseEvent DOM implementation with movementX, movementY</s> - humph, JSilver999<br />
## <s>[[Stack Trace for nsDOMMouseEvent::nsDOMMouseEvent ctor]] (created on mouse move)</s><br />
## <s>[[Stack Trace for nsDOMMouseEvent::GetScreenX]]</s><br />
## <s>[[Where to store the state info (e.g., previous position) between mouse events?]]</s><br />
# <s>The browser must exit the mouse lock state if the user agent, window, or tab loses focus</s> - diogogmt<br />
# <strike>Fixup NULLs being returned from lock() C++ implementation, should be NS*</strike> - Anachid<br />
# <strike>Mouse lock should only work when in Full Screen Mode</strike> - diogogmt, rhung<br />
# <strike>[[Refactor nsIDOMNavigator changes for pointer attribute to be in separate interface]]</strike> humph<br />
# <strike>Do we need to do conditional compilation for mouse lock?</strike> humph (not going to bother for now)<br />
# <strike>When mouse lock is enabled clientX, clientY, screenX, and screenY must hold constant values as if the mouse did not move at all once mouse lock was entered.</strike> humph<br />
# <s>Freeze mouse pointer in centre of window when mouse lock is enabled (e.g., moving the mouse causes an event, but forces the mouse to go back to the original position).</s> - JSilver999<br />
# <strike>"Events that require the concept of a mouse cursor must not be dispatched (for example: mouseover, mouseout)"</strike> - humph<br />
# <strike>Figure out [[Mac Crash with Jesse's SynthesizeMouseMove change]]</strike> humph<br />
# <strike>When the locked element is removed from the DOM Tree, the mouse should be unlocked</strike> diogogmt<br />
# <strike>Save the screenX and screenY position before locking the mouse.</strike> - humph<br />
# <strike>Reset the mouse position back to the original position when unlocking.</strike> - humph<br />
# <s>"When unlocked, the system cursor can exit and re-enter the user agent window. If it does so and the user agent was not the target of operating system mouse move events then the most recent mouse position will be unknown to the user agent and movementX/Y can not be computed and must be set to zero"</s> diogogmt<br />
# <s>Trying to lock a locked element should fire the success callback</s> CloudScorpion<br />
# <s>Before locking the mouse check if the element is a DOM element and if it is in the DOM Tree</s> diogogmt<br />
# <s>Fix accurateness of mouse positioning on unlock() (should be the same point as when lock() was called). Currently works, but is offset. See nsEventStateManager::SetMouseLock. </s> JSilver999<br />
# <s>Restructure Lock method to do most of its operations in a separate thread.</s> humph<br />
# <s>Fix license headers for new files to use proper [http://www.mozilla.org/MPL/boilerplate-1.1/ MPL boilerplate]</s> humph<br />
# <s>Do we need to add a user pref to enable/disable mouse lock? Nice to have, not blocking.</s> northwind, mjschranz<br />
# "Once mouse lock is acquired, stop mouse events from being fired to other elements that are not locked (e.g., only fire to locked element)." Only the fullscreen element will get events. Need advice in review on how to do this properly.<br />
<br />
=====Out of Scope Implementation=====<br />
<br />
Because we are only implementing Mouse Lock for Fullscreen elements, some aspects of the spec can/must be put off until later. Other items below are simply not in scope for this first round of implementation.<br />
<br />
# The ESC key should exit mouse lock. This will currently exit fullscreen, and therefore mouse lock - diogogmt<br />
# "User agents may prompt for confirmation before locking, this preference may be saved as a content setting" How to deal with this? What UI do we use? See also, "Repeated escapes of mouse lock can signal user agent to not re-lock the mouse without more specific user intent gesture, e.g. similar to how Chrome suppresses repeated alert() calls"<br />
# "The Mouse Lock API must exit the mouse lock state if the user agent, window, or tab loses focus"<br />
# Clip the mouse so it doesn't leave the locked element with a mouse movement large enough to exceed its bounds. See:<br />
## [http://msdn.microsoft.com/en-us/library/windows/desktop/ms648383%28v=vs.85%29.aspx ClipCursor] on Windows<br />
## [http://developer.apple.com/library/mac/#documentation/GraphicsImaging/Reference/Quartz_Services_Ref/Reference/reference.html CGAssociateMouseAndMouseCursorPosition and CGGetLastMouseDelta] on OS X<br />
## [http://www.x.org/archive/X11R6.8.2/doc/XGrabPointer.3.html XGrabPointer] on Linux<br />
<br />
====Tests====<br />
<br />
The central repo with all the tests are located [https://github.com/rhung/mozilla-central/tree/mouselock-tests here]. For more information on how to make mochitests and how to send the pull request to the appropriate person, check out the [http://zenit.senecac.on.ca/wiki/index.php/Mochitest_FAQ Mochitest FAQ] List tests we need below:<br />
# <s>"there is no limit to how far movement can go...not limited by screen boundaries" -- mouse lock should mean infinite movement in the X and Y axes...There will be no limit to movementX/Y values if the mouse is continuously moved in a single direction"</s> - '''hchun'''<br />
# <s>"The concept of the mouse cursor will have been removed, and it will not move off the window or be clamped by a screen edge"</s> - '''hchun'''<br />
# "no mouse cursor is displayed" -- mouse cursor should be hidden while locked - '''dvillase'''<br />
# <s>navigator.pointer (readonly) is a MouseLockable</s> - <strong>abhatnagar</strong><br />
# <s>MouseLockable has lock(), unlock(), islocked()</s> - <strong>abhatnagar</strong><br />
# <s>islocked() returns true if mouse is locked, false if not locked</s> - <strong>JSilver999</strong><br />
# <s>lock(target) expects a DOM element, and takes two optional callbacks: successcallback, failurecallback.</s> - <strong>JSilver999</strong><br />
# <s>lock() should return immediately and call callbacks when lock succeeds or fails</s> - <strong>JSilver999</strong><br />
# <s>"Mouse lock must succeed only if the window is in focus" - '''johnno'''</s><br />
# <s>"Mouse lock must succeed only if...the user-agent is the active application of the operating system"</s> - '''johnno'''<br />
# <s>"The target of lock need not be in focus" - '''johnno'''</s><br />
# <s>"Mouse lock must succeed only if the target is in the DOM tree"</s> - '''Anachid'''<br />
# <s>"If the target is removed from the DOM tree after mouse lock is entered then mouse lock will be lost."</s> - '''Anachid'''<br />
# <s>"If the mouse is already locked to the same element, a repeated call to lock will succeed and the successCallback called"</s> - '''jboelen'''<br />
# <s>"If another element is locked [and lock() is called] a user agent must transfer the mouse lock to the new target and call the mouselocklost callback for the previous target"</s> - '''jboelen'''<br />
# <s>"The Mouse Lock API must provide a default system action to unlock the mouse" namely ESC.</s> - '''CloudScorpian'''<br />
# <s>"Once in the locked state the user agent must fire all relevant user generated MouseEvent events (for example: mousemove, mousedown, mouseup, click, wheel)[DOM-LEVEL-3-CORE] to the target of mouse lock, and not fire mouse events to other elements"</s> - '''rhung'''<br />
# <s>"Events that require the concept of a mouse cursor must not be dispatched (for example: mouseover, mouseout)"</s> - '''rhung'''<br />
# "Movement and button presses of the mouse must not cause the window to lose focus" - <br />
# <s>"Synthetic mouse events created by application script act the same regardless of lock state"</s> - '''Tentacle'''<br />
# <s>"The unlock method cancels the mouse lock state"</s> - '''abhatnagar1'''<br />
# "[Upon unlock() t]he system mouse cursor must be displayed again and positioned at the same location that it was when mouse lock was entered (the same location that is reported in screenX/Y when the mouse is locked)" - '''dvillase'''<br />
# <s>"When mouse lock is lost or disabled for any reason user agents must fire an event named mouselocklost with its bubble attribute set to true to the mouse lock target element"</s> - '''stsang'''<br />
# <s>MouseEvent must contain (readonly) movementX and movementY</s> - '''KeyR, JSilver999'''<br />
# <s>"The members movementX and movementY must provide the change in position of the mouse, as if the values of screenX/Y were stored between two subsequent mousemove events eNow and ePrevious and the difference taken movementX = eNow.screenX-ePrevious.screenX"</s> - '''KeyR, JSilver999'''<br />
# <s>"movementX/Y must be valid regardless of mouse lock state"</s> - '''KeyR, JSilver999'''<br />
# <s>"When unlocked, the system cursor can exit and re-enter the user agent window. If it does so and the user agent was not the target of operating system mouse move events then the most recent mouse position will be unknown to the user agent and movementX/Y can not be computed and must be set to zero"</s> - '''moussa1'''<br />
# <s>"When mouse lock is enabled clientX, clientY, screenX, and screenY must hold constant values as if the mouse did not move at all once mouse lock was entered"</s> - '''jbraffoul'''<br />
# <s>"The Mouse Lock API must exit the mouse lock state if the user agent, window, or tab loses focus"</s> - '''drigato'''<br />
# Test to make sure that mouse lock only occurs when an element is in full screen mode (not F11 or done via the menus). This includes:<br />
## Switching focus to another window - '''jsiu3'''<br />
# <s>Tests for mouselocklost event</s> - '''stsang'''<br />
<br />
=====Reviewing Tests=====<br />
<br />
There are a series of common mistakes in the tests that need to get fixed. Here are some of them:<br />
<br />
# Need to clean-up tabs vs. spaces and indentation issues (2-spaces per tab) in many test files. Use https://github.com/einars/js-beautify. [https://github.com/rhung/mozilla-central/blob/mouselock-tests/dom/tests/mochitest/mouselock/test_userPref.html This is a test that is formatted correctly], in terms of indentation and spaces vs. tabs.<br />
# No line of code should be 80 characters or longer--break them so they are under 80<br />
# No Windows end-of-lines, use Unix end-of-lines<br />
# No whitespace at the end of a line<br />
# Run your test code through http://www.jshint.com/. Note, it will complain about unknown globals like SimpleTest. Make sure the rest of the JavaScript is good.<br />
# Remove unnecessary comments. Only things that explain the test.<br />
# If you need constants, use const instead of var<br />
# Don't use variables if they aren't needed. For example, don't introduce a variable to store a value, only to pass it into ok() or is(). Just test the expression in ok() or is().<br />
# Make sure your JavaScript follows proper naming: goodVariableName, bad_variable_name, badvariablename;<br />
# Tests should follow the template as closely as makes sense: http://pastebin.com/vxmsepVh<br />
# Tests should include a simple comment block describing what is being tested<br />
# Only use <code>SimpleTest.waitForFocus()</code> if you really need it.<br />
# Be consistent with "..." vs. '...' for strings. Pick one and use it throughout the file.<br />
# Remove <code>console.log()</code><br />
# Prefer <code>document.body</code> to <code>document.getElementsByTagName('body')[0]</code><br />
# Braces on the same line: <code>if (...) {\n</code> and <code>} else {\n</code><br />
# An error message for is() or ok() of "Error message" is not acceptable. Make sure you understand the failure.<br />
# If you need to actually lock the mouse, you'll need <code>SpecialPowers.setBoolPref("full-screen-api.allow-trusted-requests-only", false);</code> to allow non-user initiated fullscreen mode (i.e., normally it requires a user to click a button or trigger some other event).<br />
# If you're testing that variable foo or expression fooFunction() are true, use ok(), not is(): <code>ok(foo, "Error message if not true.");</code> or <code>ok(fooFunction(), "Error message if function returns false");</code>. Don't do <code>is(foo, true, "Error message if false.");<br />
# Make sure code that relies on things happening in asynchronous code gets called in a callback or event handler, not on the next line. For example, if you call navigator.pointer.lock(), you can't check navigator.pointer.islocked() on the next line, you need to use the successCallback/errorCallback. Same for focus or blur calls and events. Actions that trigger something happening in the future often need a callback or event handler.<br />
# Prefer <code>i++;</code> to <code>i+=1;</code><br />
<br />
One or more tests have to deal with switching the lock between multiple elements, and the [[Changes to Fullscreen Unlock|spec is changing]] on that front.<br />
<br />
====Test Reviews====<br />
<br />
The following tests need review and/or fixes, and to then get updated in [https://github.com/rhung/mozilla-central/tree/mouselock-tests/dom/tests/mochitest/mouselock rhung's mouslock-tests] branch on github. Please add your name beside test(s) you are reviewing/fixing. Once a test is complete and updated in his branch, please cross it off below.<br />
{| border=1 style="border: 1px solid darkgray;"<br />
| Num<br />
| Name<br />
| Owner<br />
| Has Harness<br />
| Rev.<br />
| Peer Rev.<br />
| Pull<br />
| Contrib.<br />
|- <br />
| colspan=8 bgcolor="yellow" style="text-align:center;" | '''Ensure you have actually tested your test before sending a pull request'''<br />
|-<br />
|- <br />
| colspan=8 bgcolor="lightgreen" style="text-align:center;" | '''Fill Out the Contrib cell with "First Last <email>" or leave blank for none.'''<br />
|-<br />
|1<br />
|test_FullScreenHarness.html<br />
|Anachid<br />
|<br />
|<br />
|<br />
|<br />
|<br />
|-<br />
|2<br />
|file_DOMtree.html<br />
|Anachid<br />
|<br />
|<br />
|<br />
|<br />
|<br />
|-<br />
|3<br />
|test_MouseEvents.html<br />
|rhung<br />
|<br />
|<br />
|<br />
|<br />
|<br />
|-<br />
|4<br />
|test_TargetOutOfFocus.html<br />
|johnno<br />
|<br />
|<br />
|<br />
|<br />
|<br />
|-<br />
|5<br />
|test_UserAgentIsActive<br />
|johnno<br />
|<br />
|<br />
|<br />
|<br />
|<br />
|-<br />
|6<br />
|test_constantxy.html<br />
|jbraffoul<br />
|<br />
|<br />
|<br />
|<br />
|<br />
|-<br />
|7<br />
|test_defaultUnlock.html<br />
|<br />
|<br />
|<br />
|<br />
|<br />
|<br />
|-<br />
|8<br />
|test_doubleLockCallBack.html<br />
|jboelen<br />
|<br />
|X<br />
|X<br />
|<br />
|<br />
|-<br />
|9<br />
|test_exitMouselockOnLoseFocus.html<br />
|drigato / johnno<br />
|<br />
|<br />
|<br />
|<br />
|<br />
|-<br />
|10<br />
|test_exitMouselockOnLoseFocus.html<br />
|<br />
|<br />
|<br />
|<br />
|<br />
|<br />
|-<br />
|11<br />
|test_isInstanceofMouselockable.html<br />
|abhatnagar<br />
|<br />
|<br />
|<br />
|<br />
|<br />
|-<br />
|12<br />
|test_limitlessScroll.html<br />
|Hyungryul Chun<br />
|<br />
|<br />
|<br />
|<br />
|<br />
|-<br />
|13<br />
|test_mouseLockableHasRequiredMethods.html <br />
|abhatnagar<br />
|<br />
|<br />
|<br />
|<br />
|<br />
|-<br />
|14<br />
|test_mousePos.html<br />
|jboelen<br />
|<br />
|<br />
|<br />
|<br />
|<br />
|-<br />
|15<br />
|test_mouselocklost.html<br />
|nm486<br />
|<br />
|<br />
|<br />
|<br />
|<br />
|-<br />
|16<br />
|test_movement.html<br />
|northWInd<br />
|<br />
|<br />
|<br />
|<br />
|<br />
|-<br />
|17<br />
|test_navigatorPointer.html<br />
|abhatnagar<br />
|<br />
|<br />
|<br />
|<br />
|<br />
|-<br />
|18<br />
|test_syntheticMouseEvent.html<br />
|<br />
|<br />
|<br />
|<br />
|<br />
|<br />
|-<br />
|19<br />
|test_userPref.html<br />
|mjschranz<br />
|<br />
|<br />
|<br />
|<br />
|<br />
|-<br />
|20<br />
|<br />
|<br />
|<br />
|<br />
|<br />
|<br />
|<br />
|-<br />
|21<br />
|<br />
|<br />
|<br />
|<br />
|<br />
|<br />
|<br />
|-<br />
|<br />
|<br />
|<br />
|<br />
|<br />
|<br />
|<br />
|<br />
|}<br />
<br />
<br />
# test_FullScreenHarness.html - Anachid<br />
<br />
# file_DOMtree.html - Anachid<br />
# <s>test_LockWhenOutOfFocus.html</s> Note: Removed<br />
# test_MouseEvents.html - rhung<br />
# <s>test_TargetOutOfFocus.html</s> - johnno<br />
# test_UserAgentIsActive.html - johnno<br />
# test_constantxy.html - jbraffoul<br />
# <s>test_defaultUnlock.html</s><br />
# <s>test_doesunlock.html</s> Note: Removed, redundant<br />
# <s>test_doubleLockCallBack.html</s><br />
# <s>test_exitMouselockOnLoseFocus.html</s> drigato,johnno(merged)<br />
# <s>test_fullscreen.html</s><br />
# <s>test_isInstanceofMouselockable.html</s> - abhatnagar<br />
# <s>test_limitlessScroll.html</s><br />
# <s>test_lockLostCallBack.html</s><br />
# <s>test_mouseLockableHasRequiredMethods.html</s> - abhatnagar<br />
# test_mousePos.html<br />
# test_mouselocklost.html<br />
# <s>test_movement.html</s><br />
# <s>test_navigatorPointer.html</s> - abhatnagar<br />
# <s>test_syntheticMouseEvent.html</s><br />
# <s>test_userPref.html</s> - mjschranz<br />
<br />
====Demos, Docs, Other====<br />
<br />
# Proper IDL documentation for navigator.pointer (see example in https://mxr.mozilla.org/mozilla-central/source/dom/interfaces/html/nsIDOMHTMLElement.idl#103), MouseLockable and its methods, MouseLockLost event, etc.<br />
# Write a JavaScript library to somehow combine element.mozRequestFullScreen() and navigator.pointer.lock(). It would be good to hide the complexities of doing fullscreen then locking in a single API call. <br />
<br />
<pre><br />
var canvas = document.getElementById('canvas');<br />
<br />
// Will put element into fullscreen then try to do mouse lock<br />
var lock = acquireMouseLock({<br />
element: canvas,<br />
onLock: function() {<br />
// OPTIONAL<br />
// fullscreen + mouse lock are now setup for element<br />
},<br />
onUnlock: function() {<br />
// OPTIONAL<br />
// the user or browser took us out of fullscreen/mouse lock<br />
},<br />
onError: function() {<br />
// OPTIONAL<br />
// there was an error getting fullscreen/mouse lock<br />
},<br />
onMovemennt: function(e) {<br />
// OPTIONAL<br />
// movementX and movementY for mousemove are passed in<br />
var deltaX = e.movementX;<br />
var deltaY = e.movementY;<br />
}<br />
});<br />
<br />
...<br />
lock.islocked; // true or false<br />
lock.unlock();<br />
</pre><br />
<br />
# Mouse lock specification fix requests<br />
# Convert Rescue Fox to use Mouse Lock, see https://github.com/mozilla/rescuefox<br />
# <strike>Convert http://cjcliffe.github.com/CubicVR.js/cubicvr/samples/fps_demo/level1.html to use Mouse Lock</strike> - JSilver999<br />
# Create a tutorial on how to use Mouse Lock, with code examples<br />
# Add demo pages to [http://humphd.github.com/mozilla-central/mouselock/index.html gh-pages branch]<br />
# Review https://developer.mozilla.org/en/API/Mouse_Lock_API for correctness with spec + our implementation<br />
<br />
==Resources==<br />
<br />
* Spec Document: http://dvcs.w3.org/hg/webevents/raw-file/default/mouse-lock.html<br />
* Implementation Repo: https://github.com/humphd/mozilla-central on the '''mouselock''' branch.<br />
* Mozilla Bug: https://bugzilla.mozilla.org/show_bug.cgi?id=633602<br />
* WebKit Bug: https://bugs.webkit.org/show_bug.cgi?id=68468<br />
* Chromium Bug: http://code.google.com/p/chromium/issues/detail?id=72754<br />
* Points of Interest: http://zenit.senecac.on.ca/wiki/index.php/Mouse_Lock_API_Points_of_Interest<br />
* Mochitest: https://developer.mozilla.org/en/Mochitest<br />
* Mochitest FAQ: http://zenit.senecac.on.ca/wiki/index.php/Mochitest_FAQ<br />
* Mozilla Cross Reference: http://mxr.mozilla.org/mozilla-central/<br />
* MouseLock Demos Link: http://humphd.github.com/mozilla-central/mouselock/index.html<br />
* MouseLock Stage Build download: http://stage.mozilla.org/pub/mozilla.org/firefox/try-builds/david.humphrey@senecac.on.ca-f4e5849f1ae7/</div>Jboelenhttps://wiki.cdot.senecacollege.ca/w/index.php?title=Implementing_the_Mouse_Lock_API_in_Firefox&diff=75686Implementing the Mouse Lock API in Firefox2011-12-08T17:50:45Z<p>Jboelen: /* Test Reviews */</p>
<hr />
<div>==Introduction==<br />
<br />
This is a working document for the implementation of the [http://dvcs.w3.org/hg/webevents/raw-file/default/mouse-lock.html Mouse Lock API spec] in Mozilla by students in David Humphrey's Mozilla Development class at Seneca College.<br />
<br />
Please add, edit, correct, expand, etc. as necessary. This page should contain any links or other info we need.<br />
<br />
==Participants==<br />
<br />
While the project is primarily meant for students in DPS909/OSD600, feel free to join us if you want to work on things.<br />
<br />
* David Humphrey (lead developer, professor, [http://twitter.com/humphd @humphd])<br />
* Hasan Kamal-Al-Deen (tardy student, [http://twitter.com/NorthWind87 @NorthWind87])<br />
* Matthew Schranz (Student, OSD600, [http://twitter.com/mjschranz @mjschranz])<br />
* Yevgeniy Ivanchenko (Student, OSD600)<br />
* Chris Gosselin (Student, OSD600)<br />
* Anurag Bhatnagar (Student, DPS909, [http://twitter.com/anuragbh @anuragbh])<br />
* Raymond Hung (Wannabe Developer, Student, [http://twitter.com/Raymond_Hung @Raymond_Hung])<br />
* Ausley Johnson(Student, OSD600)<br />
* Jesse Silver (Student, OSD600)<br />
* Ching Wei Tseng(Student, DPS909)<br />
* Michelle Mendoza (Student, DPS909)<br />
* Archana Sahota (Student, DPS909)<br />
* Greg Krilov (Student, DPS909)<br />
* Roman Hotin (Student, DPS909)<br />
* Sergiu Ecob (Student, OSD600)<br />
* Jordan Raffoul (Student)<br />
* Hyungryul Chun (Student, DPS909)<br />
* James Boelen ([http://25.media.tumblr.com/tumblr_ln817mfAfn1qlj6hwo1_500.jpg Masked Crusader], [http://twitter.com/jamesboelen @jamesboelen])<br />
* Jacky Siu (Student, OSD600)<br />
* Abhishek Bhatnagar (Student, [http://twitter.com/abhishekToronto @abhishekToronto])<br />
* Diogo Golovanevsky Monteiro ([http://twitter.com/diogogmt @diogogmt])<br />
* Simon de Almeida(Student) ([http://twitter.com/simon661 @simon661])<br />
* Stanley Tsang (Student, DPS909)<br />
* Denise Rigato (Student, DPS909)<br />
* Qian (Ken) Xu (Student, DPS909)<br />
* Moussa Tabcharani (Student, DPS909)<br />
* Keyan Ren (Student, OSD600)<br />
* Joseph Hughes (Student, OSD600)<br />
<br />
==Communication==<br />
<br />
Development work will be done using a combination of the following:<br />
<br />
* In class discussions: 11:40-1:30 Tuesday and Thursday in TEL T2110<br />
* IRC discussions: [irc://irc.mozilla.org/seneca #seneca], [irc://irc.mozilla.org/paladin #paladin]<br />
* Questions: ask and answer any questions here: [[Mouse Lock Implementation FAQ]]<br />
* Blog Series: http://vocamus.net/dave/?cat=28<br />
<br />
==Tasks==<br />
<br />
===Getting Started===<br />
<br />
# Clone our repo and build a debug version locally<br />
# Get a https://bugzilla.mozilla.org account and CC yourself on the [https://bugzilla.mozilla.org/show_bug.cgi?id=633602 bug].<br />
# Set a Watch on this page and the Q/A page so you know when things change.<br />
# Break the spec down into an itemized list of things we need to do, tests we need to write, features we have to add, edge cases we have to worry about, demos we need to build, etc. Put the info into this page. We need to know everything we'll have to write and schedule when we'll do each bit.<br />
# Blog about your work on this implementation<br />
# Add questions/answers to [[Mouse Lock Implementation FAQ]]<br />
<br />
===High-Level Mouse Lock Implementation Tasks===<br />
<br />
====Implementation====<br />
<br />
# <s>No mouse cursor is displayed when the mouse is locked</s> - rhung<br />
# <s>MouseLockable DOM Implementation, navigator.pointer ([[Notes on MouseLock DOM Implementation Nov 13, 2011]])</s> - humph<br />
## <strike>[[void lock (in Element target, optional in VoidCallback successCallback, optional in VoidCallback failureCallback);]]</strike> diogogmt, humph<br />
## <strike>void unlock ();</strike> humph, diogogmt<br />
## <strike>bool islocked ();</strike> - humph<br />
# <strike>Mouse Lock Platform Implementations</strike> JSilver999, humph<br />
## <strike>Windows: [http://msdn.microsoft.com/en-us/library/windows/desktop/ms648394%28v=vs.85%29.aspx SetCursorPos(x, y)]</strike><br />
## <strike>OS X [http://www.cocoabuilder.com/archive/cocoa/77124-setting-cursor-position.html CGWarpMouseCursorPosition(CGPointMake(x, y))]</strike><br />
## <strike>Linux (GTK) [http://www.gtkforums.com/viewtopic.php?t=182 gdk_display_warp_pointer (display, screen, x, y)], add to http://mxr.mozilla.org/mozilla-central/source/widget/src/gtk2/nsWindow.cpp ???</strike><br />
## Mobile?<br />
# <strike>Investigate whether we can get movement information directly from OS</strke> - northWind<br />
# <s>mouselocklost event DOM Implementation</s> - diogogmt<br />
# <s>Extend MouseEvent DOM implementation with movementX, movementY</s> - humph, JSilver999<br />
## <s>[[Stack Trace for nsDOMMouseEvent::nsDOMMouseEvent ctor]] (created on mouse move)</s><br />
## <s>[[Stack Trace for nsDOMMouseEvent::GetScreenX]]</s><br />
## <s>[[Where to store the state info (e.g., previous position) between mouse events?]]</s><br />
# <s>The browser must exit the mouse lock state if the user agent, window, or tab loses focus</s> - diogogmt<br />
# <strike>Fixup NULLs being returned from lock() C++ implementation, should be NS*</strike> - Anachid<br />
# <strike>Mouse lock should only work when in Full Screen Mode</strike> - diogogmt, rhung<br />
# <strike>[[Refactor nsIDOMNavigator changes for pointer attribute to be in separate interface]]</strike> humph<br />
# <strike>Do we need to do conditional compilation for mouse lock?</strike> humph (not going to bother for now)<br />
# <strike>When mouse lock is enabled clientX, clientY, screenX, and screenY must hold constant values as if the mouse did not move at all once mouse lock was entered.</strike> humph<br />
# <s>Freeze mouse pointer in centre of window when mouse lock is enabled (e.g., moving the mouse causes an event, but forces the mouse to go back to the original position).</s> - JSilver999<br />
# <strike>"Events that require the concept of a mouse cursor must not be dispatched (for example: mouseover, mouseout)"</strike> - humph<br />
# <strike>Figure out [[Mac Crash with Jesse's SynthesizeMouseMove change]]</strike> humph<br />
# <strike>When the locked element is removed from the DOM Tree, the mouse should be unlocked</strike> diogogmt<br />
# <strike>Save the screenX and screenY position before locking the mouse.</strike> - humph<br />
# <strike>Reset the mouse position back to the original position when unlocking.</strike> - humph<br />
# <s>"When unlocked, the system cursor can exit and re-enter the user agent window. If it does so and the user agent was not the target of operating system mouse move events then the most recent mouse position will be unknown to the user agent and movementX/Y can not be computed and must be set to zero"</s> diogogmt<br />
# <s>Trying to lock a locked element should fire the success callback</s> CloudScorpion<br />
# <s>Before locking the mouse check if the element is a DOM element and if it is in the DOM Tree</s> diogogmt<br />
# <s>Fix accurateness of mouse positioning on unlock() (should be the same point as when lock() was called). Currently works, but is offset. See nsEventStateManager::SetMouseLock. </s> JSilver999<br />
# <s>Restructure Lock method to do most of its operations in a separate thread.</s> humph<br />
# <s>Fix license headers for new files to use proper [http://www.mozilla.org/MPL/boilerplate-1.1/ MPL boilerplate]</s> humph<br />
# <s>Do we need to add a user pref to enable/disable mouse lock? Nice to have, not blocking.</s> northwind, mjschranz<br />
# "Once mouse lock is acquired, stop mouse events from being fired to other elements that are not locked (e.g., only fire to locked element)." Only the fullscreen element will get events. Need advice in review on how to do this properly.<br />
<br />
=====Out of Scope Implementation=====<br />
<br />
Because we are only implementing Mouse Lock for Fullscreen elements, some aspects of the spec can/must be put off until later. Other items below are simply not in scope for this first round of implementation.<br />
<br />
# The ESC key should exit mouse lock. This will currently exit fullscreen, and therefore mouse lock - diogogmt<br />
# "User agents may prompt for confirmation before locking, this preference may be saved as a content setting" How to deal with this? What UI do we use? See also, "Repeated escapes of mouse lock can signal user agent to not re-lock the mouse without more specific user intent gesture, e.g. similar to how Chrome suppresses repeated alert() calls"<br />
# "The Mouse Lock API must exit the mouse lock state if the user agent, window, or tab loses focus"<br />
# Clip the mouse so it doesn't leave the locked element with a mouse movement large enough to exceed its bounds. See:<br />
## [http://msdn.microsoft.com/en-us/library/windows/desktop/ms648383%28v=vs.85%29.aspx ClipCursor] on Windows<br />
## [http://developer.apple.com/library/mac/#documentation/GraphicsImaging/Reference/Quartz_Services_Ref/Reference/reference.html CGAssociateMouseAndMouseCursorPosition and CGGetLastMouseDelta] on OS X<br />
## [http://www.x.org/archive/X11R6.8.2/doc/XGrabPointer.3.html XGrabPointer] on Linux<br />
<br />
====Tests====<br />
<br />
The central repo with all the tests are located [https://github.com/rhung/mozilla-central/tree/mouselock-tests here]. For more information on how to make mochitests and how to send the pull request to the appropriate person, check out the [http://zenit.senecac.on.ca/wiki/index.php/Mochitest_FAQ Mochitest FAQ] List tests we need below:<br />
# <s>"there is no limit to how far movement can go...not limited by screen boundaries" -- mouse lock should mean infinite movement in the X and Y axes...There will be no limit to movementX/Y values if the mouse is continuously moved in a single direction"</s> - '''hchun'''<br />
# <s>"The concept of the mouse cursor will have been removed, and it will not move off the window or be clamped by a screen edge"</s> - '''hchun'''<br />
# "no mouse cursor is displayed" -- mouse cursor should be hidden while locked - '''dvillase'''<br />
# <s>navigator.pointer (readonly) is a MouseLockable</s> - <strong>abhatnagar</strong><br />
# <s>MouseLockable has lock(), unlock(), islocked()</s> - <strong>abhatnagar</strong><br />
# <s>islocked() returns true if mouse is locked, false if not locked</s> - <strong>JSilver999</strong><br />
# <s>lock(target) expects a DOM element, and takes two optional callbacks: successcallback, failurecallback.</s> - <strong>JSilver999</strong><br />
# <s>lock() should return immediately and call callbacks when lock succeeds or fails</s> - <strong>JSilver999</strong><br />
# <s>"Mouse lock must succeed only if the window is in focus" - '''johnno'''</s><br />
# <s>"Mouse lock must succeed only if...the user-agent is the active application of the operating system"</s> - '''johnno'''<br />
# <s>"The target of lock need not be in focus" - '''johnno'''</s><br />
# <s>"Mouse lock must succeed only if the target is in the DOM tree"</s> - '''Anachid'''<br />
# <s>"If the target is removed from the DOM tree after mouse lock is entered then mouse lock will be lost."</s> - '''Anachid'''<br />
# <s>"If the mouse is already locked to the same element, a repeated call to lock will succeed and the successCallback called"</s> - '''jboelen'''<br />
# <s>"If another element is locked [and lock() is called] a user agent must transfer the mouse lock to the new target and call the mouselocklost callback for the previous target"</s> - '''jboelen'''<br />
# <s>"The Mouse Lock API must provide a default system action to unlock the mouse" namely ESC.</s> - '''CloudScorpian'''<br />
# <s>"Once in the locked state the user agent must fire all relevant user generated MouseEvent events (for example: mousemove, mousedown, mouseup, click, wheel)[DOM-LEVEL-3-CORE] to the target of mouse lock, and not fire mouse events to other elements"</s> - '''rhung'''<br />
# <s>"Events that require the concept of a mouse cursor must not be dispatched (for example: mouseover, mouseout)"</s> - '''rhung'''<br />
# "Movement and button presses of the mouse must not cause the window to lose focus" - <br />
# <s>"Synthetic mouse events created by application script act the same regardless of lock state"</s> - '''Tentacle'''<br />
# <s>"The unlock method cancels the mouse lock state"</s> - '''abhatnagar1'''<br />
# "[Upon unlock() t]he system mouse cursor must be displayed again and positioned at the same location that it was when mouse lock was entered (the same location that is reported in screenX/Y when the mouse is locked)" - '''dvillase'''<br />
# <s>"When mouse lock is lost or disabled for any reason user agents must fire an event named mouselocklost with its bubble attribute set to true to the mouse lock target element"</s> - '''stsang'''<br />
# <s>MouseEvent must contain (readonly) movementX and movementY</s> - '''KeyR, JSilver999'''<br />
# <s>"The members movementX and movementY must provide the change in position of the mouse, as if the values of screenX/Y were stored between two subsequent mousemove events eNow and ePrevious and the difference taken movementX = eNow.screenX-ePrevious.screenX"</s> - '''KeyR, JSilver999'''<br />
# <s>"movementX/Y must be valid regardless of mouse lock state"</s> - '''KeyR, JSilver999'''<br />
# <s>"When unlocked, the system cursor can exit and re-enter the user agent window. If it does so and the user agent was not the target of operating system mouse move events then the most recent mouse position will be unknown to the user agent and movementX/Y can not be computed and must be set to zero"</s> - '''moussa1'''<br />
# <s>"When mouse lock is enabled clientX, clientY, screenX, and screenY must hold constant values as if the mouse did not move at all once mouse lock was entered"</s> - '''jbraffoul'''<br />
# <s>"The Mouse Lock API must exit the mouse lock state if the user agent, window, or tab loses focus"</s> - '''drigato'''<br />
# Test to make sure that mouse lock only occurs when an element is in full screen mode (not F11 or done via the menus). This includes:<br />
## Switching focus to another window - '''jsiu3'''<br />
# <s>Tests for mouselocklost event</s> - '''stsang'''<br />
<br />
=====Reviewing Tests=====<br />
<br />
There are a series of common mistakes in the tests that need to get fixed. Here are some of them:<br />
<br />
# Need to clean-up tabs vs. spaces and indentation issues (2-spaces per tab) in many test files. Use https://github.com/einars/js-beautify. [https://github.com/rhung/mozilla-central/blob/mouselock-tests/dom/tests/mochitest/mouselock/test_userPref.html This is a test that is formatted correctly], in terms of indentation and spaces vs. tabs.<br />
# No line of code should be 80 characters or longer--break them so they are under 80<br />
# No Windows end-of-lines, use Unix end-of-lines<br />
# No whitespace at the end of a line<br />
# Run your test code through http://www.jshint.com/. Note, it will complain about unknown globals like SimpleTest. Make sure the rest of the JavaScript is good.<br />
# Remove unnecessary comments. Only things that explain the test.<br />
# If you need constants, use const instead of var<br />
# Don't use variables if they aren't needed. For example, don't introduce a variable to store a value, only to pass it into ok() or is(). Just test the expression in ok() or is().<br />
# Make sure your JavaScript follows proper naming: goodVariableName, bad_variable_name, badvariablename;<br />
# Tests should follow the template as closely as makes sense: http://pastebin.com/vxmsepVh<br />
# Tests should include a simple comment block describing what is being tested<br />
# Only use <code>SimpleTest.waitForFocus()</code> if you really need it.<br />
# Be consistent with "..." vs. '...' for strings. Pick one and use it throughout the file.<br />
# Remove <code>console.log()</code><br />
# Prefer <code>document.body</code> to <code>document.getElementsByTagName('body')[0]</code><br />
# Braces on the same line: <code>if (...) {\n</code> and <code>} else {\n</code><br />
# An error message for is() or ok() of "Error message" is not acceptable. Make sure you understand the failure.<br />
# If you need to actually lock the mouse, you'll need <code>SpecialPowers.setBoolPref("full-screen-api.allow-trusted-requests-only", false);</code> to allow non-user initiated fullscreen mode (i.e., normally it requires a user to click a button or trigger some other event).<br />
# If you're testing that variable foo or expression fooFunction() are true, use ok(), not is(): <code>ok(foo, "Error message if not true.");</code> or <code>ok(fooFunction(), "Error message if function returns false");</code>. Don't do <code>is(foo, true, "Error message if false.");<br />
# Make sure code that relies on things happening in asynchronous code gets called in a callback or event handler, not on the next line. For example, if you call navigator.pointer.lock(), you can't check navigator.pointer.islocked() on the next line, you need to use the successCallback/errorCallback. Same for focus or blur calls and events. Actions that trigger something happening in the future often need a callback or event handler.<br />
# Prefer <code>i++;</code> to <code>i+=1;</code><br />
<br />
One or more tests have to deal with switching the lock between multiple elements, and the [[Changes to Fullscreen Unlock|spec is changing]] on that front.<br />
<br />
====Test Reviews====<br />
<br />
The following tests need review and/or fixes, and to then get updated in [https://github.com/rhung/mozilla-central/tree/mouselock-tests/dom/tests/mochitest/mouselock rhung's mouslock-tests] branch on github. Please add your name beside test(s) you are reviewing/fixing. Once a test is complete and updated in his branch, please cross it off below.<br />
{| border=1 style="border: 1px solid darkgray;"<br />
| Num<br />
| Name<br />
| Owner<br />
| Has Harness<br />
| Rev.<br />
| Peer Rev.<br />
| Pull<br />
| Contrib.<br />
|- <br />
| colspan=8 bgcolor="yellow" style="text-align:center;" | '''Ensure you have actually tested your test before sending a pull request'''<br />
|-<br />
|- <br />
| colspan=8 bgcolor="lightgreen" style="text-align:center;" | '''Fill Out the Contrib cell with "First Last <email>" or leave blank for none.'''<br />
|-<br />
|1<br />
|test_FullScreenHarness.html<br />
|Anachid<br />
|<br />
|<br />
|<br />
|<br />
|<br />
|-<br />
|2<br />
|file_DOMtree.html<br />
|Anachid<br />
|<br />
|<br />
|<br />
|<br />
|<br />
|-<br />
|3<br />
|test_MouseEvents.html<br />
|rhung<br />
|<br />
|<br />
|<br />
|<br />
|<br />
|-<br />
|4<br />
|test_TargetOutOfFocus.html<br />
|johnno<br />
|<br />
|<br />
|<br />
|<br />
|<br />
|-<br />
|5<br />
|test_UserAgentIsActive<br />
|johnno<br />
|<br />
|<br />
|<br />
|<br />
|<br />
|-<br />
|6<br />
|test_constantxy.html<br />
|jbraffoul<br />
|<br />
|<br />
|<br />
|<br />
|<br />
|-<br />
|7<br />
|test_defaultUnlock.html<br />
|<br />
|<br />
|<br />
|<br />
|<br />
|<br />
|-<br />
|8<br />
|test_doubleLockCallBack.html<br />
|jboelen<br />
|<br />
|X<br />
|<br />
|<br />
|<br />
|-<br />
|9<br />
|test_exitMouselockOnLoseFocus.html<br />
|drigato / johnno<br />
|<br />
|<br />
|<br />
|<br />
|<br />
|-<br />
|10<br />
|test_exitMouselockOnLoseFocus.html<br />
|<br />
|<br />
|<br />
|<br />
|<br />
|<br />
|-<br />
|11<br />
|test_isInstanceofMouselockable.html<br />
|abhatnagar<br />
|<br />
|<br />
|<br />
|<br />
|<br />
|-<br />
|12<br />
|test_limitlessScroll.html<br />
|Hyungryul Chun<br />
|<br />
|<br />
|<br />
|<br />
|<br />
|-<br />
|13<br />
|test_mouseLockableHasRequiredMethods.html <br />
|abhatnagar<br />
|<br />
|<br />
|<br />
|<br />
|<br />
|-<br />
|14<br />
|test_mousePos.html<br />
|jboelen<br />
|<br />
|<br />
|<br />
|<br />
|<br />
|-<br />
|15<br />
|test_mouselocklost.html<br />
|nm486<br />
|<br />
|<br />
|<br />
|<br />
|<br />
|-<br />
|16<br />
|test_movement.html<br />
|northWInd<br />
|<br />
|<br />
|<br />
|<br />
|<br />
|-<br />
|17<br />
|test_navigatorPointer.html<br />
|abhatnagar<br />
|<br />
|<br />
|<br />
|<br />
|<br />
|-<br />
|18<br />
|test_syntheticMouseEvent.html<br />
|<br />
|<br />
|<br />
|<br />
|<br />
|<br />
|-<br />
|19<br />
|test_userPref.html<br />
|mjschranz<br />
|<br />
|<br />
|<br />
|<br />
|<br />
|-<br />
|20<br />
|<br />
|<br />
|<br />
|<br />
|<br />
|<br />
|<br />
|-<br />
|21<br />
|<br />
|<br />
|<br />
|<br />
|<br />
|<br />
|<br />
|-<br />
|<br />
|<br />
|<br />
|<br />
|<br />
|<br />
|<br />
|<br />
|}<br />
<br />
<br />
# test_FullScreenHarness.html - Anachid<br />
<br />
# file_DOMtree.html - Anachid<br />
# <s>test_LockWhenOutOfFocus.html</s> Note: Removed<br />
# test_MouseEvents.html - rhung<br />
# <s>test_TargetOutOfFocus.html</s> - johnno<br />
# test_UserAgentIsActive.html - johnno<br />
# test_constantxy.html - jbraffoul<br />
# <s>test_defaultUnlock.html</s><br />
# <s>test_doesunlock.html</s> Note: Removed, redundant<br />
# <s>test_doubleLockCallBack.html</s><br />
# <s>test_exitMouselockOnLoseFocus.html</s> drigato,johnno(merged)<br />
# <s>test_fullscreen.html</s><br />
# <s>test_isInstanceofMouselockable.html</s> - abhatnagar<br />
# <s>test_limitlessScroll.html</s><br />
# <s>test_lockLostCallBack.html</s><br />
# <s>test_mouseLockableHasRequiredMethods.html</s> - abhatnagar<br />
# test_mousePos.html<br />
# test_mouselocklost.html<br />
# <s>test_movement.html</s><br />
# <s>test_navigatorPointer.html</s> - abhatnagar<br />
# <s>test_syntheticMouseEvent.html</s><br />
# <s>test_userPref.html</s> - mjschranz<br />
<br />
====Demos, Docs, Other====<br />
<br />
# Proper IDL documentation for navigator.pointer (see example in https://mxr.mozilla.org/mozilla-central/source/dom/interfaces/html/nsIDOMHTMLElement.idl#103), MouseLockable and its methods, MouseLockLost event, etc.<br />
# Write a JavaScript library to somehow combine element.mozRequestFullScreen() and navigator.pointer.lock(). It would be good to hide the complexities of doing fullscreen then locking in a single API call. <br />
<br />
<pre><br />
var canvas = document.getElementById('canvas');<br />
<br />
// Will put element into fullscreen then try to do mouse lock<br />
var lock = acquireMouseLock({<br />
element: canvas,<br />
onLock: function() {<br />
// OPTIONAL<br />
// fullscreen + mouse lock are now setup for element<br />
},<br />
onUnlock: function() {<br />
// OPTIONAL<br />
// the user or browser took us out of fullscreen/mouse lock<br />
},<br />
onError: function() {<br />
// OPTIONAL<br />
// there was an error getting fullscreen/mouse lock<br />
},<br />
onMovemennt: function(e) {<br />
// OPTIONAL<br />
// movementX and movementY for mousemove are passed in<br />
var deltaX = e.movementX;<br />
var deltaY = e.movementY;<br />
}<br />
});<br />
<br />
...<br />
lock.islocked; // true or false<br />
lock.unlock();<br />
</pre><br />
<br />
# Mouse lock specification fix requests<br />
# Convert Rescue Fox to use Mouse Lock, see https://github.com/mozilla/rescuefox<br />
# <strike>Convert http://cjcliffe.github.com/CubicVR.js/cubicvr/samples/fps_demo/level1.html to use Mouse Lock</strike> - JSilver999<br />
# Create a tutorial on how to use Mouse Lock, with code examples<br />
# Add demo pages to [http://humphd.github.com/mozilla-central/mouselock/index.html gh-pages branch]<br />
# Review https://developer.mozilla.org/en/API/Mouse_Lock_API for correctness with spec + our implementation<br />
<br />
==Resources==<br />
<br />
* Spec Document: http://dvcs.w3.org/hg/webevents/raw-file/default/mouse-lock.html<br />
* Implementation Repo: https://github.com/humphd/mozilla-central on the '''mouselock''' branch.<br />
* Mozilla Bug: https://bugzilla.mozilla.org/show_bug.cgi?id=633602<br />
* WebKit Bug: https://bugs.webkit.org/show_bug.cgi?id=68468<br />
* Chromium Bug: http://code.google.com/p/chromium/issues/detail?id=72754<br />
* Points of Interest: http://zenit.senecac.on.ca/wiki/index.php/Mouse_Lock_API_Points_of_Interest<br />
* Mochitest: https://developer.mozilla.org/en/Mochitest<br />
* Mochitest FAQ: http://zenit.senecac.on.ca/wiki/index.php/Mochitest_FAQ<br />
* Mozilla Cross Reference: http://mxr.mozilla.org/mozilla-central/<br />
* MouseLock Demos Link: http://humphd.github.com/mozilla-central/mouselock/index.html<br />
* MouseLock Stage Build download: http://stage.mozilla.org/pub/mozilla.org/firefox/try-builds/david.humphrey@senecac.on.ca-f4e5849f1ae7/</div>Jboelenhttps://wiki.cdot.senecacollege.ca/w/index.php?title=Implementing_the_Mouse_Lock_API_in_Firefox&diff=75683Implementing the Mouse Lock API in Firefox2011-12-08T17:45:04Z<p>Jboelen: /* Test Reviews */</p>
<hr />
<div>==Introduction==<br />
<br />
This is a working document for the implementation of the [http://dvcs.w3.org/hg/webevents/raw-file/default/mouse-lock.html Mouse Lock API spec] in Mozilla by students in David Humphrey's Mozilla Development class at Seneca College.<br />
<br />
Please add, edit, correct, expand, etc. as necessary. This page should contain any links or other info we need.<br />
<br />
==Participants==<br />
<br />
While the project is primarily meant for students in DPS909/OSD600, feel free to join us if you want to work on things.<br />
<br />
* David Humphrey (lead developer, professor, [http://twitter.com/humphd @humphd])<br />
* Hasan Kamal-Al-Deen (tardy student, [http://twitter.com/NorthWind87 @NorthWind87])<br />
* Matthew Schranz (Student, OSD600, [http://twitter.com/mjschranz @mjschranz])<br />
* Yevgeniy Ivanchenko (Student, OSD600)<br />
* Chris Gosselin (Student, OSD600)<br />
* Anurag Bhatnagar (Student, DPS909, [http://twitter.com/anuragbh @anuragbh])<br />
* Raymond Hung (Wannabe Developer, Student, [http://twitter.com/Raymond_Hung @Raymond_Hung])<br />
* Ausley Johnson(Student, OSD600)<br />
* Jesse Silver (Student, OSD600)<br />
* Ching Wei Tseng(Student, DPS909)<br />
* Michelle Mendoza (Student, DPS909)<br />
* Archana Sahota (Student, DPS909)<br />
* Greg Krilov (Student, DPS909)<br />
* Roman Hotin (Student, DPS909)<br />
* Sergiu Ecob (Student, OSD600)<br />
* Jordan Raffoul (Student)<br />
* Hyungryul Chun (Student, DPS909)<br />
* James Boelen ([http://25.media.tumblr.com/tumblr_ln817mfAfn1qlj6hwo1_500.jpg Masked Crusader], [http://twitter.com/jamesboelen @jamesboelen])<br />
* Jacky Siu (Student, OSD600)<br />
* Abhishek Bhatnagar (Student, [http://twitter.com/abhishekToronto @abhishekToronto])<br />
* Diogo Golovanevsky Monteiro ([http://twitter.com/diogogmt @diogogmt])<br />
* Simon de Almeida(Student) ([http://twitter.com/simon661 @simon661])<br />
* Stanley Tsang (Student, DPS909)<br />
* Denise Rigato (Student, DPS909)<br />
* Qian (Ken) Xu (Student, DPS909)<br />
* Moussa Tabcharani (Student, DPS909)<br />
* Keyan Ren (Student, OSD600)<br />
* Joseph Hughes (Student, OSD600)<br />
<br />
==Communication==<br />
<br />
Development work will be done using a combination of the following:<br />
<br />
* In class discussions: 11:40-1:30 Tuesday and Thursday in TEL T2110<br />
* IRC discussions: [irc://irc.mozilla.org/seneca #seneca], [irc://irc.mozilla.org/paladin #paladin]<br />
* Questions: ask and answer any questions here: [[Mouse Lock Implementation FAQ]]<br />
* Blog Series: http://vocamus.net/dave/?cat=28<br />
<br />
==Tasks==<br />
<br />
===Getting Started===<br />
<br />
# Clone our repo and build a debug version locally<br />
# Get a https://bugzilla.mozilla.org account and CC yourself on the [https://bugzilla.mozilla.org/show_bug.cgi?id=633602 bug].<br />
# Set a Watch on this page and the Q/A page so you know when things change.<br />
# Break the spec down into an itemized list of things we need to do, tests we need to write, features we have to add, edge cases we have to worry about, demos we need to build, etc. Put the info into this page. We need to know everything we'll have to write and schedule when we'll do each bit.<br />
# Blog about your work on this implementation<br />
# Add questions/answers to [[Mouse Lock Implementation FAQ]]<br />
<br />
===High-Level Mouse Lock Implementation Tasks===<br />
<br />
====Implementation====<br />
<br />
# <s>No mouse cursor is displayed when the mouse is locked</s> - rhung<br />
# <s>MouseLockable DOM Implementation, navigator.pointer ([[Notes on MouseLock DOM Implementation Nov 13, 2011]])</s> - humph<br />
## <strike>[[void lock (in Element target, optional in VoidCallback successCallback, optional in VoidCallback failureCallback);]]</strike> diogogmt, humph<br />
## <strike>void unlock ();</strike> humph, diogogmt<br />
## <strike>bool islocked ();</strike> - humph<br />
# <strike>Mouse Lock Platform Implementations</strike> JSilver999, humph<br />
## <strike>Windows: [http://msdn.microsoft.com/en-us/library/windows/desktop/ms648394%28v=vs.85%29.aspx SetCursorPos(x, y)]</strike><br />
## <strike>OS X [http://www.cocoabuilder.com/archive/cocoa/77124-setting-cursor-position.html CGWarpMouseCursorPosition(CGPointMake(x, y))]</strike><br />
## <strike>Linux (GTK) [http://www.gtkforums.com/viewtopic.php?t=182 gdk_display_warp_pointer (display, screen, x, y)], add to http://mxr.mozilla.org/mozilla-central/source/widget/src/gtk2/nsWindow.cpp ???</strike><br />
## Mobile?<br />
# <strike>Investigate whether we can get movement information directly from OS</strke> - northWind<br />
# <s>mouselocklost event DOM Implementation</s> - diogogmt<br />
# <s>Extend MouseEvent DOM implementation with movementX, movementY</s> - humph, JSilver999<br />
## <s>[[Stack Trace for nsDOMMouseEvent::nsDOMMouseEvent ctor]] (created on mouse move)</s><br />
## <s>[[Stack Trace for nsDOMMouseEvent::GetScreenX]]</s><br />
## <s>[[Where to store the state info (e.g., previous position) between mouse events?]]</s><br />
# <s>The browser must exit the mouse lock state if the user agent, window, or tab loses focus</s> - diogogmt<br />
# <strike>Fixup NULLs being returned from lock() C++ implementation, should be NS*</strike> - Anachid<br />
# <strike>Mouse lock should only work when in Full Screen Mode</strike> - diogogmt, rhung<br />
# <strike>[[Refactor nsIDOMNavigator changes for pointer attribute to be in separate interface]]</strike> humph<br />
# <strike>Do we need to do conditional compilation for mouse lock?</strike> humph (not going to bother for now)<br />
# <strike>When mouse lock is enabled clientX, clientY, screenX, and screenY must hold constant values as if the mouse did not move at all once mouse lock was entered.</strike> humph<br />
# <s>Freeze mouse pointer in centre of window when mouse lock is enabled (e.g., moving the mouse causes an event, but forces the mouse to go back to the original position).</s> - JSilver999<br />
# <strike>"Events that require the concept of a mouse cursor must not be dispatched (for example: mouseover, mouseout)"</strike> - humph<br />
# <strike>Figure out [[Mac Crash with Jesse's SynthesizeMouseMove change]]</strike> humph<br />
# <strike>When the locked element is removed from the DOM Tree, the mouse should be unlocked</strike> diogogmt<br />
# <strike>Save the screenX and screenY position before locking the mouse.</strike> - humph<br />
# <strike>Reset the mouse position back to the original position when unlocking.</strike> - humph<br />
# <s>"When unlocked, the system cursor can exit and re-enter the user agent window. If it does so and the user agent was not the target of operating system mouse move events then the most recent mouse position will be unknown to the user agent and movementX/Y can not be computed and must be set to zero"</s> diogogmt<br />
# <s>Trying to lock a locked element should fire the success callback</s> CloudScorpion<br />
# <s>Before locking the mouse check if the element is a DOM element and if it is in the DOM Tree</s> diogogmt<br />
# <s>Fix accurateness of mouse positioning on unlock() (should be the same point as when lock() was called). Currently works, but is offset. See nsEventStateManager::SetMouseLock. </s> JSilver999<br />
# <s>Restructure Lock method to do most of its operations in a separate thread.</s> humph<br />
# <s>Fix license headers for new files to use proper [http://www.mozilla.org/MPL/boilerplate-1.1/ MPL boilerplate]</s> humph<br />
# <s>Do we need to add a user pref to enable/disable mouse lock? Nice to have, not blocking.</s> northwind, mjschranz<br />
# "Once mouse lock is acquired, stop mouse events from being fired to other elements that are not locked (e.g., only fire to locked element)." Only the fullscreen element will get events. Need advice in review on how to do this properly.<br />
<br />
=====Out of Scope Implementation=====<br />
<br />
Because we are only implementing Mouse Lock for Fullscreen elements, some aspects of the spec can/must be put off until later. Other items below are simply not in scope for this first round of implementation.<br />
<br />
# The ESC key should exit mouse lock. This will currently exit fullscreen, and therefore mouse lock - diogogmt<br />
# "User agents may prompt for confirmation before locking, this preference may be saved as a content setting" How to deal with this? What UI do we use? See also, "Repeated escapes of mouse lock can signal user agent to not re-lock the mouse without more specific user intent gesture, e.g. similar to how Chrome suppresses repeated alert() calls"<br />
# "The Mouse Lock API must exit the mouse lock state if the user agent, window, or tab loses focus"<br />
# Clip the mouse so it doesn't leave the locked element with a mouse movement large enough to exceed its bounds. See:<br />
## [http://msdn.microsoft.com/en-us/library/windows/desktop/ms648383%28v=vs.85%29.aspx ClipCursor] on Windows<br />
## [http://developer.apple.com/library/mac/#documentation/GraphicsImaging/Reference/Quartz_Services_Ref/Reference/reference.html CGAssociateMouseAndMouseCursorPosition and CGGetLastMouseDelta] on OS X<br />
## [http://www.x.org/archive/X11R6.8.2/doc/XGrabPointer.3.html XGrabPointer] on Linux<br />
<br />
====Tests====<br />
<br />
The central repo with all the tests are located [https://github.com/rhung/mozilla-central/tree/mouselock-tests here]. For more information on how to make mochitests and how to send the pull request to the appropriate person, check out the [http://zenit.senecac.on.ca/wiki/index.php/Mochitest_FAQ Mochitest FAQ] List tests we need below:<br />
# <s>"there is no limit to how far movement can go...not limited by screen boundaries" -- mouse lock should mean infinite movement in the X and Y axes...There will be no limit to movementX/Y values if the mouse is continuously moved in a single direction"</s> - '''hchun'''<br />
# <s>"The concept of the mouse cursor will have been removed, and it will not move off the window or be clamped by a screen edge"</s> - '''hchun'''<br />
# "no mouse cursor is displayed" -- mouse cursor should be hidden while locked - '''dvillase'''<br />
# <s>navigator.pointer (readonly) is a MouseLockable</s> - <strong>abhatnagar</strong><br />
# <s>MouseLockable has lock(), unlock(), islocked()</s> - <strong>abhatnagar</strong><br />
# <s>islocked() returns true if mouse is locked, false if not locked</s> - <strong>JSilver999</strong><br />
# <s>lock(target) expects a DOM element, and takes two optional callbacks: successcallback, failurecallback.</s> - <strong>JSilver999</strong><br />
# <s>lock() should return immediately and call callbacks when lock succeeds or fails</s> - <strong>JSilver999</strong><br />
# <s>"Mouse lock must succeed only if the window is in focus" - '''johnno'''</s><br />
# <s>"Mouse lock must succeed only if...the user-agent is the active application of the operating system"</s> - '''johnno'''<br />
# <s>"The target of lock need not be in focus" - '''johnno'''</s><br />
# <s>"Mouse lock must succeed only if the target is in the DOM tree"</s> - '''Anachid'''<br />
# <s>"If the target is removed from the DOM tree after mouse lock is entered then mouse lock will be lost."</s> - '''Anachid'''<br />
# <s>"If the mouse is already locked to the same element, a repeated call to lock will succeed and the successCallback called"</s> - '''jboelen'''<br />
# <s>"If another element is locked [and lock() is called] a user agent must transfer the mouse lock to the new target and call the mouselocklost callback for the previous target"</s> - '''jboelen'''<br />
# <s>"The Mouse Lock API must provide a default system action to unlock the mouse" namely ESC.</s> - '''CloudScorpian'''<br />
# <s>"Once in the locked state the user agent must fire all relevant user generated MouseEvent events (for example: mousemove, mousedown, mouseup, click, wheel)[DOM-LEVEL-3-CORE] to the target of mouse lock, and not fire mouse events to other elements"</s> - '''rhung'''<br />
# <s>"Events that require the concept of a mouse cursor must not be dispatched (for example: mouseover, mouseout)"</s> - '''rhung'''<br />
# "Movement and button presses of the mouse must not cause the window to lose focus" - <br />
# <s>"Synthetic mouse events created by application script act the same regardless of lock state"</s> - '''Tentacle'''<br />
# <s>"The unlock method cancels the mouse lock state"</s> - '''abhatnagar1'''<br />
# "[Upon unlock() t]he system mouse cursor must be displayed again and positioned at the same location that it was when mouse lock was entered (the same location that is reported in screenX/Y when the mouse is locked)" - '''dvillase'''<br />
# <s>"When mouse lock is lost or disabled for any reason user agents must fire an event named mouselocklost with its bubble attribute set to true to the mouse lock target element"</s> - '''stsang'''<br />
# <s>MouseEvent must contain (readonly) movementX and movementY</s> - '''KeyR, JSilver999'''<br />
# <s>"The members movementX and movementY must provide the change in position of the mouse, as if the values of screenX/Y were stored between two subsequent mousemove events eNow and ePrevious and the difference taken movementX = eNow.screenX-ePrevious.screenX"</s> - '''KeyR, JSilver999'''<br />
# <s>"movementX/Y must be valid regardless of mouse lock state"</s> - '''KeyR, JSilver999'''<br />
# <s>"When unlocked, the system cursor can exit and re-enter the user agent window. If it does so and the user agent was not the target of operating system mouse move events then the most recent mouse position will be unknown to the user agent and movementX/Y can not be computed and must be set to zero"</s> - '''moussa1'''<br />
# <s>"When mouse lock is enabled clientX, clientY, screenX, and screenY must hold constant values as if the mouse did not move at all once mouse lock was entered"</s> - '''jbraffoul'''<br />
# <s>"The Mouse Lock API must exit the mouse lock state if the user agent, window, or tab loses focus"</s> - '''drigato'''<br />
# Test to make sure that mouse lock only occurs when an element is in full screen mode (not F11 or done via the menus). This includes:<br />
## Switching focus to another window - '''jsiu3'''<br />
# <s>Tests for mouselocklost event</s> - '''stsang'''<br />
<br />
=====Reviewing Tests=====<br />
<br />
There are a series of common mistakes in the tests that need to get fixed. Here are some of them:<br />
<br />
# Need to clean-up tabs vs. spaces and indentation issues (2-spaces per tab) in many test files. Use https://github.com/einars/js-beautify. [https://github.com/rhung/mozilla-central/blob/mouselock-tests/dom/tests/mochitest/mouselock/test_userPref.html This is a test that is formatted correctly], in terms of indentation and spaces vs. tabs.<br />
# No line of code should be 80 characters or longer--break them so they are under 80<br />
# No Windows end-of-lines, use Unix end-of-lines<br />
# No whitespace at the end of a line<br />
# Run your test code through http://www.jshint.com/. Note, it will complain about unknown globals like SimpleTest. Make sure the rest of the JavaScript is good.<br />
# Remove unnecessary comments. Only things that explain the test.<br />
# If you need constants, use const instead of var<br />
# Don't use variables if they aren't needed. For example, don't introduce a variable to store a value, only to pass it into ok() or is(). Just test the expression in ok() or is().<br />
# Make sure your JavaScript follows proper naming: goodVariableName, bad_variable_name, badvariablename;<br />
# Tests should follow the template as closely as makes sense: http://pastebin.com/vxmsepVh<br />
# Tests should include a simple comment block describing what is being tested<br />
# Only use <code>SimpleTest.waitForFocus()</code> if you really need it.<br />
# Be consistent with "..." vs. '...' for strings. Pick one and use it throughout the file.<br />
# Remove <code>console.log()</code><br />
# Prefer <code>document.body</code> to <code>document.getElementsByTagName('body')[0]</code><br />
# Braces on the same line: <code>if (...) {\n</code> and <code>} else {\n</code><br />
# An error message for is() or ok() of "Error message" is not acceptable. Make sure you understand the failure.<br />
# If you need to actually lock the mouse, you'll need <code>SpecialPowers.setBoolPref("full-screen-api.allow-trusted-requests-only", false);</code> to allow non-user initiated fullscreen mode (i.e., normally it requires a user to click a button or trigger some other event).<br />
# If you're testing that variable foo or expression fooFunction() are true, use ok(), not is(): <code>ok(foo, "Error message if not true.");</code> or <code>ok(fooFunction(), "Error message if function returns false");</code>. Don't do <code>is(foo, true, "Error message if false.");<br />
# Make sure code that relies on things happening in asynchronous code gets called in a callback or event handler, not on the next line. For example, if you call navigator.pointer.lock(), you can't check navigator.pointer.islocked() on the next line, you need to use the successCallback/errorCallback. Same for focus or blur calls and events. Actions that trigger something happening in the future often need a callback or event handler.<br />
# Prefer <code>i++;</code> to <code>i+=1;</code><br />
<br />
One or more tests have to deal with switching the lock between multiple elements, and the [[Changes to Fullscreen Unlock|spec is changing]] on that front.<br />
<br />
====Test Reviews====<br />
<br />
The following tests need review and/or fixes, and to then get updated in [https://github.com/rhung/mozilla-central/tree/mouselock-tests/dom/tests/mochitest/mouselock rhung's mouslock-tests] branch on github. Please add your name beside test(s) you are reviewing/fixing. Once a test is complete and updated in his branch, please cross it off below.<br />
{| border=1 style="border: 1px solid darkgray;"<br />
| Num<br />
| Name<br />
| Owner<br />
| Has Harness<br />
| Rev.<br />
| Peer Rev.<br />
| Pull<br />
| Contrib.<br />
|- <br />
| colspan=8 bgcolor="yellow" style="text-align:center;" | '''Ensure you have actually tested your test before sending a pull request'''<br />
|-<br />
|- <br />
| colspan=8 bgcolor="lightgreen" style="text-align:center;" | '''Fill Out the Contrib cell with "First Last <email>" or leave blank for none.'''<br />
|-<br />
|1<br />
|test_FullScreenHarness.html<br />
|Anachid<br />
|<br />
|<br />
|<br />
|<br />
|<br />
|-<br />
|2<br />
|file_DOMtree.html<br />
|Anachid<br />
|<br />
|<br />
|<br />
|<br />
|<br />
|-<br />
|3<br />
|test_MouseEvents.html<br />
|rhung<br />
|<br />
|<br />
|<br />
|<br />
|<br />
|-<br />
|4<br />
|test_TargetOutOfFocus.html<br />
|<br />
|<br />
|<br />
|<br />
|<br />
|<br />
|-<br />
|5<br />
|test_UserAgentIsActive<br />
|<br />
|<br />
|<br />
|<br />
|<br />
|<br />
|-<br />
|6<br />
|test_constantxy.html<br />
|jbraffoul<br />
|<br />
|<br />
|<br />
|<br />
|<br />
|-<br />
|7<br />
|test_defaultUnlock.html<br />
|<br />
|<br />
|<br />
|<br />
|<br />
|<br />
|-<br />
|8<br />
|test_doubleLockCallBack.html<br />
|jboelen<br />
|<br />
|X<br />
|<br />
|<br />
|<br />
|-<br />
|9<br />
|test_exitMouselockOnLoseFocus.html<br />
|<br />
|<br />
|<br />
|<br />
|<br />
|<br />
|-<br />
|10<br />
|test_exitMouselockOnLoseFocus.html<br />
|<br />
|<br />
|<br />
|<br />
|<br />
|<br />
|-<br />
|11<br />
|test_isInstanceofMouselockable.html<br />
|abhatnagar<br />
|<br />
|<br />
|<br />
|<br />
|<br />
|-<br />
|12<br />
|test_limitlessScroll.html<br />
|<br />
|<br />
|<br />
|<br />
|<br />
|<br />
|-<br />
|13<br />
|test_mouseLockableHasRequiredMethods.html <br />
|abhatnagar<br />
|<br />
|<br />
|<br />
|<br />
|<br />
|-<br />
|14<br />
|test_mousePos.html<br />
|jboelen<br />
|<br />
|<br />
|<br />
|<br />
|<br />
|-<br />
|15<br />
|test_mouselocklost.html<br />
|nm486<br />
|<br />
|<br />
|<br />
|<br />
|<br />
|-<br />
|16<br />
|test_movement.html<br />
|<br />
|<br />
|<br />
|<br />
|<br />
|<br />
|-<br />
|17<br />
|test_navigatorPointer.html<br />
|abhatnagar<br />
|<br />
|<br />
|<br />
|<br />
|<br />
|-<br />
|18<br />
|test_syntheticMouseEvent.html<br />
|<br />
|<br />
|<br />
|<br />
|<br />
|<br />
|-<br />
|19<br />
|test_userPref.html<br />
|<br />
|<br />
|<br />
|<br />
|<br />
|<br />
|-<br />
|20<br />
|<br />
|<br />
|<br />
|<br />
|<br />
|<br />
|<br />
|-<br />
|21<br />
|<br />
|<br />
|<br />
|<br />
|<br />
|<br />
|<br />
|-<br />
|<br />
|<br />
|<br />
|<br />
|<br />
|<br />
|<br />
|<br />
|}<br />
<br />
<br />
# test_FullScreenHarness.html - Anachid<br />
<br />
# file_DOMtree.html - Anachid<br />
# <s>test_LockWhenOutOfFocus.html</s> Note: Removed<br />
# test_MouseEvents.html - rhung<br />
# <s>test_TargetOutOfFocus.html</s> - johnno<br />
# test_UserAgentIsActive.html - johnno<br />
# test_constantxy.html - jbraffoul<br />
# <s>test_defaultUnlock.html</s><br />
# <s>test_doesunlock.html</s> Note: Removed, redundant<br />
# <s>test_doubleLockCallBack.html</s><br />
# <s>test_exitMouselockOnLoseFocus.html</s> drigato,johnno(merged)<br />
# <s>test_fullscreen.html</s><br />
# <s>test_isInstanceofMouselockable.html</s> - abhatnagar<br />
# <s>test_limitlessScroll.html</s><br />
# <s>test_lockLostCallBack.html</s><br />
# <s>test_mouseLockableHasRequiredMethods.html</s> - abhatnagar<br />
# test_mousePos.html<br />
# test_mouselocklost.html<br />
# test_movement.html - northWind<br />
# <s>test_navigatorPointer.html</s> - abhatnagar<br />
# <s>test_syntheticMouseEvent.html</s><br />
# <s>test_userPref.html</s> - mjschranz<br />
<br />
====Demos, Docs, Other====<br />
<br />
# Proper IDL documentation for navigator.pointer (see example in https://mxr.mozilla.org/mozilla-central/source/dom/interfaces/html/nsIDOMHTMLElement.idl#103), MouseLockable and its methods, MouseLockLost event, etc.<br />
# Write a JavaScript library to somehow combine element.mozRequestFullScreen() and navigator.pointer.lock(). It would be good to hide the complexities of doing fullscreen then locking in a single API call. <br />
<br />
<pre><br />
var canvas = document.getElementById('canvas');<br />
<br />
// Will put element into fullscreen then try to do mouse lock<br />
var lock = acquireMouseLock({<br />
element: canvas,<br />
onLock: function() {<br />
// OPTIONAL<br />
// fullscreen + mouse lock are now setup for element<br />
},<br />
onUnlock: function() {<br />
// OPTIONAL<br />
// the user or browser took us out of fullscreen/mouse lock<br />
},<br />
onError: function() {<br />
// OPTIONAL<br />
// there was an error getting fullscreen/mouse lock<br />
},<br />
onMovemennt: function(e) {<br />
// OPTIONAL<br />
// movementX and movementY for mousemove are passed in<br />
var deltaX = e.movementX;<br />
var deltaY = e.movementY;<br />
}<br />
});<br />
<br />
...<br />
lock.islocked; // true or false<br />
lock.unlock();<br />
</pre><br />
<br />
# Mouse lock specification fix requests<br />
# Convert Rescue Fox to use Mouse Lock, see https://github.com/mozilla/rescuefox<br />
# <strike>Convert http://cjcliffe.github.com/CubicVR.js/cubicvr/samples/fps_demo/level1.html to use Mouse Lock</strike> - JSilver999<br />
# Create a tutorial on how to use Mouse Lock, with code examples<br />
# Add demo pages to [http://humphd.github.com/mozilla-central/mouselock/index.html gh-pages branch]<br />
# Review https://developer.mozilla.org/en/API/Mouse_Lock_API for correctness with spec + our implementation<br />
<br />
==Resources==<br />
<br />
* Spec Document: http://dvcs.w3.org/hg/webevents/raw-file/default/mouse-lock.html<br />
* Implementation Repo: https://github.com/humphd/mozilla-central on the '''mouselock''' branch.<br />
* Mozilla Bug: https://bugzilla.mozilla.org/show_bug.cgi?id=633602<br />
* WebKit Bug: https://bugs.webkit.org/show_bug.cgi?id=68468<br />
* Chromium Bug: http://code.google.com/p/chromium/issues/detail?id=72754<br />
* Points of Interest: http://zenit.senecac.on.ca/wiki/index.php/Mouse_Lock_API_Points_of_Interest<br />
* Mochitest: https://developer.mozilla.org/en/Mochitest<br />
* Mochitest FAQ: http://zenit.senecac.on.ca/wiki/index.php/Mochitest_FAQ<br />
* Mozilla Cross Reference: http://mxr.mozilla.org/mozilla-central/<br />
* MouseLock Demos Link: http://humphd.github.com/mozilla-central/mouselock/index.html<br />
* MouseLock Stage Build download: http://stage.mozilla.org/pub/mozilla.org/firefox/try-builds/david.humphrey@senecac.on.ca-f4e5849f1ae7/</div>Jboelenhttps://wiki.cdot.senecacollege.ca/w/index.php?title=Implementing_the_Mouse_Lock_API_in_Firefox&diff=75679Implementing the Mouse Lock API in Firefox2011-12-08T17:38:54Z<p>Jboelen: /* Test Reviews */</p>
<hr />
<div>==Introduction==<br />
<br />
This is a working document for the implementation of the [http://dvcs.w3.org/hg/webevents/raw-file/default/mouse-lock.html Mouse Lock API spec] in Mozilla by students in David Humphrey's Mozilla Development class at Seneca College.<br />
<br />
Please add, edit, correct, expand, etc. as necessary. This page should contain any links or other info we need.<br />
<br />
==Participants==<br />
<br />
While the project is primarily meant for students in DPS909/OSD600, feel free to join us if you want to work on things.<br />
<br />
* David Humphrey (lead developer, professor, [http://twitter.com/humphd @humphd])<br />
* Hasan Kamal-Al-Deen (tardy student, [http://twitter.com/NorthWind87 @NorthWind87])<br />
* Matthew Schranz (Student, OSD600, [http://twitter.com/mjschranz @mjschranz])<br />
* Yevgeniy Ivanchenko (Student, OSD600)<br />
* Chris Gosselin (Student, OSD600)<br />
* Anurag Bhatnagar (Student, DPS909, [http://twitter.com/anuragbh @anuragbh])<br />
* Raymond Hung (Wannabe Developer, Student, [http://twitter.com/Raymond_Hung @Raymond_Hung])<br />
* Ausley Johnson(Student, OSD600)<br />
* Jesse Silver (Student, OSD600)<br />
* Ching Wei Tseng(Student, DPS909)<br />
* Michelle Mendoza (Student, DPS909)<br />
* Archana Sahota (Student, DPS909)<br />
* Greg Krilov (Student, DPS909)<br />
* Roman Hotin (Student, DPS909)<br />
* Sergiu Ecob (Student, OSD600)<br />
* Jordan Raffoul (Student)<br />
* Hyungryul Chun (Student, DPS909)<br />
* James Boelen ([http://25.media.tumblr.com/tumblr_ln817mfAfn1qlj6hwo1_500.jpg Masked Crusader], [http://twitter.com/jamesboelen @jamesboelen])<br />
* Jacky Siu (Student, OSD600)<br />
* Abhishek Bhatnagar (Student, [http://twitter.com/abhishekToronto @abhishekToronto])<br />
* Diogo Golovanevsky Monteiro ([http://twitter.com/diogogmt @diogogmt])<br />
* Simon de Almeida(Student) ([http://twitter.com/simon661 @simon661])<br />
* Stanley Tsang (Student, DPS909)<br />
* Denise Rigato (Student, DPS909)<br />
* Qian (Ken) Xu (Student, DPS909)<br />
* Moussa Tabcharani (Student, DPS909)<br />
* Keyan Ren (Student, OSD600)<br />
* Joseph Hughes (Student, OSD600)<br />
<br />
==Communication==<br />
<br />
Development work will be done using a combination of the following:<br />
<br />
* In class discussions: 11:40-1:30 Tuesday and Thursday in TEL T2110<br />
* IRC discussions: [irc://irc.mozilla.org/seneca #seneca], [irc://irc.mozilla.org/paladin #paladin]<br />
* Questions: ask and answer any questions here: [[Mouse Lock Implementation FAQ]]<br />
* Blog Series: http://vocamus.net/dave/?cat=28<br />
<br />
==Tasks==<br />
<br />
===Getting Started===<br />
<br />
# Clone our repo and build a debug version locally<br />
# Get a https://bugzilla.mozilla.org account and CC yourself on the [https://bugzilla.mozilla.org/show_bug.cgi?id=633602 bug].<br />
# Set a Watch on this page and the Q/A page so you know when things change.<br />
# Break the spec down into an itemized list of things we need to do, tests we need to write, features we have to add, edge cases we have to worry about, demos we need to build, etc. Put the info into this page. We need to know everything we'll have to write and schedule when we'll do each bit.<br />
# Blog about your work on this implementation<br />
# Add questions/answers to [[Mouse Lock Implementation FAQ]]<br />
<br />
===High-Level Mouse Lock Implementation Tasks===<br />
<br />
====Implementation====<br />
<br />
# <s>No mouse cursor is displayed when the mouse is locked</s> - rhung<br />
# <s>MouseLockable DOM Implementation, navigator.pointer ([[Notes on MouseLock DOM Implementation Nov 13, 2011]])</s> - humph<br />
## <strike>[[void lock (in Element target, optional in VoidCallback successCallback, optional in VoidCallback failureCallback);]]</strike> diogogmt, humph<br />
## <strike>void unlock ();</strike> humph, diogogmt<br />
## <strike>bool islocked ();</strike> - humph<br />
# <strike>Mouse Lock Platform Implementations</strike> JSilver999, humph<br />
## <strike>Windows: [http://msdn.microsoft.com/en-us/library/windows/desktop/ms648394%28v=vs.85%29.aspx SetCursorPos(x, y)]</strike><br />
## <strike>OS X [http://www.cocoabuilder.com/archive/cocoa/77124-setting-cursor-position.html CGWarpMouseCursorPosition(CGPointMake(x, y))]</strike><br />
## <strike>Linux (GTK) [http://www.gtkforums.com/viewtopic.php?t=182 gdk_display_warp_pointer (display, screen, x, y)], add to http://mxr.mozilla.org/mozilla-central/source/widget/src/gtk2/nsWindow.cpp ???</strike><br />
## Mobile?<br />
# <strike>Investigate whether we can get movement information directly from OS</strke> - northWind<br />
# <s>mouselocklost event DOM Implementation</s> - diogogmt<br />
# <s>Extend MouseEvent DOM implementation with movementX, movementY</s> - humph, JSilver999<br />
## <s>[[Stack Trace for nsDOMMouseEvent::nsDOMMouseEvent ctor]] (created on mouse move)</s><br />
## <s>[[Stack Trace for nsDOMMouseEvent::GetScreenX]]</s><br />
## <s>[[Where to store the state info (e.g., previous position) between mouse events?]]</s><br />
# <s>The browser must exit the mouse lock state if the user agent, window, or tab loses focus</s> - diogogmt<br />
# <strike>Fixup NULLs being returned from lock() C++ implementation, should be NS*</strike> - Anachid<br />
# <strike>Mouse lock should only work when in Full Screen Mode</strike> - diogogmt, rhung<br />
# <strike>[[Refactor nsIDOMNavigator changes for pointer attribute to be in separate interface]]</strike> humph<br />
# <strike>Do we need to do conditional compilation for mouse lock?</strike> humph (not going to bother for now)<br />
# <strike>When mouse lock is enabled clientX, clientY, screenX, and screenY must hold constant values as if the mouse did not move at all once mouse lock was entered.</strike> humph<br />
# <s>Freeze mouse pointer in centre of window when mouse lock is enabled (e.g., moving the mouse causes an event, but forces the mouse to go back to the original position).</s> - JSilver999<br />
# <strike>"Events that require the concept of a mouse cursor must not be dispatched (for example: mouseover, mouseout)"</strike> - humph<br />
# <strike>Figure out [[Mac Crash with Jesse's SynthesizeMouseMove change]]</strike> humph<br />
# <strike>When the locked element is removed from the DOM Tree, the mouse should be unlocked</strike> diogogmt<br />
# <strike>Save the screenX and screenY position before locking the mouse.</strike> - humph<br />
# <strike>Reset the mouse position back to the original position when unlocking.</strike> - humph<br />
# <s>"When unlocked, the system cursor can exit and re-enter the user agent window. If it does so and the user agent was not the target of operating system mouse move events then the most recent mouse position will be unknown to the user agent and movementX/Y can not be computed and must be set to zero"</s> diogogmt<br />
# <s>Trying to lock a locked element should fire the success callback</s> CloudScorpion<br />
# <s>Before locking the mouse check if the element is a DOM element and if it is in the DOM Tree</s> diogogmt<br />
# <s>Fix accurateness of mouse positioning on unlock() (should be the same point as when lock() was called). Currently works, but is offset. See nsEventStateManager::SetMouseLock. </s> JSilver999<br />
# <s>Restructure Lock method to do most of its operations in a separate thread.</s> humph<br />
# <s>Fix license headers for new files to use proper [http://www.mozilla.org/MPL/boilerplate-1.1/ MPL boilerplate]</s> humph<br />
# <s>Do we need to add a user pref to enable/disable mouse lock? Nice to have, not blocking.</s> northwind, mjschranz<br />
# "Once mouse lock is acquired, stop mouse events from being fired to other elements that are not locked (e.g., only fire to locked element)." Only the fullscreen element will get events. Need advice in review on how to do this properly.<br />
<br />
=====Out of Scope Implementation=====<br />
<br />
Because we are only implementing Mouse Lock for Fullscreen elements, some aspects of the spec can/must be put off until later. Other items below are simply not in scope for this first round of implementation.<br />
<br />
# The ESC key should exit mouse lock. This will currently exit fullscreen, and therefore mouse lock - diogogmt<br />
# "User agents may prompt for confirmation before locking, this preference may be saved as a content setting" How to deal with this? What UI do we use? See also, "Repeated escapes of mouse lock can signal user agent to not re-lock the mouse without more specific user intent gesture, e.g. similar to how Chrome suppresses repeated alert() calls"<br />
# "The Mouse Lock API must exit the mouse lock state if the user agent, window, or tab loses focus"<br />
# Clip the mouse so it doesn't leave the locked element with a mouse movement large enough to exceed its bounds. See:<br />
## [http://msdn.microsoft.com/en-us/library/windows/desktop/ms648383%28v=vs.85%29.aspx ClipCursor] on Windows<br />
## [http://developer.apple.com/library/mac/#documentation/GraphicsImaging/Reference/Quartz_Services_Ref/Reference/reference.html CGAssociateMouseAndMouseCursorPosition and CGGetLastMouseDelta] on OS X<br />
## [http://www.x.org/archive/X11R6.8.2/doc/XGrabPointer.3.html XGrabPointer] on Linux<br />
<br />
====Tests====<br />
<br />
The central repo with all the tests are located [https://github.com/rhung/mozilla-central/tree/mouselock-tests here]. For more information on how to make mochitests and how to send the pull request to the appropriate person, check out the [http://zenit.senecac.on.ca/wiki/index.php/Mochitest_FAQ Mochitest FAQ] List tests we need below:<br />
# <s>"there is no limit to how far movement can go...not limited by screen boundaries" -- mouse lock should mean infinite movement in the X and Y axes...There will be no limit to movementX/Y values if the mouse is continuously moved in a single direction"</s> - '''hchun'''<br />
# <s>"The concept of the mouse cursor will have been removed, and it will not move off the window or be clamped by a screen edge"</s> - '''hchun'''<br />
# "no mouse cursor is displayed" -- mouse cursor should be hidden while locked - '''dvillase'''<br />
# <s>navigator.pointer (readonly) is a MouseLockable</s> - <strong>abhatnagar</strong><br />
# <s>MouseLockable has lock(), unlock(), islocked()</s> - <strong>abhatnagar</strong><br />
# <s>islocked() returns true if mouse is locked, false if not locked</s> - <strong>JSilver999</strong><br />
# <s>lock(target) expects a DOM element, and takes two optional callbacks: successcallback, failurecallback.</s> - <strong>JSilver999</strong><br />
# <s>lock() should return immediately and call callbacks when lock succeeds or fails</s> - <strong>JSilver999</strong><br />
# <s>"Mouse lock must succeed only if the window is in focus" - '''johnno'''</s><br />
# <s>"Mouse lock must succeed only if...the user-agent is the active application of the operating system"</s> - '''johnno'''<br />
# <s>"The target of lock need not be in focus" - '''johnno'''</s><br />
# <s>"Mouse lock must succeed only if the target is in the DOM tree"</s> - '''Anachid'''<br />
# <s>"If the target is removed from the DOM tree after mouse lock is entered then mouse lock will be lost."</s> - '''Anachid'''<br />
# <s>"If the mouse is already locked to the same element, a repeated call to lock will succeed and the successCallback called"</s> - '''jboelen'''<br />
# <s>"If another element is locked [and lock() is called] a user agent must transfer the mouse lock to the new target and call the mouselocklost callback for the previous target"</s> - '''jboelen'''<br />
# <s>"The Mouse Lock API must provide a default system action to unlock the mouse" namely ESC.</s> - '''CloudScorpian'''<br />
# <s>"Once in the locked state the user agent must fire all relevant user generated MouseEvent events (for example: mousemove, mousedown, mouseup, click, wheel)[DOM-LEVEL-3-CORE] to the target of mouse lock, and not fire mouse events to other elements"</s> - '''rhung'''<br />
# <s>"Events that require the concept of a mouse cursor must not be dispatched (for example: mouseover, mouseout)"</s> - '''rhung'''<br />
# "Movement and button presses of the mouse must not cause the window to lose focus" - <br />
# <s>"Synthetic mouse events created by application script act the same regardless of lock state"</s> - '''Tentacle'''<br />
# <s>"The unlock method cancels the mouse lock state"</s> - '''abhatnagar1'''<br />
# "[Upon unlock() t]he system mouse cursor must be displayed again and positioned at the same location that it was when mouse lock was entered (the same location that is reported in screenX/Y when the mouse is locked)" - '''dvillase'''<br />
# <s>"When mouse lock is lost or disabled for any reason user agents must fire an event named mouselocklost with its bubble attribute set to true to the mouse lock target element"</s> - '''stsang'''<br />
# <s>MouseEvent must contain (readonly) movementX and movementY</s> - '''KeyR, JSilver999'''<br />
# <s>"The members movementX and movementY must provide the change in position of the mouse, as if the values of screenX/Y were stored between two subsequent mousemove events eNow and ePrevious and the difference taken movementX = eNow.screenX-ePrevious.screenX"</s> - '''KeyR, JSilver999'''<br />
# <s>"movementX/Y must be valid regardless of mouse lock state"</s> - '''KeyR, JSilver999'''<br />
# <s>"When unlocked, the system cursor can exit and re-enter the user agent window. If it does so and the user agent was not the target of operating system mouse move events then the most recent mouse position will be unknown to the user agent and movementX/Y can not be computed and must be set to zero"</s> - '''moussa1'''<br />
# <s>"When mouse lock is enabled clientX, clientY, screenX, and screenY must hold constant values as if the mouse did not move at all once mouse lock was entered"</s> - '''jbraffoul'''<br />
# <s>"The Mouse Lock API must exit the mouse lock state if the user agent, window, or tab loses focus"</s> - '''drigato'''<br />
# Test to make sure that mouse lock only occurs when an element is in full screen mode (not F11 or done via the menus). This includes:<br />
## Switching focus to another window - '''jsiu3'''<br />
# <s>Tests for mouselocklost event</s> - '''stsang'''<br />
<br />
=====Reviewing Tests=====<br />
<br />
There are a series of common mistakes in the tests that need to get fixed. Here are some of them:<br />
<br />
# Need to clean-up tabs vs. spaces and indentation issues (2-spaces per tab) in many test files. Use https://github.com/einars/js-beautify. [https://github.com/rhung/mozilla-central/blob/mouselock-tests/dom/tests/mochitest/mouselock/test_userPref.html This is a test that is formatted correctly], in terms of indentation and spaces vs. tabs.<br />
# No line of code should be 80 characters or longer--break them so they are under 80<br />
# No Windows end-of-lines, use Unix end-of-lines<br />
# No whitespace at the end of a line<br />
# Run your test code through http://www.jshint.com/. Note, it will complain about unknown globals like SimpleTest. Make sure the rest of the JavaScript is good.<br />
# Remove unnecessary comments. Only things that explain the test.<br />
# If you need constants, use const instead of var<br />
# Don't use variables if they aren't needed. For example, don't introduce a variable to store a value, only to pass it into ok() or is(). Just test the expression in ok() or is().<br />
# Make sure your JavaScript follows proper naming: goodVariableName, bad_variable_name, badvariablename;<br />
# Tests should follow the template as closely as makes sense: http://pastebin.com/vxmsepVh<br />
# Tests should include a simple comment block describing what is being tested<br />
# Only use <code>SimpleTest.waitForFocus()</code> if you really need it.<br />
# Be consistent with "..." vs. '...' for strings. Pick one and use it throughout the file.<br />
# Remove <code>console.log()</code><br />
# Prefer <code>document.body</code> to <code>document.getElementsByTagName('body')[0]</code><br />
# Braces on the same line: <code>if (...) {\n</code> and <code>} else {\n</code><br />
# An error message for is() or ok() of "Error message" is not acceptable. Make sure you understand the failure.<br />
# If you need to actually lock the mouse, you'll need <code>SpecialPowers.setBoolPref("full-screen-api.allow-trusted-requests-only", false);</code> to allow non-user initiated fullscreen mode (i.e., normally it requires a user to click a button or trigger some other event).<br />
# If you're testing that variable foo or expression fooFunction() are true, use ok(), not is(): <code>ok(foo, "Error message if not true.");</code> or <code>ok(fooFunction(), "Error message if function returns false");</code>. Don't do <code>is(foo, true, "Error message if false.");<br />
# Make sure code that relies on things happening in asynchronous code gets called in a callback or event handler, not on the next line. For example, if you call navigator.pointer.lock(), you can't check navigator.pointer.islocked() on the next line, you need to use the successCallback/errorCallback. Same for focus or blur calls and events. Actions that trigger something happening in the future often need a callback or event handler.<br />
# Prefer <code>i++;</code> to <code>i+=1;</code><br />
<br />
One or more tests have to deal with switching the lock between multiple elements, and the [[Changes to Fullscreen Unlock|spec is changing]] on that front.<br />
<br />
====Test Reviews====<br />
<br />
The following tests need review and/or fixes, and to then get updated in [https://github.com/rhung/mozilla-central/tree/mouselock-tests/dom/tests/mochitest/mouselock rhung's mouslock-tests] branch on github. Please add your name beside test(s) you are reviewing/fixing. Once a test is complete and updated in his branch, please cross it off below.<br />
{| border=1 style="border: 1px solid darkgray;"<br />
| Num<br />
| Name<br />
| Owner<br />
| Has Harness<br />
| Rev.<br />
| Peer Rev.<br />
| Pull<br />
| Contrib.<br />
|- <br />
| colspan=8 bgcolor="yellow" style="text-align:center;" | '''Ensure you have actually tested your test before sending a pull request'''<br />
|-<br />
|- <br />
| colspan=8 bgcolor="lightgreen" style="text-align:center;" | '''Fill Out the Contrib cell with "First Last <email>" or leave blank for none.'''<br />
|-<br />
|1<br />
|test_FullScreenHarness.html<br />
|Anachid<br />
|<br />
|<br />
|<br />
|<br />
|<br />
|-<br />
|2<br />
|file_DOMtree.html<br />
|Anachid<br />
|<br />
|<br />
|<br />
|<br />
|<br />
|-<br />
|3<br />
|test_MouseEvents.html<br />
|rhung<br />
|<br />
|<br />
|<br />
|<br />
|<br />
|-<br />
|4<br />
|test_TargetOutOfFocus.html<br />
|<br />
|<br />
|<br />
|<br />
|<br />
|<br />
|-<br />
|5<br />
|test_UserAgentIsActive<br />
|<br />
|<br />
|<br />
|<br />
|<br />
|<br />
|-<br />
|6<br />
|test_constantxy.html<br />
|jbraffoul<br />
|<br />
|<br />
|<br />
|<br />
|<br />
|-<br />
|7<br />
|test_defaultUnlock.html<br />
|<br />
|<br />
|<br />
|<br />
|<br />
|<br />
|-<br />
|8<br />
|test_doubleLockCallBack.html<br />
|jboelen<br />
|<br />
|<br />
|<br />
|<br />
|<br />
|-<br />
|9<br />
|test_exitMouselockOnLoseFocus.html<br />
|<br />
|<br />
|<br />
|<br />
|<br />
|<br />
|-<br />
|10<br />
|test_exitMouselockOnLoseFocus.html<br />
|<br />
|<br />
|<br />
|<br />
|<br />
|<br />
|-<br />
|11<br />
|test_isInstanceofMouselockable.html<br />
|abhatnagar<br />
|<br />
|<br />
|<br />
|<br />
|<br />
|-<br />
|12<br />
|test_limitlessScroll.html<br />
|<br />
|<br />
|<br />
|<br />
|<br />
|<br />
|-<br />
|13<br />
|test_mouseLockableHasRequiredMethods.html <br />
|abhatnagar<br />
|<br />
|<br />
|<br />
|<br />
|<br />
|-<br />
|14<br />
|test_mousePos.html<br />
|jboelen<br />
|<br />
|<br />
|<br />
|<br />
|<br />
|-<br />
|15<br />
|test_mouselocklost.html<br />
|<br />
|<br />
|<br />
|<br />
|<br />
|<br />
|-<br />
|16<br />
|test_movement.html<br />
|<br />
|<br />
|<br />
|<br />
|<br />
|<br />
|-<br />
|17<br />
|test_navigatorPointer.html<br />
|abhatnagar<br />
|<br />
|<br />
|<br />
|<br />
|<br />
|-<br />
|18<br />
|test_syntheticMouseEvent.html<br />
|<br />
|<br />
|<br />
|<br />
|<br />
|<br />
|-<br />
|19<br />
|test_userPref.html<br />
|<br />
|<br />
|<br />
|<br />
|<br />
|<br />
|-<br />
|20<br />
|<br />
|<br />
|<br />
|<br />
|<br />
|<br />
|<br />
|-<br />
|21<br />
|<br />
|<br />
|<br />
|<br />
|<br />
|<br />
|<br />
|-<br />
|<br />
|<br />
|<br />
|<br />
|<br />
|<br />
|<br />
|<br />
|}<br />
<br />
<br />
# test_FullScreenHarness.html - Anachid<br />
<br />
# file_DOMtree.html - Anachid<br />
# <s>test_LockWhenOutOfFocus.html</s> Note: Removed<br />
# test_MouseEvents.html - rhung<br />
# <s>test_TargetOutOfFocus.html</s> - johnno<br />
# test_UserAgentIsActive.html - johnno<br />
# test_constantxy.html - jbraffoul<br />
# <s>test_defaultUnlock.html</s><br />
# <s>test_doesunlock.html</s> Note: Removed, redundant<br />
# <s>test_doubleLockCallBack.html</s><br />
# <s>test_exitMouselockOnLoseFocus.html</s> drigato,johnno(merged)<br />
# <s>test_fullscreen.html</s><br />
# <s>test_isInstanceofMouselockable.html</s> - abhatnagar<br />
# <s>test_limitlessScroll.html</s><br />
# <s>test_lockLostCallBack.html</s><br />
# <s>test_mouseLockableHasRequiredMethods.html</s> - abhatnagar<br />
# test_mousePos.html<br />
# test_mouselocklost.html<br />
# test_movement.html - northWind<br />
# <s>test_navigatorPointer.html</s> - abhatnagar<br />
# <s>test_syntheticMouseEvent.html</s><br />
# <s>test_userPref.html</s> - mjschranz<br />
<br />
====Demos, Docs, Other====<br />
<br />
# Proper IDL documentation for navigator.pointer (see example in https://mxr.mozilla.org/mozilla-central/source/dom/interfaces/html/nsIDOMHTMLElement.idl#103), MouseLockable and its methods, MouseLockLost event, etc.<br />
# Write a JavaScript library to somehow combine element.mozRequestFullScreen() and navigator.pointer.lock(). It would be good to hide the complexities of doing fullscreen then locking in a single API call. <br />
<br />
<pre><br />
var canvas = document.getElementById('canvas');<br />
<br />
// Will put element into fullscreen then try to do mouse lock<br />
var lock = acquireMouseLock({<br />
element: canvas,<br />
onLock: function() {<br />
// OPTIONAL<br />
// fullscreen + mouse lock are now setup for element<br />
},<br />
onUnlock: function() {<br />
// OPTIONAL<br />
// the user or browser took us out of fullscreen/mouse lock<br />
},<br />
onError: function() {<br />
// OPTIONAL<br />
// there was an error getting fullscreen/mouse lock<br />
},<br />
onMovemennt: function(e) {<br />
// OPTIONAL<br />
// movementX and movementY for mousemove are passed in<br />
var deltaX = e.movementX;<br />
var deltaY = e.movementY;<br />
}<br />
});<br />
<br />
...<br />
lock.islocked; // true or false<br />
lock.unlock();<br />
</pre><br />
<br />
# Mouse lock specification fix requests<br />
# Convert Rescue Fox to use Mouse Lock, see https://github.com/mozilla/rescuefox<br />
# <strike>Convert http://cjcliffe.github.com/CubicVR.js/cubicvr/samples/fps_demo/level1.html to use Mouse Lock</strike> - JSilver999<br />
# Create a tutorial on how to use Mouse Lock, with code examples<br />
# Add demo pages to [http://humphd.github.com/mozilla-central/mouselock/index.html gh-pages branch]<br />
# Review https://developer.mozilla.org/en/API/Mouse_Lock_API for correctness with spec + our implementation<br />
<br />
==Resources==<br />
<br />
* Spec Document: http://dvcs.w3.org/hg/webevents/raw-file/default/mouse-lock.html<br />
* Implementation Repo: https://github.com/humphd/mozilla-central on the '''mouselock''' branch.<br />
* Mozilla Bug: https://bugzilla.mozilla.org/show_bug.cgi?id=633602<br />
* WebKit Bug: https://bugs.webkit.org/show_bug.cgi?id=68468<br />
* Chromium Bug: http://code.google.com/p/chromium/issues/detail?id=72754<br />
* Points of Interest: http://zenit.senecac.on.ca/wiki/index.php/Mouse_Lock_API_Points_of_Interest<br />
* Mochitest: https://developer.mozilla.org/en/Mochitest<br />
* Mochitest FAQ: http://zenit.senecac.on.ca/wiki/index.php/Mochitest_FAQ<br />
* Mozilla Cross Reference: http://mxr.mozilla.org/mozilla-central/<br />
* MouseLock Demos Link: http://humphd.github.com/mozilla-central/mouselock/index.html<br />
* MouseLock Stage Build download: http://stage.mozilla.org/pub/mozilla.org/firefox/try-builds/david.humphrey@senecac.on.ca-f4e5849f1ae7/</div>Jboelenhttps://wiki.cdot.senecacollege.ca/w/index.php?title=Mouse_Lock_Implementation_FAQ&diff=73770Mouse Lock Implementation FAQ2011-11-10T03:22:00Z<p>Jboelen: </p>
<hr />
<div>==Introduction==<br />
<br />
This page is a catch-all for questions about the [[Implementing the Mouse Lock API in Firefox|work to implement Mouse Lock]]. Ask or answer any questions below using the style already started. Questions relating to ''anything'' around this work are acceptable (development issues, build problems, source code questions, spec issues, etc.). Don't be afraid, just ask! Don't judge others, just answer!<br />
<br />
==Questions==<br />
<br />
===Why are we using github instead of Mozilla's Mercurial repo?===<br />
<br />
So that we don't have to learn yet another version control system. We've already learned git and github, why switch now? Mozilla's Mercurial repo is mirrored on github, and our repo is a fork of this. The main github repo (e.g., https://github.com/doublec/mozilla-central) gets updated regularly, so you can pull from it to keep your fork in sync.<br />
<br />
===How do I build Firefox?===<br />
<br />
See https://developer.mozilla.org/En/Developer_Guide/Build_Instructions<br />
<br />
===What's the difference between a DEBUG and RELEASE build?===<br />
<br />
With a DEBUG build you can attach a debugger or use various logging and instrumentation in order to see how your source code works. A RELEASE build removes this, and optimizes your code.<br />
<br />
===How do I create a DEBUG build?===<br />
<br />
You need to add info to your .mozconfig file, see https://developer.mozilla.org/en/Configuring_Build_Options<br />
<br />
<pre><br />
ac_add_options --disable-optimize<br />
ac_add_options --enable-debug<br />
</pre><br />
<br />
===How do I get my build to go faster?===<br />
<br />
Use Linux if you can (faster I/O), use more RAM if you can. Make sure you enable parallel make jobs so you can take advantage of your CPU cores. In your .mozconfig, add a j value that is 2*cores+1 or at least 2:<br />
<br />
<pre><br />
mk_add_options MOZ_MAKE_FLAGS=-j5<br />
</pre><br />
<br />
===How do I resolve the windows line ending error when trying to build FireFox?===<br />
For more information, this is the error I get.<br />
<pre><br />
client.mk:121: *** This source tree appears to have Windows-style line endings.<br />
To convert it to Unix-style line endings, run "python mozilla/build/win32/mozilla-dos2unix.py".<br />
Stop.<br />
</pre><br />
The python code will not work because it's trying to look for a CVS directory that does not exist in the mozilla-central folder.<br />
<br />
'''Bug Ticket''': https://bugzilla.mozilla.org/show_bug.cgi?id=699203<br />
<br />
'''Answer 1''': We should file a bug on this and get the script + error message fixed. Ask on irc for tips on how to do this, or we can do on Tuesday.<br />
<br />
'''Answer 2''': This happens because the default setting for msys git on Windows is to checkout files with CRLF line endings. To fix this, you need to reinstall msys git and when you get to ''Configure the line ending conversions'', choose option 2 ''Checkout as-is, commit Unix-style line endings'' here http://help.github.com/images/bootcamp/bootcamp_1_win_install_7.jpg. Once you've reinstalled msys git, you need to checkout the repository with the correct LF line endings with the following commands:<br />
<pre><br />
git ls-files -z | xargs -0 rm;<br />
git checkout .<br />
</pre><br />
<br />
'''Answer 3''': Before cloning the repository, set core.autocrlf to input (which always checks things out with LF line endings) by using the following line.<br />
<pre><br />
git config --global core.autocrlf input<br />
</pre><br />
Afterwards, you can freely clone the repository and the build should now work.<br />
<br />
===How do I resolve the error where CL cannot be found?===<br />
<br />
This is the error that comes up:<br />
<br />
'''checking whether the C compiler (cl ) works... no<br />
configure: error: installation or configuration problem: C compiler cannot create executables.<br />
Fix above errors and then restart with "make -f client.mk build"<br />
make[1]: *** [configure] Error 1<br />
make[1]: Leaving directory `/d/proj/mozilla'<br />
make: *** [/d/proj/mozilla/obj-i686-pc-mingw32/Makefile] Error 2'''<br />
<br />
<u>'''Answer 1:'''</u><br />
<br />
This error is due to the .bat file not being able to find the vcvars32 or 64 file. This is because when we run the wrong .bat file.<br />
When the file says -x64 after it, for example 'start-msvc9-x64' it is not necessarily saying this needs to be run in a 64 bit operating<br />
system but instead if you look inside the bat file you will see that this pretty much just means that it will be looking for the vcvars<br />
file in %VC9EXPRESSDIR%\bin\'''amd64'''\vcvars64.bat instead of Microsoft Visual Studio 9.0\VC\bin\vcvars32.bat so make sure you are running<br />
the correct batch file and if you get this error check the path in the file to make sure it goes to the right place.<br />
<br />
===How do I resolve the atlbase.h being missing?===<br />
<br />
While running the make command, you get an error saying that atlbase.h file is missing!<br />
<br />
'''Answer 1:'''<br />
<br />
Apparently this is a very much known issue because apparently VS 2008 express does not come with this file, while the Professional version does come with it. Mozilla gives<br />
the workaround of downloading the last version of of microsoft SDK which came with this file which is 2003. https://developer.mozilla.org/en/atlbase.h.<br />
After you install it close and open the bat file again and rerun the make file.<br />
<br />
===After building a debug version of Firefox on Windows, should I be seeing a lot of WARNING messages?===<br />
After a successful build, I launched Firefox Nightly, I got a command prompt screen that started outputting messages. Many of them are warning messages, should I be worried? Also, certain warnings (assertions) causes pop ups that need to be dealt with, is there a way to get rid of that?<br />
<br />
'''Answer 1''': No, the warning messages are normal. If you're using command prompt to start firefox.exe, you can type:<br />
<pre>set XPCOM_DEBUG_BREAK=warn</pre><br />
NOTE: in a BASH shell you usually have to do it this way:<br />
<pre>export XPCOM_DEBUG_BREAK=warn</pre><br />
That should suppress all pop ups. This is only necessary for windows. Mac and Linux machines should be set to this by default.<br />
<br />
===Can't find header GL/glx.h for WebGL===<br />
<br />
While running make, the following error presents itself:<br />
<blockquote><br />
configure: error: Can't find header GL/glx.h for WebGL (install mesa-common-dev (Ubuntu), mesa-libGL-devel (Fedora), or Mesa-devel (openSUSE))) <br />
</blockquote><br />
'''Answer 1''': This error is most likely caused by an error in your .mozconfig file. Make sure that all commands are prefixed properly with their correct add command (mk_add... or ac_add...)</div>Jboelenhttps://wiki.cdot.senecacollege.ca/w/index.php?title=Implementing_the_Mouse_Lock_API_in_Firefox&diff=73657Implementing the Mouse Lock API in Firefox2011-11-08T17:16:30Z<p>Jboelen: /* Participants */</p>
<hr />
<div>==Introduction==<br />
<br />
This is a working document for the implementation of the [http://dvcs.w3.org/hg/webevents/raw-file/default/mouse-lock.htmlMouse Lock API spec] in Mozilla by students in David Humphrey's Mozilla Development class at Seneca College.<br />
<br />
Please add, edit, correct, expand, etc. as necessary. This page should contain any links or other info we need.<br />
<br />
==Participants==<br />
<br />
While the project is primarily meant for students in DPS909/OSD600, feel free to join us if you want to work on things.<br />
<br />
* David Humphrey (lead developer, professor, [http://twitter.com/humphd @humphd])<br />
* Hasan Kamal-Al-Deen (tardy student, [http://twitter.com/NorthWind87 @NorthWind87])<br />
* Matthew Schranz (Student, OSD600, [http://twitter.com/mjschranz @mjschranz])<br />
* Yevgeniy Ivanchenko (Student, OSD600)<br />
* Anurag Bhatnagar (Student, DPS909, [http://twitter.com/anuragbh @anuragbh])<br />
* Raymond Hung (Student, DPS909)<br />
* Jesse Silver (Student, OSD600)<br />
* Ching Wei Tseng(Student, DPS909)<br />
* Michelle Mendoza (Student, DPS909)<br />
* Archana Sahota (Student, DPS909)<br />
* Greg Krilov (Student, DPS909)<br />
* Roman Hotin (Student, DPS909)<br />
* Jordan Raffoul (Student)<br />
* Hyungryul Chun (Student, DPS909)<br />
* James Boelen (Masked Crusader, [http://twitter.com/jamesboelen @jamesboelen])<br />
* ''<your name here>''<br />
<br />
==Communication==<br />
<br />
Development work will be done using a combination of the following:<br />
<br />
* In class discussions: 11:40-1:30 Tuesday and Thursday in TEL T2110<br />
* IRC discussions: [irc://irc.mozilla.org/seneca #seneca], [irc://irc.mozilla.org/paladin #paladin]<br />
* Questions: ask and answer any questions here: [[Mouse Lock Implementation FAQ]]<br />
* Trackable Work Items: put all sub-items we have to do here https://github.com/humphd/mozilla-central/issues<br />
* Blog Series: http://vocamus.net/dave/?cat=28<br />
<br />
==Tasks==<br />
<br />
# Clone our repo and build a debug version locally<br />
# Get a https://bugzilla.mozilla.org account and CC yourself on the [https://bugzilla.mozilla.org/show_bug.cgi?id=633602 bug].<br />
# Set a Watch on this page and the Q/A page so you know when things change.<br />
# Break the spec down into an itemized list of things we need to do, tests we need to write, features we have to add, edge cases we have to worry about, demos we need to build, etc. Put the info into this page. We need to know everything we'll have to write and schedule when we'll do each bit.<br />
# Blog about your work on this implementation<br />
# Add questions/answers to [[Mouse Lock Implementation FAQ]]<br />
<br />
==Resources==<br />
<br />
* Spec Document: http://dvcs.w3.org/hg/webevents/raw-file/default/mouse-lock.html<br />
* Implementation Repo: https://github.com/humphd/mozilla-central on the '''mouselock''' branch.<br />
* Mozilla Bug: https://bugzilla.mozilla.org/show_bug.cgi?id=633602<br />
* WebKit Bug: https://bugs.webkit.org/show_bug.cgi?id=68468<br />
* Chromium Bug: http://code.google.com/p/chromium/issues/detail?id=72754</div>Jboelenhttps://wiki.cdot.senecacollege.ca/w/index.php?title=Fall_2011_0.1_Release&diff=70357Fall 2011 0.1 Release2011-09-30T00:59:52Z<p>Jboelen: /* Release Info */</p>
<hr />
<div>==0.1 Release==<br />
<br />
Please add your name and any important links below when you are done your 0.1 Release, for example, blog post, git repo/commit/branch, bugs, etc.<br />
<br />
==Release Info==<br />
<br />
<br />
{| border="1"<br />
|-<br />
|class="header"|Name<br />
|class="header"|IRC Nick<br />
|class="header"|Blog<br />
|class="header"|Github Commit<br />
|class="header"|Release Notes<br />
|class="header"|Bug<br />
|-<br />
|Chris Gosselin<br />
|crgosselin<br />
|http://crgosselin.blogspot.com/<br />
|https://github.com/crgosselin/gladius/commit/c0003d00b913e7b71ea407a88943a339007e6bb1<br />
|Changing way Math.js is used within Gladius. Last 8 or so blog posts are relevant.<br />
|https://github.com/alankligman/gladius.math/issues/1<br />
|-<br />
|Noah Gitalis<br />
|tuna<br />
|http://noahgitalis.wordpress.com/<br />
|https://github.com/ngitalis/CubicVR.js/commit/72788c7ebe64a01c6c8c0d767a05aa62c2a4e0ee<br />
|"Hello World" For CubicVR.js automated ref tests.<br />
|https://github.com/cjcliffe/CubicVR.js/issues/25<br />
|-<br />
|Kaitlyn McDonald<br />
|kaitlynm<br />
|http://kaitlynmcdonald.wordpress.com<br />
|https://github.com/kmcdonald11/Send2SP<br />
|Please read blog post!<br />
|[http://code.google.com/p/processing/issues/detail?id=854&sort=owner&colspec=Stars%20ID%20Type%20Status%20Priority%20Owner%20Summary&Processing (Issue 854)]<br />
|-<br />
|James Boelen<br />
|jboelen<br />
|http://james.boelen.ca<br />
|https://github.com/JamesBoelen/processing-js/commit/e09fcba05242d84714ca0c899d596d2bc2d6f361<br />
|Fixed a bug with noFill and noStroke in PJS<br />
|[https://processing-js.lighthouseapp.com/projects/41284-processingjs/tickets/1417-curves-are-filled-even-with-nofill-set Ticket #1417]<br />
|-</div>Jboelenhttps://wiki.cdot.senecacollege.ca/w/index.php?title=Planet_CDOT_Feed_List&diff=68775Planet CDOT Feed List2011-09-08T14:17:40Z<p>Jboelen: /* Feeds */</p>
<hr />
<div>= Introduction =<br />
<br />
Seneca students and faculty working on open source related projects and research, as well as some faculty, students, and researchers from other institutions, use [http://zenit.senecac.on.ca/~chris.tyler/planet/ Planet CDOT] to aggregate their blogs. This page contains the information about who is blogging in [http://www.planetplanet.org/ Planet Feed Reader format] and serves as the feed configuration for the planet.<br />
<br />
If you do not have an existing blog, you can open a free account at [http://wordpress.com/ Wordpress.com] or [https://www.blogger.com/ Blogger.com] or you can set up your own blog software such as [http://www.s9y.org Serendipity].<br />
<br />
'''Note:''' Additions to the feed list will not take effect until they are merged into the Planet configuration, which is an automatic process scheduled at regular intervals. If you add a feed and do not see it picked up in the Planet within three hours, please check your feed entry carefully and then contact [[User:Chris Tyler|Chris Tyler]] .<br />
<br />
= Requirements =<br />
<br />
* Blog postings fed to the planet must conform to the [[Blog Guidelines]].<br />
* Feeds that are inactive for a significant period of time may get deleted from this list.<br />
<br />
= Using a Tagged/Category Feed =<br />
<br />
A tagged or category feed includes only articles that are tagged with particular keywords or placed in a particular topic category. This can be useful for sending only selected posts to the planet.<br />
<br />
These are the URL formats for tagged or category feeds on popular blogging services/software:<br />
<br />
* [http://www.wordpress.com Wordpress]: <code><nowiki>[http://</nowiki>''blog-user-name''.wordpress.com/category/''category-name''/feed/]</code><br />
* [http://blogger.com Blogger]: <code><nowiki>[http://</nowiki>''blog-user-name''.blogspot.com/feeds/posts/default/-/''category-name'']</code><br />
* [http://s9y.org Serendipity]: <code><nowiki>[http://</nowiki>''blog-main-url''/index.php?/feeds/categories/''cateogrynumber''-''categoryname'']</code><br />
<br />
= Feed Info Format =<br />
<br />
You can add your blog's [http://en.wikipedia.org/wiki/RSS_(file_format) RSS feed] at the end of the list below by specifying the following:<br />
<br />
# The URL to your blog's open source Atom or [http://en.wikipedia.org/wiki/RSS_(file_format) RSS Feed] (i.e., a category or tag). NOTE: Please do not put the URL to your blog -- use the URL for your feed. Please do not use the feed for your entire blog (unless your blog contains only open source-related postings). We only want open source related content.<br />
# Your name as you want it to appear in the list of names for the planet<br />
# Optionally, a URL to a [http://en.wikipedia.org/wiki/Hackergotchi hackergotchi] ([http://wouterverhelst.livejournal.com/21322.html how to]). Your picture should be an 65x85 PNG with a transparent background.<br />
<br />
<br />
= Feeds =<br />
<br />
<pre><br />
<br />
[http://gkrilov.com/category/open-source/feed/]<br />
name=Greg Krilov<br />
<br />
[http://rubensmaximus.blogspot.com/feeds/posts/default?alt=rss]<br />
name=Rubens Maximus (GameArtist)<br />
<br />
[http://ladanzahir.wordpress.com/category/CDOT/feed/]<br />
name=Ladan Zahiroleslam Zade<br />
<br />
[http://mschranz.wordpress.com/category/seneca_college/open_source/feed/]<br />
name=Matthew Schranz<br />
<br />
[http://www.spectakular.com/category/open-source/feed/]<br />
name=Simon Jung<br />
<br />
[http://james.boelen.ca/category/open_source/feed/]<br />
name=James Boelen<br />
<br />
[http://jbuckley.ca/category/open-source/feed/]<br />
name=Jon Buckley<br />
<br />
[http://mbrzuzy.wordpress.com/category/open-source/feed/]<br />
name=Marcin Brzuzy<br />
<br />
[http://ben1amin.wordpress.com/category/seneca/feed/]<br />
name=Benjamin Chalovich<br />
<br />
[http://edghardest1.wordpress.com/category/open-source-topics/feed/]<br />
name=Ed Arvelaez<br />
<br />
[http://www.ashkansotoudeh.com/?tag=coding-2&feed=rss2]<br />
name=Ashkan Sotoudeh<br />
<br />
[http://dboddie46.wordpress.com/category/SBR600A/feed/]<br />
name=Derrick Boddie<br />
<br />
[http://aali83.blogspot.com/feeds/posts/default/-/oop344]<br />
name=Ahmad Ali<br />
<br />
[http://gr8can8dian.wordpress.com/category/sbr600/feed/]<br />
name=Lorin Soura<br />
<br />
[http://kirtonmike.wordpress.com/category/SBR600/feed/]<br />
name=Mike Kirton<br />
<br />
[http://fuzzux.wordpress.com/category/SBR600/feed/]<br />
name=Tim Furzer<br />
<br />
[http://nageyi.wordpress.com/feed/]<br />
name=Faisal Nageyi<br />
<br />
[http://KrazyDre.blogspot.com/feeds/posts/default?alt=rss]<br />
name=Andrei Artamonov<br />
<br />
[http://mjcorsame.wordpress.com/feed/]<br />
name=Michael John Corsame<br />
<br />
[http://msbreezy12.wordpress.com/category/SBR/feed/]<br />
name=Chantell Mcintosh<br />
<br />
# Disabled 2011-04-28 - empty blog<br />
#[http://mrtait1.blogspot.com/feeds/posts/default/-/oop344]<br />
#name=Matthew Tait<br />
<br />
[http://sbr600cabbott.blogspot.com/feeds/posts/default]<br />
name=Chris Abbott<br />
<br />
[http://kopay.wordpress.com/category/sbr600-win2011/feed]<br />
name=Pirathapan Sivalingam<br />
<br />
[http://mysnogorodsky.blogspot.com/feeds/posts/default?alt=rss]<br />
name=Marina Ysnogorodsky<br />
<br />
[http://asa.veryusefulinfo.com/?feed=rss2]<br />
name=Ali Samimi<br />
<br />
# Disabled 2011-04-28 - empty blog<br />
#[http://coreyangus.blogspot.com/feeds/posts/default/-/oop344]<br />
#name = Corey Angus<br />
<br />
[http://wsong18.blogspot.com/feeds/posts/default/-/OOP344]<br />
name = Wei Song<br />
<br />
# Disabled 2011-04-28 - blog deleted<br />
#[http://kijeongkim.blogspot.com/feeds/posts/default]<br />
#name=Kijeong Kim<br />
<br />
[http://davidsosd60020102blog.blogspot.com/feeds/posts/default]<br />
name=David Takasaki<br />
<br />
[http://zwang98.blogspot.com/feeds/posts/default]<br />
name=Joe Wang<br />
<br />
[http://sbr700.blogspot.com/feeds/posts/default?alt=rss]<br />
name=Jonathan Deni<br />
#face=https://techontherun.sslpowered.com/techontherun.ca/jonthumb.png<br />
<br />
[http://dgilloch.blogspot.com/feeds/posts/default]<br />
name=Daniel Gilloch<br />
<br />
[http://jmchen11.wordpress.com/feed/]<br />
name=Jianming Chen<br />
<br />
[http://paulfedora.wordpress.com/tag/cdot/feed/]<br />
name=Paul Whalen<br />
<br />
[http://dmchisho.wordpress.com/feed/]<br />
name=David Chisholm<br />
<br />
[http://pokerface3.blogspot.com/feeds/posts/default/-/SBR?alt=rss]<br />
name=David Cabral<br />
<br />
[http://zbhuang1.blogspot.com/feeds/posts/default/-/open%20source]<br />
name=Zhibin Huang<br />
<br />
[http://sidsbr.blogspot.com/feeds/posts/default?alt=rss]<br />
name=Sadiki Latty<br />
<br />
[http://orel60.blogspot.com/feeds/posts/default?alt=rss]<br />
name=Or-el Mousaffi<br />
<br />
[http://aryafarzan.wordpress.com/category/OOP344/feed/]<br />
name=Arya Farzan<br />
<br />
[http://dsventura.blogspot.com/feeds/posts/default?alt=rss]<br />
name=Dan Ventura<br />
<br />
[http://cadecairos.blogspot.com/feeds/posts/default/-/open-source]<br />
name=Christopher DeCairos<br />
<br />
[http://acfunktron.blogspot.com/feeds/posts/default]<br />
name=Anton Chan<br />
<br />
[http://adaniel3.blogspot.com/feeds/posts/default?alt=rss]<br />
name=Arlene Daniel<br />
<br />
[http://tyrant911-processingdotjs.blogspot.com/feeds/posts/default/-/processing.js]<br />
name=Alex Londono<br />
<br />
# Disabled 2009-11-13 by Chris Tyler <chris.tyler@senecac.on.ca> (ctyler on IRC)<br />
# Ausley: Contact me to discuss before re-enabling.<br />
#[http://ausleyj.blogspot.com/feeds/posts/default]<br />
#name=Ausley Johnson<br />
<br />
[http://arminoop344.blogspot.com/feeds/posts/default]<br />
name=Armin Kumarshellah<br />
<br />
[http://cloudscorpion.blogspot.com/feeds/posts/default/-/open-source]<br />
name=Joseph Hughes<br />
<br />
[http://travisrawn.blogspot.com/feeds/posts/default]<br />
name=Travis Rawn<br />
<br />
[http://jmpiltz.blogspot.com/feeds/posts/default]<br />
name=Jonathan Piltz<br />
<br />
[http://andrewgrimo.wordpress.com/category/open-source/feed/]<br />
name=Andrew Grimo<br />
<br />
[http://apvsbr700.blogspot.com/feeds/posts/default?alt=rss]<br />
name=Alex Vlahopoulos<br />
#face=https://techontherun.sslpowered.com/techontherun.ca/alexthumb.png<br />
<br />
[http://asalga.wordpress.com/category/open-source/feed/]<br />
name=Andor Salga (asalga)<br />
<br />
[http://jabhad.blogspot.com/feeds/posts/default?alt=rss]<br />
name=Mohamed Aden<br />
<br />
[http://jonathandeni.blogspot.com/feeds/posts/default?alt=rss]<br />
name=Jonathan Deni<br />
#face=https://techontherun.sslpowered.com/techontherun.ca/jonthumb.png<br />
<br />
[http://manoutoftime.wordpress.com/category/open-source/feed/]<br />
name=Konstantin Novichikhin<br />
<br />
[http://scorchedicee.wordpress.com/category/Seneca/feed/]<br />
name=Adam Sone<br />
<br />
[http://murraysaul.wordpress.com/feed/]<br />
name=Murray Saul<br />
<br />
[http://xwn740arcadeproject.blogspot.com/feeds/posts/default]<br />
name=Arcade Project - LUX Group@<br />
#face=http://matrix.senecac.on.ca/~mpaivaneto/ourbaby.png<br />
<br />
[http://crashopensource.blogspot.com/feeds/posts/default/-/open-source]<br />
name=Lukas Blakk (lsblakk)<br />
#face=http://avnerd.tv/sharedFiles/lukas_hackergotchi.png<br />
<br />
[http://nashutzu.blogspot.com/feeds/posts/default]<br />
name=George Popescu (GeorgeP)<br />
<br />
[http://blog.chris.tylers.info/index.php?/feeds/categories/20-Seneca-Planet.rss]<br />
name=Chris Tyler (ctyler)<br />
face=http://zenit.senecac.on.ca/~chris.tyler/chris_tyler_hackergotchi_4a.png<br />
<br />
[http://vocamus.net/dave/?feed=rss2&category_name=Seneca]<br />
name=David Humphrey<br />
<br />
[http://gratnam1.blogspot.com/feeds/posts/default?alt=rss]<br />
name=Gajendran Ratnam (gratnam1)<br />
<br />
[http://senecajon.blogspot.com/feeds/posts/default]<br />
name=Jonathan Cheung (jcheung23)<br />
<br />
# Disabled 2011-04-28 - blog was removed<br />
#[http://blog.markparuzel.com/feed/]<br />
#name=Mark Paruzel<br />
<br />
[http://mmszuto.blogspot.com/feeds/posts/default]<br />
name=Michael Szutu<br />
<br />
[http://lsdaly.blogspot.com/feeds/posts/default]<br />
name=Louis Daly (lsdaly)<br />
<br />
# Disabled 2009-01-25 due to 404's (domain expired)<br />
#[http://www.foobartastic.com/feed/]<br />
#name=Tom Aratyn<br />
<br />
[http://bhearsum.blogspot.com/feeds/posts/default/-/seneca]<br />
name=Ben Hearsum<br />
<br />
# Following feed is invitation-only. Disabled 2010-09-23 CTyler<br />
#[http://www.jyzyy.blogspot.com/feeds/posts/default/-/opensource]<br />
#name=Jyoti<br />
<br />
# Re-enabled 2011-04-29 - new blog URL<br />
# Disabled 2009-09-15 due to 404's (site rearranged?)<br />
[http://tea.cesaroliveira.net/archives/tag/seneca/feed]<br />
name=Cesar Oliveira<br />
<br />
[http://r3ap3r.wordpress.com/category/seneca/feed]<br />
name=Brandon Collins<br />
<br />
# Disabled 2011-04-28 - blog was deleted<br />
#[http://jrgoncal.blogspot.com/feeds/posts/default]<br />
#name=Justin Goncalves (jrgoncal)<br />
#face=http://img517.imageshack.us/img517/9865/bearzp5.jpg<br />
<br />
# Disabled 2011-04-28 - blog is now private<br />
#[http://tlo5.blogspot.com/feeds/posts/default]<br />
#name=Tommy Lo (tlo5)<br />
<br />
[http://armenzg.blogspot.com/feeds/posts/default/-/open%20source]<br />
name=Armen Zambrano G. (armenzg)<br />
<br />
[http://mikemoz.blogspot.com/feeds/posts/default/-/Open%20Source]<br />
name=Michael Mullin<br />
<br />
[http://mikemoz.blogspot.com/feeds/posts/default/-/Mozilla_GFX]<br />
name=Michael Mullin<br />
<br />
# Returned 410 on 2008-09-13 - disabled CTyler<br />
#[http://rueenfiez.wordpress.com/category/open-source/feed/]<br />
#name=Rueen Fiez<br />
<br />
# Returning 404 on 2008-09-13 - disabled CTyler<br />
#[http://jsafavi.wordpress.com/category/open-source/feed/]<br />
#name=Jason Safavi<br />
<br />
[http://vlam6.wordpress.com/category/open-source/feed/]<br />
name=Vincent Lam<br />
<br />
[http://dejant.blogspot.com/feeds/posts/default]<br />
name=Dejan Tolj<br />
<br />
[http://shivaris.blogspot.com/feeds/posts/default/-/OSD600]<br />
name=Hien Huynh<br />
<br />
[http://raynrant.blogspot.com/feeds/posts/default]<br />
name=Andrew Raynier (JM)<br />
face=http://zenit.senecac.on.ca/wiki/imgs/Hackergotchi.png<br />
<br />
[http://vijeysdps909.blogspot.com/feeds/posts/default]<br />
name=Vijey Bala<br />
<br />
[http://sedejong.blogspot.com/feeds/posts/default]<br />
name=Shomar Dejonge<br />
<br />
[http://dbaranski.wordpress.com/category/open-source/feed/]<br />
name=Dominic Baranski<br />
<br />
#[http://crashopensource.wordpress.com/category/open-source/feed/]<br />
#name=Lukas Blakk<br />
<br />
[http://kmsingh.blogspot.com/feeds/posts/default?alt=rss]<br />
name=Kerry M. Singh<br />
<br />
[http://tjduavis.wordpress.com/category/open-source/feed/]<br />
name=Timothy Duavis<br />
<br />
# Disabled 2011-04-28 - entire website is missing<br />
#[http://ashughes.com/?q=taxonomy/term/2/0/feed]<br />
#name=Anthony Hughes<br />
<br />
[http://opensourcekennethlee.blogspot.com/feeds/posts/default]<br />
name=Kenneth Lee<br />
<br />
[http://cleung.wordpress.com/category/Seneca/feed/]<br />
name=Catherine Leung<br />
<br />
[http://dtheosab.wordpress.com/category/open-source/feed/]<br />
name=Daino Theosabrata<br />
<br />
# This is my old blog<br />
[http://simon-jung.blogspot.com/feeds/posts/default]<br />
name=Simon Jung (old)<br />
<br />
[http://aeraj.blogspot.com/feeds/posts/default/-/open%20source]<br />
name=AJ Rehman<br />
<br />
[http://xrayon.blogspot.com/feeds/posts/default]<br />
name=Fima Kachinski<br />
<br />
[http://littlesvr.ca/grumble/category/safeforseneca/feed/]<br />
name=Andrew Smith<br />
<br />
[http://littlesvr.ca/masters/feed]<br />
name=Andrew Smith (master's)<br />
<br />
[http://jbopensrc.wordpress.com/category/open-source/feed]<br />
name=Jesse Buchanan<br />
<br />
[http://ayhfung.blogspot.com/feeds/posts/default]<br />
name=Andrew Fung<br />
<br />
# Returned 404 on 2008-09-13 - disabled CTyler<br />
#[http://sloose.wordpress.com/category/open-source/feed/]<br />
#name=Peter Ljubanovic<br />
<br />
[http://mozcoz.blogspot.com/feeds/posts/default/-/Open%20Source]<br />
name=Amit Gundu<br />
<br />
# Changed CTyler 2009-02-12 from [http://www.blogger.com/feeds/15922666655846514311/blogs]<br />
[http://dsmukherji.blogspot.com/feeds/posts/default?alt=rss]<br />
name=Devashish<br />
<br />
[http://yhan11.wordpress.com/category/open-source/feed]<br />
name=Yongsheng Han<br />
<br />
[http://peter.sykokillers.com/category/open-source/feed/]<br />
name=Peter Chan<br />
<br />
[http://www.c3dl.org/index.php/category/c3dl-dev/feed]<br />
name=Seneca Canvas3D Team<br />
<br />
# Updated 2011-04-28 - corrected feed URL<br />
[http://peterevanoff.wordpress.com/category/open-source/feed/]<br />
name=Peter Evanoff<br />
<br />
# Disabled 2011-04-28 - flagged as a malware-loaded site by Google<br />
<br />
#[http://radoye.net1zen.com/wp-rss2.php?cat=3]<br />
#name=Radovan Nesic<br />
<br />
[http://blog.cresencia.ca/category/open-source/osd600/feed/]<br />
name=Joseph Cresencia<br />
<br />
[http://bertenshaw.blogspot.com/feeds/posts/default]<br />
name=David Bertenshaw<br />
<br />
[http://ljubomirgorscak.blogspot.com/feeds/posts/default]<br />
name=Ljubomir Gorscak<br />
<br />
[http://sameropensource.blogspot.com/feeds/posts/default]<br />
name=Samer Ziadeh (samer)<br />
<br />
# Following feed not working and temporarily disabled<br />
# 2010-09-23 by CTyler<br />
#[http://jamesboston.ca/cms/taxonomy/term/1/0/feed]<br />
#name=James Boston<br />
#face=http://jamesboston.ca/hackergotchi.png<br />
<br />
[http://dailypackage.fedorabook.com/index.php?/feeds/index.rss2]<br />
name=Fedora Daily Package<br />
<br />
[http://blog.fardad.com/feeds/posts/default/-/Seneca]<br />
name=Fardad Soleimanloo<br />
<br />
#[http://seneblog.fardad.com/feeds/posts/default]<br />
#name=Fardad Soleimanloo<br />
<br />
[http://selmys.wordpress.com/category/opensource/feed]<br />
name=John Selmys<br />
face=http://cs.senecac.on.ca/~selmys/john_selmys_hackergotchi.png<br />
<br />
[http://pconstantino.wordpress.com/feed]<br />
name=Patricia Constantino<br />
<br />
[http://bombshelter13.blogspot.com/feeds/posts/default]<br />
name=Gregory Masseau<br />
#face=http://matrix.senecac.on.ca/~gjmasseau/userpic.jpg<br />
<br />
[http://zadkielm.blogspot.com/feeds/posts/default/-/open%20source]<br />
name=Ezadkiel Marbella<br />
<br />
[http://blog.sidkalra.com/category/opensource/feed]<br />
name=Sid Kalra<br />
<br />
[http://pplam3.blogspot.com/feeds/posts/default]<br />
name=Patrick Lam<br />
<br />
# Disabled 2011-04-28 - blog is now private<br />
#[http://twlai1.blogspot.com/feeds/posts/default]<br />
#name=Tony Lai<br />
<br />
[http://dee132.blogspot.com/feeds/posts/default/-/seneca]<br />
name=Chris Bishop<br />
<br />
# Updated 2011-04-28 - updated feed URL<br />
[http://zghansar.wordpress.com/category/open-source/feed/]<br />
name=Zaid Ghansar<br />
face=http://www.alhudainstitute.ca/zaid/z.png<br />
<br />
[http://aaronmt.com/?feed=rss2]<br />
name=Aaron Train<br />
face=http://matrix.senecac.on.ca/~amtrain/other/mypic.png<br />
<br />
[http://scottosd.blogspot.com/feeds/posts/default/-/Open%20Source/]<br />
name=Scott Lunel<br />
<br />
# Updated 2009-04-16, new blog. - scarter4<br />
# Disabled 2009-11-27 due to wrong feed URL<br />
#[http://scarter4.wordpress.com/category/seneca/]<br />
#name=Stephen Carter<br />
<br />
# Disabled 2009-01-23 CTyler due to 404s<br />
#[http://shdinis.blogspot.com/feeds/posts/default]<br />
#name=Shawn Dinis<br />
<br />
[http://belligero.org/index.php?option=com_content&view=section&id=1&format=feed&type=rss]<br />
name=Jason Tarka<br />
<br />
# Updated 2011-04-28 - no more tag, but still Seneca related<br />
[http://petermcintyre.wordpress.com/feed/]<br />
name=Peter McIntyre<br />
<br />
[http://vesperrin.blogspot.com/feeds/posts/default/-/open%20source]<br />
name=Leonard Lee (vesper)<br />
<br />
[http://jsdoodnauth.wordpress.com/category/open-source/feed/]<br />
name=Joshua Doodnauth<br />
<br />
[http://johnhford.blogspot.com/feeds/posts/default/-/Open%20Source]<br />
name=John Ford (John64)<br />
<br />
[http://mohaksblog.blogspot.com/feeds/posts/default]<br />
name=Mohak Vyas<br />
#face=http://matrix.senecac.on.ca/~mdvyas/MohakVyas.png<br />
<br />
[http://pdirezze.blogspot.com/feeds/posts/default]<br />
name=Paul DiRezze<br />
<br />
# Following link no longer valid. Disabled 2010-09-23 CTyler<br />
#[http://www.ndaversa.com/category/open-source/feed]<br />
#name=Nino D'Aversa<br />
<br />
[http://miltonpaiva.wordpress.com/feed/]<br />
name=Milton Paiva<br />
#face=http://matrix.senecac.on.ca/~mpaivaneto/orkut.png<br />
<br />
[http://de-luxer.blogspot.com/feeds/posts/default?alt=rss]<br />
name=Nestor Chan<br />
#face=http://matrix.senecac.on.ca/~tnchan/n516840997_9173.PNG<br />
<br />
[http://varinderjhand.wordpress.com/feed/]<br />
name=Varinder Singh <br />
<br />
[http://ajhooper.blogspot.com/feeds/posts/default]<br />
name=Aaron Hooper<br />
<br />
[http://nadavid.blogspot.com/feeds/posts/default]<br />
name=Neil David<br />
<br />
[http://cdpatel1.blogspot.com/feeds/posts/default]<br />
name=Chinmay Patel<br />
#face=http://www.geocities.com/chinmay_patel@ymail.com/chinmay.jpg<br />
<br />
[http://jvalianes.blogspot.com/feeds/posts/default]<br />
name=Jesse Valianes<br />
<br />
[http://bbarcick.blogspot.com/feeds/posts/default/-/Open%20Source]<br />
name=Bartosz Barcicki<br />
<br />
[http://heidenreich.wordpress.com/tag/seneca-college/feed/]<br />
name=Michal Heidenreich<br />
<br />
[http://kezhong.wordpress.com/feed/atom/]<br />
name=Kezhong Liang <br />
<br />
[http://wfred.wordpress.com/category/open-source/feed/]<br />
name=Fred Wang<br />
<br />
[http://jsinghfoss.wordpress.com/category/spring-framework/feed/]<br />
name=Jatinder Singh<br />
<br />
[http://rparsi.blogspot.com/feeds/posts/default?alt=rss]<br />
name=Rahi Parsi<br />
<br />
# Changed 2011-04-28 - missing a capital "S" from Seneca to display feed<br />
[http://aaronrey15.blogspot.com/feeds/posts/default/-/Seneca]<br />
name=Aaron Chan<br />
<br />
# Disabled 2011-04-28 - posts were deleted, empty feed<br />
#[http://flashalive.wordpress.com/category/Open%20Source/feed/]<br />
#name=Ryan Wang<br />
<br />
[http://kvuhome.blogspot.com/feeds/posts/default/-/Open%20Source]<br />
name=Khanh Vu<br />
<br />
[http://daeseonmoon.wordpress.com/category/open-source/feed/]<br />
name=Daeseon Moon<br />
<br />
[http://abraini.wordpress.com/category/seneca/feed/]<br />
name=Andrew Braini<br />
<br />
[http://minicheong.blogspot.com/feeds/posts/default]<br />
name=Frankie Law<br />
<br />
# Following feed changed from http://www.heyqule.net/blog/tech/oss/feed<br />
# on 2010-09-23 by CTyler.<br />
[http://www.heyqule.net/taxonomy/term/44/0/feed]<br />
name=Allen JF Xie (heyqule)<br />
<br />
[http://farhadnorouzi.blogspot.com/feeds/posts/default]<br />
name=Farhad Norouzi<br />
<br />
[http://jdeport.wordpress.com/category/software-development/open-source/feed/]<br />
name=John Dang<br />
<br />
[http://pliu.wordpress.com/category/open-source/feed/]<br />
name=Peter Liu<br />
<br />
# Feed not working - temporarily disabled 2010-09-23 CTyler<br />
#[http://www.jerrypau.ca/?feed=rss2&cat=3]<br />
#name=Jerry Pau<br />
#face=http://www.jerrypau.ca/blog-face-1.png<br />
<br />
[http://blog.wikiscraps.com/feeds/posts/default/-/oss]<br />
name=M. Mead Armsby (mead)<br />
<br />
[http://paritosha.blogspot.com/feeds/posts/default]<br />
name=Paritosh Aggarwal(paritosh1010)<br />
<br />
# Private blog. Disabled 2010-09-23 CTyler.<br />
#[http://myblog110.wordpress.com/category/open-source/feed]<br />
#name=Tahereh<br />
<br />
# Disabled 2011-04-28 - empty feed, all posts were removed<br />
#[http://challenger110.wordpress.com/category/software-development/open-source/censored/feed/]<br />
#name=Davoud Salahi Rad<br />
<br />
[http://wb-os.blogspot.com/feeds/posts/default]<br />
name=Le Yang<br />
<br />
[http://garykwong.wordpress.com/category/education/feed/]<br />
name=Gary Kwong (nth10sd)<br />
<br />
[http://yuenhoe.co.cc/blog/category/mozilla/feed/]<br />
name=Lim Yuen Hoe (moofang)<br />
<br />
# Disabled 2011-04-27 - empty feed, needs to be udpated<br />
#[http://tonychestnut.wordpress.com/category/mozilla/ubiquity/feed/]<br />
#name=Vu Dinh The (tonyvu)<br />
<br />
[http://opensourceproject.wordpress.com/category/open-source/feed/]<br />
name=Nabeel Khan (nkhan26)<br />
<br />
# Disabled 2011-04-27 - suspended domain<br />
#[http://solfu.net/tech/category/personas-for-thunderbird/feed/]<br />
#name=Yaoquan (seith)<br />
<br />
[http://xiajunshi.wordpress.com/category/open-source/feed/]<br />
name=Shelley Shi<br />
<br />
[http://hendrikinmozilla.wordpress.com/feed/]<br />
name=Hendrik<br />
<br />
[http://t3rrychan.blogspot.com/feeds/posts/default?alt=rss]<br />
name=Terry Chen (jchen124)<br />
<br />
[http://blog.bchao.ca/feeds/posts/default?alt=rss]<br />
name=Boris Chao<br />
<br />
[http://ahiltssbr700.blogspot.com/feeds/posts/default?alt=rss]<br />
name=Adam Hilts<br />
<br />
[http://ysasaki600.wordpress.com/feed/]<br />
name=Yu Sasaki<br />
<br />
[http://enderstruth.wordpress.com/category/open-source/feed/]<br />
name=Roger Dicke<br />
<br />
[http://wobblyretroaction.blogspot.com/feeds/posts/default/-/Open%20source]<br />
name=Matthew Lam<br />
<br />
[http://asydik.wordpress.com/category/professional/open-source/feed/]<br />
name=Mickael Medel (aSydiK)<br />
<br />
[http://cwdesautels.blogspot.com/feeds/posts/default]<br />
name=Carl Desautels<br />
<br />
[http://rselby-oop344.blogspot.com/feeds/posts/default?alt=rss]<br />
name=Remington Selby<br />
<br />
[http://mikey-osd600a.blogspot.com/feeds/posts/default?alt=rss]<br />
name=Michael Dennis<br />
<br />
# Disabled 2011-04-27 - empty blog<br />
#[http://tjprogramming.blogspot.com/feeds/posts/default/-/seneca]<br />
#name=Timothy Catibog<br />
<br />
[http://horndavid.blogspot.com/feeds/posts/default?alt=rss]<br />
name=David Horn<br />
<br />
[http://annasob.wordpress.com/feed/]<br />
name=Anna Sobiepanek<br />
<br />
[http://drozhkov.blogspot.com/feeds/posts/default/-/seneca]<br />
name=Dmitriy Rozhkov<br />
<br />
[http://www.hodgin.ca/?feed=rss2&cat=4]<br />
name=Daniel Hodgin<br />
<br />
[http://buddhatron.wordpress.com/category/OSD600/feed/]<br />
name=Buddhatron<br />
<br />
[http://xderick.blogspot.com/feeds/posts/default/-/OSD]<br />
name=Yong Hong<br />
<br />
# This next link does not lead to an RSS or Atom feed. Disabled 2009-10-25 by CTyler.<br />
#[http://hoonkoon.blogspot.com/2009/09/oop344.html]<br />
#name=Taehoon Kim<br />
<br />
[http://s2000c.blogspot.com/feeds/posts/default/-/OOP344]<br />
name=Sunny Chau<br />
<br />
# This next link does not lead to an RSS or Atom feed. Disabled 2009-10-25 by CTyler.<br />
#[http://s2000c.blogspot.com/2009/09/oop344c.html]<br />
#name=Sunny Chau<br />
<br />
[http://kxu9.blogspot.com/feeds/posts/default]<br />
name=Kai Xu<br />
<br />
[http://oop-era.blogspot.com/feeds/posts/default]<br />
name=Eric Austerberry<br />
<br />
[http://docsage.blogspot.com/feeds/posts/default/-/OOP344]<br />
name=Eric Dell<br />
<br />
[http://ehren.wordpress.com/category/Seneca/feed/]<br />
name=Ehren Metcalfe<br />
<br />
[http://bsmith19.wordpress.com/category/Seneca/feed/]<br />
name=Brandon Smith<br />
<br />
[http://dcucereavii.blogspot.com/feeds/posts/default?alt=rss]<br />
name=Diana Cucereavii<br />
<br />
# Disabled 2011-04-27 - site unreachable<br />
#[http://www.savantosis.com/?feed=rss2&cat=3]<br />
#name=Justin Robertson<br />
<br />
[http://paul-oop344.blogspot.com/feeds/posts/default/]<br />
name=Paul Repasi<br />
<br />
[http://istessema.wordpress.com/category/oop344/feed/]<br />
name=Iyosias Tessema<br />
<br />
[http://nedape.blogspot.com/feeds/posts/default]<br />
name=Neda Pezeshki<br />
<br />
[http://justletmepassoop344.blogspot.com/feeds/posts/default]<br />
name=Brian Parreno<br />
<br />
[http://dliu53.wordpress.com/category/open-source/feed/]<br />
name=Donghui Liu<br />
<br />
# Disabled 2011-04-27 - site not found<br />
#[http://oopblog.tdotshack.net/feeds/posts/default/-/OOP344]<br />
#name=Ryan Alexander<br />
<br />
[http://oop344ylseow.blogspot.com/feeds/posts/default]<br />
name=Yip Lim, Seow<br />
<br />
[http://mercedes-oop344.blogspot.com/feeds/posts/default]<br />
name=Suwon An<br />
<br />
[http://dtychshenko.blogspot.com/feeds/posts/default/-/OOP344]<br />
name=Dmitriy Tychshenko<br />
<br />
[http://victran.blogspot.com/feeds/posts/default/-/OOP344]<br />
name=Victor Tran<br />
<br />
# Changed 2011-04-27 - updated feed URL to proper<br />
[http://krazyazn.blogspot.com/feeds/posts/default]<br />
name=Michael Lin<br />
<br />
[http://xshi18.blogspot.com/feeds/posts/default]<br />
name=Xiaozhe Shi<br />
<br />
[http://feihong-xiong.blogspot.com/feeds/posts/default]<br />
name=Feihong Xiong<br />
<br />
[http://orbitalstation.wordpress.com/category/programming/open-source/feed/]<br />
name=Hasan Kamal-Al-Deen<br />
face=http://matrix.senecac.on.ca/~hkamal-al-deen/images/Exclaim65x85.png<br />
<br />
[http://hduan2.wordpress.com/feed/]<br />
name= Haoliang Duan<br />
<br />
[http://anastasias-myblog.blogspot.com/feeds/posts/default/-/OOP344]<br />
name= Anastasia Semionova<br />
<br />
[http://franksun123.blogspot.com/feeds/posts/default/]<br />
name= Dong Sun<br />
<br />
[http://rkyoop344.blogspot.com/feeds/posts/default/]<br />
name=Keyan Ren<br />
<br />
[http://ctran13.blogspot.com/feeds/posts/default/-/oop344]<br />
name=Chi-Lea Tran<br />
<br />
[http://szymonsoop.blogspot.com/feeds/posts/default/]<br />
name= Szymon Ahmed<br />
<br />
[http://ywang268.blogspot.com/feeds/posts/default/]<br />
name=Yu Wang<br />
<br />
[http://wangcong422.blogspot.com/feeds/posts/default/]<br />
name=Cong Wang<br />
<br />
[http://dennyp.wordpress.com/category/Seneca/feed/]<br />
name=Denny Papagiannidis<br />
<br />
# Blog not found. Disabled 2010-09-23 CTyler.<br />
#[http://java-chinmay.blogspot.com/feeds/posts/default]<br />
#name= Chinmay Patel<br />
<br />
[http://sergedoescoding.blogspot.com/feeds/posts/default/]<br />
name= Sergiu Ecob<br />
<br />
# Disabled 2011-04-27 - blog deleted<br />
#[http://satijas.wordpress.com/category/OOP344/feed/]<br />
#name=Sasha Atijas<br />
<br />
# 404. Disabled 2010-09-23 CTyler.<br />
#[http://auzix.com/seneca/?feed=rss2]<br />
#name=Tyler Hackwood<br />
<br />
#[http://starbuck-blog.blogspot.com/feeds/posts/default]<br />
#name=Verity Li<br />
<br />
[http://gkrilov.blogspot.com/feeds/posts/default]<br />
name=Greg Krilov<br />
<br />
[http://qinzhi2001.blogspot.com/feeds/posts/default]<br />
name=David Chen<br />
<br />
[http://tchen-oop344.blogspot.com/feeds/posts/default]<br />
name=Terence Chen<br />
<br />
[http://opp344-yxue.blogspot.com/feeds/posts/default]<br />
name=Yong Xue<br />
# Disabled 2011-04-28 - had 2 other duplicate feeds<br />
# http://opp344-yxue.blogspot.com/feeds/posts/default/-/seneca<br />
# http://opp344-yxue.blogspot.com/feeds/posts/default/-/OOP344<br />
<br />
[http://ttsuji1.blogspot.com/feeds/posts/default]<br />
name=Trevor Tsuji<br />
<br />
[http://oyoung4.blogspot.com/feeds/posts/default]<br />
name=Oliver Young<br />
<br />
[http://minyxo.blogspot.com/feeds/posts/default/-/Open%20Source]<br />
name=Edward Sin<br />
<br />
# Blog not found - disabled 2010-09-23 CTyler<br />
#[http://oop344f09-niki.blogspot.com/feeds/posts/default]<br />
#name=Niki Simmalavong<br />
<br />
[http://jdbcdps.blogspot.com/feeds/posts/default]<br />
name=Julia Vasserman<br />
<br />
[http://shunyao-cpa.blogspot.com/feeds/posts/default]<br />
name=Shun Yao Zhang<br />
<br />
# Disabled 2009-11-27 due to 500's on feed link<br />
# Re-enabled 2011-04-27 - incorrect URL format fixed<br />
[http://oop344ylseow.blogspot.com/feeds/posts/default]<br />
name=Yip Lim Seow<br />
<br />
[http://capereir.wordpress.com/feed/]<br />
name=Chris Pereira<br />
<br />
[http://dev-blog.zerogin.com/category/opensource/feed/]<br />
name=Tom Wisniewski (t0mmyw)<br />
<br />
# Disabled 2011-04-27 - empty feed, rest of blog is not related<br />
#[http://majorbludd.wordpress.com/category/school/feed/]<br />
#name=Michael Dawson<br />
<br />
[http://cdnpadawan.wordpress.com/feed/]<br />
name=Matthew Daniels<br />
<br />
[http://processingjs.org/blog/?feed=rss2]<br />
name=Processing.js Blog<br />
<br />
[http://dseifried.wordpress.com/category/school/feed/]<br />
name=David Seifried<br />
<br />
[http://tandemwebdesign.ca/blog/?feed=rss2&cat=3]<br />
name=Matthew Adams<br />
<br />
[http://s-aleinikov.blog.ca/feed/atom/posts/]<br />
name=Sergey Aleinikov<br />
<br />
[http://wfchen2010.blogspot.com/feeds/posts/default]<br />
name=Wen Fang Chen<br />
<br />
[http://donna-oberes.blogspot.com/feeds/posts/default?alt=rss]<br />
name=Donna Oberes<br />
<br />
[http://carolynwoodley.blogspot.com/feeds/posts/default]<br />
name=Carolyn Woodley<br />
<br />
[http://rocketpants.blog.ca/feed/rss2/posts/default/-/open-source]<br />
name=Christopher Cheung<br />
<br />
[http://shengwei-seneca.blogspot.com/feeds/posts/default]<br />
name=Shengwei Wang<br />
<br />
[http://zakoop344.blogspot.com/feeds/posts/default]<br />
name=Wei Tong<br />
<br />
[http://gtawaf.blogspot.com/feeds/posts/default/-/Seneca]<br />
name=Gamal Tawaf <br />
<br />
[http://rift-tlosam.blogspot.com/feeds/posts/default/-/seneca]<br />
name=Brendan McDorman<br />
<br />
[http://hdc23.wordpress.com/category/OOP344/feed]<br />
name=Dachuan Huang<br />
<br />
# Disabled 2011-04-27 - blank feed, aged blod<br />
#[http://qwu26.blogspot.com/feeds/posts/default/-/OOP344]<br />
#name=Qingxi Wu<br />
<br />
# Disabled 2011-04-27 - blank blog<br />
#[http://lwang162.blogspot.com/feeds/posts/default/-/OOP344]<br />
#name=LianHe Wang<br />
<br />
# Disabled 2011-04-27 - blank blog, aged<br />
#[http://bmcohen.blogspot.com/feeds/posts/default/-/seneca]<br />
#name=Bryan Cohen<br />
<br />
[http://feliploko.wordpress.com/category/seneca/feed]<br />
name=Felipe de Oliveira<br />
<br />
# Following feed reports invalid content type.<br />
# Disabled 2010-09-23 CTyler<br />
#[http://lwang168.blogspot.com/feeds/posts/-/oop344]<br />
#name=Liang Wang<br />
<br />
[http://shunyao-cpa.blogspot.com/feeds/posts/default]<br />
name=shun yao zhang<br />
<br />
[http://galewis.blogspot.com/feeds/posts/default]<br />
name=Gustone Lewis<br />
<br />
[http://hmo6.blogspot.com/feeds/posts/default]<br />
name=Mo Hsiu Mei<br />
<br />
[http://derekambrose.blogspot.com/feeds/posts/default/-/open%20source]<br />
name=Derek Ambrose<br />
<br />
[http://scottdowne.wordpress.com/category/open-source/feed/]<br />
name=Scott Downe<br />
<br />
# Disabled 2011-04-27 - blog deleted<br />
#[http://anthonyisgood.blogspot.com/feeds/posts/default/-/open%20source]<br />
#name = Anthony Alves<br />
<br />
[http://jjleeos.blogspot.com/feeds/posts/default]<br />
name = Jeffrey Lee<br />
<br />
[http://harjinderv.tumblr.com/tagged/Open_Source/rss]<br />
name = Harjinder Virdi<br />
<br />
[http://cldenobrega.wordpress.com/category/open-source/feed/]<br />
name = Crystal de Nobrega (cldenobrega)<br />
<br />
[http://lchen97.blogspot.com/feeds/posts/default]<br />
name=Chris Chen<br />
<br />
# Parked domain. Disabled 2010-09-23 CTyler<br />
#[http://hotweiss.lifeflayer.com/?feed=atom]<br />
#name=Tianqi Liu<br />
<br />
[http://oleg-oop.blogspot.com/feeds/posts/default]<br />
name=Aleh Pliats<br />
<br />
[http://88mishok.blogspot.com/feeds/posts/default]<br />
name=Francois Des Jarlais<br />
<br />
[http://bikarin.blogspot.com/feeds/posts/default]<br />
name=Irina Balzamova<br />
<br />
[http://mashhaque.blogspot.com/feeds/posts/default]<br />
name=Mashfique Haque<br />
<br />
[http://yxue11.blogspot.com/feeds/posts/default]<br />
name=Yong Xue<br />
<br />
[http://tdao75.blogspot.com/feeds/posts/default]<br />
name=Thanh Dao<br />
<br />
[http://minooz.wordpress.com/category/CDOT/feed/]<br />
name=Minoo Ziaei<br />
<br />
[http://gbatumbya.wordpress.com/category/seneca/cdot/feed/]<br />
name=Grace Simon Batumbya<br />
<br />
[http://sonnilion.wordpress.com/feed/]<br />
name=Matt Postill<br />
<br />
[http://acchung1.blogspot.com/feeds/posts/default/-/oop344]<br />
name=Alex Chun Yang Chung<br />
<br />
[http://hckim.wordpress.com/category/open-source/feed/]<br />
name=Han Chul Kim<br />
<br />
[http://xizhangblog.blogspot.com/feeds/posts/default/-/oop344]<br />
name=Xi Zhang<br />
<br />
# Modified 2011-04-27 - changed from blank category<br />
[http://lwu11.blogspot.com/feeds/posts/default]<br />
name=Ling Wu<br />
<br />
[http://jasonquan.wordpress.com/category/OOP344/feed/]<br />
name=Jason Quan<br />
<br />
[http://myoop344blog.blogspot.com/feeds/posts/default/]<br />
name=Xiongwen LU<br />
<br />
[http://0zzym.wordpress.com/feed]<br />
name=Osman Mirza<br />
<br />
[http://adgezaza.posterous.com/rss.xml?tag=open%20source]<br />
name=Adrian Maurer<br />
<br />
[http://kumailhabib.blogspot.com/feeds/posts/default]<br />
name=Kumail Habib<br />
<br />
[http://imadorki3.blogspot.com/feeds/posts/default]<br />
name=Robin Co<br />
<br />
[http://danapao026.blogspot.com/feeds/posts/default]<br />
name=Don Armin Napao<br />
<br />
[http://cgm087.blogspot.com/feeds/posts/default/-/CDOT]<br />
name=Christopher G. Missen<br />
<br />
# Disabled 2011-04-27 - password-protected now and not valid<br />
#[http://yujinjeong.wordpress.com/category/GAM666/feed/]<br />
#name=YuJin Jeong<br />
<br />
[http://crgosselin.blogspot.com/feeds/posts/default]<br />
name=Chris Ryan Gosselin<br />
<br />
[http://slaw12.wordpress.com/feed/ ]<br />
name=Stephanie Law<br />
<br />
[http://ysliu2.blogspot.com/feeds/posts/default]<br />
name=Yansong Liu<br />
<br />
[http://www.drizhepolov.com/blog/?feed=rss2]<br />
name=Vladimir Drizhepolov<br />
<br />
[http://bhavanesh.wordpress.com/feed/]<br />
name=Bhavanesh Patel<br />
<br />
[http://xwu0102.blogspot.com/feeds/posts/default/-/oop344]<br />
name=Xiaojiang Wu<br />
<br />
[http://rhui4.wordpress.com/feed/ ]<br />
name=Richard Hui<br />
<br />
[http://invinciblyignorant.wordpress.com/category/OOP344/feed/]<br />
name=Jason Burton<br />
<br />
[http://goldenration.wordpress.com/feed/]<br />
name=HongGeun Park<br />
<br />
[http://thupten.veryusefulinfo.com/?feed=rss2]<br />
name=Thupten Choephel<br />
<br />
[http://priyadeep.wordpress.com/feed/]<br />
name=Priyadeep Gill<br />
<br />
[http://kyle205website.info/wordpress/?feed=rss2]<br />
name=Khai Huynh<br />
<br />
[http://dkxy.net/blog/tag/oop344/feed/]<br />
name=Dale Karp<br />
<br />
[http://vbluzmans.wordpress.com/feed/]<br />
name=Vitaly Bluzmans<br />
<br />
[http://akkimblog.blogspot.com/feeds/posts/default?alt=rss]<br />
name=Kerry Taylor<br />
<br />
<br />
[http://alf1488.blogspot.com/feeds/posts/default?alt=rss]<br />
name=Yegor Tyunin<br />
<br />
[http://sbr600.blogspot.com/feeds/posts/default?alt=rss]<br />
name=Matthew Ortofsky<br />
<br />
[http://pbrown9.blogspot.com/feeds/posts/default?alt=rss]<br />
name=Paul Brown<br />
<br />
[http://jzaidi.wordpress.com/feed/]<br />
name=Jawwad Zaidi<br />
<br />
[http://rainulf.ca/rss.php?tags=cdot]<br />
name=Jose Rainulf Pineda<br />
<br />
[http://donchel.wordpress.com/feed/]<br />
name=Dong Cheol Cha<br />
<br />
[http://sweerdenburg.wordpress.com/category/seneca/feed/]<br />
name=Steven Weerdenburg<br />
<br />
[http://jyang42.blogspot.com/feeds/posts/default]<br />
name=Jing Yang<br />
<br />
[http://tarinc.wordpress.com/feed/]<br />
name=Tarin Choudhury<br />
<br />
[http://jtdonaldson21.blogspot.com/feeds/posts/default]<br />
name=Jeshu Donaldson<br />
<br />
[http://bccp32.blogspot.com/feeds/posts/default]<br />
name=Yauheni Khabian<br />
<br />
[http://mark-os.blogspot.com/feeds/posts/default]<br />
name=Mark Eamiguel<br />
<br />
[http://kweber1.blogspot.com/feeds/posts/default]<br />
name=Kyle Weber<br />
<br />
[http://mustafaredha.wordpress.com/category/planet-cdot/feed]<br />
name=Mustafa Redha<br />
<br />
[http://andrewasdesigned.blogspot.com/feeds/posts/default/-/SBR600]<br />
name=Andrew Singh<br />
<br />
[http://escom0.blogspot.com/feeds/posts/default]<br />
name=Eric Shum<br />
<br />
# Disabled 2011-04-27 - blog was deleted<br />
#[http://open-ht.blogspot.com/feeds/posts/default]<br />
#name=Hoc Tran<br />
<br />
[http://dvkitancheva.wordpress.com/feed/]<br />
name=Denitsa Kitancheva<br />
<br />
[http://vanjason.wordpress.com/category/sbr600/feed]<br />
name=Jason Van<br />
<br />
[http://kpangilinan.wordpress.com/feed]<br />
name=Kenneth Pangilinan<br />
<br />
[http://ajcondinho.blogspot.com/feeds/posts/default/-/opensource]<br />
name=Andrew Condinho<br />
<br />
[http://blog.esmnetworks.com/category/planet-cdot/feed]<br />
name=Adrian Pruteanu<br />
<br />
[http://stevebologna.wordpress.com/category/Open-Source/feed/]<br />
name=Stephen Bologna<br />
<br />
[http://www.winterleaf.ca/blog/category/oop344/feed/]<br />
name=Daniel Slessarev<br />
<br />
[http://ycshon.blogspot.com/feeds/posts/default]<br />
name=Young Chol Shon<br />
<br />
[http://jwpark2.blogspot.com/feeds/posts/default]<br />
name=Jaewoo Park<br />
<br />
[http://klasconia.wordpress.com/feed/]<br />
name=Kevin Lasconia<br />
<br />
[http://kmcdonald11.blogspot.com/feeds/posts/default]<br />
name=Kaitlyn McDonald<br />
<br />
[http://jrobinson7.wordpress.com/feed/]<br />
name=James Robinson<br />
<br />
[http://trusu.blogspot.com/feeds/posts/default]<br />
name=Traian Rusu<br />
<br />
[http://blockrockinpete.blogspot.com/feeds/posts/default/-/OSD600]<br />
name=Pete Leaning<br />
<br />
[http://tyler-taehee-lee.blogspot.com/feeds/posts/default/-/SBR600]<br />
name=Tae Hee Lee<br />
<br />
[http://www.kaitlyncallow.com/Blog/?feed=rss2&cat=86]<br />
name=Kaitlyn Callow<br />
face=http://www.kaitlyncallow.com/Dump/kait_avatar.jpg<br />
<br />
[http://saad-husain.blogspot.com/feeds/posts/default?alt=rss]<br />
name=Saad Husain<br />
<br />
[http://jevangelos.wordpress.com/feed/]<br />
name=James Evangelista<br />
<br />
# Disabled 2011-04-27 - not a feed link<br />
#[http://sajed481.wordpress.com/SBR600/]<br />
#name=M.A Sajed Shadani<br />
<br />
[http://rizwanhaq.blogspot.com/feeds/posts/default?alt=rss]<br />
name=Rizwan Haq<br />
<br />
[http://tuori.tk/blog/blogs/blog1.php?tempskin=_rss2&cat=15]<br />
name=Matthew Tuori<br />
<br />
[http://ktaraghi.blogspot.com/feeds/posts/default]<br />
name=Khosro Taraghi<br />
<br />
[http://opensourceftw.blogspot.com/feeds/posts/default?alt=rss]<br />
name=Anthony Boccia<br />
<br />
[http://perfectlylogical.wordpress.com/category/sbr600/feed/]<br />
name=Stephen Hall<br />
<br />
[http://rocellaj.wordpress.com/feed/]<br />
name=Rocella Jimenez<br />
<br />
[http://justinpaulmorgan.blogspot.com/feeds/posts/default]<br />
name=Justin Morgan<br />
<br />
[http://gcasella.blogspot.com/feeds/posts/default]<br />
name=Gian-Luca Casella<br />
<br />
[http://archanasahota.com/category/open-source/feed/]<br />
name=Archana Sahota<br />
<br />
[http://pratikamin.wordpress.com/category/sbr600/feed/]<br />
name=Pratik Amin<br />
<br />
[http://syang00.wordpress.com/feed/]<br />
name=Stephanie Yang<br />
<br />
[http://tewestacott.wordpress.com/category/SBR600/feed/]<br />
name=Todd Westacott<br />
<br />
[http://aparda.wordpress.com/category/SBR600//feed/]<br />
name=Andrew Parda<br />
<br />
[http://gjuhasz1.wordpress.com/feed/]<br />
name=Gergely Juhasz<br />
<br />
[http://completefail.wordpress.com/category/SBR600/feed/]<br />
name=Joshua Y. Koh<br />
<br />
[http://myuberwebsite.blogspot.com/feeds/posts/default]<br />
name=Dmitry Artemenko<br />
<br />
[http://cgomes7.wordpress.com/feed/]<br />
name=Cesar Gomes<br />
<br />
[http://supbroseph.wordpress.com/feed/]<br />
name=Houssam haidar<br />
<br />
[http://www.bradchen.com/rss/blog/open%20source]<br />
name=Brad Chen (vvasabi)<br />
<br />
[http://asabir.wordpress.com/feed/]<br />
name=Adeel Sabir (asabir)<br />
<br />
[http://libresparks.wordpress.com/category/SBR600/feed/]<br />
name=Alfred Liu<br />
<br />
[http://acook6.blogspot.com/feeds/posts/default/-/open-source]<br />
name=Alan Cook<br />
<br />
[http://coding.shaunofthelive.com/feeds/posts/default/-/oop344]<br />
name=Shaun Hill<br />
<br />
[http://maoli1207.blogspot.com/feeds/posts/default/-/open-source]<br />
name=Mao Hua Li<br />
<br />
[http://fossjon.wordpress.com/feed/]<br />
name=Jon Chiappetta<br />
<br />
[http://dperit.blogspot.com/feeds/posts/default/-/cdot]<br />
name=David Perit<br />
<br />
[http://szafar8.wordpress.com/tag/cdot/feed/]<br />
name=Salman Zafar<br />
<br />
[http://mbuttu.wordpress.com/category/Open-Source/feed/]<br />
name=Mohammed Buttu<br />
<br />
[http://brianlimtemp.blogspot.com/feeds/posts/default/-/CDOT]<br />
name=Brian Lim<br />
<br />
[http://drigato.wordpress.com/category/open-source/feed/]<br />
name=Denise Rigato<br />
<br />
[http://jbraffoul.wordpress.com/category/open-source/feed/]<br />
name=Jordan Raffoul<br />
<br />
[http://kuznetsovnikita.blogspot.com/feeds/posts/default?alt=rss]<br />
name=Nikita Kuznetsov<br />
<br />
[http://noahgitalis.wordpress.com/category/open-source/feed/]<br />
name=Noah Gitalis<br />
<br />
[http://rhotin.wordpress.com/category/open-source/feed/]<br />
name=Roman Hotin<br />
<br />
[http://nm486.wordpress.com/category/open-source/feed]<br />
name=Stanley Tsang<br />
<br />
</pre></div>Jboelenhttps://wiki.cdot.senecacollege.ca/w/index.php?title=Planet_CDOT_Feed_List&diff=68774Planet CDOT Feed List2011-09-08T14:15:03Z<p>Jboelen: /* Feeds */</p>
<hr />
<div>= Introduction =<br />
<br />
Seneca students and faculty working on open source related projects and research, as well as some faculty, students, and researchers from other institutions, use [http://zenit.senecac.on.ca/~chris.tyler/planet/ Planet CDOT] to aggregate their blogs. This page contains the information about who is blogging in [http://www.planetplanet.org/ Planet Feed Reader format] and serves as the feed configuration for the planet.<br />
<br />
If you do not have an existing blog, you can open a free account at [http://wordpress.com/ Wordpress.com] or [https://www.blogger.com/ Blogger.com] or you can set up your own blog software such as [http://www.s9y.org Serendipity].<br />
<br />
'''Note:''' Additions to the feed list will not take effect until they are merged into the Planet configuration, which is an automatic process scheduled at regular intervals. If you add a feed and do not see it picked up in the Planet within three hours, please check your feed entry carefully and then contact [[User:Chris Tyler|Chris Tyler]] .<br />
<br />
= Requirements =<br />
<br />
* Blog postings fed to the planet must conform to the [[Blog Guidelines]].<br />
* Feeds that are inactive for a significant period of time may get deleted from this list.<br />
<br />
= Using a Tagged/Category Feed =<br />
<br />
A tagged or category feed includes only articles that are tagged with particular keywords or placed in a particular topic category. This can be useful for sending only selected posts to the planet.<br />
<br />
These are the URL formats for tagged or category feeds on popular blogging services/software:<br />
<br />
* [http://www.wordpress.com Wordpress]: <code><nowiki>[http://</nowiki>''blog-user-name''.wordpress.com/category/''category-name''/feed/]</code><br />
* [http://blogger.com Blogger]: <code><nowiki>[http://</nowiki>''blog-user-name''.blogspot.com/feeds/posts/default/-/''category-name'']</code><br />
* [http://s9y.org Serendipity]: <code><nowiki>[http://</nowiki>''blog-main-url''/index.php?/feeds/categories/''cateogrynumber''-''categoryname'']</code><br />
<br />
= Feed Info Format =<br />
<br />
You can add your blog's [http://en.wikipedia.org/wiki/RSS_(file_format) RSS feed] at the end of the list below by specifying the following:<br />
<br />
# The URL to your blog's open source Atom or [http://en.wikipedia.org/wiki/RSS_(file_format) RSS Feed] (i.e., a category or tag). NOTE: Please do not put the URL to your blog -- use the URL for your feed. Please do not use the feed for your entire blog (unless your blog contains only open source-related postings). We only want open source related content.<br />
# Your name as you want it to appear in the list of names for the planet<br />
# Optionally, a URL to a [http://en.wikipedia.org/wiki/Hackergotchi hackergotchi] ([http://wouterverhelst.livejournal.com/21322.html how to]). Your picture should be an 65x85 PNG with a transparent background.<br />
<br />
<br />
= Feeds =<br />
<br />
<pre><br />
<br />
[http://gkrilov.com/category/open-source/feed/]<br />
name=Greg Krilov<br />
<br />
<br />
<br />
[http://rubensmaximus.blogspot.com/feeds/posts/default?alt=rss]<br />
name=Rubens Maximus (GameArtist)<br />
<br />
[http://ladanzahir.wordpress.com/category/CDOT/feed/]<br />
name=Ladan Zahiroleslam Zade<br />
<br />
[http://mschranz.wordpress.com/category/seneca_college/open_source/feed/]<br />
name=Matthew Schranz<br />
<br />
[http://www.spectakular.com/category/open-source/feed/]<br />
name=Simon Jung<br />
<br />
<br />
[http://james.boelen.ca/category/open_source/feed/]<br />
name=James Boelen<br />
<br />
[http://jbuckley.ca/category/open-source/feed/]<br />
name=Jon Buckley<br />
<br />
[http://mbrzuzy.wordpress.com/category/open-source/feed/]<br />
name=Marcin Brzuzy<br />
<br />
[http://ben1amin.wordpress.com/category/seneca/feed/]<br />
name=Benjamin Chalovich<br />
<br />
[http://edghardest1.wordpress.com/category/open-source-topics/feed/]<br />
name=Ed Arvelaez<br />
<br />
[http://www.ashkansotoudeh.com/?tag=coding-2&feed=rss2]<br />
name=Ashkan Sotoudeh<br />
<br />
[http://dboddie46.wordpress.com/category/SBR600A/feed/]<br />
name=Derrick Boddie<br />
<br />
[http://aali83.blogspot.com/feeds/posts/default/-/oop344]<br />
name=Ahmad Ali<br />
<br />
[http://gr8can8dian.wordpress.com/category/sbr600/feed/]<br />
name=Lorin Soura<br />
<br />
[http://kirtonmike.wordpress.com/category/SBR600/feed/]<br />
name=Mike Kirton<br />
<br />
[http://fuzzux.wordpress.com/category/SBR600/feed/]<br />
name=Tim Furzer<br />
<br />
[http://nageyi.wordpress.com/feed/]<br />
name=Faisal Nageyi<br />
<br />
[http://KrazyDre.blogspot.com/feeds/posts/default?alt=rss]<br />
name=Andrei Artamonov<br />
<br />
[http://mjcorsame.wordpress.com/feed/]<br />
name=Michael John Corsame<br />
<br />
[http://msbreezy12.wordpress.com/category/SBR/feed/]<br />
name=Chantell Mcintosh<br />
<br />
# Disabled 2011-04-28 - empty blog<br />
#[http://mrtait1.blogspot.com/feeds/posts/default/-/oop344]<br />
#name=Matthew Tait<br />
<br />
[http://sbr600cabbott.blogspot.com/feeds/posts/default]<br />
name=Chris Abbott<br />
<br />
[http://kopay.wordpress.com/category/sbr600-win2011/feed]<br />
name=Pirathapan Sivalingam<br />
<br />
[http://mysnogorodsky.blogspot.com/feeds/posts/default?alt=rss]<br />
name=Marina Ysnogorodsky<br />
<br />
[http://asa.veryusefulinfo.com/?feed=rss2]<br />
name=Ali Samimi<br />
<br />
# Disabled 2011-04-28 - empty blog<br />
#[http://coreyangus.blogspot.com/feeds/posts/default/-/oop344]<br />
#name = Corey Angus<br />
<br />
[http://wsong18.blogspot.com/feeds/posts/default/-/OOP344]<br />
name = Wei Song<br />
<br />
# Disabled 2011-04-28 - blog deleted<br />
#[http://kijeongkim.blogspot.com/feeds/posts/default]<br />
#name=Kijeong Kim<br />
<br />
[http://davidsosd60020102blog.blogspot.com/feeds/posts/default]<br />
name=David Takasaki<br />
<br />
[http://zwang98.blogspot.com/feeds/posts/default]<br />
name=Joe Wang<br />
<br />
[http://sbr700.blogspot.com/feeds/posts/default?alt=rss]<br />
name=Jonathan Deni<br />
#face=https://techontherun.sslpowered.com/techontherun.ca/jonthumb.png<br />
<br />
[http://dgilloch.blogspot.com/feeds/posts/default]<br />
name=Daniel Gilloch<br />
<br />
[http://jmchen11.wordpress.com/feed/]<br />
name=Jianming Chen<br />
<br />
[http://paulfedora.wordpress.com/tag/cdot/feed/]<br />
name=Paul Whalen<br />
<br />
[http://dmchisho.wordpress.com/feed/]<br />
name=David Chisholm<br />
<br />
[http://pokerface3.blogspot.com/feeds/posts/default/-/SBR?alt=rss]<br />
name=David Cabral<br />
<br />
[http://zbhuang1.blogspot.com/feeds/posts/default/-/open%20source]<br />
name=Zhibin Huang<br />
<br />
[http://sidsbr.blogspot.com/feeds/posts/default?alt=rss]<br />
name=Sadiki Latty<br />
<br />
[http://orel60.blogspot.com/feeds/posts/default?alt=rss]<br />
name=Or-el Mousaffi<br />
<br />
[http://aryafarzan.wordpress.com/category/OOP344/feed/]<br />
name=Arya Farzan<br />
<br />
[http://dsventura.blogspot.com/feeds/posts/default?alt=rss]<br />
name=Dan Ventura<br />
<br />
[http://cadecairos.blogspot.com/feeds/posts/default/-/open-source]<br />
name=Christopher DeCairos<br />
<br />
[http://acfunktron.blogspot.com/feeds/posts/default]<br />
name=Anton Chan<br />
<br />
[http://adaniel3.blogspot.com/feeds/posts/default?alt=rss]<br />
name=Arlene Daniel<br />
<br />
[http://tyrant911-processingdotjs.blogspot.com/feeds/posts/default/-/processing.js]<br />
name=Alex Londono<br />
<br />
# Disabled 2009-11-13 by Chris Tyler <chris.tyler@senecac.on.ca> (ctyler on IRC)<br />
# Ausley: Contact me to discuss before re-enabling.<br />
#[http://ausleyj.blogspot.com/feeds/posts/default]<br />
#name=Ausley Johnson<br />
<br />
[http://arminoop344.blogspot.com/feeds/posts/default]<br />
name=Armin Kumarshellah<br />
<br />
[http://cloudscorpion.blogspot.com/feeds/posts/default/-/open-source]<br />
name=Joseph Hughes<br />
<br />
[http://travisrawn.blogspot.com/feeds/posts/default]<br />
name=Travis Rawn<br />
<br />
[http://jmpiltz.blogspot.com/feeds/posts/default]<br />
name=Jonathan Piltz<br />
<br />
[http://andrewgrimo.wordpress.com/category/open-source/feed/]<br />
name=Andrew Grimo<br />
<br />
[http://apvsbr700.blogspot.com/feeds/posts/default?alt=rss]<br />
name=Alex Vlahopoulos<br />
#face=https://techontherun.sslpowered.com/techontherun.ca/alexthumb.png<br />
<br />
[http://asalga.wordpress.com/category/open-source/feed/]<br />
name=Andor Salga (asalga)<br />
<br />
[http://jabhad.blogspot.com/feeds/posts/default?alt=rss]<br />
name=Mohamed Aden<br />
<br />
[http://jonathandeni.blogspot.com/feeds/posts/default?alt=rss]<br />
name=Jonathan Deni<br />
#face=https://techontherun.sslpowered.com/techontherun.ca/jonthumb.png<br />
<br />
[http://manoutoftime.wordpress.com/category/open-source/feed/]<br />
name=Konstantin Novichikhin<br />
<br />
[http://scorchedicee.wordpress.com/category/Seneca/feed/]<br />
name=Adam Sone<br />
<br />
[http://murraysaul.wordpress.com/feed/]<br />
name=Murray Saul<br />
<br />
[http://xwn740arcadeproject.blogspot.com/feeds/posts/default]<br />
name=Arcade Project - LUX Group@<br />
#face=http://matrix.senecac.on.ca/~mpaivaneto/ourbaby.png<br />
<br />
[http://crashopensource.blogspot.com/feeds/posts/default/-/open-source]<br />
name=Lukas Blakk (lsblakk)<br />
#face=http://avnerd.tv/sharedFiles/lukas_hackergotchi.png<br />
<br />
[http://nashutzu.blogspot.com/feeds/posts/default]<br />
name=George Popescu (GeorgeP)<br />
<br />
[http://blog.chris.tylers.info/index.php?/feeds/categories/20-Seneca-Planet.rss]<br />
name=Chris Tyler (ctyler)<br />
face=http://zenit.senecac.on.ca/~chris.tyler/chris_tyler_hackergotchi_4a.png<br />
<br />
[http://vocamus.net/dave/?feed=rss2&category_name=Seneca]<br />
name=David Humphrey<br />
<br />
[http://gratnam1.blogspot.com/feeds/posts/default?alt=rss]<br />
name=Gajendran Ratnam (gratnam1)<br />
<br />
[http://senecajon.blogspot.com/feeds/posts/default]<br />
name=Jonathan Cheung (jcheung23)<br />
<br />
# Disabled 2011-04-28 - blog was removed<br />
#[http://blog.markparuzel.com/feed/]<br />
#name=Mark Paruzel<br />
<br />
[http://mmszuto.blogspot.com/feeds/posts/default]<br />
name=Michael Szutu<br />
<br />
[http://lsdaly.blogspot.com/feeds/posts/default]<br />
name=Louis Daly (lsdaly)<br />
<br />
# Disabled 2009-01-25 due to 404's (domain expired)<br />
#[http://www.foobartastic.com/feed/]<br />
#name=Tom Aratyn<br />
<br />
[http://bhearsum.blogspot.com/feeds/posts/default/-/seneca]<br />
name=Ben Hearsum<br />
<br />
# Following feed is invitation-only. Disabled 2010-09-23 CTyler<br />
#[http://www.jyzyy.blogspot.com/feeds/posts/default/-/opensource]<br />
#name=Jyoti<br />
<br />
# Re-enabled 2011-04-29 - new blog URL<br />
# Disabled 2009-09-15 due to 404's (site rearranged?)<br />
[http://tea.cesaroliveira.net/archives/tag/seneca/feed]<br />
name=Cesar Oliveira<br />
<br />
[http://r3ap3r.wordpress.com/category/seneca/feed]<br />
name=Brandon Collins<br />
<br />
# Disabled 2011-04-28 - blog was deleted<br />
#[http://jrgoncal.blogspot.com/feeds/posts/default]<br />
#name=Justin Goncalves (jrgoncal)<br />
#face=http://img517.imageshack.us/img517/9865/bearzp5.jpg<br />
<br />
# Disabled 2011-04-28 - blog is now private<br />
#[http://tlo5.blogspot.com/feeds/posts/default]<br />
#name=Tommy Lo (tlo5)<br />
<br />
[http://armenzg.blogspot.com/feeds/posts/default/-/open%20source]<br />
name=Armen Zambrano G. (armenzg)<br />
<br />
[http://mikemoz.blogspot.com/feeds/posts/default/-/Open%20Source]<br />
name=Michael Mullin<br />
<br />
[http://mikemoz.blogspot.com/feeds/posts/default/-/Mozilla_GFX]<br />
name=Michael Mullin<br />
<br />
# Returned 410 on 2008-09-13 - disabled CTyler<br />
#[http://rueenfiez.wordpress.com/category/open-source/feed/]<br />
#name=Rueen Fiez<br />
<br />
# Returning 404 on 2008-09-13 - disabled CTyler<br />
#[http://jsafavi.wordpress.com/category/open-source/feed/]<br />
#name=Jason Safavi<br />
<br />
[http://vlam6.wordpress.com/category/open-source/feed/]<br />
name=Vincent Lam<br />
<br />
[http://dejant.blogspot.com/feeds/posts/default]<br />
name=Dejan Tolj<br />
<br />
[http://shivaris.blogspot.com/feeds/posts/default/-/OSD600]<br />
name=Hien Huynh<br />
<br />
[http://raynrant.blogspot.com/feeds/posts/default]<br />
name=Andrew Raynier (JM)<br />
face=http://zenit.senecac.on.ca/wiki/imgs/Hackergotchi.png<br />
<br />
[http://vijeysdps909.blogspot.com/feeds/posts/default]<br />
name=Vijey Bala<br />
<br />
[http://sedejong.blogspot.com/feeds/posts/default]<br />
name=Shomar Dejonge<br />
<br />
[http://dbaranski.wordpress.com/category/open-source/feed/]<br />
name=Dominic Baranski<br />
<br />
#[http://crashopensource.wordpress.com/category/open-source/feed/]<br />
#name=Lukas Blakk<br />
<br />
[http://kmsingh.blogspot.com/feeds/posts/default?alt=rss]<br />
name=Kerry M. Singh<br />
<br />
[http://tjduavis.wordpress.com/category/open-source/feed/]<br />
name=Timothy Duavis<br />
<br />
# Disabled 2011-04-28 - entire website is missing<br />
#[http://ashughes.com/?q=taxonomy/term/2/0/feed]<br />
#name=Anthony Hughes<br />
<br />
[http://opensourcekennethlee.blogspot.com/feeds/posts/default]<br />
name=Kenneth Lee<br />
<br />
[http://cleung.wordpress.com/category/Seneca/feed/]<br />
name=Catherine Leung<br />
<br />
[http://dtheosab.wordpress.com/category/open-source/feed/]<br />
name=Daino Theosabrata<br />
<br />
# This is my old blog<br />
[http://simon-jung.blogspot.com/feeds/posts/default]<br />
name=Simon Jung (old)<br />
<br />
[http://aeraj.blogspot.com/feeds/posts/default/-/open%20source]<br />
name=AJ Rehman<br />
<br />
[http://xrayon.blogspot.com/feeds/posts/default]<br />
name=Fima Kachinski<br />
<br />
[http://littlesvr.ca/grumble/category/safeforseneca/feed/]<br />
name=Andrew Smith<br />
<br />
[http://littlesvr.ca/masters/feed]<br />
name=Andrew Smith (master's)<br />
<br />
[http://jbopensrc.wordpress.com/category/open-source/feed]<br />
name=Jesse Buchanan<br />
<br />
[http://ayhfung.blogspot.com/feeds/posts/default]<br />
name=Andrew Fung<br />
<br />
# Returned 404 on 2008-09-13 - disabled CTyler<br />
#[http://sloose.wordpress.com/category/open-source/feed/]<br />
#name=Peter Ljubanovic<br />
<br />
[http://mozcoz.blogspot.com/feeds/posts/default/-/Open%20Source]<br />
name=Amit Gundu<br />
<br />
# Changed CTyler 2009-02-12 from [http://www.blogger.com/feeds/15922666655846514311/blogs]<br />
[http://dsmukherji.blogspot.com/feeds/posts/default?alt=rss]<br />
name=Devashish<br />
<br />
[http://yhan11.wordpress.com/category/open-source/feed]<br />
name=Yongsheng Han<br />
<br />
[http://peter.sykokillers.com/category/open-source/feed/]<br />
name=Peter Chan<br />
<br />
[http://www.c3dl.org/index.php/category/c3dl-dev/feed]<br />
name=Seneca Canvas3D Team<br />
<br />
# Updated 2011-04-28 - corrected feed URL<br />
[http://peterevanoff.wordpress.com/category/open-source/feed/]<br />
name=Peter Evanoff<br />
<br />
# Disabled 2011-04-28 - flagged as a malware-loaded site by Google<br />
<br />
#[http://radoye.net1zen.com/wp-rss2.php?cat=3]<br />
#name=Radovan Nesic<br />
<br />
[http://blog.cresencia.ca/category/open-source/osd600/feed/]<br />
name=Joseph Cresencia<br />
<br />
[http://bertenshaw.blogspot.com/feeds/posts/default]<br />
name=David Bertenshaw<br />
<br />
[http://ljubomirgorscak.blogspot.com/feeds/posts/default]<br />
name=Ljubomir Gorscak<br />
<br />
[http://sameropensource.blogspot.com/feeds/posts/default]<br />
name=Samer Ziadeh (samer)<br />
<br />
# Following feed not working and temporarily disabled<br />
# 2010-09-23 by CTyler<br />
#[http://jamesboston.ca/cms/taxonomy/term/1/0/feed]<br />
#name=James Boston<br />
#face=http://jamesboston.ca/hackergotchi.png<br />
<br />
[http://dailypackage.fedorabook.com/index.php?/feeds/index.rss2]<br />
name=Fedora Daily Package<br />
<br />
[http://blog.fardad.com/feeds/posts/default/-/Seneca]<br />
name=Fardad Soleimanloo<br />
<br />
#[http://seneblog.fardad.com/feeds/posts/default]<br />
#name=Fardad Soleimanloo<br />
<br />
[http://selmys.wordpress.com/category/opensource/feed]<br />
name=John Selmys<br />
face=http://cs.senecac.on.ca/~selmys/john_selmys_hackergotchi.png<br />
<br />
[http://pconstantino.wordpress.com/feed]<br />
name=Patricia Constantino<br />
<br />
[http://bombshelter13.blogspot.com/feeds/posts/default]<br />
name=Gregory Masseau<br />
#face=http://matrix.senecac.on.ca/~gjmasseau/userpic.jpg<br />
<br />
[http://zadkielm.blogspot.com/feeds/posts/default/-/open%20source]<br />
name=Ezadkiel Marbella<br />
<br />
[http://blog.sidkalra.com/category/opensource/feed]<br />
name=Sid Kalra<br />
<br />
[http://pplam3.blogspot.com/feeds/posts/default]<br />
name=Patrick Lam<br />
<br />
# Disabled 2011-04-28 - blog is now private<br />
#[http://twlai1.blogspot.com/feeds/posts/default]<br />
#name=Tony Lai<br />
<br />
[http://dee132.blogspot.com/feeds/posts/default/-/seneca]<br />
name=Chris Bishop<br />
<br />
# Updated 2011-04-28 - updated feed URL<br />
[http://zghansar.wordpress.com/category/open-source/feed/]<br />
name=Zaid Ghansar<br />
face=http://www.alhudainstitute.ca/zaid/z.png<br />
<br />
[http://aaronmt.com/?feed=rss2]<br />
name=Aaron Train<br />
face=http://matrix.senecac.on.ca/~amtrain/other/mypic.png<br />
<br />
[http://scottosd.blogspot.com/feeds/posts/default/-/Open%20Source/]<br />
name=Scott Lunel<br />
<br />
# Updated 2009-04-16, new blog. - scarter4<br />
# Disabled 2009-11-27 due to wrong feed URL<br />
#[http://scarter4.wordpress.com/category/seneca/]<br />
#name=Stephen Carter<br />
<br />
# Disabled 2009-01-23 CTyler due to 404s<br />
#[http://shdinis.blogspot.com/feeds/posts/default]<br />
#name=Shawn Dinis<br />
<br />
[http://belligero.org/index.php?option=com_content&view=section&id=1&format=feed&type=rss]<br />
name=Jason Tarka<br />
<br />
# Updated 2011-04-28 - no more tag, but still Seneca related<br />
[http://petermcintyre.wordpress.com/feed/]<br />
name=Peter McIntyre<br />
<br />
[http://vesperrin.blogspot.com/feeds/posts/default/-/open%20source]<br />
name=Leonard Lee (vesper)<br />
<br />
[http://jsdoodnauth.wordpress.com/category/open-source/feed/]<br />
name=Joshua Doodnauth<br />
<br />
[http://johnhford.blogspot.com/feeds/posts/default/-/Open%20Source]<br />
name=John Ford (John64)<br />
<br />
[http://mohaksblog.blogspot.com/feeds/posts/default]<br />
name=Mohak Vyas<br />
#face=http://matrix.senecac.on.ca/~mdvyas/MohakVyas.png<br />
<br />
[http://pdirezze.blogspot.com/feeds/posts/default]<br />
name=Paul DiRezze<br />
<br />
# Following link no longer valid. Disabled 2010-09-23 CTyler<br />
#[http://www.ndaversa.com/category/open-source/feed]<br />
#name=Nino D'Aversa<br />
<br />
[http://miltonpaiva.wordpress.com/feed/]<br />
name=Milton Paiva<br />
#face=http://matrix.senecac.on.ca/~mpaivaneto/orkut.png<br />
<br />
[http://de-luxer.blogspot.com/feeds/posts/default?alt=rss]<br />
name=Nestor Chan<br />
#face=http://matrix.senecac.on.ca/~tnchan/n516840997_9173.PNG<br />
<br />
[http://varinderjhand.wordpress.com/feed/]<br />
name=Varinder Singh <br />
<br />
[http://ajhooper.blogspot.com/feeds/posts/default]<br />
name=Aaron Hooper<br />
<br />
[http://nadavid.blogspot.com/feeds/posts/default]<br />
name=Neil David<br />
<br />
[http://cdpatel1.blogspot.com/feeds/posts/default]<br />
name=Chinmay Patel<br />
#face=http://www.geocities.com/chinmay_patel@ymail.com/chinmay.jpg<br />
<br />
[http://jvalianes.blogspot.com/feeds/posts/default]<br />
name=Jesse Valianes<br />
<br />
[http://bbarcick.blogspot.com/feeds/posts/default/-/Open%20Source]<br />
name=Bartosz Barcicki<br />
<br />
[http://heidenreich.wordpress.com/tag/seneca-college/feed/]<br />
name=Michal Heidenreich<br />
<br />
[http://kezhong.wordpress.com/feed/atom/]<br />
name=Kezhong Liang <br />
<br />
[http://wfred.wordpress.com/category/open-source/feed/]<br />
name=Fred Wang<br />
<br />
[http://jsinghfoss.wordpress.com/category/spring-framework/feed/]<br />
name=Jatinder Singh<br />
<br />
[http://rparsi.blogspot.com/feeds/posts/default?alt=rss]<br />
name=Rahi Parsi<br />
<br />
# Changed 2011-04-28 - missing a capital "S" from Seneca to display feed<br />
[http://aaronrey15.blogspot.com/feeds/posts/default/-/Seneca]<br />
name=Aaron Chan<br />
<br />
# Disabled 2011-04-28 - posts were deleted, empty feed<br />
#[http://flashalive.wordpress.com/category/Open%20Source/feed/]<br />
#name=Ryan Wang<br />
<br />
[http://kvuhome.blogspot.com/feeds/posts/default/-/Open%20Source]<br />
name=Khanh Vu<br />
<br />
[http://daeseonmoon.wordpress.com/category/open-source/feed/]<br />
name=Daeseon Moon<br />
<br />
[http://abraini.wordpress.com/category/seneca/feed/]<br />
name=Andrew Braini<br />
<br />
[http://minicheong.blogspot.com/feeds/posts/default]<br />
name=Frankie Law<br />
<br />
# Following feed changed from http://www.heyqule.net/blog/tech/oss/feed<br />
# on 2010-09-23 by CTyler.<br />
[http://www.heyqule.net/taxonomy/term/44/0/feed]<br />
name=Allen JF Xie (heyqule)<br />
<br />
[http://farhadnorouzi.blogspot.com/feeds/posts/default]<br />
name=Farhad Norouzi<br />
<br />
[http://jdeport.wordpress.com/category/software-development/open-source/feed/]<br />
name=John Dang<br />
<br />
[http://pliu.wordpress.com/category/open-source/feed/]<br />
name=Peter Liu<br />
<br />
# Feed not working - temporarily disabled 2010-09-23 CTyler<br />
#[http://www.jerrypau.ca/?feed=rss2&cat=3]<br />
#name=Jerry Pau<br />
#face=http://www.jerrypau.ca/blog-face-1.png<br />
<br />
[http://blog.wikiscraps.com/feeds/posts/default/-/oss]<br />
name=M. Mead Armsby (mead)<br />
<br />
[http://paritosha.blogspot.com/feeds/posts/default]<br />
name=Paritosh Aggarwal(paritosh1010)<br />
<br />
# Private blog. Disabled 2010-09-23 CTyler.<br />
#[http://myblog110.wordpress.com/category/open-source/feed]<br />
#name=Tahereh<br />
<br />
# Disabled 2011-04-28 - empty feed, all posts were removed<br />
#[http://challenger110.wordpress.com/category/software-development/open-source/censored/feed/]<br />
#name=Davoud Salahi Rad<br />
<br />
[http://wb-os.blogspot.com/feeds/posts/default]<br />
name=Le Yang<br />
<br />
[http://garykwong.wordpress.com/category/education/feed/]<br />
name=Gary Kwong (nth10sd)<br />
<br />
[http://yuenhoe.co.cc/blog/category/mozilla/feed/]<br />
name=Lim Yuen Hoe (moofang)<br />
<br />
# Disabled 2011-04-27 - empty feed, needs to be udpated<br />
#[http://tonychestnut.wordpress.com/category/mozilla/ubiquity/feed/]<br />
#name=Vu Dinh The (tonyvu)<br />
<br />
[http://opensourceproject.wordpress.com/category/open-source/feed/]<br />
name=Nabeel Khan (nkhan26)<br />
<br />
# Disabled 2011-04-27 - suspended domain<br />
#[http://solfu.net/tech/category/personas-for-thunderbird/feed/]<br />
#name=Yaoquan (seith)<br />
<br />
[http://xiajunshi.wordpress.com/category/open-source/feed/]<br />
name=Shelley Shi<br />
<br />
[http://hendrikinmozilla.wordpress.com/feed/]<br />
name=Hendrik<br />
<br />
[http://t3rrychan.blogspot.com/feeds/posts/default?alt=rss]<br />
name=Terry Chen (jchen124)<br />
<br />
[http://blog.bchao.ca/feeds/posts/default?alt=rss]<br />
name=Boris Chao<br />
<br />
[http://ahiltssbr700.blogspot.com/feeds/posts/default?alt=rss]<br />
name=Adam Hilts<br />
<br />
[http://ysasaki600.wordpress.com/feed/]<br />
name=Yu Sasaki<br />
<br />
[http://enderstruth.wordpress.com/category/open-source/feed/]<br />
name=Roger Dicke<br />
<br />
[http://wobblyretroaction.blogspot.com/feeds/posts/default/-/Open%20source]<br />
name=Matthew Lam<br />
<br />
[http://asydik.wordpress.com/category/professional/open-source/feed/]<br />
name=Mickael Medel (aSydiK)<br />
<br />
[http://cwdesautels.blogspot.com/feeds/posts/default]<br />
name=Carl Desautels<br />
<br />
[http://rselby-oop344.blogspot.com/feeds/posts/default?alt=rss]<br />
name=Remington Selby<br />
<br />
[http://mikey-osd600a.blogspot.com/feeds/posts/default?alt=rss]<br />
name=Michael Dennis<br />
<br />
# Disabled 2011-04-27 - empty blog<br />
#[http://tjprogramming.blogspot.com/feeds/posts/default/-/seneca]<br />
#name=Timothy Catibog<br />
<br />
[http://horndavid.blogspot.com/feeds/posts/default?alt=rss]<br />
name=David Horn<br />
<br />
[http://annasob.wordpress.com/feed/]<br />
name=Anna Sobiepanek<br />
<br />
[http://drozhkov.blogspot.com/feeds/posts/default/-/seneca]<br />
name=Dmitriy Rozhkov<br />
<br />
[http://www.hodgin.ca/?feed=rss2&cat=4]<br />
name=Daniel Hodgin<br />
<br />
[http://buddhatron.wordpress.com/category/OSD600/feed/]<br />
name=Buddhatron<br />
<br />
[http://xderick.blogspot.com/feeds/posts/default/-/OSD]<br />
name=Yong Hong<br />
<br />
# This next link does not lead to an RSS or Atom feed. Disabled 2009-10-25 by CTyler.<br />
#[http://hoonkoon.blogspot.com/2009/09/oop344.html]<br />
#name=Taehoon Kim<br />
<br />
[http://s2000c.blogspot.com/feeds/posts/default/-/OOP344]<br />
name=Sunny Chau<br />
<br />
# This next link does not lead to an RSS or Atom feed. Disabled 2009-10-25 by CTyler.<br />
#[http://s2000c.blogspot.com/2009/09/oop344c.html]<br />
#name=Sunny Chau<br />
<br />
[http://kxu9.blogspot.com/feeds/posts/default]<br />
name=Kai Xu<br />
<br />
[http://oop-era.blogspot.com/feeds/posts/default]<br />
name=Eric Austerberry<br />
<br />
[http://docsage.blogspot.com/feeds/posts/default/-/OOP344]<br />
name=Eric Dell<br />
<br />
[http://ehren.wordpress.com/category/Seneca/feed/]<br />
name=Ehren Metcalfe<br />
<br />
[http://bsmith19.wordpress.com/category/Seneca/feed/]<br />
name=Brandon Smith<br />
<br />
[http://dcucereavii.blogspot.com/feeds/posts/default?alt=rss]<br />
name=Diana Cucereavii<br />
<br />
# Disabled 2011-04-27 - site unreachable<br />
#[http://www.savantosis.com/?feed=rss2&cat=3]<br />
#name=Justin Robertson<br />
<br />
[http://paul-oop344.blogspot.com/feeds/posts/default/]<br />
name=Paul Repasi<br />
<br />
[http://istessema.wordpress.com/category/oop344/feed/]<br />
name=Iyosias Tessema<br />
<br />
[http://nedape.blogspot.com/feeds/posts/default]<br />
name=Neda Pezeshki<br />
<br />
[http://justletmepassoop344.blogspot.com/feeds/posts/default]<br />
name=Brian Parreno<br />
<br />
[http://dliu53.wordpress.com/category/open-source/feed/]<br />
name=Donghui Liu<br />
<br />
# Disabled 2011-04-27 - site not found<br />
#[http://oopblog.tdotshack.net/feeds/posts/default/-/OOP344]<br />
#name=Ryan Alexander<br />
<br />
[http://oop344ylseow.blogspot.com/feeds/posts/default]<br />
name=Yip Lim, Seow<br />
<br />
[http://mercedes-oop344.blogspot.com/feeds/posts/default]<br />
name=Suwon An<br />
<br />
[http://dtychshenko.blogspot.com/feeds/posts/default/-/OOP344]<br />
name=Dmitriy Tychshenko<br />
<br />
[http://victran.blogspot.com/feeds/posts/default/-/OOP344]<br />
name=Victor Tran<br />
<br />
# Changed 2011-04-27 - updated feed URL to proper<br />
[http://krazyazn.blogspot.com/feeds/posts/default]<br />
name=Michael Lin<br />
<br />
[http://xshi18.blogspot.com/feeds/posts/default]<br />
name=Xiaozhe Shi<br />
<br />
[http://feihong-xiong.blogspot.com/feeds/posts/default]<br />
name=Feihong Xiong<br />
<br />
[http://orbitalstation.wordpress.com/category/programming/open-source/feed/]<br />
name=Hasan Kamal-Al-Deen<br />
face=http://matrix.senecac.on.ca/~hkamal-al-deen/images/Exclaim65x85.png<br />
<br />
[http://hduan2.wordpress.com/feed/]<br />
name= Haoliang Duan<br />
<br />
[http://anastasias-myblog.blogspot.com/feeds/posts/default/-/OOP344]<br />
name= Anastasia Semionova<br />
<br />
[http://franksun123.blogspot.com/feeds/posts/default/]<br />
name= Dong Sun<br />
<br />
[http://rkyoop344.blogspot.com/feeds/posts/default/]<br />
name=Keyan Ren<br />
<br />
[http://ctran13.blogspot.com/feeds/posts/default/-/oop344]<br />
name=Chi-Lea Tran<br />
<br />
[http://szymonsoop.blogspot.com/feeds/posts/default/]<br />
name= Szymon Ahmed<br />
<br />
[http://ywang268.blogspot.com/feeds/posts/default/]<br />
name=Yu Wang<br />
<br />
[http://wangcong422.blogspot.com/feeds/posts/default/]<br />
name=Cong Wang<br />
<br />
[http://dennyp.wordpress.com/category/Seneca/feed/]<br />
name=Denny Papagiannidis<br />
<br />
# Blog not found. Disabled 2010-09-23 CTyler.<br />
#[http://java-chinmay.blogspot.com/feeds/posts/default]<br />
#name= Chinmay Patel<br />
<br />
[http://sergedoescoding.blogspot.com/feeds/posts/default/]<br />
name= Sergiu Ecob<br />
<br />
# Disabled 2011-04-27 - blog deleted<br />
#[http://satijas.wordpress.com/category/OOP344/feed/]<br />
#name=Sasha Atijas<br />
<br />
# 404. Disabled 2010-09-23 CTyler.<br />
#[http://auzix.com/seneca/?feed=rss2]<br />
#name=Tyler Hackwood<br />
<br />
#[http://starbuck-blog.blogspot.com/feeds/posts/default]<br />
#name=Verity Li<br />
<br />
[http://gkrilov.blogspot.com/feeds/posts/default]<br />
name=Greg Krilov<br />
<br />
[http://qinzhi2001.blogspot.com/feeds/posts/default]<br />
name=David Chen<br />
<br />
[http://tchen-oop344.blogspot.com/feeds/posts/default]<br />
name=Terence Chen<br />
<br />
[http://opp344-yxue.blogspot.com/feeds/posts/default]<br />
name=Yong Xue<br />
# Disabled 2011-04-28 - had 2 other duplicate feeds<br />
# http://opp344-yxue.blogspot.com/feeds/posts/default/-/seneca<br />
# http://opp344-yxue.blogspot.com/feeds/posts/default/-/OOP344<br />
<br />
[http://ttsuji1.blogspot.com/feeds/posts/default]<br />
name=Trevor Tsuji<br />
<br />
[http://oyoung4.blogspot.com/feeds/posts/default]<br />
name=Oliver Young<br />
<br />
[http://minyxo.blogspot.com/feeds/posts/default/-/Open%20Source]<br />
name=Edward Sin<br />
<br />
# Blog not found - disabled 2010-09-23 CTyler<br />
#[http://oop344f09-niki.blogspot.com/feeds/posts/default]<br />
#name=Niki Simmalavong<br />
<br />
[http://jdbcdps.blogspot.com/feeds/posts/default]<br />
name=Julia Vasserman<br />
<br />
[http://shunyao-cpa.blogspot.com/feeds/posts/default]<br />
name=Shun Yao Zhang<br />
<br />
# Disabled 2009-11-27 due to 500's on feed link<br />
# Re-enabled 2011-04-27 - incorrect URL format fixed<br />
[http://oop344ylseow.blogspot.com/feeds/posts/default]<br />
name=Yip Lim Seow<br />
<br />
[http://capereir.wordpress.com/feed/]<br />
name=Chris Pereira<br />
<br />
[http://dev-blog.zerogin.com/category/opensource/feed/]<br />
name=Tom Wisniewski (t0mmyw)<br />
<br />
# Disabled 2011-04-27 - empty feed, rest of blog is not related<br />
#[http://majorbludd.wordpress.com/category/school/feed/]<br />
#name=Michael Dawson<br />
<br />
[http://cdnpadawan.wordpress.com/feed/]<br />
name=Matthew Daniels<br />
<br />
[http://processingjs.org/blog/?feed=rss2]<br />
name=Processing.js Blog<br />
<br />
[http://dseifried.wordpress.com/category/school/feed/]<br />
name=David Seifried<br />
<br />
[http://tandemwebdesign.ca/blog/?feed=rss2&cat=3]<br />
name=Matthew Adams<br />
<br />
[http://s-aleinikov.blog.ca/feed/atom/posts/]<br />
name=Sergey Aleinikov<br />
<br />
[http://wfchen2010.blogspot.com/feeds/posts/default]<br />
name=Wen Fang Chen<br />
<br />
[http://donna-oberes.blogspot.com/feeds/posts/default?alt=rss]<br />
name=Donna Oberes<br />
<br />
[http://carolynwoodley.blogspot.com/feeds/posts/default]<br />
name=Carolyn Woodley<br />
<br />
[http://rocketpants.blog.ca/feed/rss2/posts/default/-/open-source]<br />
name=Christopher Cheung<br />
<br />
[http://shengwei-seneca.blogspot.com/feeds/posts/default]<br />
name=Shengwei Wang<br />
<br />
[http://zakoop344.blogspot.com/feeds/posts/default]<br />
name=Wei Tong<br />
<br />
[http://gtawaf.blogspot.com/feeds/posts/default/-/Seneca]<br />
name=Gamal Tawaf <br />
<br />
[http://rift-tlosam.blogspot.com/feeds/posts/default/-/seneca]<br />
name=Brendan McDorman<br />
<br />
[http://hdc23.wordpress.com/category/OOP344/feed]<br />
name=Dachuan Huang<br />
<br />
# Disabled 2011-04-27 - blank feed, aged blod<br />
#[http://qwu26.blogspot.com/feeds/posts/default/-/OOP344]<br />
#name=Qingxi Wu<br />
<br />
# Disabled 2011-04-27 - blank blog<br />
#[http://lwang162.blogspot.com/feeds/posts/default/-/OOP344]<br />
#name=LianHe Wang<br />
<br />
# Disabled 2011-04-27 - blank blog, aged<br />
#[http://bmcohen.blogspot.com/feeds/posts/default/-/seneca]<br />
#name=Bryan Cohen<br />
<br />
[http://feliploko.wordpress.com/category/seneca/feed]<br />
name=Felipe de Oliveira<br />
<br />
# Following feed reports invalid content type.<br />
# Disabled 2010-09-23 CTyler<br />
#[http://lwang168.blogspot.com/feeds/posts/-/oop344]<br />
#name=Liang Wang<br />
<br />
[http://shunyao-cpa.blogspot.com/feeds/posts/default]<br />
name=shun yao zhang<br />
<br />
[http://galewis.blogspot.com/feeds/posts/default]<br />
name=Gustone Lewis<br />
<br />
[http://hmo6.blogspot.com/feeds/posts/default]<br />
name=Mo Hsiu Mei<br />
<br />
[http://derekambrose.blogspot.com/feeds/posts/default/-/open%20source]<br />
name=Derek Ambrose<br />
<br />
[http://scottdowne.wordpress.com/category/open-source/feed/]<br />
name=Scott Downe<br />
<br />
# Disabled 2011-04-27 - blog deleted<br />
#[http://anthonyisgood.blogspot.com/feeds/posts/default/-/open%20source]<br />
#name = Anthony Alves<br />
<br />
[http://jjleeos.blogspot.com/feeds/posts/default]<br />
name = Jeffrey Lee<br />
<br />
[http://harjinderv.tumblr.com/tagged/Open_Source/rss]<br />
name = Harjinder Virdi<br />
<br />
[http://cldenobrega.wordpress.com/category/open-source/feed/]<br />
name = Crystal de Nobrega (cldenobrega)<br />
<br />
[http://lchen97.blogspot.com/feeds/posts/default]<br />
name=Chris Chen<br />
<br />
# Parked domain. Disabled 2010-09-23 CTyler<br />
#[http://hotweiss.lifeflayer.com/?feed=atom]<br />
#name=Tianqi Liu<br />
<br />
[http://oleg-oop.blogspot.com/feeds/posts/default]<br />
name=Aleh Pliats<br />
<br />
[http://88mishok.blogspot.com/feeds/posts/default]<br />
name=Francois Des Jarlais<br />
<br />
[http://bikarin.blogspot.com/feeds/posts/default]<br />
name=Irina Balzamova<br />
<br />
[http://mashhaque.blogspot.com/feeds/posts/default]<br />
name=Mashfique Haque<br />
<br />
[http://yxue11.blogspot.com/feeds/posts/default]<br />
name=Yong Xue<br />
<br />
[http://tdao75.blogspot.com/feeds/posts/default]<br />
name=Thanh Dao<br />
<br />
[http://minooz.wordpress.com/category/CDOT/feed/]<br />
name=Minoo Ziaei<br />
<br />
[http://gbatumbya.wordpress.com/category/seneca/cdot/feed/]<br />
name=Grace Simon Batumbya<br />
<br />
[http://sonnilion.wordpress.com/feed/]<br />
name=Matt Postill<br />
<br />
[http://acchung1.blogspot.com/feeds/posts/default/-/oop344]<br />
name=Alex Chun Yang Chung<br />
<br />
[http://hckim.wordpress.com/category/open-source/feed/]<br />
name=Han Chul Kim<br />
<br />
[http://xizhangblog.blogspot.com/feeds/posts/default/-/oop344]<br />
name=Xi Zhang<br />
<br />
# Modified 2011-04-27 - changed from blank category<br />
[http://lwu11.blogspot.com/feeds/posts/default]<br />
name=Ling Wu<br />
<br />
[http://jasonquan.wordpress.com/category/OOP344/feed/]<br />
name=Jason Quan<br />
<br />
[http://myoop344blog.blogspot.com/feeds/posts/default/]<br />
name=Xiongwen LU<br />
<br />
[http://0zzym.wordpress.com/feed]<br />
name=Osman Mirza<br />
<br />
[http://adgezaza.posterous.com/rss.xml?tag=open%20source]<br />
name=Adrian Maurer<br />
<br />
[http://kumailhabib.blogspot.com/feeds/posts/default]<br />
name=Kumail Habib<br />
<br />
[http://imadorki3.blogspot.com/feeds/posts/default]<br />
name=Robin Co<br />
<br />
[http://danapao026.blogspot.com/feeds/posts/default]<br />
name=Don Armin Napao<br />
<br />
[http://cgm087.blogspot.com/feeds/posts/default/-/CDOT]<br />
name=Christopher G. Missen<br />
<br />
# Disabled 2011-04-27 - password-protected now and not valid<br />
#[http://yujinjeong.wordpress.com/category/GAM666/feed/]<br />
#name=YuJin Jeong<br />
<br />
[http://crgosselin.blogspot.com/feeds/posts/default]<br />
name=Chris Ryan Gosselin<br />
<br />
[http://slaw12.wordpress.com/feed/ ]<br />
name=Stephanie Law<br />
<br />
[http://ysliu2.blogspot.com/feeds/posts/default]<br />
name=Yansong Liu<br />
<br />
[http://www.drizhepolov.com/blog/?feed=rss2]<br />
name=Vladimir Drizhepolov<br />
<br />
[http://bhavanesh.wordpress.com/feed/]<br />
name=Bhavanesh Patel<br />
<br />
[http://xwu0102.blogspot.com/feeds/posts/default/-/oop344]<br />
name=Xiaojiang Wu<br />
<br />
[http://rhui4.wordpress.com/feed/ ]<br />
name=Richard Hui<br />
<br />
[http://invinciblyignorant.wordpress.com/category/OOP344/feed/]<br />
name=Jason Burton<br />
<br />
[http://goldenration.wordpress.com/feed/]<br />
name=HongGeun Park<br />
<br />
[http://thupten.veryusefulinfo.com/?feed=rss2]<br />
name=Thupten Choephel<br />
<br />
[http://priyadeep.wordpress.com/feed/]<br />
name=Priyadeep Gill<br />
<br />
[http://kyle205website.info/wordpress/?feed=rss2]<br />
name=Khai Huynh<br />
<br />
[http://dkxy.net/blog/tag/oop344/feed/]<br />
name=Dale Karp<br />
<br />
[http://vbluzmans.wordpress.com/feed/]<br />
name=Vitaly Bluzmans<br />
<br />
[http://akkimblog.blogspot.com/feeds/posts/default?alt=rss]<br />
name=Kerry Taylor<br />
<br />
<br />
[http://alf1488.blogspot.com/feeds/posts/default?alt=rss]<br />
name=Yegor Tyunin<br />
<br />
[http://sbr600.blogspot.com/feeds/posts/default?alt=rss]<br />
name=Matthew Ortofsky<br />
<br />
[http://pbrown9.blogspot.com/feeds/posts/default?alt=rss]<br />
name=Paul Brown<br />
<br />
[http://jzaidi.wordpress.com/feed/]<br />
name=Jawwad Zaidi<br />
<br />
[http://rainulf.ca/rss.php?tags=cdot]<br />
name=Jose Rainulf Pineda<br />
<br />
[http://donchel.wordpress.com/feed/]<br />
name=Dong Cheol Cha<br />
<br />
[http://sweerdenburg.wordpress.com/category/seneca/feed/]<br />
name=Steven Weerdenburg<br />
<br />
[http://jyang42.blogspot.com/feeds/posts/default]<br />
name=Jing Yang<br />
<br />
[http://tarinc.wordpress.com/feed/]<br />
name=Tarin Choudhury<br />
<br />
[http://jtdonaldson21.blogspot.com/feeds/posts/default]<br />
name=Jeshu Donaldson<br />
<br />
[http://bccp32.blogspot.com/feeds/posts/default]<br />
name=Yauheni Khabian<br />
<br />
[http://mark-os.blogspot.com/feeds/posts/default]<br />
name=Mark Eamiguel<br />
<br />
[http://kweber1.blogspot.com/feeds/posts/default]<br />
name=Kyle Weber<br />
<br />
[http://mustafaredha.wordpress.com/category/planet-cdot/feed]<br />
name=Mustafa Redha<br />
<br />
[http://andrewasdesigned.blogspot.com/feeds/posts/default/-/SBR600]<br />
name=Andrew Singh<br />
<br />
[http://escom0.blogspot.com/feeds/posts/default]<br />
name=Eric Shum<br />
<br />
# Disabled 2011-04-27 - blog was deleted<br />
#[http://open-ht.blogspot.com/feeds/posts/default]<br />
#name=Hoc Tran<br />
<br />
[http://dvkitancheva.wordpress.com/feed/]<br />
name=Denitsa Kitancheva<br />
<br />
[http://vanjason.wordpress.com/category/sbr600/feed]<br />
name=Jason Van<br />
<br />
[http://kpangilinan.wordpress.com/feed]<br />
name=Kenneth Pangilinan<br />
<br />
[http://ajcondinho.blogspot.com/feeds/posts/default/-/opensource]<br />
name=Andrew Condinho<br />
<br />
[http://blog.esmnetworks.com/category/planet-cdot/feed]<br />
name=Adrian Pruteanu<br />
<br />
[http://stevebologna.wordpress.com/category/Open-Source/feed/]<br />
name=Stephen Bologna<br />
<br />
[http://www.winterleaf.ca/blog/category/oop344/feed/]<br />
name=Daniel Slessarev<br />
<br />
[http://ycshon.blogspot.com/feeds/posts/default]<br />
name=Young Chol Shon<br />
<br />
[http://jwpark2.blogspot.com/feeds/posts/default]<br />
name=Jaewoo Park<br />
<br />
[http://klasconia.wordpress.com/feed/]<br />
name=Kevin Lasconia<br />
<br />
[http://kmcdonald11.blogspot.com/feeds/posts/default]<br />
name=Kaitlyn McDonald<br />
<br />
[http://jrobinson7.wordpress.com/feed/]<br />
name=James Robinson<br />
<br />
[http://trusu.blogspot.com/feeds/posts/default]<br />
name=Traian Rusu<br />
<br />
[http://blockrockinpete.blogspot.com/feeds/posts/default/-/OSD600]<br />
name=Pete Leaning<br />
<br />
[http://tyler-taehee-lee.blogspot.com/feeds/posts/default/-/SBR600]<br />
name=Tae Hee Lee<br />
<br />
[http://www.kaitlyncallow.com/Blog/?feed=rss2&cat=86]<br />
name=Kaitlyn Callow<br />
face=http://www.kaitlyncallow.com/Dump/kait_avatar.jpg<br />
<br />
[http://saad-husain.blogspot.com/feeds/posts/default?alt=rss]<br />
name=Saad Husain<br />
<br />
[http://jevangelos.wordpress.com/feed/]<br />
name=James Evangelista<br />
<br />
# Disabled 2011-04-27 - not a feed link<br />
#[http://sajed481.wordpress.com/SBR600/]<br />
#name=M.A Sajed Shadani<br />
<br />
[http://rizwanhaq.blogspot.com/feeds/posts/default?alt=rss]<br />
name=Rizwan Haq<br />
<br />
[http://tuori.tk/blog/blogs/blog1.php?tempskin=_rss2&cat=15]<br />
name=Matthew Tuori<br />
<br />
[http://ktaraghi.blogspot.com/feeds/posts/default]<br />
name=Khosro Taraghi<br />
<br />
[http://opensourceftw.blogspot.com/feeds/posts/default?alt=rss]<br />
name=Anthony Boccia<br />
<br />
[http://perfectlylogical.wordpress.com/category/sbr600/feed/]<br />
name=Stephen Hall<br />
<br />
[http://rocellaj.wordpress.com/feed/]<br />
name=Rocella Jimenez<br />
<br />
[http://justinpaulmorgan.blogspot.com/feeds/posts/default]<br />
name=Justin Morgan<br />
<br />
[http://gcasella.blogspot.com/feeds/posts/default]<br />
name=Gian-Luca Casella<br />
<br />
[http://archanasahota.com/category/open-source/feed/]<br />
name=Archana Sahota<br />
<br />
[http://pratikamin.wordpress.com/category/sbr600/feed/]<br />
name=Pratik Amin<br />
<br />
[http://syang00.wordpress.com/feed/]<br />
name=Stephanie Yang<br />
<br />
[http://tewestacott.wordpress.com/category/SBR600/feed/]<br />
name=Todd Westacott<br />
<br />
[http://aparda.wordpress.com/category/SBR600//feed/]<br />
name=Andrew Parda<br />
<br />
[http://gjuhasz1.wordpress.com/feed/]<br />
name=Gergely Juhasz<br />
<br />
[http://completefail.wordpress.com/category/SBR600/feed/]<br />
name=Joshua Y. Koh<br />
<br />
[http://myuberwebsite.blogspot.com/feeds/posts/default]<br />
name=Dmitry Artemenko<br />
<br />
[http://cgomes7.wordpress.com/feed/]<br />
name=Cesar Gomes<br />
<br />
[http://supbroseph.wordpress.com/feed/]<br />
name=Houssam haidar<br />
<br />
[http://www.bradchen.com/rss/blog/open%20source]<br />
name=Brad Chen (vvasabi)<br />
<br />
[http://asabir.wordpress.com/feed/]<br />
name=Adeel Sabir (asabir)<br />
<br />
[http://libresparks.wordpress.com/category/SBR600/feed/]<br />
name=Alfred Liu<br />
<br />
[http://acook6.blogspot.com/feeds/posts/default/-/open-source]<br />
name=Alan Cook<br />
<br />
[http://coding.shaunofthelive.com/feeds/posts/default/-/oop344]<br />
name=Shaun Hill<br />
<br />
[http://maoli1207.blogspot.com/feeds/posts/default/-/open-source]<br />
name=Mao Hua Li<br />
<br />
[http://fossjon.wordpress.com/feed/]<br />
name=Jon Chiappetta<br />
<br />
[http://dperit.blogspot.com/feeds/posts/default/-/cdot]<br />
name=David Perit<br />
<br />
[http://szafar8.wordpress.com/tag/cdot/feed/]<br />
name=Salman Zafar<br />
<br />
[http://mbuttu.wordpress.com/category/Open-Source/feed/]<br />
name=Mohammed Buttu<br />
<br />
[http://brianlimtemp.blogspot.com/feeds/posts/default/-/CDOT]<br />
name=Brian Lim<br />
<br />
[http://drigato.wordpress.com/category/open-source/feed/]<br />
name=Denise Rigato<br />
<br />
[http://jbraffoul.wordpress.com/category/open-source/feed/]<br />
name=Jordan Raffoul<br />
<br />
[http://kuznetsovnikita.blogspot.com/feeds/posts/default?alt=rss]<br />
name=Nikita Kuznetsov<br />
<br />
[http://noahgitalis.wordpress.com/category/open-source/feed/]<br />
name=Noah Gitalis<br />
<br />
[http://rhotin.wordpress.com/category/open-source/feed/]<br />
name=Roman Hotin<br />
<br />
[http://nm486.wordpress.com/category/open-source/feed]<br />
name=Stanley Tsang<br />
<br />
</pre></div>Jboelenhttps://wiki.cdot.senecacollege.ca/w/index.php?title=Fall_2011_Open_Source_Students&diff=68629Fall 2011 Open Source Students2011-09-06T23:30:03Z<p>Jboelen: </p>
<hr />
<div>==Introduction==<br />
<br />
This is a list of students in the [[DPS909]] and [[OSD600]] courses for fall 2011. Please add your name and info below.<br />
<br />
==People==<br />
<br />
{| border="1"<br />
|-<br />
|class="header"|Name<br />
|class="header"|IRC Nick<br />
|class="header"|Blog<br />
|class="header"|Github Account<br />
|class="header"|Wiki Page<br />
|class="header"|Twitter<br />
|-<br />
|David Humphrey<br />
|humph<br />
|http://vocamus.net/dave<br />
|https://github.com/humphd<br />
|http://zenit.senecac.on.ca/wiki/index.php/User:David.humphrey<br />
|<br />
|-<br />
|Moussa Tabcharani<br />
|moussa1<br />
|http://moussa1.wordpress.com<br />
|https://github.com/moussa1<br />
|http://zenit.senecac.on.ca/wiki/index.php/User:Moussa1<br />
|<br />
|-<br />
|Chris Gosselin<br />
|crgosselin<br />
|http://crgosselin.blogspot.com/<br />
|https://github.com/crgosselin<br />
|http://zenit.senecac.on.ca/wiki/index.php/User:Crgosselin<br />
|<br />
|-<br />
|Abhishek Bhatnagar<br />
|abhatnag<br />
|http://abhishekbh.wordpress.com/<br />
|https://github.com/abhishekbh<br />
|http://zenit.senecac.on.ca/wiki/index.php/User:Abhishekbh<br />
|<br />
|-<br />
|Greg Krilov<br />
|gkrilov<br />
|<br />
|<br />
|http://zenit.senecac.on.ca/wiki/index.php/User:Gkrilov<br />
|<br />
|-<br />
|Jesse Silver<br />
|JSilver999<br />
|http://jsilver999.wordpress.com/<br />
|<br />
|http://zenit.senecac.on.ca/wiki/index.php/User:Jasilver1<br />
|<br />
|-<br />
|Dennis Villasenor<br />
|<br />
|<br />
|<br />
|http://zenit.senecac.on.ca/wiki/index.php/User:Dennis_Villasenor<br />
|<br />
|-<br />
|Nikita Kuznetsov<br />
|<br />
|<br />
|<br />
|http://zenit.senecac.on.ca/wiki/index.php/User:Nikkuznetsov<br />
|<br />
|-<br />
|Saba Naqvi<br />
|snaqvi<br />
|http://snaqvi3.wordpress.com/<br />
|https://github.com/snaqvi<br />
|http://zenit.senecac.on.ca/wiki/index.php/User:Snaqvi<br />
|<br />
|-<br />
|Matthew Schranz<br />
|mjschranz<br />
|http://mschranz.wordpress.com<br />
|https://github.com/mjschranz<br />
|http://zenit.senecac.on.ca/wiki/index.php/User:mjschranz<br />
|[http://www.twitter.com/mjschranz mjschranz]<br />
|-<br />
|Kaitlyn Callow<br />
|kait85<br />
|http://www.kaitlyncallow.com/Blog<br />
|https://github.com/kait85<br />
|http://zenit.senecac.on.ca/wiki/index.php/User:dacallow<br />
|http://www.twitter.com/kait85<br />
|-<br />
|Hasan Kamal-Al-Deen<br />
|northWind<br />
|http://orbitalstation.wordpress.com<br />
|&nbsp;<br />
|http://zenit.senecac.on.ca/wiki/index.php/User:NorthWind87<br />
|http://twitter.com/kimkardashian<br />
|-<br />
|Joseph Hughes<br />
|CloudScorpion<br />
|http://cloudscorpion.blogspot.com<br />
|https://github.com/CloudScorpion<br />
|http://zenit.senecac.on.ca/wiki/index.php/User:CloudScorpion<br />
|http://twitter.com/CloudScorpion<br />
|-<br />
|Raymond Hung<br />
|rhung<br />
|<br />
|https://github.com/rhung<br />
|http://zenit.senecac.on.ca/wiki/index.php/User:RHung<br />
|-<br />
<br />
<br />
|James Boelen<br />
|jboelen<br />
|http://james.boelen.ca<br />
|https://github.com/JamesBoelen<br />
|http://zenit.senecac.on.ca/wiki/index.php/User:jboelen<br />
|http://twitter.com/jamesboelen<br />
|}</div>Jboelen