During data obervation and collection, not all of the data points are meaningful and useful for some of our purposes. In this case study, the datas varied over a long period of time and over a wide range of locations that might not be related to our study on Motensinho Natural Park, in fact, more than 50 forest fire incidents are recorded outside of the park's perimeter. Therefore, the purpose of the following research questions are to pin point and potentially narrow down the range of meaningful data so that it can be more helpful to future studies. Also, with the recent forest fire incidents in California, it is imperative to understand forest fire behaviours and its different indicators.
From the Government of Canada:The Drought Code (DC) is a numeric rating of the average moisture content of deep, compact organic layers. This code is a useful indicator of seasonal drought effects on forest fuels and the amount of smoldering in deep duff layers and large logs.
Since DC is a seasonal data, it is valid to plot its average over a monthly axis in order to observe its seasonal change.
Initiation:
import pandas as pd import matplotlib.pyplot as plt ff = pd.read_csv('forestfires.csv')
The variables are first created
x = ["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"] y = [0]*12 zSum = [0]*12 z = [0]*12
Variables in x correspond to the values given in the CSV data file, y is the counter for incidents per month, z is the average DC per month calculated by taking zSum/y.
For loop is used to get corresponding data values
for i in range(len(ff.month)): y[x.index(ff.month[i].title())]+=1 ##Get month index and introduced ##into corresponding y zSum[x.index(ff.month[i].title())] += ff.DC[i] ##Get month index and increment by ##ff.DC[i] into corresponding zSum[i] for j in range(len(z)): z[j] = zSum[j]/y[j] #Get average for DC per month
Because all the month value are in lowercase, it is required to use .title(). x is style in such a way that it would look better in the Figure's labels.
Plotting on matplotlib:
fig, ax1 = plt.subplots() #Allow multiple plot on one figure ax2 = ax1.twinx() #Twin X and two Y-axis ax2.grid(b=False) #Increase visibility ax1.bar(x,y) #Create bar chart of monthly Forest Fire incidents ax1.set_axisbelow(True) ax1.set_title("Monthly Forest Fire Incidents and Average DC index each Month") ax1.set_ylabel('Forest Fire Incidents') ax2.set_ylabel('Average DC index') ax2.plot(z,alpha=0.5,color="red") plt.show()
From the chart, it can be seened that incidents of Forest Fire and average DC monthly are closely related. Both remain low from January to May. From June, the values rise sharply and reach a peak around August and September months. After September, both value diminishes sharply at the end of the year. From the graph, it shows that DC value is fairly reliable to be used in analysing forest fire trend.
From the data, and the relating map that was provided by the data collector. Some of the forest fire incidents are recorded outside of the park's perimeter. In other to see this in greater depth, a heatmap was constructed based on the provided map (remade based on old model) and data.
Initiation:
import pandas as pd import matplotlib.pyplot as plt import matplotlib.image as mpimg import seaborn as sns ff = pd.read_csv('forestfires.csv') map_img = mpimg.imread('ff.png') ##To read the map's image
Variables:
x = list(range(1,10)) ##Create a list of x-coordinate from 1-9 y = list(range(1,10)) ##Create a list of y-coordinate from 1-9 z = [ ([0] * 9) for row in range(9)] ##Create a 9*9 matrix map
Data Calculation:
for i in range(len(ff.month)): z[x.index(int(ff.X[i]))][y.index(int(ff.Y[i]))] += 1 ##increment of incidents for ##corresponding X and Y data coordinates
Created a heatmap using matplotlib's extension seaborn
ax = sns.heatmap(z,cbar=False,annot=True,cmap = matplotlib.cm.YlOrRd,alpha=0.5,zorder=2) ax.set_xticklabels(x) ax.set_yticklabels(y) ax.set_title("Location Heatmap of Forest Fire incidents in Motensinho Park") ax.set_ylabel('Y Coordinate') ax.set_xlabel('X Coordinate') ax.xaxis.set_label_position('top') ax.xaxis.tick_top() ax.imshow(map_img,aspect = ax.get_aspect(), extent = ax.get_xlim() + ax.get_ylim(), zorder = 1) #put the map under the heatmap plt.show()
As can be seen from the map, the area around coordinate (4,4) has a high number of forest fires incidents within a year. This is also true for (5,6),(6,8) and (4,7). However, the latter data points are either on the border of the park or outside of the park. Therefore, these data are highly unreliable as they belong to the area where human have easy access and thus they also involve human factor which is highly unpredictable. From the heatmap, those data can be excluded entirely in order to keep the validity of the study. Even so, data points around (4,4) also have human access through it (as can be seen with white roads on the background map), suggesting that some of the data values around this area is not very reliable.
From the Government of Canada:
+The Fine Fuel Moisture Code (FFMC) is a numeric rating of the moisture content of litter and other cured fine fuels. This code is an indicator of the relative ease of ignition and the flammability of fine fuel.
+The Duff Moisture Code (DMC) is a numeric rating of the average moisture content of loosely compacted organic layers of moderate depth. This code gives an indication of fuel consumption in moderate duff layers and medium-size woody material.
+The Initial Spread Index (ISI) is a numeric rating of the expected rate of fire spread. It combines the effects of wind and the FFMC on rate of spread without the influence of variable quantities of fuel.
From the data, many of forest fire incidators where recorded but it was unknown whether they are going to be useful for the study of forest fire. By creating multiple histogram subplots, it would be easier to compare and observe the trend of different forest fire indicators
Initiation:
import pandas as pd import matplotlib.pyplot as plt ff = pd.read_csv('forestfires.csv')
Variables:
x = [] ##FFMC y = [] ##Temperature z = [] ##DMC j = [] ##ISI
Data Calculation, since it was showed that data outside the y-coordinate range of 2-5 is not valid:
for i in range(len(ff.FFMC)): if ff.Y[i] >=2 and ff.Y[i] <= 5: x.append(ff.FFMC[i]) y.append(ff.temp[i]) z.append(ff.DMC[i]) j.append(ff.ISI[i])
Plotting with matplotlib
fig, axs = plt.subplots(2, 2,sharey=True) ##Create two column and two row of subplots fig.suptitle("Histogram of Incidents from DMC, Temperature, DMC and ISI") fig.tight_layout() fig.subplots_adjust(top=0.98) axs[0][0].hist(x) axs[0][0].set_ylabel('Number of Incidents') axs[0][0].set_xlabel('Fine Fuel Moisture Code') axs[0][1].hist(y) axs[0][1].set_xlabel('Temperature(oC)') axs[1][0].hist(z) axs[1][0].set_ylabel('Number of Incidents') axs[1][0].set_xlabel('Duff Moisture Code') axs[1][1].hist(j) axs[1][1].set_xlabel('Initial Spread Index') plt.show()
From the four graphs, only FFMC show an increase in forest fire incidents with increase in value. However, for the other three, there is a highly chance of forest fire around their middle interval. Therefore, it is better to ultilize the FFMC value for prediction of forest fire incidents while others are much less reliable. This might stem from the fact that even though all the data points are within the Park's region, human's influenec also play a role in manipulating the data in such a way, as explained in the previous analysis.
Classification of plants have always been a headache for Botanists and Plant Biologists. As there are many types of plants that have very similar physical characteristics but inheriently different in gene and cannot reproduce with each other, therefore belongs to different species. It is imperative to find a solution that can efficiently classify plants based on statistical model that can enlarge minute differences between plant species, allowing faster and more accurate distinction between the species. Classification of plants can help to prevent risk relating to pharmaceutical misproduction, enhancing the consistency of drugs.
First Initiation:
import json import pandas as pd my_file = open("iris.json", "r") json_string = my_file.read() ##.read() returns your entire example.json file as one string my_dict = json.loads(json_string) columns = ["sl","sw","pl","pw","cl"] ##Sepal length, Sepal Width, Petal Length, Petal Width rows = [list(row.values()) for row in my_dict["data"]] ##put all data into data rows df = pd.DataFrame(rows,columns = columns) ##put column and rows into pandas dataFrame my_file.close()
Initiation:
import matplotlib.pyplot as plt import matplotlib.ticker as ticker
Variables:
se = [] ##Setosa ve = [] ##Versicolor vi = [] ##Virginica
Data Calculation:
for i in range(len(df.cl)): if df.cl[i] == "Iris-setosa": se.append(df.sl[i]) ##Get Sepal length data to Setosa elif df.cl[i] == "Iris-versicolor": ve.append(df.sl[i]) ##Get Sepal length data to Versicolor elif df.cl[i] == "Iris-virginica": vi.append(df.sl[i]) ##Get Sepal length data to Virginica
Plotting with matplotlib
fig, ax = plt.subplots(1,1) ax.hist([se,ve,vi], alpha=0.5, label=['Iris-setosa','Iris-versicolor','Iris-virginica']) ax.set_xlabel("Sepal Length(cm)") ax.set_ylabel("Frequency") ax.set_title("Histogram of Sepal length for three types of Iris") plt.legend(loc='upper right') ax.yaxis.set_major_locator(ticker.MultipleLocator(1)) ##set yticker to 1 plt.show()
From figure 4, it can easily be seen that the sepal length of Setosa is mostly distributed between the range of 4.3cm to 5.5cm, Versicolor is between 5.3cm to 6.8cm and Virginica is between 6.0cm to 7.8cm. So for identification, the sepal length can be a good indication for the species of plants with Setosa is always less than 6.0cm and Virginica is mostly larger than 6.0cm. For Versicolor is harder to indetify as its sepal length lie in between the distribution of Viriginica and Setosa.
Initiation:
import matplotlib.pyplot as plt from scipy.stats import linregress import numpy as np
Variables:
viSl = [] ##Virginica Sepal Length viPl = [] ##Virginica Petal Length veSl = [] ##Versicolor Sepal Length vePl = [] ##Versicolor Petal Length seSl = [] ##Setosa Sepal Length sePl = [] ##Setosa Petal Length
Data Calculation:
for i in range(len(df.cl)): if df.cl[i] == "Iris-virginica": viSl.append(df.sl[i]) viPl.append(df.pl[i]) elif df.cl[i] == "Iris-versicolor": veSl.append(df.sl[i]) vePl.append(df.pl[i]) elif df.cl[i] == "Iris-setosa": seSl.append(df.sl[i]) sePl.append(df.pl[i])
Scattor plot on matplotlib
fig, axs = plt.subplots(1, 3,sharey=True) ##Create 1 row and 3 columns of subplots fig.suptitle("Scatterplot of Sepal Length vs Petal Length for three types of Iris" #Setosa axs[0].scatter(seSl,sePl,color="#9370DB") #Versicolor axs[1].scatter(veSl,vePl,color ="#9e61b8" ) #Virginica axs[2].scatter(viSl,viPl,color = "purple")
Find and Plot Line of Regression Same process for axs[1] and axs[2]
gradient, intercept, r_value, p_value, std_err = linregress(seSl,sePl) x1=np.linspace(np.min(seSl),np.max(seSl),500) y1=gradient*x1+intercept axs[0].plot(x1,y1,'-r') axs[0].legend(['r-square={}'.format(round((r_value**2),2)),'Setosa'])
From three diagram, it can be seen that Virginica has the strongest correlation betweeen Sepal Length and Petal Length, following by Versicolor and then no correlation of Setosa. Therfore, for identification purposes, Virginica would have more proportional grow of Petal and Sepal length while for Setosa, the growth of Petal and Sepal is highly independent to each other. There is a medium correlation between Petal and Sepal Length for Versicolor so it can still be identify away from Setosa during growth. With this data, it can show that the species can either be Setosa or Virginica/Versicolor.
Initiation:
from math import pi import matplotlib.pyplot as plt
Variables:
seSum = [0]*5 #Sum sl, sw, pl, pw and total no. of Setosa veSum = [0]*5 #Sum sl, sw, pl, pw total no. of Versicolor viSum = [0]*5 #Sum sl, sw, pl, pw total no. of Virginica
Data Calculation:
##Collection different Characteristics of the species for i in range(len(df.cl)): if df.cl[i] == "Iris-setosa": seSum[0] += df.sl[i] seSum[1] += df.sw[i] seSum[2] += df.pl[i] seSum[3] += df.pw[i] seSum[4] += 1 elif df.cl[i] == "Iris-versicolor": veSum[0] += df.sl[i] veSum[1] += df.sw[i] veSum[2] += df.pl[i] veSum[3] += df.pw[i] veSum[4] += 1 elif df.cl[i] == "Iris-virginica": viSum[0] += df.sl[i] viSum[1] += df.sw[i] viSum[2] += df.pl[i] viSum[3] += df.pw[i] viSum[4] += 1 se = [seSum[i]/seSum[4] for i in range(len(seSum)-1)] #Average of sl, sw, pl, pw ve = [veSum[i]/veSum[4] for i in range(len(veSum)-1)] #Average of sl, sw, pl, pw vi = [viSum[i]/viSum[4] for i in range(len(viSum)-1)] #Average of sl, sw, pl, pw
Plotting Star Chart with Matplotlib
#Settng Background angles = [n / float(4)*2*pi for n in range(4)] ##Get angle between catergories angles += angles[:1] ##Connect last angle to first ax = plt.subplot(111, polar=True) ##Indentify as Polar Plot plt.xticks(angles[:-1], columns[:4]) ##Set Angle Ticks ax.set_rlabel_position(0) ##Set X label plt.yticks([2,4,6,8], ["2","4","6","8"], color="grey", size=7) ##Set Y-ticks plt.ylim(0,8) #Plot Se values1 =se values1 += values1[:1] ##Connecting first plot point ax.plot(angles, values1, linewidth=1, linestyle='solid', label="Setosa") ax.fill(angles, values1, 'b', alpha=0.1) #Plot Ve values2 = ve values2 += values2[:1] ##Connecting first plot point ax.plot(angles, values2, linewidth=1, linestyle='solid', label="Veriscolor") ax.fill(angles, values2, 'b', alpha=0.1) #Plot Vi values3 = vi values3 += values3[:1] ##Connecting first plot point ax.plot(angles, values3, linewidth=1, linestyle='solid', label="Virginia") ax.fill(angles, values3, 'b', alpha=0.1) # Add legend and title plt.legend(loc='upper right', bbox_to_anchor=(0.1, 0.1)) ax.set_title("Star Chart of Three types of Iris in cm") plt.show()
From the star chart, there are multiple characteristics that are different between different species. For Setosa, it was showed that the sepal dimension is greatly larger than the petal dimension (with both average Sepal Lenght and Sepal Width larger than Petal Length and Petal Width). For Both Veriscolor and Virginica, the Sepal length and Petal length are similar to each other, it is the same for Sepal Width and Petal width also. So generally, Versicolor and Virginica have larger petals than Setosa's.


Our app is available on any mobile device! Download now to get started!
JAM is an insight driven, strategic branding and packaging company. We build, extend and refresh some of the world's best loved brands.
Led by industry experts, Peter Johnson and Nick McGreevy, we believe brands should be born from a foundation of deep consumer insight which in turn is crafted through a holistic design process to deliver a product on shelf that resonates deeply with consumers.
Call today and join us for a "JAM Session™" and see how we can deliver brands that win at shelf for you.
At JAM we don't follow the common process of "Think, Do, Make" but deliver a bespoke and organic process crafted with you, for you. We deliver a meaningful brand expression to meet your customer's wants and needs and in turn deliver on your business objectives.
HOP LONG COMPANY
323 Le Quang Dinh street, 9 ward, Ho Chi Minh city.
08 888 345 89
cskh@stanpak.vn


This is an implementation report of the Vehicle Information Service[1] specificiation and the Vehicle Information Api[2] specification. It is the aim of this report to show that the specifications are implementable and that they are interoperable. VISS features are defined as the service request actions (GET,SET,SUBSCRIBE,UNSUBSCRIBE,UNSUBSCRIBEALL, AUTHORIZE, GETVSS) and their realisation in the service implementation.
1) Melco implementation[3]. This a Qt web socket implementation and it is developed for the GDP-11 (Genivi Development platform).
2) Access implementation t.b.e This a javascript/HMTL based implementation...
3) Wonsuk implementation t.b.e
Table from W3Ctestclient…
| Test | Melco VISS | Access VISS | Wonsuk VISS |
|---|---|---|---|
| 0070-init-wrong-subproto-error | FAIL | PASS | FAIL |
| 00120-getVSS-incorrect-error | FAIL | FAIL | FAIL |


Safely add your electronic medical records on your device's local storage.
Keep an eye on your health with our flexible logging system. Track any of your health related information.
Provide access of your medical information without compromise.


--- layout: default title: "Page Not Found (404)" --- {% capture content %} {% include 404.markdown %} {% endcapture %}


sqlsrv_connect
(No version information available, might only be in Git)
sqlsrv_connect — Opens a connection to a Microsoft SQL Server database
说明
resource sqlsrv_connect ( string $serverName [, array $connectionInfo ] )
Opens a connection to a Microsoft SQL Server database. By default, the
connection is attempted using Windows Authentication. To connect using SQL
Server Authentication, include "UID" and "PWD" in the connection options array.
参数
serverName
The name of the server to which a connection is established. To connect to
a specific instance, follow the server name with a backward slash and the
instance name (e.g. serverName\sqlexpress).
connectionInfo
An associative array that specifies options for connecting to the server.
If values for the UID and PWD keys are not specified, the connection will
be attempted using Windows Authentication. For a complete list of supported
keys, see » SQLSRV Connection Options.
返回值
A connection resource. If a connection cannot be successfully opened, FALSE is
returned.
范例
Example #1 Connect using Windows Authentication.
"dbName");
$conn = sqlsrv_connect( $serverName, $connectionInfo);
if( $conn ) {
echo "Connection established.
";
}else{
echo "Connection could not be established.
";
die( print_r( sqlsrv_errors(), true));
}
?>
Example #2 Connect by specifying a user name and password.
"dbName", "UID"=>"userName", "PWD"=>
"password");
$conn = sqlsrv_connect( $serverName, $connectionInfo);
if( $conn ) {
echo "Connection established.
";
}else{
echo "Connection could not be established.
";
die( print_r( sqlsrv_errors(), true));
}
?>
Example #3 Connect on a specifed port.
"dbName", "UID"=>"userName", "PWD"=>
"password");
$conn = sqlsrv_connect( $serverName, $connectionInfo);
if( $conn ) {
echo "Connection established.
";
}else{
echo "Connection could not be established.
";
die( print_r( sqlsrv_errors(), true));
}
?>
注释
By default, the sqlsrv_connect() uses connection pooling to improve connection
performance. To turn off connection pooling (i.e. force a new connection on
each call), set the "ConnectionPooling" option in the $connectionOptions array
to 0 (or FALSE). For more information, see » SQLSRV Connection Pooling.
The SQLSRV extension does not have a dedicated function for changing which
database is connected to. The target database is specified in the
$connectionOptions array that is passed to sqlsrv_connect. To change the
database on an open connection, execute the following query "USE dbName" (e.g.
sqlsrv_query($conn, "USE dbName")).
参见
• sqlsrv_close() - Closes an open connection and releases resourses
associated with the connection
• sqlsrv_errors() - Returns error and warning information about the last
SQLSRV operation performed
• sqlsrv_query() - Prepares and executes a query.
User Contributed Notes 3 notes
===============================================================================
As mentioned at https://msdn.microsoft.com/en-us/library/cc296193.aspx the
connection will convert some data into PHP data types. Of particular
difference to other database functions in PHP is that dates will be output as
objects instead of strings.
To make the sqlsrv_fetch_{array|object}() functions return dates/times/
datetimes as strings instead, specify:
'ReturnDatesAsStrings' => true
in the $connectionInfo array.
For more info about this behaviour, see https://msdn.microsoft.com/en-us/
library/ee376928.aspx
===============================================================================
In order to connect using Windows Authentication (on Windows) for Wamp/Xamp
installations you should verify that the apache service is running under a user
who can connect to SQL Server and not under a local user.
===============================================================================
In fact, you don't need to inform the instance name in some cases.
When I inform my the instance name of my database server, it's throws an error:
Throws:
[Microsoft][SQL Server Native Client 10.0]SQL Server Network Interfaces: Error
Locating Server/Instance Specified [xFFFFFFFF].
And this works as well:


Dojo's dijit.form.ComboButton Dijit, created declaratively:
All In The Family
Edith
Archie
Gloria
Meathead


Responsible for blending images into one plane. More...
#include <AGImageBlender.h>
Static Public Member Functions | |
| static void | blendImages (std::vector< AGImage > &images, cv::Mat &outputImage, AGError &error) |
Static Private Member Functions | |
| static void | calculateDistanceTransformOfImage (AGImage &image, AGError &error) |
Responsible for blending images into one plane.
Definition at line 17 of file AGImageBlender.h.
|
static |
Takes vector of transformed images and blends them into outputImage. Method used for blending is described in master's thesis.
| images | Vector of transformed images. Images have to be the same size on the same plane. |
| outputImage | The result of blending. |
| error | Return error. |
Definition at line 22 of file AGImageBlender.cpp.
|
staticprivate |
Calculates distance transform of image. Distance transform is assigned to distanceTransform property of image object.
| image | Input image. |
| error | Return error. |
Definition at line 11 of file AGImageBlender.cpp.


Cicada has five primitive variable types: bool, char, int, double and string. The first four of these types occupy a fixed amount storage which may depend on the machine (for example, the int type generally is the same standard integer as C’s int type). However, string variables can store strings (character arrays) of any length.
In order to define a variable, use the define ‘::’ operator. Several variables of the same type can be defined on the same line. As an example, here we define three floating point variables and one string.
height :: time :: g :: double
units :: string
All primitive variables get initialized to some starting value when first created. That value is: 0 for numeric variables (ints and doubles); the null character for char variables; false for Boolean variables; and an empty (0-character) string for string variables.
To change the value stored by a variable, use the assignment operator, which can be written either ‘=’ as in C or ‘<-’. Here we’ll use the C convention.
g = -9.8
units = "m/s^2"
In this case we just assigned a constant value to each variable. Numeric constants are obviously just numbers. String constants are inside double quotes, whereas character constants just use single quotes. The only two Boolean constants are true and false. Of course, all primitive types can also be assigned using more complex expressions: for example isBigger = a > b sets the Boolean variable isBigger to either true or false depending on the values of numeric variables a and b.
For the sake of brevity, we can define and set variables in a single step using the := operator. So our last two examples could have been condensed a bit:
height :: time :: double
g := -9.8
units := "m/s^2"
Cicada has to somewhat guess about numeric types when we do this: is ‘g’ an int or a double? Because of the decimal point Cicada guesses double. Just know that if we had rounded to g := 10, then ‘g’ would have been defined as an integer variable.
By default, Cicada’s bool is stored internally as a byte, the int is a basic integer and the double type is a double-precision floating point. (See Table 1.) However, these can be reassigned to different C types: for example some applications might prefer Cicada’s double type to be C’s long double data type. To change a data type, open up the lnklst.h source file and change the appropriate #typedef (see the ‘C type name’ column in Table 1).
Last update: July 25, 2021


| Tag | Description |
|---|---|
|  | Defines an image |
|  as  | Defines image alignment |
|  as  | Defines image size |
|  as  | Specifies a smaller or lower-quality version of an image |
|  as  | Defines image border |
|  as  | Specifies an alternate text for an image |


I have an EmonTX running to a Raspberry pi. This seems to be working Ok.
On my PC I have XAMPP running and the Emoncms on localhost.
I also become the input and feeds now.
Problem is that after 30 seconds the update time counters running further but change from green in red.
On the vis screen I can’t get any graphics shown. I assume that the feeds don’t become in to the database.
Has anyone some suggestion for me?
Re: feeds stops after 30 seconds
I assume your are using this for electricity monitoring?
When you say the update time counter changes from green to red. Does the number continue to increase? Or does it eventually change back to start from zero again?
Can you see the data on the RaspberryPI?
Take a look at the troubleshooting part of this page
http://emoncms.org/site/docs/raspberrypigateway
if you follow those instructions how long is there between data packets ( look for the Info Serial Rx lines (like the bottom one of the image on that page))
What software/script are you running on the Raspberry PI inorder to send the data to your WAMP server?
Re: feeds stops after 30 seconds
Many thanks for your replay. To your questions,
I assume your are using this for electricity monitoring? Yes, now EmonTX
When you say the update time counter changes from green to red. Does the number continue to increase? Or does it eventually change back to start from zero again?
The time counter is running further.
Can you see the data on the RaspberryPI? Take a look at the troubleshooting part of this page
http://emoncms.org/site/docs/raspberrypigateway if you follow those instructions how long is there between data packets ( look for the Info Serial Rx lines (like the bottom one of the image on that page))
Good question, I see this is 5 minutes.
What software/script are you running on the Raspberry PI inorder to send the data to your WAMP server?
The Rock Solid Gateway Forwarder script. On the PC the Emoncms-6.9
root@oemgateway:~# python /root/oem_gateway/oemgateway.py --config-file /boot/oemgateway.conf
2014-02-14 23:27:56,718 INFO Logging level set to DEBUG
2014-02-14 23:27:56,721 INFO Opening gateway...
2014-02-14 23:27:56,725 INFO Creating buffer emoncms_local
2014-02-14 23:27:56,729 INFO Creating buffer emoncms_remote
2014-02-14 23:27:56,734 INFO Creating listener RFM2Pi
2014-02-14 23:27:56,738 DEBUG Opening serial port: /dev/ttyAMA0
2014-02-14 23:27:56,743 INFO Setting send time interval to 300
2014-02-14 23:27:56,747 INFO Setting RFM2Pi | frequency: 8
2014-02-14 23:27:57,753 INFO Setting RFM2Pi | sgroup: 210
2014-02-14 23:27:58,757 INFO Setting RFM2Pi | baseid: 15
2014-02-14 23:27:59,762 INFO Creating listener Socket
2014-02-14 23:27:59,765 DEBUG Opening socket on port 50011
2014-02-14 23:27:59,791 DEBUG Broadcasting time: 23:27
2014-02-14 23:27:59,796 INFO Serial RX: > 8b
2014-02-14 23:28:00,001 INFO Serial RX:
2014-02-14 23:28:00,004 WARNING Misformed RX frame: ['\x01']
2014-02-14 23:28:00,210 INFO Serial RX: > 210g
2014-02-14 23:28:00,415 INFO Serial RX:
2014-02-14 23:28:00,418 WARNING Misformed RX frame: ['\x01']
2014-02-14 23:28:00,624 INFO Serial RX: > 15i
2014-02-14 23:28:00,848 INFO Serial RX:
2014-02-14 23:28:00,852 WARNING Misformed RX frame: ['\x01']
2014-02-14 23:28:01,057 INFO Serial RX: > 0s
2014-02-14 23:28:01,263 INFO Serial RX: -> 4 b
2014-02-14 23:32:59,961 DEBUG Broadcasting time: 23:32
2014-02-14 23:33:00,167 INFO Serial RX: > 0s
2014-02-14 23:33:00,393 INFO Serial RX: -> 4 b
2014-02-14 23:38:00,096 DEBUG Broadcasting time: 23:38
2014-02-14 23:38:00,302 INFO Serial RX: > 0s
2014-02-14 23:38:00,508 INFO Serial RX: -> 4 b
What wonders me is that I don’t see the debug lines like are shown in the screen.
On other thin that wonders is that when I put in python/root/oem_gateway/oemgateway.py --config-file /boot/oemgateway.conf --logfile /root/oem_gateway/oemgateway.log
I become the message No such file or directory
Re: feeds stops after 30 seconds
OK, so your RFM12Pi isn't receiving any data from your EmonTX.
You need to check what data radio setting you have on your emontx and make sure they work with the setting on your RFM12Pi
Re: feeds stops after 30 seconds
Many thanks for helping me.
Checking the EmonTX by Arduino serial monitor I get the info;
emonTX CT123 example
OpenEnergyMonitor.org
Node 14, Freq 868, Network 210
53 54 53 3342
3 3 1 3342
3 3 1 3342
3 3 1 3342
3 3 1 3342
3 3 1 3342
By Putty I get from the raspberry
2014-02-15 15:46:33,184 INFO Logging level set to DEBUG
2014-02-15 15:46:33,188 INFO Opening gateway...
2014-02-15 15:46:33,191 INFO Creating buffer emoncms_local
2014-02-15 15:46:33,196 INFO Creating buffer emoncms_remote
2014-02-15 15:46:33,200 INFO Creating listener RFM2Pi
2014-02-15 15:46:33,204 DEBUG Opening serial port: /dev/ttyAMA0
2014-02-15 15:46:33,209 INFO Setting send time interval to 30
2014-02-15 15:46:33,213 INFO Setting RFM2Pi | frequency: 8
2014-02-15 15:46:34,219 INFO Setting RFM2Pi | sgroup: 210
2014-02-15 15:46:35,223 INFO Setting RFM2Pi | baseid: 15
2014-02-15 15:46:36,228 INFO Creating listener Socket
2014-02-15 15:46:36,231 DEBUG Opening socket on port 50011
2014-02-15 15:46:36,235 ERROR [Errno 98] Address already in use
2014-02-15 15:46:36,239 ERROR Could not open port 50011
2014-02-15 15:46:36,264 DEBUG Broadcasting time: 15:46
2014-02-15 15:46:36,470 INFO Serial RX: -> 4 b
2014-02-15 15:47:05,791 INFO Serial RX: > 0s
2014-02-15 15:47:06,419 DEBUG Broadcasting time: 15:47
2014-02-15 15:47:06,625 INFO Serial RX: -> 4 b
Everytime I activate the line Assign inputs to a node group on the input help screen the timecouters starting in green from zero but getting red afters 30 seconds.
Is it so that on the on the input screen the node have the same ID as from the EmonTX board?
Can there be more than one EmonTX board used at the same time?
Re: feeds stops after 30 seconds
Lets try to take this a step at a time...
The outputs from your raspberrypi doesn't show any data coming from your EmonTX so
You don't say what version of the EmonTX you have. Is it version 2 or version 3 ( images in the shop if you can't remember), How many clamps are you using?
Your EmonTX, are they the figures you see with the emonTX installed? As the data "3 3 1 3342" doesn't show you suing any power. Make sure you have pushed the clamps all the way in until they click.
Re: feeds stops after 30 seconds
Thanks again for your help.
I using the EmonTX V2. The sript is EmonTx_CT123
I put in 3 CT clamps and running.
This is a copy from the Arduino serial monitor
emonTX CT123 example
OpenEnergyMonitor.org
Node: 16 Freq: 868Mhz Network: 210
12926 12933 12846 3342
806<PHONE_NUMBER>
809<PHONE_NUMBER>
806<PHONE_NUMBER>
809<PHONE_NUMBER>
810<PHONE_NUMBER>
emonTX CT123 example
OpenEnergyMonitor.org
Node: 16 Freq: 868Mhz Network: 210
12951 12969 12858 3342
809<PHONE_NUMBER>
807<PHONE_NUMBER>
803<PHONE_NUMBER>
811<PHONE_NUMBER>
800<PHONE_NUMBER>
emonTX CT123 example
OpenEnergyMonitor.org
Node: 16 Freq: 868Mhz Network: 210
12905 12934 12842 3342
803<PHONE_NUMBER>
807<PHONE_NUMBER>
805<PHONE_NUMBER>
811<PHONE_NUMBER>
805<PHONE_NUMBER>
emonTX CT123 example
OpenEnergyMonitor.org
Node: 16 Freq: 868Mhz Network: 210
12954 12958 12857 3342
810<PHONE_NUMBER>
806<PHONE_NUMBER>
812<PHONE_NUMBER>
808<PHONE_NUMBER>
Re: feeds stops after 30 seconds
The emontx resetting like that is usually due to the watchdog timing out, so for some reason it is getting stuck somewhere, Its probably getting stuck on sending the data via the rfm12 which happens for the first time 5s after power up once the filters have settled.
That your also not receiving anything on your raspberrypi suggests that its a problem with the rfm12b, try going over the solder joints again it might be a dry joint? or take a picture and share here if your still not sure?
Re: feeds stops after 30 seconds
Wauw, I could kiss you all for this.
I re soldered the rfm12 module on the EmonTx and now both are sending. Great.
Because I have 2 EmonTx I did not expecting something like this.
Many thanks for the helping. I’m trying to getting to work over 6 Mons.
Thanks again.


Copyright © 2014 OpenSocial Foundation. This document is available under the W3C Document License. See the W3C Intellectual Rights Notice and Legal Disclaimers for additional information.
OpenSocial 2.5.1 provides a basis for building portable social applications. The OpenSocial Foundation would like to provide portions of it for consideration in the W3C Social WG. What follows is a revised version of the Activity Streams API and Embedded Experiences portions of the OpenSocial 2.5.1 specification. The revisions have been made to focus on the content we would like to move forward with in the W3C Social Web WG. Where there are concepts that are introduced that are not defined within this document we link to the definition of those terms in the published in other documents such as the OpenSocial 2.5.1 specification.
This section describes the status of this document at the time of its publication. Other documents may supersede this document. A list of current W3C publications can be found in the W3C technical reports index at http://www.w3.org/TR/.
By publishing this document, W3C acknowledges that the Submitting Members have made a formal Submission request to W3C for discussion. Publication of this document by W3C indicates no endorsement of its content by W3C, nor that W3C has, is, or will be allocating any resources to the issues addressed by it. This document is not the product of a chartered W3C group, but is published as potential input to the W3C Process. Publication of acknowledged Member Submissions at the W3C site is one of the benefits of W3C Membership. Please consult the requirements associated with Member Submissions of section 3.3 of the W3C Patent Policy. Please consult the complete list of acknowledged W3C Member Submissions.
Domain name examples use RFC2606 [RFC2606].
In the terms of this member submission, we are using the term App as a blanket term for any packaged web application component. This definition is intended to be broad enough to encompass OpenSocial Gadgets, W3C Packaged Web Apps (Widgets), and any future web application component models. Note that the OpenSocial Foundation seeks to pursue an updated OpenSocial Gadget model based on W3C Web Components in the near future.
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in RFC2119 [RFC2119].
An implementation is not compliant if it fails to satisfy one or more of the MUST or REQUIRED level requirements for the protocols it implements.
The grammatical rules in this document are to be interpreted as described in Augmented Backus-Naur Form [RFC2234]. The following constructs are introduced in this document to augment RFC2234:
Elements enclosed in braces (squiggly brackets) are treated as a single, UNORDERED element. Its contents may occur in any order. Hence:
{elem foo} barwould match (elem foo bar) and (foo elem bar).
NOTE: Specifying alternatives is quite different from specifying set grouping. Alternatives indicate the matching of exactly one (sub-)rule out of the total grouping. The set mechanism indicates the matching of a string which contains all of the elements within the group; however the elements may occur in any order.
( *LWS element *( *LWS "," *LWS element ))can be shown as
1#elementWherever this construct is used, null elements are allowed, but do not contribute to the count of elements present. That is, "(element), , (element) " is permitted, but counts as only two elements. Therefore, where at least one element is required, at least one non-null element MUST be present. Default values are 0 and infinity so that "#element" allows any number, including zero; "1#element" requires at least one; and "1#2element" allows one or two.
The following rules are used throughout this specification to describe basic parsing constructs. The US-ASCII coded character set is defined by [RFC20]
OCTET = <any 8-bit sequence of data> CHAR = <any US-ASCII character (octets 0 - 127)> UPALPHA = <any US-ASCII uppercase letter "A".."Z"> LOALPHA = <any US-ASCII lowercase letter "a".."z"> ALPHA = UPALPHA / LOALPHA DIGIT = <any US-ASCII digit "0".."9"> CTL = <any US-ASCII control character (octets 0 - 31) and DEL (127)> CR = <US-ASCII CR, carriage return (13)> LF = <US-ASCII LF, linefeed (10)> SP = <US-ASCII SP, space (32)> HT = <US-ASCII HT, horizontal-tab (9)> <"> = <US-ASCII double-quote mark (34)> CRLF = CR LF LWS = [CRLF] 1*( SP / HT ) TEXT = <any OCTET except CTLs, but including LWS> COMMA = <US-ASCII comma (44)>
OpenSocial defines several services for providing access to a container's data. Individual services are required or optional as indicated in the sections that follow.
Containers MUST support the Activity Streams Service. Individual operations are required or optional as indicated in the sections that follow. Containers MUST use the following values to define the Activity Streams Service:
XRDS-Type = "http://ns.opensocial.org/2008/opensocial/activitystreams"
The Get method supports multiple queries, including requests for one or more Activity Stream entries and what fields are available.
Containers MUST support requests to the Activity Stream service. Requests and responses for retrieving Activity Stream entries use the following values:
REST-HTTP-Method = "GET" REST-URI-Fragment = "/activitystreams/" User-Id "/" Group-Id [ "/" App-Id [ "/" (Activity-Id / Array<Activity-Id>) ] ] REST-Query-Parameters = ENCODE-REST-PARAMETERS(GetActivityStreams-Request-Parameters) REST-Request-Payload = null Return-Object = ActivityEntry / Collection<ActivityEntry> Activity-Id = Object-Id
Example GET request:
http://api.example.org/rest/activitystreams/john.doe/@self/@app/object1,object2
A request for a Collection of ActivityEntry objects MUST support the Standard-Request-Parameters, the Collection-Request-Parameters, and the following additional parameters:
| Name | Type | Description |
|---|---|---|
| userId | User-Id or Array<User-Id> | User ID(s) of the person whose activities are to be returned. Defaults to "@me", indicating the currently authenticated user. In the REST protocol, userId is specified in the REST-URI-Fragment, rather than in the REST-Query-Parameters. |
| groupId | Group-Id | The group Id of the group of users whose ActivityEntries are to be returned. Defaults to "@self", which MUST return only the ActivityEntries specified by the userId parameter. In the REST protocol, the groupId is specified in the REST-URI-Fragment, rather than in the REST-Query-Parameters. |
| appId | App-Id | Optional. Specifies that the response should only contain ActivityEntries generated by the given appId. If not included, the container MUST return ActivityEntries created by the currently authenticated application. The "@all" value can be used when the generator of the activity entries of interest is not known or not of interest as filter. In the REST protocol, the appId is specified in the REST-URI-Fragment, rather than in the REST-Query-Parameters. |
| activityId | Array<Object-Id> | Optional. Specifies a list of individual ActivityEntries to include in the response. In the REST protocol, the activityIds are specified in the REST-URI-Fragment, rather than in the REST-Query-Parameters. |
Example GET request with parameters:
http://api.example.org/rest/activitystreams?userId=john.doe&activityId=object1,object2
Containers MAY support REST requests for supported Activity Stream fields. Requests and responses for retrieving supported Activity Stream fields use the following values:
REST-HTTP-Method = "GET" REST-URI-Fragment = "/activitystreams/@supportedFields" REST-Query-Parameters = null REST-Request-Payload = null Return-Object = Array<String>
Containers MUST support creating an ActivityEntry associated with the currently authenticated application. If successful, the container MUST return the ID of the newly-created ActivityEntry. For details on uploading content associated with an ActivityEntry, see the Content Upload section of [Core-API-Server].
Requests and responses to create an ActivityEntry use the following values:
REST-HTTP-Method = "POST" REST-URI-Fragment = "/activitystreams/" User-Id "/@self" REST-Query-Parameters = null REST-Request-Payload = ActivityEntry Return-Object = ActivityEntry
A request to create an ActivityEntry MUST support the Standard-Request-Parameters, and the following additional parameters:
| Name | Type | Description |
|---|---|---|
| userId | User-Id | User ID of the person to associate the ActivityEntry with. Defaults to "@me", indicating the currently authenticated user. In the REST protocol, userId is specified in the REST-URI-Fragment, rather than in the REST-Query-Parameters. |
| activity | ActivityEntry | The ActivityEntry to associate with the given user. |
Containers MAY support updating an ActivityEntry associated with the currently authenticated application. For details on uploading content associated with an Activity Stream, see the Content Upload section of [Core-API-Server].
Requests and responses to update an ActivityEntry use the following values:
REST-HTTP-Method = "PUT" REST-URI-Fragment = "/activitystreams/" User-Id "/@self" [ "/" Activity-Id ] REST-Query-Parameters = null REST-Request-Payload = ActivityEntry Return-Object = ActivityEntry Activity-Id = Object-Id
A request to update an ActivityEntry MUST support the Standard-Request-Parameters, and the following additional parameters:
| Name | Type | Description |
|---|---|---|
| userId | User-Id | User ID(s) of the person the ActivityEntry is associated with. Defaults to "@me", indicating the currently authenticated user. |
| activity | ActivityEntry | The ActivityEntry to update. Only the 'id' field of the ActivityEntry is required. |
Containers MAY support deleting an ActivityEntry associated with the currently authenticated application. Requests and responses to update an ActivityEntry use the following values:
REST-HTTP-Method = "DELETE" REST-URI-Fragment = "/activitystreams/" User-Id "/@self/" Activity-Id REST-Query-Parameters = null REST-Request-Payload = null Return-Object = null Activity-Id = Object-Id
A request to delete an ActivityEntry MUST support the Standard-Request-Parameters, and the following additional parameters:
| Name | Type | Description |
|---|---|---|
| userId | User-Id | User ID(s) of the person the ActivityEntry is associated with. Defaults to "@me", indicating the currently authenticated user. |
| activityId | string | Identifies the ActivityEntry to delete. |
Example DELETE request with parameters:
http://api.example.org/rest/activitystreams?userId=john.doe&activityId=activity123
Embedded experiences provide a mechanism for embedding Apps and other web-accessible content sources directly into a variety of contexts such as Activity Streams, email messages and Atom feeds. The mechanism works by inserting a small structure of data that includes a reference to the embedded content along with contextual data that a host application (like an OpenSocial Gadget container or a W3C Widget server) would need to render the content appropriately. While some of the concepts and terminology is OpenSocial centric, we do not feel that this approach is necessarily limited in scope to OpenSocial Gadgets as they are defined today.
The Embedded Experience data structure can be serialized as either a JSON object or XML and includes the following properties:
| Property | Description |
|---|---|
| context | If the Embedded Experience is used to embed an App, the "context" field is used to pass data to the App so that it knows exactly which content to render. For instance, an App that displays a person's profile information will need to know which profile to display; a App that displays an album of recent photos will need to know the identity of the album to display. The content of the "context" field is undefined and specific to each individual app definition with one exception: the special property name "opensocial" is reserved for use by the container implementation. The "context" properties JSON object value or XML element structure MUST NOT contain a property named "opensocial". |
| gadget | A URL to an App definition document that defines the App to be embedded. |
| preferredExperience | An optional collection of properties that describe the preferred way the creator of the embedded experience would like containers to render the content. |
| previewImage |
An optional URI to an image that can be used as a preview for the embedded content. This property accepts URL data scheme [RFC2397] to specify the image as Base64-encoded embedded data. |
| url | A URL to a web page that allows virtually any web-accessible resource to be used as an Embedded Experience. |
The "url" and "gadget" properties each reference content that is to be embedded. At least one of these properties MUST be specified. When both properties are used within the Embedded Experience, the decision about which to render is left to the container.
When serialized as JSON, the embedded experience take the form of a single JSON Object with four distinct properties: "context", "gadget", "previewImage" and "url". Additional extension properties MAY be included in the JSON object.
For instance, a simple JSON Embedded Experience that references an App:
{ "gadget" : "http://www.example.com/embedded/gadget.xml", "context" : { "title" : "Hello World", "id" : 123 }, "previewImage" : "http://www.example.com/embedded/123.png" }
When serialized as XML, it is expressed in the form of a root element <embed> containing four child elements, the order of which is considered insignificant: <context>, <gadget>, <previewImage>, and <url>. Additional extension elements and attributes MAY be included in the XML object.
For example,
<embed> <gadget>http://www.example.com/embedded/gadget.xml</gadget> <context> <title>Hello World</title> <id>123</id> </context> <previewImage>http://www.example.com/embedded/123.png</previewImage> </embed>
Note that no XML namespace is currently declared for the XML serialization. This means that special care must be taken when including an XML embedded experience into another type of XML document. For example, the following shows an XML embedded experience within a partial Atom Entry Document. Note the addition of xmlns="" on the embed element in order to "undeclare" the in-scope default XML namespace.
<entry xmlns="http://www.w3.org/2005/Atom"> <id>http://example.org/entries/1</id> ... <embed xmlns=""> <gadget>http://www.example.com/embedded/gadget.xml</gadget> <context> <title>Hello World</title> <id>123</id> </context> <previewImage>http://www.example.com/embedded/123.png</previewImage> </embed> </entry>
A simple URL embedded experience using the JSON serialization:
{ "url" : "http://www.example.org/embed/123.html" }
The same URL embedded experience using the XML serialization:
<embed> <url>http://www.example.org/embed/123.html</url> </embed>
An embedded experience that specifies both a gadget and URL serialized as JSON:
{ "gadget" : "http://www.example.com/embedded/gadget.xml", "url" : "http://www.example.org/embed/123.html", "context" : { "title" : "Hello World", "id" : 123 }, "previewImage" : "http://www.example.com/embedded/123.png" }
The same embedded experience serialized as XML:
<embed> <gadget>http://www.example.com/embedded/gadget.xml</gadget> <url>http://www.example.org/embed/123.html</url> <context> <title>Hello World</title> <id>123</id> </context> <previewImage>http://www.example.com/embedded/123.png</previewImage> </embed>
When rendering an App as an embedded experience, the container will look within the embedded experience data model and see if there is a "preferred experience" (Appendix C.15.3) object containing a "target" property. If the target object (Appendix C.15.3.2) type is equal to "gadget" and there is a view property specified, the container will try and render the value of the "view" property. If there is no "view" property in the target object or there is no target object, or if there is no preferred experience in the data model, the container will render a view called "embedded". If an "embedded" view or the view specified within the target object of the embedded experience data model is not found within the App definition, the container SHOULD render the App's default view.
An embedded experience App has the option of requiring some contextual information in order to render itself. By abstracting the data from the gadget itself, App developers can develop generalized Apps that can be used for all embedded experiences of a specific type. For example, a gadget developed to display videos can be built so that the id of the video is contained and extracted from the embedded experience's "context" property.
{ "gadget" : "http://example.org/embedded/video.xml", "context" : { "video-id" : "abc123" } }
Apps that are written to support embedded experiences MUST require the "embedded-experiences" feature within their App definition in order to access the context.
For OpenSocial Gadgets, the contextual data is stored within the data context (Section 14.1 of Core Gadget specification) object for the gadget. The key, "org.opensocial.ee.context", is used to access the context. OpenSocial Gadgets can add a listener on the data context object for this key, or it may retrieve the key's value by using the data context APIs.
Example: The OpenSocial Gadget below registers a listener with the data context to retrieve any context data included with the embedded experience:
<Module> <ModulePrefs title="Embedded Experiences Test" description="Tests the embedded experiences APIs."> <Require feature="embedded-experiences"></Require> </ModulePrefs> <Content type="html" view="embedded"> <![CDATA[

 ]]> </Content> </Module>
Instead of using the data context APIs to get the embedded experiences context you may choose to use the gadgets.ee.registerContextListener (Appendix C.15.7.1) API in order to lessen the amount of code you need to write. The above OpenSocial Gadget example can be rewritten to use the registerContextListener API:
<Module> <ModulePrefs title="Embedded Experiences Test" description="Tests the embedded experiences APIs."> <Require feature="embedded-experiences"></Require> </ModulePrefs> <Content type="html" view="embedded"> <![CDATA[

 ]]> </Content> </Module>
While the contextual data associated with the "org.opensocial.ee.context" key will generally originate from the information provided by the "context" property within the Embedded Experience document, containers are free to insert additional, container specific contexual data into the object. For example, a container might wish to communicate information about the type of parent object within which the Embedded Experience information was received. If the "context" property of the embedded experience document is not an object than containers SHOULD NOT add any additional information to the "context" property.
If such additional information is provided, the object associated with the "org.opensocial.ee.context" key MUST have an additional "openSocial" property.
Containers MAY use the "openSocial" property to communicate additional information about the object containing the embedded experience being rendered. This information should be added to the "associatedContext" property and MUST contain the following properties:
| Property | Description |
|---|---|
| id | The id of the OpenSocial Data object containing the embedded experience. The type of id will depend on the type of OpenSocial Data object containing the embedded experience. |
| type | The type of OpenSocial Data object containing the embedded experience. |
The following is an example of what the embedded experience data model looks like if the container adds the required fields of the "associatedContext" object.
{ "gadget" : "http://example.org/AlbumViewer.xml", "context" : { "albumName": "Germany 2009", "photoUrls": [ "http://examplephotos.com/3495/3925132517_5959dac775_t.jpg", "http://examplephotos.com/3629/3394799776_47676abb46_t.jpg", "http://examplephotos.com/4009/4413640211_715d924d9b_t.jpg", "http://examplephotos.com/2340/3528537244_d2fb037aba_t.jpg", "http://examplephotos.com/36/98407782_9c4c5866d1_t.jpg", "http://examplephotos.com/48/180544479_bb0d0f6559_t.jpg", "http://examplephotos.com/2668/3858018351_1e7b73c0b7_t.jpg" ], "openSocial" : { "associatedContext" : { "id" : "container.com:123abc", "type" : "opensocial.ActivityEntry" } } } }
Note: As stated above, everything inside the "openSocial" property of the above example was added by the container.
In addition to the "id" and the "type" properties, containers MAY add an additional property to the associated context called "objectReference". If present, the "objectReference" property will contain the JSON representation of the OpenSocial Data object containing the embedded experience.
| Property | Description |
|---|---|
| objectReference | The JSON representation of the OpenSocial Data object containing the embedded experience. This OpenSocial Data object MUST contain the complete embedded experience data model. |
The following is an example of what the embedded experience data model would look like if the container added the required and optional fields of the "associatedContext" object.
{ "gadget" : "http://example.org/AlbumViewer.xml", "context" : { "albumName": "Germany 2009", "photoUrls": [ "http://examplephotos.com/3495/3925132517_5959dac775_t.jpg", "http://examplephotos.com/3629/3394799776_47676abb46_t.jpg", "http://examplephotos.com/4009/4413640211_715d924d9b_t.jpg", "http://examplephotos.com/2340/3528537244_d2fb037aba_t.jpg", "http://examplephotos.com/36/98407782_9c4c5866d1_t.jpg", "http://examplephotos.com/48/180544479_bb0d0f6559_t.jpg", "http://examplephotos.com/2668/3858018351_1e7b73c0b7_t.jpg" ], "openSocial" : { "associatedContext" : { "id" : "container.com:123abc", "type" : "opensocial.ActivityEntry", "objectReference" : { "postedTime": "2011-02-10T15:04:55Z", "actor": { "objectType" : "person", "id": "tag:example.org,2011:martin", "displayName": "Martin Smith" }, "verb": "post", "object" : { "objectType":"collection", "objectTypes":["image"] "id": "http://example.org/albums/germany-2009", "url": "http://example.org/albums/germany-2009", }, "openSocial" : { "embed" : { "gadget" : "http://example.org/AlbumViewer.xml", "context" : { "albumName": "Germany 2009", "photoUrls": [ "http://examplephotos.com/3495/3925132517_5959dac775_t.jpg", "http://examplephotos.com/3629/3394799776_47676abb46_t.jpg", "http://examplephotos.com/4009/4413640211_715d924d9b_t.jpg", "http://examplephotos.com/2340/3528537244_d2fb037aba_t.jpg", "http://examplephotos.com/36/98407782_9c4c5866d1_t.jpg", "http://examplephotos.com/48/180544479_bb0d0f6559_t.jpg", "http://examplephotos.com/2668/3858018351_1e7b73c0b7_t.jpg" ] } } } } } } } }
The following example illustrates how this additional context information is accessed:
function myCallback(key) { var context = opensocial.data.getDataContext().getDataSet(key); var video_id = context['albumName']; var associatedContext = context.openSocial.associatedContext; var ac_id = associatedContext.id; var ac_type = associatedContext.type; //The container MAY also add an object reference var obj_ref = associatedContext.objectReference if(typeof obj_ref !== 'undefined') { //Do something with the object reference } // ... } function initData() { opensocial.data.getDataContext().registerListener( 'org.opensocial.ee.context', myCallback); } gadgets.util.registerOnLoadHandler(initData);
Specific container implementations are free to insert any additional information they wish into the and "openSocial" object values. The interpretation and use of any such information is considered out of the scope of this specification.
While the container retains control over deciding exactly how an embedded experience is processed and rendered, there are situations where the creator of the embedded experience might wish to provide clues to the container as to how it would prefer the content to be displayed. These clues are included within the Embedded Experience using the "preferredExperience" property.
The following illustrates a basic example serialized as JSON:
{ "gadget" : "http://www.example.com/embedded/gadget.xml", "url" : "http://www.example.com/foo/bar.html", "context" : { "title" : "Hello World", "id" : 123 }, "previewImage" : "http://www.example.com/embedded/123.png", "preferredExperience" : { "target" : { "type" : "gadget", "view" : "my-ee-view" }, "display" : { "type" : "text" } }
And the same example using the alternative XML serialization:
<embed> <gadget>http://www.example.com/embedded/gadget.xml</gadget> <url>http://www.example.com/foo/bar.html</url> <context> <title>Hello World</title> <id>123</id> </context> <previewImage>http://www.example.com/embedded/123.png</previewImage> <preferredExperience> <target> <type>gadget</type> <view>my-ee-view</view> </target> <display> <type>text</type> </display> </preferredExperience> </embed>
In this example, we have an embedded experience serialized as JSON. The structure defines both a "url" and a "gadget" property, both of which can be used by the container to display embedded content. Typically, the decision of which to display when the embedded experience is rendered is up to the container. The "preferredExperience.target" property allows the creator of the embedded experience to indicate that it would prefer the container to use the "gadget" property for rendering, and specifically that the "my-ee-view" view within that App be used. The "preferredExperience.display" property indicates that rather than simply displaying the App automatically, the embedded experience's creator would rather the container initially display a hyperlink that, when clicked, causes the App to be displayed.
| Property | Description |
|---|---|
| display | Describes preferences for how the embedded experience should initially be displayed by the container. The "display" property provides the preferred style to container on how it should render the hyperlink to open the embedded experience. The value of the "display" property is an object that contains a required "type" property, the value of which determines what other properties might appear within the object. |
| target | Describes preferences for which type of embedded experience the container should render. For instance, if the embed includes both a "url" and "gadget" property, the "target" is used to specify which is preferred. The value of the "target" property is an object that contains a required "type" property, the value of which determines what other properties might appear within the object. |
This specification currently defines two possible values for the required "type" property on the display object: "text", "image". Each of which are illustrated below.
Display using a hyperlink:
{ "gadget" : "...", ..., "preferredExperience" : { "target": {...}, "display": { "type" : "text", "label" : "Click on me!", "title" : "Click on this link!" "icon" : "http://mycontainer.com/app/openissue.jpg" } } }
When "type" equals "text", the additional properties on the display object are:
| Property | Description |
|---|---|
| label | A required String that provides the text to display with the hyperlink. |
| title | Optional text to display as the "popup help" or "tooltip" of the hyperlink. |
| icon | The developer MAY provide a URL to an icon that can be used to decorate the text. For example, an issue management application may provide different icons for open issues than for those that are closed. Because it is expected that embedded experiences flow between containers, the URL MUST be absolute. Developers providing embedded experiences SHOULD ensure that the URL is able to be resolved by any container that will encounter the embedded experience. The container makes no assumptions about the size of the icon and MAY resize it to a size appropriate for the display needs. Use of the icon is optional. Depending on how the text is displayed, the container is not required to display the icon. The container MAY choose to display the icon in a manner appropriate to the current rendering of the object that contains the embedded experience. For example, it would be acceptable for the container to display the link in front of the text, or as a tool tip. |
Display using the previewImage:
{ "gadget" : "...", ..., "previewImage" : "http://example.org/preview.png", "preferredExperience" : { "target": {...}, "display": { "type" : "image", "altText" : "The alt text", "width" : 100, "height" : 100 } } }
Display using Base64-encoded binary data in the URL data scheme:
{ "gadget" : "...", ..., "previewImage" : "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIA...", "preferredExperience" : { "target": {...}, "display": { "type" : "image", "altText" : "The alt text", "width" : 100, "height" : 100 } } }
When "type" equals "image", the additional properties on the display object are:
| Property | Description |
|---|---|
| altText | Specifies optional, alternative text to display if the image cannot be displayed. Equivalent to the HTML image tags alt attribute. |
| height | Specifies the preferred display height of the image in pixels. |
| width | Specifies the preferred display width of the image in pixels. |
Implementations are free to define additional display types, each with their own properties. If a container encounters an embedded experience that uses an unknown or unsupported display type, the container MUST ignore the display preferences.
This specification currently defines two possible values for the type property on the target object: "gadget" and "url". Each of which are illustrated below.
Preferring the App target:
{ "gadget" : "...", "url" : "...", ..., "preferredExperience" : { "target": { "type" : "gadget", "view" : "my-ee-view" }, "display": { ... } } }
Note that the preferred experience target's "type" property is only required if the preferred target is not obvious within the embedded experience. For instance, if the embedded experience only defines an IRI value for the "gadget" property, then the preferred target type is "gadget". However, if both the "url" and "gadget" properties are specified, as in the example above, the target type in the preferred experience MUST be specified. Containers MUST ignore the preferred experience if the target type value does not match the options specified within the Embedded Experience (e.g. target type specifies "url" but only a "gadget" IRI is provided, etc).
When "type" equals "gadget", the additional properties on the target object are:
| Property | Description |
|---|---|
| view | The preferred App view to render. If not specified, the value "embedded" is assumed. |
| viewTarget | Specifies where the container SHOULD render the view. Possible values are "TAB", "DIALOG", "MODALDIALOG", "FLOAT", and "SIDEBAR". |
Preferring the url target:
{ "gadget" : "...", "url" : "...", ..., "preferredExperience" : { "target": { "type" : "url", "viewTarget" : "_new" }, "display": { ... } } }
When "type" equals "url", the additional properties on the target object are:
| Property | Description |
|---|---|
| viewTarget | When specifying a URL, rather than being forced to render in an embedded view, the developer may wish to indicate to the container that the page be opened in a new browser window. In this case, the target properties for a URL match those that are defined by the HTML spec, e.g. "_blank". |
Implementations are free to define additional target types, each with their own properties. If a container encounters an embedded experience that uses an unknown or unsupported target type, the container MUST ignore the target preferences.
Embedded experiences allow content to be rendered on the page that user has not necessarily requested, therefore it needs to be secured. The container SHOULD only ever render content that the user has previously approved. This specification does not dictate how secure rendering of embedded experiences is to be performed.
Embedded experiences can be used within an Activity Streams document in order to provide a more interactive experience. Whereas the core properties of the Activity provide a textual description of the event, an included embedded experience can provide a direct representation of the object involved.
For instance, if a user uploads a collection of photos and creates a new photo album, an embedded experience can be used within the activity to provide a representation of the album itself:
{ "postedTime": "2011-02-10T15:04:55Z", "actor": { "objectType" : "person", "id": "tag:example.org,2011:martin", "displayName": "Martin Smith" }, "verb": "post", "object" : { "objectType":"collection", "objectTypes":["image"] "id": "http://example.org/albums/germany-2009", "url": "http://example.org/albums/germany-2009", }, "openSocial" : { "embed" : { "gadget" : "http://example.org/AlbumViewer.xml", "context" : { "albumName": "Germany 2009", "photoUrls": [ "http://examplephotos.com/3495/3925132517_5959dac775_t.jpg", "http://examplephotos.com/3629/3394799776_47676abb46_t.jpg", "http://examplephotos.com/4009/4413640211_715d924d9b_t.jpg", "http://examplephotos.com/2340/3528537244_d2fb037aba_t.jpg", "http://examplephotos.com/36/98407782_9c4c5866d1_t.jpg", "http://examplephotos.com/48/180544479_bb0d0f6559_t.jpg", "http://examplephotos.com/2668/3858018351_1e7b73c0b7_t.jpg" ] } } } }
As illustrated in the example, when included within an activity, the embedded experience MUST appear as the value of the "embed" property as a child of the "openSocial" property.
Numerous services send email notifications to your inbox in order to let you know something took place that you may be interested in. Most of the time however these notifications do not provide much useful information beyond a link back to the service's website. By leveraging embedded experiences, services can send an embedded representation of the object the notification is about, and allow the user to take action on the notification directly from within an embedded experiences enabled email client.
Embedded experiences serialized as either JSON or XML can be embedded Multipart MIME encoded email messages. Such email messages MUST utilize the "multipart/alternative" MIME variant and MUST contain at least two MIME parts -- one containing regular content of the email message encoded as text/html content, and another containing the embedded experience content using either the "application/embed+json" or "application/embed+xml" MIME media type, respectively representing the JSON and XML serializations. Additional MIME parts MAY be included
For instance,
From<EMAIL_ADDRESS>To<EMAIL_ADDRESS>Subject: Social Network: Mary Has Commented On Your Status MIME-Version: 1.0 Content-Type: multipart/alternative; boundary="XXXXboundary text" Mary has commented on your status. --XXXXboundary text Content-Type: text/plain Mary has commented on your status. --XXXXboundary text Content-Type: text/html    --XXXXboundary text Content-Type: application/embed+json { "gadget" : "http://www.socialnetwork.com/embedded/commentgadget.xml", "context" : 123 }
<static> gadgets.registerContextListener(listener)
Description: Registers a function which will be called when the embedded experience App receives its context.
Parameters:
| Name | Type | Description |
|---|---|---|
| listener | Function | A function that will be called whenever the embedded experience context is set for this App. The function should take one parameter which is a JSON object representing the embedded experience context from the App. See the embedded experiences data model description (Appendix C.15) for more information on the context object. |
OpenSocial Gadget Example:


This is page A
Go to child page B
Target 1
Target 2
pushState
pushState (invalid)
Test Target
Test Target 2
Replace with page c


Apprenticeships as a Competitive Advantage
A business that chooses to train knowledge workers in whatever domain is in demand is likely to find that at the end of the day they have a competitive advantage. I think that you could start a small business today based solely on this principle and be a leader in your field within five years.
I recently read Why Good People Can’t Get Jobs a short book by Peter Cappelli, and found his argument incredibly compelling.1 For a variety of risk-averse reasons companies today make a practice of not filling job openings unless they have the perfect candidate. In the past, to fill a position which required special knowledge some companies would train promising candidates, but the nature of the jobs marketplace in the last few decades has made them overly-cautious of investing in training programs as they fear their employees will walk away after getting training.
For instance, a business that chooses to hire non-programmers and teach them to program will have a competitive advantage in their field. For this reason, based solely on the fact that LivingSocial started an apprenticeship program, I would place money on LivingSocial doing better than GroupOn in the next few years. LivingSocial recognized that without an influx of developers they wouldn’t be able to reach future business goals, and that it is cheaper to train devs than to (continually) recruit them.
I wonder if a web development consultancy cooperative could be formed based off of this insight. If you had a group of half experienced devs and half less experienced but dedicated trainees pairing together, you might find diamonds in the rough rather than paying market rates for diamonds. Of course, this sort of idea could be applied to any sort of business rooted in knowledge work, which is all of them.
That’s an Amazon Affiliate link. The book was short, but this interview with the author is shorter and covers the key points. ↩


List of Projects
-
X
- High End Sound With Low Visual Impact
- Multiple Venue Campus
- Volunteer Friendly Digital Console
- Church with Networked Cat5 Control
- 7,000 Seats on Three Levels
- Church with a Tight Budget
- NEXO 7.1 Surround Sound
- Dual Purpose Worship / Concert Space
- State of the Art Worship Center
- Worship Center Makeover
- Atrium Cafe Sound Design
- High Performance Sound System with Low Visual Impact
High End Sound With Low Visual Impact
Tulalip Casino Resort, Tulalip, Washington
The Destinations Lounge at Tulalip Casino Resort in Tulalip, Washington required a simple, easy to operate system with uniform, high quality sound. To maintain the atmosphere in the lounge the sound system also needed to have a very low visual impact.
- ✔ High end sound
- ✔ Uniform stereo at every seat
- ✔ Very low visual impact
- ✔ Simple easy operation
The challenge on this project was to provide superior, uniform high end sound throughout the space with minimal visual impact and without the need for an experienced audio engineer to run the system. Fortunately, The Yamaha Commercial Installed Solutions (CIS) product line was created specifically for situations like this where there may not be an experienced audio operator running the system.
"We knew that this system needed to be high end and sound crystal clear at all listening levels, while maintaining the aesthetics of the space," states Aaron Jackson, Audio Visual Technical Engineer, at Tulalip Casino.
The wide dispersion of the Yamaha CIS speakers allowed this to be accomplished without cluttering the ceiling with a lot of speakers. Surface mounted speakers were used for the entry and placed between suspended ceiling panels. The Yamaha speakers are compact enough to be completely hidden, offering pleasing sound with a very low visual impact.
"Our Destinations Lounge system sounds amazing through the entire spectrum and has beautifully uniform coverage in every seat. We have come to expect that when we buy a Yamaha product; it’s going to work, it’s going to look great, and it’s going to sound amazing. Bottom line for us is, Yamaha has struck the perfect balance of price and quality." Aaron Jackson, Audio Visual Technical Engineer, at Tulalip Casino.
Equipment Installed
Close Article . . .
Multiple Venue Campus
Oak Hills Church, San Antonio, Texas
200, 500, 1880 Seats
Does one size fit all? Of course not! That is why Clarity Media Group designed custom solutions for each of the venues at Oak Hills.
- ✔ 200 seat space
- ✔ 1800 seat multi-purpose room
- ✔ 500 seat with uniform sound challenge
1800 Seat Multi-purpose Room -Crown Ridge (2008)
The challenge on this project was that because the room was multi-propose the acoustics were far from ideal. However, with careful design, computer modeling, and the NEXO 1230 speakers Clarity Media Group was able to design a system that resulted in a +/-1db sound level throughout the space.
Equipment Installed
- (12) NEXO 1210
- (2) CD-18 Subs
- (2) PS-15
- Yamaha T5N amps with digital processing done by the NEXO NX-242
500 Seat Uniform SPL -North Central Campus (2010)
The challenge on this project was similar to the challenge with the multi-purpose room - how to get as uniform SPL as possible.
Equipment Installed
- (1) Yamaha LS9-32
- (1) NEXO PS-10
- (1) NEXO LS500 Sub
- (1) Yamaha CM10 Monitors
- (1) Aviom Personal Monitor System
- (1) Lighting System-a Jands Vista M1 was used to control all the optipars and LED lighting fixtures
200 Seat Space- Crown Ridge Auxilary Room (2010)
The challenge was to come up with a sound system appropriate to a small space. Previously the room just had some speakers mounted on a pole. The new equipment speakers are Toa HX-5.
Close Article . . .
Volunteer Friendly Digital Console
Elim Romanian Church of God, Hollywood, Florida
Many churches rely almost exclusively on volunteers to run the sound system including Elim Romanian Church of God Hollywood, Florida. Is it possible to have a state of the art sound system that even volunteers can easily use? Absolutely!
One of the strengths of Clarity Media Group is our long history of mentoring church sound technicians including volunteers. Over the years we have developed a clear understanding of what is reasonable to expect a volunteer to be able to master. With the advent of digital consoles, you can have a standard setup saved so even if everything gets messed up you can always reset it back to a known condition.
Equipment Installed
- (2)NEXO PS-15
- (1)Yamaha LS9-32
Close Article . . .
Church with Networked CAT5 Control
Bethany Romanian Church, Chicago, Illinois:
A complete makeover / upgrade of the system including console, speakers, mics and amps for Bethany Romanian Church in Chicago.
Key Features
- ✔ The monitor speaker system is a combination of Yamaha IF-2108 and IF-2208
- ✔ Using the new MyMix monitoring system, musicians are able to record the practice on a standard SD card and take it home to rehearse the songs playing along with the other instruments.
- ✔ A single piece of Cat5 cable controls 56 input channels and 32 output channels.
- ✔ To provide superior micing of the choir, Audix M1255B high gain choir mics were suspended from the ceiling.
- ✔ To blend in with the background, all the speakers were custom ordered in white.
Equipment Installed
- (1) Yamaha M7CL-ES console
- (10) NEXO Geo-s805 line array
- (2)NEXO Geo-s830 line array
- (2) NEXO CD-12 subs
- (2) NEXO PS-10
- (4) NEXO PS-8
- The main PA was powered by (1)NEXO 4x4 amp and (1)NEXO 4x1 amp
- (20) Audix M1255Bmics
- (13) channels Shur SLX Wireless
Close Article . . .
7000 Seats on Three Levels
Alamo Dome Illusions Theatre, San Antonio, Texas
The Alamo Dome Illusions Theatre presented a unique challenge: how can you cover a seating area of 7,000 people on three levels with high fidelity and uniform sound?
The answer is a NEXO line array.
The system consists of:
- (10)NEXO Geo S-1210
- (2)NEXO Geo S-1230
- (8)PS-10
- (3)NEXO 4x4 amps
The result is a system with more than enough power to handle just about any performance without any seat being too loud or too soft.
Close Article . . .
Church With a Tight Budget
300 Seats
Just because you have a limited budget does not rule out getting a high quality sound system.
Clarity Media Group was able to design a first rate sound system for the 300 seat First United Methodist Church in Kerrville, Texas that stayed well within their budget.
Equipment Installed
- (1) Yamaha LS9-32 Console
- (2) NEXO PS-10
- (2) NEXO LS-600 Subs
- Powered by one NEXO 4x1
NEXO 7.1 Surround Sound
480 Seats
The Tulalip Resort Casino in Tulalip, Washington wanted to upgrade their 480-seat Canoes Cabaret nightly entertainment lounge to a full 7.1 surround sound system and a NEXO line array system.
Clarity Media Group was able to simplify the design that had been developed by another vendor which not only reduced the cost but also enhanced signal integrity. Clarity Media Group uses a simplistic and precise approach to design and installation.
"If a component, such as an additional DSP, can be omitted from the signal chain, that will help maintain a more natural sound. Systems that rely on extensive signal processing have a harsher sound which is less pleasing to the ear. We believe that if you design the system correctly in the first place it will not need to be processed at all, resulting in a more natural sound that is very pleasing to the ear."
~Travis Cibolski, co-owner of Clarity Media Group
The modified design developed by Clarity Media Group consisted of:
- (15) NEXO GEO S1210 cabinets - full range boxes
- (2)NEXO RS18 subs flown - one per side in cardioid mode
- (2) NEXO GEO S1210 vertical line arrays for left and right
- horizontal center channel
- (4) individual NEXO GEO S1230 cabinets-for the surround channels
- The system is powered by NEXO NXAMP 4x4s
One of the challenges with this design for this space is that the bartenders in the back of the lounge had trouble hearing people order because of the volume level with the previous system. Careful design and placement of the GEO S12 cabinets made it possible to control and manipulate the SPL throughout the room resulting in a uniform sound level in the main area while ate the same time dropping the SPL 3db in the bar area. Needless to say, the bartenders have been very happy with the change.
Another challenge was that the Casino management wanted to avoid having too much sub bass in the main entrance area. To achieve this, Clarity Media Group used the cardioid qualities of the RS18 to steer sub bass away from the entrance while providing powerful bass response in the listening area.
Presently the room does not utilize a monitor console. However, because all of the components are networked via EtherSound including amps, it will be very easy to add a monitor desk down the road. One additional feature is that you can control the entire system directly from an iPad.
The upgrade the Casino wanted included not only sound but video as well. The new design by Clarity Media Group included four Dalite screens systems. The main screen is a 1.5 gain, 18 ft wide tensioned electrol. The projectors are all Eiki 1080p projectors and just like the sound system they can be controlled via an iPad. With the new enhanced screens and projectors, the casino has been able to add sporting events with different games on various screens, increasing the usability of the space which has increased patronage and revenues.
Close Article . . .
Dual Purpose Worship | Concert Space
1500 Seats
Christ The King Church - Bellingham, Washington upgraded their speakers and amps. The very low ceiling height presented a real challenge in design to get a very uniform sound sipersion across the entire room. The new system is volunteer friendly but has all the power and features for professional concerts.
Key Features
- ✔ Left and right line arrays to provide uniform sound without visually detracting from the stage
- ✔ Center center cluster is tucked away very discretely above the pastor’s podium position
- ✔ Despite a low trim height the NEXO system delivers uniform, transparent sound to all areas, and with full bandwidth.
- ✔ Volunteer friendly digital console (existing customer console)
Equipment Installed
- Yamaha M7CL-48 digital console at front of house (existing)
- (8) NEXO GEO S1210 boxes per side
- (4) NEXO GEO S1230 boxes for the center cluster
- (4) NEXO RS18 Ray Sub cabinets flown, two per side in cardioid mode
- The main PA is powered by (2) NEXO 4x4 amps and (1) NEXO 4x1 amp
Close Article . . .
State of the Art Worship Center
800 Seats
Sonrise Church in Hillsboro Oregon needed a sound system to go with their new state of the art worship center. Clarity Media Group designed a cutting edge audio package featuring the new Nexo Geo S12 speaker system.
The newly released Geo S12 represented the latest innovation in speakers from Nexo. For amazingly clean and accurate low frequencies, the design includes a pair of Nexo GeoSub Cardoid Subwoofers which create amazingly clean and accurate low frequency while eliminating much of the sub bass directed toward the stage. The result is a room with extremely consistent sound throughout the space as well as excellent clarity and fidelity.
Also included with the package was a Yamaha M7CL-48 touch screen mixing console, new Yamaha Tn series power amps which provide excellent efficiency, Yamaha IF2108 series monitors, and a complete compliment of Aviom personal mixers for the band.
Close Article . . .
Worship Center Makeover
350 Seats
Agape Bible Church in Portland Oregon contacted Clarity Media Group to do a retrofit design for their new worship space. The church wanted a state of the art solution which worked with the existing structure of the church. The scope of work included sound, video projection, lighting, and Imag (image magnification).
Clarity delivered a streamlined, state of the art facility which went well beyond the churches expectations. Included in the design was a Nexo GeoS line array system which included CD12 cardioid directional subwoofers, and a Yamaha LS9-32 mixing console. Also included was a high power, wide screen projection system complemented by Sony high definition cameras and a complete live video suite.
"I am very pleased with the work of Clarity Media. They have provided exceptional service and support whenever we needed it. Clarity Media has proven many times over that they are knowledgeable with all those different applications and their professionalism has exceeded my expectations."
~Ezekial Trifan, Music Director, Agape Bible Chuch, Portland, OR
Close Article . . .
Atrium Cafe Sound Design
Rolling Hills Community Church in Tualatin, Oregon needed an effective and flexible audio/visual package for the church's newly added Atrium Cafe. The requirements included creating an atmosphere where people would feel comfortable meeting and chatting during normal business hours.
The sound system also needed to be able to handle higher volume during concerts hosted in the church's near by worship center. All of this needed to be put into a package that did not detract from the visual aspects of the space.
Clarity designed a solution utilizing TOA speakers. The TOA H-1 is a compact and innovative commercial speaker with a modern look which provides the basis of this design. Two Samsung flat displays provide a vivid visual element and the TOA HB-1 subwoofer was used for low frequency enhancement.
Close Article . . .
High Performance Sound System with Low Visual Impact
300 Seats
Bethel Romanian Church of God in Gallatin, Tennessee called upon Clarity Media Group when designing their new worship center. The church needed a high performance sound system that did not detract from the clean lines of the space.
The Nexo PS15 system was decided upon for its compact size, amazing dynamic range and transparent sound quality. Nexo PS15B bass enhancement speakers were added to augment the low frequency response of the system. The whole thing was powered with Yamaha PC9501 amplifiers and processed simply with a Nexo PS15 System Processor.
Close Article . . .


O BROTHER, WHERE ART THOU? A film review by David N. Butterworth Copyright 2000 David N. Butterworth
**1/2 (out of ****)
Fans of the Coen Brothers--they made "Raising Arizona," "Barton Fink," "Fargo," and "The Big Lebowski," among others--are going to eat up their latest film, a Depression-era musical comedy/drama loosely based on Homer's "The Odyssey." Others may be less appreciative, or downright flummoxed. Like those films before it, "O Brother, Where Art Thou?" showcases the Coen's absurdist humor, their amazing ear for dialogue and, mostly, their unrivaled inventiveness. This is not a film you can easily categorize or compartmentalize. It's unpredictable, it's unorthodox, it's occasionally quite funny (but, oddly, not as funny as it should be or, perhaps, thinks it is). And that, my friend, is the overriding problem with the film: it's all a bit too much.  Brilliant has always been a tough act to follow, I suppose. "O Brother, Where Art Thou?" (the title comes from the Preston Sturges film "Sullivan's Travels" and, not surprisingly, the Coen's latest feels like a Sturges comedy for much of the time) follows the trials and tribulations of three chain gang escapees in rural Mississippi, circa 1937. Our heroes are played by George Clooney, John Turturro, and Tim Blake Nelson. Ulysses Everett McGill (Clooney) is the smooth-talking one; he's obsessed with his hair and getting to $1.2 million's worth of buried bank notes before the state troopers catch him, or the dam bursts.  The film, like Homer's lengthy poem, is episodic, with the boys' journey interrupted by various colorful characters. There's a black guitar player they meet at a crossroads who's just sold his soul to the devil (he wasn't using it) and with whom, as The Soggy Bottom Boys, the foursome cut a hit record. There's a one-eyed bible salesman (played by Coen regular John Goodman); a gangster, Babyface Nelson, who prefers to go by George; and a wife (Holly Hunter) with seven kids in tow. In addition, there are three seductive sirens washing clothes in the river; a Governor (Charles Durning) whose campaign is being done-in by a midget; and the Ku Klux Klan. On top of all this, cinematographer Roger Deakins makes this the yellowest film you have ever seen! Nobody has ever accused the Coens of going mainstream, and they're certainly not going to start now. However, like that traveling bluegrass guitarist Ulysses, Pete, and Delmar encounter along the way, "O Brother, Where Art Thou?" seems to be missing just one thing: a soul.
-- David N. Butterworth<EMAIL_ADDRESS>Got beef? Visit "La Movie Boeuf" online at http://members.dca.net/dnb
The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews


<div> How to start coding?
</div>
<div> About us
We are a group of coders that want to help other coders to get coding courses and other products. You can check your code or write any code in HTML, JavaScrpt or css in our website by using our code editor.You can also find some videos for a physical exercises to keep you in a good health and help you to stay active and energetic while you are writting codes or working on your laptop.


--- layout: post date: 2011-12-07 time: "09:00:00" authors: ["Greg Wilson"] title: How to Teach Webcraft and Programming to Free-Range Students tags: ["Education"] ---
I will be running a P2PU course starting in January on teaching free-range learners how to program and build stuff on the web. The blurb is below; anyone who wants to can sign up to follow along or take part (we expect it will require 3-4 hours/week from mid-January to some time in April). I'm not an expert on these subjects by any means, but I've learned a few things from running Software Carpentry that I think are worth sharing, and hope that this course will give me a chance to learn more. If you're interested in teaching scientists how to do things with computers, please come and join us.
How to Teach Webcraft and Programming to Free-Range Students
What do we know about how novices learn webcraft and programming, why do we believe it, and how can we apply that knowledge to free-range learners?
Right now, people all over the world are learning how to write programs and create web sites, but or every one who is doing it in a classroom there are a dozen free-range learners. This group will focus on how we, as mentors, can best help them. Topics will include:


+++ draft = false date = "2008-11-18T15:10:43-02:00" title = "Subversion 1.5 + default instalation Plone 3.1 buildout: no problems here" tags = ["cookbook", "buildout", "Plone"] created = "2008-11-18T15:02:02-02:00" modified = "2008-11-18T15:10:43-02:00" permaLink = "http://play.pixelblaster.ro/blog/archive/2008/11/18/subversion-1-5-default-instalation-plone-3-1-buildout-no-problems-here" author = "Tiberiu Ichim" aliases = [ "/blog/archive/2008/11/18/subversion-1-5-default-instalation-plone-3-1-buildout-no-problems-here" ] +++
I've hit the setuptools + subversion 1.5 problem again with a freshly install Plone 3.1.7 buildout: I've added my egg develop folder in zinstance/src/, I've added the egg in the relevant sections in buildout.cfg, but it wouldn't work because of the incompatibility with the old setuptools version.
The solution is to upgrade the installed setuptools to the latest version. For example, for a standalone Plone installed at /home/tibi/Plone, we have this structure:
/home/tibi/Plone /Python-2.4 /buildout-cache /zinstance
I've changed directory to the Python-2.4 from above and ran:
bin/easy_install -U setuptools
Then I could succesfully run the buildout in the zinstance folder.


iRASPA is a visualization app for material scientists. It is designed from the ground-up for high graphics quality and maximum rendering performance. Using Apple's low-overhead metal API (or OpenGL 4.1 + OpenCL as a fallback for pre-2012 macs), even a mac-air can render many tens of thousand of atoms in high quality at interactive framerates, while on a desktop iMac hundreds of thousands of atoms can be rendered interactively. Special capabilities of iRASPA include: ambient occlusion, adsorption surfaces, creating supercells, primitive transformation, spacegroup detection, editing, picture and movie creation.
Structural visualization is a tool to help users to understand the structural information. However, standard rendering techniques for fluids and crystals fail to produce visual high-level three-dimensional understanding of the structure. Ambient occlusion darkens the crevices in molecules and crystals and dramatically improves the 3-dimensional perception of the structure (see figure below)
Space filling viewing modes more clearly show the available pore-volume. Ball-and-stack viewing is very suitable to highlight connectivity. In the ball-and-stick model, the atoms are represented by spheres, connected by cylinders which represent the bonds. Bonds can be internal or external when they cross periodic boundaries. iRASPA draws the external bonds as solid cylinders that are cut at the border-plane. The colors of the atoms are defined by the selected "color scheme".
It is difficult to determine the connectivity, shape, and size of a channel/cage system just by examining the atomic positions of the framework. iRASPA can visualize energy contour surface and thereby obtain siting information.
iRASPA can perform various symmetry finding operations on crystals, for example automatic spacegroup determination of atomiic structures and finding the primitve cell.
Making great pictures and movies really helps to enhance scientific content of presentations, teaching, and publications. Pictures can be made upto the resolution that the video-card supports, in 8- or 16-bits RGB or CYMK TIFF format. Background options include uniform colors, linear or radial gradients, and images.


eat 'em
Previous orders
Settings
change the font color
change the background color
share your feedback
contribute to the code
donate to support
you have


{% extends "base.html" %} {% block title %}Categories{% endblock %} {% block content %}
Manage the catagories by which you organize your ideas.


We provide you the cure for all your diseases and problems along with friendly suggestions for all our customers.
When you walk into our shop to start your day, we are dedicated to providing you with friendly service, a welcoming atmosphere, and above all else, the cure to all your problems. If you are not satisfied, please let us know and we will do whatever we can to make things right!
Let's get you started
You will not be disappointed


1 March 2015
The Gender Gap
This past week Hillary Clinton made headlines when she publicly criticized the tech industry for its widening gender gap, as it relates to women. Speaking about the industry and its inclusiveness of women at the Watermark Silicon Valley Conference, Clinton remarked, "We're going backward in a field that is supposed to be all about moving forward."
As someone who is just entering the tech industry, I still feel very much like an outsider but from reading articles on the topic and hearing firsthand interviews, one thing seems clear: many women feel disrespected, undervalued, and unwelcome in the current environment that exists.
Below you can find a few resources I consulted in researching this topic. I hope you'll look into them and research the issue of gender equality further for yourself, so you can formulate your own opinion.
- Newsweek - "What Silicon Valley Thinks of Women" by Nina Burleigh
- NPR - "When Women Stopped Coding" by Steve Henn
- The Guardian - "Hillary Clinton Criticizes Silicon Valley's Gender Gap" by Lauren Gambino
- LA Times - "Why Are Women Leaving the Tech Industry in Droves?" by Tracey Lien
- The Guardian - "Silicon Velly is More Flinstones than Jetsons When it Comes to Women" by Elena Favilli
Some of the lowlights I discovered include the fact that in 2014 fewer than 20% of college graduates graduating with bachelor's degrees in computer science were women (NPR). Surprisingly, it turns out this percentage used to be as high as 35% in 1984 but has since seen a steady decline over the years, due in part to a lack of marketing of personal computers to women (NPR). Today, even at seemingly progressive tech companies like Google, Facebook, and Apple; women make up less than 20% of the workforce in technical sectors (LA Times). And female entrepreneurs seeking venture capital funding often have to make pitches at venture capital firms where 96% of the partners are men (Newsweek).
As disappointing as those numbers are, what's perhaps more egregious is the number of women in the tech industry who claim they have been victims of sexual harassment and hostile work environments. Many women feel they have been passed up for promotions strictly because of their gender. And it is common to hear women say they feel underestimated by their male counterparts, and that they feel bound by an indestructible glass ceiling. Add to all that the fact that there still remains a lack of pay equality between women and men across industries, and it seems the tech world is quite opposed to seeing women succeed. As a result, many women in tech decide to leave the field and pursue other careers.
Even at DBC, I've heard my female peers express that the issue of a gender gap is a very real concern of theirs. As a man, it's something I never really thought about prior to hearing their concerns, and I think that's a big part of the problem.
While I don't feel informed enough to tackle all the issues involved in achieving gender equality, I do see a simple place where I, as a man, can start to address the problem. Often, it seems women who vocalize feeling mistreated in the workplace receive a great deal of pushback from their male counterparts. This is unacceptable. If someone expresses to you that they're uncomfortable or feel mistreated, that's the end of the story. There's no need for debate or pushback. You can't tell someone else how to feel. Nor should you. Instead you should accept the concerns they are bringing to your attention and address them so they are no longer an issue. That seems like common sense.
Certainly, the issue is more complex and the suggestion above is not meant to be an end all solution, but rather a small step in the right direction. For me personally, after researching the topic of the gender gap in the tech industry, I am more aware of a serious issue that exists, and I will make sure to be conscious of it as I continue my career development in this industry.
| Prev | Next |


| daemon_list | Utilities for daemonized servers |
| daemon_stop | Utilities for daemonized servers |
| httd | Serve the static files under a directory |
| jekyll | Serve R Markdown based websites |
| make | Serve files under a directory based on GNU Make |
| rmdv1 | Serve R Markdown based websites |
| rmdv2 | Serve R Markdown based websites |
| server_config | Server configurations |
| serve_example | A convenience function to serve examples in this package |
| vign | Serve R Markdown/HTML package vignettes |


<parmname>
The <parmname>
element is used to reference the name of an application
programming interface parameter within the text flow of a topic. This element is part of
the DITA programming domain, a special set of DITA elements designed to document
programming tasks, concepts, and reference information.
Category: Programming elements