Visuallizing data is a necessary step in the data science cycle, but at the end of the day, there are questions that need to be answered through our cutting edge discovery process, we use things like principle component analysis and other statistical methods to tease out answers to the big questions. If you are interested in our Predictions, visit the "Predict" page. If you want to know more about our methods, scroll down!
We used township level census data and Principal Component Analysis (PCA) to create a standardized *development index for comparing townships relative to one another. PCA is a statistical tool used for identifying patterns in data and reducing the dimensions of datasets (number of columns) to a manageable set of features with minimal information loss. Using PCA, we were able to explain 90% of the variance across 73 census features with only 3 enriched features, which is convenient for a 3D data viz. For more information on the algorithm, visit this site. Try rotating and hovering over this viz using your mouse/track pad.
We derived and subsequently applied PCA to 73 census features from the raw township census data that quantify the following township characteristics: Building Material (e.g. hut, bamboo, wood, brick), Building Ownership Status (e.g. owner, renter, government), Communication Assets (e.g. mobile phones, radio, television, landlines), Transportation Assets (e.g. cars, boats, motorcycles, bicycles, carts), Light Sources (hydro, generators, battery, candles, kerosene, electricity), Household Size (1-9), Literacy Rate, Population, and Urban Coverage. The degree to which each feature correlates with each principal component can be expressed with Pearson's Correlation Coefficient. Here’s another good map for exploring sub township level data. Check out the other maps on our Visualize page to discover more.


Lorem ipsum and stuff
Find it under https://github.com/bcersows/html-weather or via bower install --save html-weather.


Methods
loadAndTypeset(document, container, callback)
A helper function which loads MathJax if necessary and typesets any math
elements within the container.
Parameters:
| Name | Type | Description |
|---|---|---|
document |
Document | A Document Object Model. The MathJax Script is included in the section of the HTML document. |
container |
HTMLElement | The element whose math is to be typeset. |
callback |
Callback | A callback to run when the typeset is complete. |
- Source:
loadMathJax(document, callback)
Loads and configures MathJax if necessary.
Parameters:
| Name | Type | Description |
|---|---|---|
document |
Document | A Document Object Model. The MathJax Script is included in the section of the HTML document. |
callback |
Callback | A callback to run when MathJax is loaded. |
- Source:
typesetMath(container, callback)
Typesets any math elements within the element.
Parameters:
| Name | Type | Description |
|---|---|---|
container |
HTMLElement | The element whose math is to be typeset. |
callback |
Callback | A callback to run when the typeset is complete. |
- Source:


MUMFORD (director/writer: Lawrence Kasdan; cinematographer: Ericson Core; editor: Carol Littleton/William Steinkamp; cast: Loren Dean (Mumford), Hope Davis (Sofie Crisp), Jason Lee (Skip Skipperton), Alfre Woodard (Lily), Mary McDonnell (Althea Brockett), Pruitt Taylor Vince (Henry Follett), Zooey Deschanel (Nessa Watkins), Martin Short (Lionel Dillard), David Paymer (Dr. Ernest Delbanco), Jane Adams (Dr. Phyllis Sheeler), Dana Ivey (Mrs. Crisp), Kevin Tighe (Mr. Crisp), Ted Danson (Jeremy Brockett); Runtime: 115; Touchstone Pictures; 1999)
Reviewed by Dennis Schwartz
Another pretentious film from the director Lawrence Kasdan (The Big Chill/ Silverado/ Grand Canyon/Wyatt Earp). I never saw a film of his that wasn't arty-farty. This time he created a comedy/fantasy film about a quack psychologist in a small town who subversively discusses his patient's problems with others.
The film suffers from an interminable case of blandness and exhibits an unwillingness to go beyond its cute little tale to see the dangers of someone who invades another's personal privacy by pretending to be someone he isn't, especially in a critical field such as the mental health one. Instead the film focuses on what a wonderful person Dr. Mumford (Loren Dean) is and how by using common sense there is no need to go to school and train for his profession, as long as he can listen. In other words, the film makes the assumption that anyone with sensitivity could be a psychologist. This film was so weak and misleading in purpose, its story so dry and unconvincing, that it was a chore to just watch it and not give up on its arrogant attitude. It seemed to get stuck on itself and had no movement for the longest period of time.
The film also makes no attempt to show anything about Mumford's character or his inner being, except by telling the mere biographical data a TV news report might tell about someone arrested as an impostor. Mumford remains as bland and unknown by the film's conclusion as he was throughout the film.  This is stupidity glorified beyond a point of belief. There was nothing this film had to say that made any sense, and to top it off, there was no comedy in its attempt to be a screwball comedy. Frank Capra used to make social films like this in the '30s and '40s, but those goody-goody themes have long been played out. If they weren't, they would still be making films like that.
Mumford took the name of the town of Mumford, forged his credentials, and became the new psychologist in this once depressed mill town, which has now recovered thanks to the efforts of a young computer geek named Skip, (Jason Lee), who is worth three billion dollars from his Panda Modem Company, whose company produces 23 percent of the world's modems, where he employs a large percentage of the town.  He ends up living with monks in a remote part of Arizona before coming to Mumford. He rapidly becomes a very popular therapist even to his surprise, and catches the jealousy of the town's two other therapists, Dr. Ernest Delbanco (Paymer) and Dr. Phyllis Sheeler (Jane Adams).
 I found the last vignette particularly phony and disconcerting, since the film has the arrogance to say that her illness is merely psychological, which goes against most evidence of the disease and discredits those who suffer from this very real illness, as they know that its physical nature is very serious, and their treatment requires a competent medical doctor seeing them, not a quack.
Of course, the phony psychologist cures her and the last act of the film, after he helps everyone he comes into contact with, is to confess about his deception.  She is someone who has stopped believing that there is a man around for her, but who is someone with enough sense and strength not to need a shrink. She is the one Skip falls in love with and through Mumford's help they get together.
But before he can tell anyone that he's a fraud, Robert Stack on the TV program Unsolved Mysteries tells his troubled story and asks the public to turn the missing person in.
There was nothing fantastic about this fantasy film, not even the fantasy. It was a film that tried to make you feel good about your problems and tried to show how they would go away if you can just get someone to listen to you: anyone. It was meant to be a likable film like elevator music is meant to be not upsetting, as a sort of universal music of acceptance. In both cases the effort wasn't worth it, by trying to be so bland it had more of a negative effect than if it was trying to say something worthwhile. This was a film made up of phony characters, whose problems were surface deep and were covered in the most superficial of ways. It was hard for me not to see this film as an excuse to justify doing something that is criminal and then explaining that it is OK, look at all those who were helped. If we followed the film's logic, then it would be OK for someone to pretend to be a surgeon, as long as he operated successfully.
REVIEWED ON 10/5/2000 GRADE: D
Dennis Schwartz: "Ozus' World Movie Reviews"
http://www.sover.net/~ozus
<EMAIL_ADDRESS>© ALL RIGHTS RESERVED DENNIS SCHWARTZ
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


SVD recommender system for movies
In this article we will see how it is possible to use python in order to build a SVD based recommender system. Before going further, I want to precise that the goal of this article is not to explain how and why SVD works to make recommendations. This article only aims to show a possible and simple implementation of a SVD based recommender system using Python.
In this example we consider an input file whose each line contains 3 columns (user id, movie id, rating). One important thing is that most of the time, datasets are really sparse when it comes about recommender systems. Most of the examples you’ll find on the internet don’t take advantage of the sparsity of the data. However, in our case we’ll pay attention to use appropriate data structures in order to increase the speed of our program.
Read the dataset
import numpy as np
from scipy.sparse import csr_matrix
#constants defining the dimensions of our User Rating Matrix (URM)
MAX_PID = 37143
MAX_UID = 15375
def readUrm():
urm = np.zeros(shape=(MAX_UID,MAX_PID), dtype=np.float32)
with open('/PathToTrainFile.csv', 'rb') as trainFile:
urmReader = csv.reader(trainFile, delimiter=',')
for row in urmReader:
urm[int(row[0]), int(row[1])] = float(row[2])
return csr_matrix(urm, dtype=np.float32)
We read our dataset and store it in sparse matrix using csr format. To do so we use the scipy library. It enables us to store only the non zero elements.
Retrieve the test users
First we are going to create a function readUsersTest in order to get the ids of the users for which we want to make a prediction.
def readUsersTest():
uTest = dict()
with open("./testSample.csv", 'rb') as testFile:
testReader = csv.reader(testFile, delimiter=',')
for row in testReader:
uTest[int(row[0])] = list()
return uTest
Then we want to find the movies already seen by these users in order not to recommend them again.
def getMoviesSeen():
moviesSeen = dict()
with open("./trainSample.csv", 'rb') as trainFile:
urmReader = csv.reader(trainFile, delimiter=',')
for row in urmReader:
try:
moviesSeen[int(row[0])].append(int(row[1]))
except:
moviesSeen[int(row[0])] = list()
moviesSeen[int(row[0])].append(int(row[1]))
return moviesSeen
Compute the SVD of our user rating matrix
In order to compute the singular value decomposition of our user rating matrix we need to create a function with two parameters : the user rating matrix and the rank of our SVD. The SVD is computed using the sparsesvd package
import math as mt
import csv
from sparsesvd import sparsesvd
def computeSVD(urm, K):
U, s, Vt = sparsesvd(urm, K)
dim = (len(s), len(s))
S = np.zeros(dim, dtype=np.float32)
for i in range(0, len(s)):
S[i,i] = mt.sqrt(s[i])
U = csr_matrix(np.transpose(U), dtype=np.float32)
S = csr_matrix(S, dtype=np.float32)
Vt = csr_matrix(Vt, dtype=np.float32)
return U, S, Vt
Since s is returned as a vector, we want to create a matrix S whose diagonal has for value the elements of vector s. Once again, in order to save memory space and to increase the speed of our program we do not forget to convert our new matrices to csr format.
Predict the movies for our test users
The final step is to predict recommendations for our test users. To do so we will use the matrices computed in the previous step.
from scipy.sparse.linalg import * #used for matrix multiplication
def computeEstimatedRatings(urm, U, S, Vt, uTest, moviesSeen, K, test):
rightTerm = S*Vt
estimatedRatings = np.zeros(shape=(MAX_UID, MAX_PID), dtype=np.float16)
for userTest in uTest:
prod = U[userTest, :]*rightTerm
#we convert the vector to dense format in order to get the indices of the movies with the best estimated ratings
estimatedRatings[userTest, :] = prod.todense()
recom = (-estimatedRatings[userTest, :]).argsort()[:250]
for r in recom:
if r not in moviesSeen[userTest]:
uTest[userTest].append(r)
if len(uTest[userTest]) == 5:
break
return uTest
In our function we retrieve the best 250 estimated ratings. Why 250 ? We choose this number as our goal was to recommend 5 NEW movies for our test users. Therefore, by choosing 250 movies, we are almost sure that we will find at least 5 movies which have not been seen by our user.
Main of our program
Finally we obtain the following main :
def main():
K = 90
urm = readUrm()
U, S, Vt = computeSVD(urm, K)
uTest = readUsersTest()
moviesSeen = getMoviesSeen()
uTest = computeEstimatedRatings(urm, U, S, Vt, uTest, moviesSeen, K, True)


-
Inauguration
-
Q/A session about the event
-
Git Webinar
-
Code!!
-
GSOC
-
Game Night
-
Result Announcement
-
Conclusion


WITNESS LIST Higher Education Committee April 24, 2001-5:00P SB 924 For: Valdez, Dr. Jude (Texas Association of Chicanos in Higher Education) On: Calvert, Mr. Stanton (Texas A&M University System) Garcia, Dr. Rey (Texas Association of Community Colleges) Kettles, Ms. Kate (The University of Texas at Arlington) SB 940 On: Cigarroa, Dr. Francisco (The University of Texas Health Science Center at San Antonio)


Toggle navigation
Leonard Morales
for District Attorney
About Lenny
Priorities
Volunteer
These Are My Priorities
We must better address the epidemic of DWI in our District.
We must do better for our Service members and Veterans.
Our District deserves and can do much better.


The objective of this project is to create a functioning health monitoring vest to aid those recently in recovery from accidents/post-op or those with chronic conditions who need to be monitored when they are put under stress/exercise. There are applications in sports science as well, namely the ability to track athletes biometrics to a higher level than the standard heart rate detection bracelets.
There exists no product on the market within the consumer price range that permits the live readout of biosignals to an internet connected device. Thereby allowing remote monitoring of a patient and continuous data gathering. Thereby giving doctors access to more data remotely, and resulting in the patient gaining increased freedom post recovery whilst maintaining peace of mind.
Sensors that would be useful for remote monitoring of the patient include:
ECG - For heart rate monitoring and pre arrhythmia detection. Respiratory Sensor - Monitoring of the breathing rate especially useful for watching for problematic breathing pattern symptoms post operation. Temperature Sensor - Monitoring of skin temperature, useful during exercise to prevent sudden heat exhaustion.
 Due to the fact that we decided on to make the project as low cost and accessible as possible, we had to design the circuit from the ground up without using any pre built circuit boards apart from the prospeckz to allow us to easily set up a bluetooth connection. As normal with analog circuits and very small signals the design process is relatively complicated leading for me to collaborate with Hayden Ball to share the workload throughout the design process.
The electrical potential of the heart that is picked up by the electrode pads vary from 1mv - 5mv, presenting us with a very difficult signal amplification problem due to the size of the signal. However the first design decision that we had to make was to decide on how many leads our ECG unit would have. Typical medical units have 4 - 5 pads taking signal samples from different places on the chest to yield a cleaner signal. However due to the complexity we decided to build a 3 lead ECG system having 3 leads. V+, V- and a ground. At its most basic we have a signal amplification problem that can be split into three stages.
Preamplification - > Active Filtering - > Output Gain stage.
Now that we have what our inputs are going to be, let define our ideal output. We want our output signal to have a voltage swing of less than ½ VDD with the signal itself being biased at ½ VDD to make it compatible with ADC’s. We also want our signal to be as clean as possible without losing information from the ECG trace, this would entail some sort of filtering.
Due to the fact that the prospeckz runs on a 3.3v power supply to keep the circuit its most simple power wise it would mean picking a 3.3v power source. However, if we were to select 3.3v for our ECG power supply it would mean that the signal would be biased at 1.515v and the swing would be less than that. This presents a major problem when we want come to the ADC stage as a lower voltage would mean less quantization levels and therefore much less resolution when the analog signal is digitalized. This is not an acceptable trade-off.
The next best solution is to run the whole circuit off 9V batteries and use a voltage regulator to step down the power for the prospeckz board. This leaves the ECG circuit with a 4.5v bias and around a 3v swing based on the gain. This should therefore yield adequate resolution when passed through the ADC.
Another problem we must consider is that Op-Amps usually require a V+ and V- and ground power supply as they are normally biased at 0v. As our power supply range is 0 - 9V we can set V+ to be 9v and V- to be 0v. However we must therefore set GND to be 4.5v on the Op-Amp for the chip to function normally. In electrical engineering this is called the creation of a virtual ground. We can create a virtual ground in two ways, using a potential divider or in this case we have used an Op-Amp as it has a better current output. (Also due to the fact that multiple Op-Amps are put on chips it works out well as there are usually unused spares).
This is the most important part of the circuit, the amplification of the signal. For this we will be doing a differential amplification on the V+ and V- electrodes. The first stage of this is to pre amplify the signal as to be able to conduct filtering for it. What we did was to amplify V+ and V- by 10 times by setting the resistors to 10k and 100k on the Op-Amps. At the output stage I combined both signals from the preamp stage into a single output amplifier with a gain of 20, 200k/10k resistors used to create this amplifier.3
Essentially the circuit we have now is what is called an instrumentation amplifier3 as shown below.
Whose gain is given by (1+((100k/10k)x(200k/10k))) which is approximately 200 Thereby we would be expecting a 0- 1.5 volt swing voltage on the output which puts it neatly within all our defined margins of Vswing < Vdd/2 meaning that the signal will never go out of scope and “hit the rails”.
This is a very important safety aspect of the design, we require there to be no way for any current to be fed back towards the electrodes. As even small currents placed across the heart and stop it and hence is incredibly dangerous! JNuguyen [1] had the wrote about the idea of instead of using dedicated opto isolating hardware, just by placing a series of diodes across all the inputs it will mean for the case that the voltage difference between them is <0.7v there will be no current flowing between the electrodes. As the voltages between the electrodes are in the millivolts the case where current is allowed to flow between the electrodes is highly statistically improbable[1].
Now that we have the power supply, the instrumentation amplifier circuit, the virtual ground circuit and the optoisolation we are ready to put all the pieces together to form the full circuit. I tested JNuguyen active low pass filter [1] design using the picoscope and integrated it into the middle of our instrument amplifier before the output gain stage and before the pre-amp. Hayden then added an additional filter at the output of the circuit to remove power line noise. I then generated the schematic in TARGET; a circuit/PCB manufacturing program.
The final circuit diagram is shown below.
Testing and additional filtering During testing Hayden and I found a lot of noise artifacts which once we did a spectrum analysis using the picoscope we found it to occur at the power line frequency (50Hz) and its harmonics (100Hz,200Hz,400Hz...) The picture below illustrates the signal ECG signal with this interference.
| Initial ECG circuit output before filtering |
| Frequency analysis of the output of the initial ECG circuit |
Since all our information is at 10Hz and below Hayden built another low pass filter on the output stage to cut off frequencies of greater than 10Hz which he calculated from first principles. And resulted in the following ECG output trace and spectrum signal.
| ECG trace with the output stage filter | FFT of the filtered ECG trace |
The circuit performs and amplifies well whilst reducing noise artifacts. A major improvement would be to allow the circuit gains to be adjusted. I would implement this by putting a variable resistor on the OpAmp of the output stage. This would allow the user to rescale the output signal to fit in their desired window and also would mean that the power supply could be varied thereby creating a more generic circuit that fits in more systems. In addition to this implementing an adjustable DC offset that would mean you would be able to rebias the signal to stop the signal hitting the rails.
Once we had tested the breadboard and determined it the circuit had designed met the specification, I began the process of converting the schematic into a PCB by hand routing the components and the tracks to minimise the space of the board. The initial design below fit in a 6x4 cm area sized board.
| Version 1 of the PCB Design |
However I had made a mistake in the design and mixed up the orientation of the chip requiring a redesign. For the second attempt I combined hand routing and auto-routing algorithms to speed up the process (as we were very close to the demo day). The trade off was that the board was significantly larger than the initial version, but it worked.
| Version 2 of the PCB Design |
I subsequently soldered the PCB and Hayden 2 designed and fitted it into its enclosure or "belt pack".
| The belt pack, opened to show components |
We were limited to using single layer and through hole technology in the design and production of this PCB, resulting in a larger PCB than practical. However the exact same circuit replaced by the SMD version of its components would be the size of a 50p coin making it perfect to be sown into the lining of a shirt.
As the primary goal of this was to make it as accessible/cheap as possible whilst not sacrificing performance. Below is a cost estimate of the components and estimates of scale for bulk manufacture.
| Version 2 of the PCB Design |
As shown by the table above the cost of a single unit is 6.061 GBP however in bulk (1000 units +) the cost drops massively to 1.63 GBP. Of course this cost does not include the price of the prospeckz board but this price is incredibly reasonable for the results that we gathered from it.
For the electrode placement we started with the standard medical recommended placement which is the V+ and V- electrodes located as shown in the diagram below. However, unfortunately through testing although this yielded a clear ECG trace the electrodes were placed on muscle masses that are very prone to movement hence we completely lost the signal during any kind of light movement.
| With little movement, a very clear trace is obtained (although in the image the +ve and -ve electrodes have been incorrectly connected, resulting in an inverted trace). | However, with movement, the trace becomes unintelligible. |
The table is annotated by my team mate Hayden Ball [2]
Hayden then found a paper that described a better ECG placement with specific use in wearables, targeting muscle masses and ground points that are less likely prone to movement therefore yielding a cleaner signal with light movement. However, it is still not perfect and there is lots of room for improvement as the signal would still not be acceptable if the user was jogging.
As our ambition was to for the vest to be reusable we decided that we were going to look into creating our own electrodes (spearheaded by Hayden). Because of this I obtained a compression base layer top as the thinking was it should be tight enough to compress our electrodes into the skin without requiring the traditional adhesives. (Thereby making it reusable). Our electrode designs were sewn into the inside of the compression layer top meaning all the user has to do is to put the top on.
Issues developed with contact against the skin and unfortunately we had to succumb to using electrode gel on the pads to increase the contact/conductivity. This is an area of the hardware system that can be improved. With more time better research into different electrode materials such as using conductive cloth and designing a strap which would allow the user to adjust the pressure of the electrodes on the skin. Another major issue is our naivety that we could design a one size fits all vest with fixed electrodes. I believe the best solution in the future to solve this problem is to design a one size fits all vest with removable adhesive electrodes so the position can be altered and fine tuned for every user. As this design would require disposables it is not the most cost effective solution but strikes a good balance between ease of use and quality.
As a potential sensor that was to be integrated into this project I started designing a reflectance based pulse oximeter. This sensor is wrist based and outputs blood oxygenation levels and heart rate. The way it works is that LED's shine into the skin and photodetectors placed near the LED's pick up the change of light each heartbeat. The circuit for this is similar to the one designed for the ECG however there is no differential amplification needed which cuts out most of the complexity. 3 op amps can be used for this circuit (and therefore a single chip). Split into Pre amplification, low pass filter, output gain. This design got to the breadboard stage however due to myself misordering the LED (the wattage was not high enough). The LED I used was not bright enough to penetrate the skin. There was not enough time to reorder components so the pulse oximeter is being filed down as future work. For the bracelet I was going to mould something out of SUGRU (a rapid prototyping soft set plastic) mounting the LDR and LED's into the plastic.
In addition to the above we would like to get the ECG tested against a commercial grade unit by a Doctor. We managed to get our ECG compared to a real one, however there was no time to statistically or quantively confirm and compare our results. However the detection and presentation of the p, qrs complex, and t wave were consistant with the model of a ecg trace.
The UberVest works end to end with lots of room for future potential expansion. The vest gives reliable readings whilst still and with small movements. As the design has been kept very modular each component can be upgraded independantly of each other, such as the addition of sensors to the vest, upgrading the ECG circuit etc... However as it stands we, as a team, have managed to produce a Low cost reliable ECG vest that is linked directly to the internet.
1: Homemade ECG J Nguyen http://www.eng.utah.edu/~jnguyen/ecg/long_story_3.html Accessed 2015-10-5
2: SLIP Report Hayden Ball Accessed 2016-1-14
3 A Designers Guide to Instrumentation Amplifiers Charles Kitchin and Lew Count http://www.x2y.com/publications/emi/amp.pdf Accessed 2015-10-1
[1] Texas Instruments Quad Op-Amp Datasheet http://www.ti.com/lit/ds/symlink/lm124-n.pdf
[2] Texas Instruments Dual Op-Amp Datasheet http://www.ti.com/product/LM358
[3] TARGET PCB software http://ibfriedrich.com/index.htm


Data Flow
1. Web app
graph TD; Helm-CLI-->Express-API-->API-Connector-->Vue-App;
2. Desktop app
graph TD;
Helm-CLI-->Electron-server-->Electron-client-->background.js-->Electron-API-->Vue-App;
Important Classes
1. helm (backend/cmd/helm)
Communicates with helm-cli
2. kubectl (backend/cmd/kubectl)
Communicates with keubectl-cli
3. API Connector (frontend/utils/API-Connector)
Communicates with our express API by fetching data from it
4. HelmMainController (desktop/src/electron-client)
Returning data comming from the helm-cli from the render process of
electron, to the main process
5. ElectronAPI (desktop/src/ElectronAPI)
1. background.js communicates with electron-server (helm class) to retreive
data from it, and returns it to electron-client (HelmMainController class)
2. ElectronAPI communicates with electron-client (HelmMainController class)
to get the data from it, and parse it.


--- layout: post title: "To ID or not to ID" description: "How to model an ID that sometimes must be present, and sometimes not." date: 2022-01-03 8:57 UTC tags: [Software Design, F#] --- {% include JB/setup %}
{{ page.description }}
I'm currently writing a client library for Criipto that partially implements the actions available on the Fusebit API. This article, however, isn't about the Fusebit API, so even if you don't know what that is, read on. The Fusebit API is just an example.
This article, rather, is about how to model the absence or presence of an Id
property.
The Fusebit API is an HTTP API that, as these things usually do, enables you to create, read, update, and delete resources. One of these is a user.  The response, however, contains an updated representation of the resource that now includes an id
. The id
(in this example usr-8babf0cb95d94e6f
) was created by the service.
To summarise: when you create a new user, you can't supply an ID, but once the user is created, it does have an ID.
I wanted to capture this rule with the F# type system.
Before we get to the F# code, let's take a detour around some typical C# code.
At times, I've seen people address this kind of problem by having two types: UserForCreation
and CreatedUser
, or something like that. The only difference would be that CreatedUser
would have an Id
property, whereas UserForCreation
wouldn't. While, at this time, the rule of three doesn't apply yet, such duplication still seems frivolous.
How does an object-oriented programmer address such a problem? By deriving CreatedUser
from UserForCreation
, of course!
public class CreatedUser : UserForCreation { public string Id { get; set; } }
I'm not too fond of inheritance, and such a design also comes with a built-in flaw: Imagine a method with the signature public CreatedUser Create(UserForCreation user)
. While such an API design clearly indicates that you don't have to supply an ID, you still can. You can call such a Create
method with a CreatedUser
object, since CreatedUser
derives from UserForCreation
.
CreatedUser user = resource.Create(new CreatedUser { Id = "123", FirstName = "Sue", LastName = "Flay", Email =<EMAIL_ADDRESS>});
Since CreatedUser
contains an ID, this seems to suggest that you can call the Create
method with a user with an ID. What would you expected from such a possibility? In the above code example, what would you expect the value of user.Id
to be?
It'd be reasonable to expect user.Id
to be "123"
. This seems to indicate that it'd be possible to supply a client-generated user ID, which would then be used instead of a server-generated user ID. The HTTP API, however, doesn't allow that.
Such a design is misleading. It suggests that CreatedUser
can be used where UserForCreation
is required. This isn't true.
I was aware of the above problem, so I didn't even attempt to go there. Besides, I was writing the library in F#, not C#, and while F# enables inheritance as well, it's not the first modelling option you'd typically reach for.
Instead, my first attempt was to define user data as a generic record type:
type UserData<'a> =
{
Id : 'a
FirstName : string option
LastName : string option
Email : MailAddress option
Identities : Identity list
Permissions : Permission list
}
(The Fusebit API also enables you to supply Identities
and Permissions
when creating a user. I omitted them from the above C# example code because this detail is irrelevant to the example.)
This enabled me to define an impure action to create a user:
// ApiClient -> UserData<unit> -> Task<Result<UserData<string>, HttpResponseMessage>> let create client (userData : UserData<unit>) = task { let jobj = JObject () userData.FirstName |> Option.iter (fun fn -> jobj.["firstName"] <- JValue fn) userData.LastName |> Option.iter (fun ln -> jobj.["lastName"] <- JValue ln) userData.Email |> Option.iter (fun email -> jobj.["primaryEmail"] <- email |> string |> JValue) jobj.["identities"] <- userData.Identities |> List.map Identity.toJToken |> List.toArray |> JArray jobj.["access"] <- let aobj = JObject () aobj.["allow"] <- userData.Permissions |> List.map Permission.toJToken |> List.toArray |> JArray aobj let json = jobj.ToString Formatting.None let relativeUrl = Uri ("user", UriKind.Relative) let! resp = Api.post client relativeUrl json if resp.IsSuccessStatusCode then let! content = resp.Content.ReadAsStringAsync () let jtok = JToken.Parse content let createdUser = parseUser jtok return Ok createdUser else return Error resp }
Where parseUser
is defined like this:
// JToken -> UserData<string> let private parseUser (jobj : JToken) = let uid = jobj.["id"] |> string let fn = jobj.["firstName"] |> Option.ofObj |> Option.map string let ln = jobj.["lastName"] |> Option.ofObj |> Option.map string let email = jobj.["primaryEmail"] |> Option.ofObj |> Option.map (string >> MailAddress) { Id = uid FirstName = fn LastName = ln Email = email Identities = [] Permissions = [] }
Notice that, if we strip away all the noise from the User.create
action, it takes a UserData<unit>
as input and returns a UserData<string>
as output.
Creating a value of a type like UserData<unit>
seems a little odd:
let user = { Id = () FirstName = Some "Helen" LastName = Some "Back" Email = Some (MailAddress<EMAIL_ADDRESS>Identities = [] Permissions = [] }
It gets the point across, though. In order to call User.create
you must supply a UserData<unit>
, and the only way you can do that is by setting Id
to ()
.
In the Fusebit API, however, the user resource isn't the only resource that exhibits the pattern of requiring no ID on creation, but having an ID after creation. Another example is a resource called a client. Adopting the above design as a template, I also defined ClientData
as a generic record type:
type ClientData<'a> =
{
Id : 'a
DisplayName : string option
Identities : Identity list
Permissions : Permission list
}
In both cases, I also realised that the record types gave rise to functors. A map
function turned out to be useful in certain unit tests, so I added such functions as well:
module Client = let map f c = { Id = f c.Id DisplayName = c.DisplayName Identities = c.Identities Permissions = c.Permissions }
The corresponding User.map
function was similar, so I began to realise that I had some boilerplate on my hands.
Besides, a type like UserData<'a>
seems to indicate that the type argument 'a
could be anything. The map
function implies that as well. In reality, though, the only constructed types you'd be likely to run into are UserData<unit>
and UserData<string>
.
I wasn't quite happy with this design, after all...
After thinking about this, I decided to move the generics around. Instead of making the ID generic, I instead made the payload generic by introducing this container type:
type Identifiable<'a> = { Id : string; Item : 'a }
The User.create
action now looks like this:
// ApiClient -> UserData -> Task<Result<Identifiable<UserData>, HttpResponseMessage>> let create client userData = task { let jobj = JObject () userData.FirstName |> Option.iter (fun fn -> jobj.["firstName"] <- JValue fn) userData.LastName |> Option.iter (fun ln -> jobj.["lastName"] <- JValue ln) userData.Email |> Option.iter (fun email -> jobj.["primaryEmail"] <- email |> string |> JValue) jobj.["identities"] <- userData.Identities |> List.map Identity.toJToken |> List.toArray |> JArray jobj.["access"] <- let aobj = JObject () aobj.["allow"] <- userData.Permissions |> List.map Permission.toJToken |> List.toArray |> JArray aobj let json = jobj.ToString Formatting.None let relativeUrl = Uri ("user", UriKind.Relative) let! resp = Api.post client relativeUrl json if resp.IsSuccessStatusCode then let! content = resp.Content.ReadAsStringAsync () let jtok = JToken.Parse content let createdUser = parseUser jtok return Ok createdUser else return Error resp }
Where parseUser
is defined as:
// JToken -> Identifiable<UserData> let private parseUser (jtok : JToken) = let uid = jtok.["id"] |> string let fn = jtok.["firstName"] |> Option.ofObj |> Option.map string let ln = jtok.["lastName"] |> Option.ofObj |> Option.map string let email = jtok.["primaryEmail"] |> Option.ofObj |> Option.map (string >> MailAddress) let ids = match jtok.["identities"] with | null -> [] | x -> x :?> JArray |> Seq.map Identity.parse |> Seq.toList let perms = jtok.["access"] |> Option.ofObj |> Option.toList |> List.collect (fun j -> j.["allow"] :?> JArray |> Seq.choose Permission.tryParse |> Seq.toList) { Id = uid Item = { FirstName = fn LastName = ln Email = email Identities = ids Permissions = perms } }
The required input to User.create
is now a simple, non-generic UserData
value, and the successful return value an Identifiable<UserData>
. There's no more arbitrary ID data types. The ID is either present as a string
or it's absent.
You could also turn the Identifiable
container into a functor if you need it, but I've found no need for it so far. Wrapping and unwrapping the payload from the container is easy without supporting machinery like that.
This design is still reusable. The equivalent Client.create
action takes a non-generic ClientData
value as input and returns an Identifiable<ClientData>
value when successful.
There's nothing F#-specific about the above solution. You can easily define Identifiable
in C#:
public sealed class Identifiable<T> { public Identifiable(string id, T item) { Id = id; Item = item; } public string Id { get; } public T Item { get; } public override bool Equals(object obj) { return obj is Identifiable<T> identifiable && Id == identifiable.Id && EqualityComparer<T>.Default.Equals(Item, identifiable.Item); } public override int GetHashCode() { return HashCode.Combine(Id, Item); } }
I've here used the explicit class
-based syntax to define an immutable class. In C# 9 and later, you can simplify this quite a bit using record
syntax instead (which gets you closer to the F# example), but I chose to use the more verbose syntax for the benefit of readers who may encounter this example and wish to understand how it relates to a less specific C-based language.
When you need to model interactions where you must not supply an ID on create, but representations have IDs when you query the resources, don't reach for inheritance. Wrap the data in a generic container that contains the ID and a generic payload. You can do this in languages that support parametric polymorphism (AKA generics).


Hi. I'm Betsy.
Being new to photography, I eagerly search for images that could be my next favorite thing, and happiness in a person's face is an irresistible subject. I find happiness in scenery, too, and through unique lighting.
Happiness is a feeling, but it is also an image... I hope to show my excitement for the simple, lovely feeling here, depicted in my photos.
...but who is the girl behind the lens?
I'm originally from the flatlands of Indianapolis, IN. I currently live in Berkeley, CA, where the winter weather is 60 degrees and sunny! I've enjoyed capturing the abundant rural and suburban scenery that Indiana has to offer, and now look forward to framing the glamorous city of San Francisco and the Bay Area.
My website is a work in progress; everything you see I built from the ground-up, and I'd love your suggestions about how I could improve it to make it more fun! I don't have a comment box up yet, but don't let that stop you from sharing your brilliant ideas with me.
Go ahead, click around... and feel happier.


DO YOU FANCY PIZZA???! PizzaINN provides you with VVIP and First class delicious Pizza's
Place your order for delivery at your doorstep.
+254 741607740


{% extends "layout.html" %}
{% block title %}
{{ profile_username }}'s Timeline
{% endblock %}
{% block body %}
{{ self.title() }}
{% if g.current_username %}
{% if g.current_username == profile_username %}
This is you!
{% elif followed %}
You are currently following this user.
Unfollow user
.
{% else %}
You are not yet following this user.
Follow user
.
{% endif %}


|
tan 0.0.1
|
Public Member Functions | |
| void | open (const str &filename) |
| void | from_string (const str &code) |
| size_t | size () const |
| Return the number of lines of code of the current file. | |
| str | get_line (size_t index) const |
| Return source at a specific line. | |
| const char * | get_line_c_str (size_t index) const |
| char | at (const SrcLoc &ptr) const |
| str | substr (const SrcLoc &start) const |
| Get a substring from start to the end of the current line. | |
| str | substr (const SrcLoc &start, const SrcLoc &end) const |
| Get a substring from the source code. | |
| bool | is_cursor_valid (const SrcLoc &c) const |
| Check if a cursor is in bound. | |
| SrcLoc | begin () const |
| SrcLoc | end () const |
| SrcLoc | forward (SrcLoc c) |
| Return a copy of code_ptr that points to the next character. | |
| str | get_filename () const |
Definition at line 10 of file source_file.h.
| char tanlang::SourceFile::at | ( | const SrcLoc & | ptr | ) | const |
Definition at line 124 of file source_file.cpp.
| SrcLoc tanlang::SourceFile::begin | ( | ) | const |
Definition at line 135 of file source_file.cpp.
| SrcLoc tanlang::SourceFile::end | ( | ) | const |
Definition at line 117 of file source_file.cpp.
Return a copy of code_ptr that points to the next character.
Definition at line 99 of file source_file.cpp.
| void tanlang::SourceFile::from_string | ( | const str & | code | ) |
Definition at line 28 of file source_file.cpp.
| str tanlang::SourceFile::get_filename | ( | ) | const |
Definition at line 115 of file source_file.cpp.
| str tanlang::SourceFile::get_line | ( | size_t | index | ) | const |
Return source at a specific line.
| index | line of code starting from 0 |
Definition at line 137 of file source_file.cpp.
| const char * tanlang::SourceFile::get_line_c_str | ( | size_t | index | ) | const |
Definition at line 142 of file source_file.cpp.
| bool tanlang::SourceFile::is_cursor_valid | ( | const SrcLoc & | c | ) | const |
Check if a cursor is in bound.
Definition at line 54 of file source_file.cpp.
| void tanlang::SourceFile::open | ( | const str & | filename | ) |
Definition at line 11 of file source_file.cpp.
|
inline |
Return the number of lines of code of the current file.
Definition at line 17 of file source_file.h.
| str tanlang::SourceFile::substr | ( | const SrcLoc & | start | ) | const |
Get a substring from start to the end of the current line.
| start | start of the string, inclusive |
Definition at line 94 of file source_file.cpp.
Get a substring from the source code.
| start | start of the string, inclusive |
| end | end of the string, exclusive |
Definition at line 67 of file source_file.cpp.


Bar chart showing horizontal columns. This chart type is often beneficial for smaller screens, as the user can scroll through the data vertically, and axis labels are easy to read.


We are committed to creating a platform where all women can reach their ideal level of beauty. Whether she changes her look depending on her mood or is all about keeping it natural, she’s sure to find the best beauty tips, tricks and products that work just for her. Our goal is to create a personalized, educational, and, most of all, fun experience for all women who are looking to get their daily dose of beauty.
We do so by caring deeply about the content we produce, obsessing over new products and by possessing insider access to industry experts and a behind-the-scenes look at some of our favorite beauty brands. Makeup.com is a proud member of the Shopzon family, and our articles feature beauty products from the shopzon portfolio.


In this tutorial, we'll focus on how to make the calendar work properly in the outdated NN4 browser. Before we start, please bear it in mind that what we are dealing with is an old browser engine with only preliminary DHTML support and funky bugs. Therefore, your web authoring life has to be a bit more tough than without it.
Note: All the readings in this page apply to NN4 calendar tags only,
i.e. the <layer>
tags. You don't need to touch or move
the
tag in your page at all.
A simple but mandatory rule for NN4 is to set the calendar tag at the very
bottom (just above the
tag) of your page. Your
page must end like following:
...
<layer ...calendar layer tag...> </layer>

No exceptions, otherwise it won't work properly. (iframe tag can be moved anyway since NN4 doesn't understand it at all)
In order to make PopCalendarXP work seamlessly under Netscape 4.x, you MUST NOT use any inline CSS style (like style="xxxx") in the HTML tags. NN4 has serious problems with inline styles. Although sometimes the inline CSS styles won't cause any trouble, sticking to CSS classes (like class="xxx") is always a safe approach.
In NN4, PopCalendarXP uses special
tags to locate
the pop-up position of the calendar panel. You must set one
for each fPopCalendar()
call, otherwise you will encounter an
error saying "Expected NN4 localizer not found!".
These localizer tags only have one "name" property and can be placed anywhere in the page or used to enclose any other HTML tags.
<A name="<date-field-name>dummy:<vertical-offset>">

The name comprises 2 parts separated by a colon - The left part is a string
started with the name of the date field, or the name property of the object
passed in as dateCtrl, and concatenated by the word "dummy"; the
right part is a number that indicates the vertical offset in pixels. For example,
if we have an <input type="text" name="dc">
and want to pop the calendar under it, we just use the following code:
<input type="text"
name="dc">
27
is the normal height of an input box in NN4, the engine uses
this offset to calculate the popup position when the calendar needs popping
above the localizer object.
NOTE: If you put this localizer tag into any <layer>
,
<ilayer>
or positioned

tags, you
must also pass in the name and/or id of such layer as the 3rd parameter of
the fPopCalendar()
function so that the engine can find it.
Please check out Netscape4 demo for more examples.
Some versions of Netscape 4.x have an infamous bug - all the dynamic layers will get lost when the browser is resized. There are many solutions posted over the internet to fix it, you may do a search to get the detail description from google or yahoo.
For a quick example, simply insert the following javascript snippet into the header of your html page.

If you have a better solution, you may use your own.
Sometimes the NN4 will get confused about the URL path of the current document after resizing and reloading. If this does happen, it can be fixed by setting a correct <BASE> tag in your page.
Some free web hosting service providers, like GeoCity!Yahoo, mandatorily
inject ad code into every html file they hosted. Such actions will disrupt
the calendar engine totally since the script engine files, like ipopeng.htm
,
are very sensitive to modifications. There is no workaround for it and the
license agreement also requires the engine remaining intact.
In NN4, the calendar panel is not bulletproof and will be penetrated by form elements if it lays over them. To work around we've built a good demo that shows how to do it right. Please refer to Netscape4 demo in the product package for details.
In themes that have borderWidths
, padding
or margin
CSS settings, NN4 will throw out errors against them and stop interpreting
the subsequent CSS rules. Whenever you notice that part of the calendar is
not rendered properly, you may type "javascript:" into the address
bar of NN4 to show the related errors in the popup debug window.
To work around, you just need to append the name of the class with a border
or padding style in it to a build-in array in the plugins.js
file and the engine will handle the remaining work. e.g. We introduced an
extra DIV with a border style in outlook theme, and then added the following
NN4 specific code.
if (NN4) _nn4_css[_nn4_css.length]="BottomDiv";
Remember to do the same for every new class added to the theme, unless it has no border, padding or margin settings.
In certain situation, the fonts on the page might turn into rectangles if the page were generated by ASP or other cgi server. It's caused by the server sending different charset encoding than NN4's default setting. To workaround, simply specify an empty string as the http charset header in your server-end code. e.g. in ASP we may have the following set:
Response.Charset=""
The other way to work around is using the engine wrappers mentioned in the i18n tutorial, which is a bit more complicated but very effective if your page were to serve multiple languages.
If you don't follow Rule #1, sometimes NN4 will embed some strange duplicated
closing tags right behind the calendar tag, like </layer>
or other weird tags. You'll see them blinking in blue color when you open
the "page source" window. This is really a weird bug and it may
cause other strange behaviors on your page.
To work around, you need to place some dummy SPACE characters inside the
<layer>
tag to adjust the offset of those garbage tags
until they become normal and stop blinking in the page-source-window. Usually
5 spaces will do the trick, but you'd better verify it by looking into the
page source window. Appending the following dummy tag to the bottom of your
page might also be of some help.
<layer name="bugfix-dummy"></layer>

We strongerly suggest you following Rule #1 to avoid such problems.
Whenever you try to put the calendar related files into a separate directory and reference them via a relative path in the src
property of the <layer> tag, you'll have to set up the background
property to have the same relative path. To make it simple, always keep both properties the same. If you don't, graphics will be disappeared from the calendar panel after redrawing.
You don't need to do it if you keep using absolute path in the src
property.


Redis integration¶
Part of the Horizon service’s job is to input data into Redis.
How are timeseries stored in Redis?¶
Skyline uses MessagePack to store data in Redis. When a data point comes in, a Horizon worker will pack the datapoint with the schema [timestamp, value] into a MessagePack-encoded binary string and make a redis.append() call to append this string to the appropriate metric key. This way, we can make very easily make many updates to Redis at once, and this is how Skyline is able to support a very large firehose of metrics.
One downside to this scheme is that once timeseries in Redis start to get very long, Redis’ performance suffers. Redis was not designed to contain very large strings. We may one day switch to an alternative storage design as proposed by Antirez - see https://github.com/antirez/redis-timeseries - but for now, this is how it is.
In addition to all the metrics, there are two specialized Redis sets: ‘metrics.unique_metrics’ and ‘mini.unique_metrics.’ These contain every key that exists in Redis, and they are used by the Analyzer to make it easier for the Analyzer to know what to mget from Redis (as opposed to doing a very expensive keys * query)
What’s with the ‘mini’ and ‘metrics’ namespaces?¶
The ‘mini’ namespace currently has two uses: it helps performance-wise for
Oculus, if you choose to use it, and it also is used by the webapp to display a
settings.MINI_DURATION
seconds long view.


The People's Pantry continues to operate during Ontario's stay-at-home order in order to help those who are most affected by the COVID-19 pandemic. The following document confirms your status as an essential worker on behalf of The People's Pantry.


incresive blog
ALL
Company News
Business
Development
Design
Frond-end
How to download images using WebdriverIO (Selenium Webdriver)
December 10, 2018
Read more
Frond-end
How to download images using WebdriverIO (Selenium Webdriver)
December 10, 2018
Read more
Frond-end
How to download images using WebdriverIO (Selenium Webdriver)
December 10, 2018
Read more
Frond-end
How to download images using WebdriverIO (Selenium Webdriver)
December 10, 2018
Read more
Frond-end
How to download images using WebdriverIO (Selenium Webdriver)
December 10, 2018
Read more
Frond-end
How to download images using WebdriverIO (Selenium Webdriver)
December 10, 2018
Read more
Frond-end
How to download images using WebdriverIO (Selenium Webdriver)
December 10, 2018
Read more
Frond-end
How to download images using WebdriverIO (Selenium Webdriver)
December 10, 2018
Read more
Frond-end
How to download images using WebdriverIO (Selenium Webdriver)
December 10, 2018
Read more
1
page
2
page
3


VP of Engineering at Actium Health, a Series B healthcare technology company leveraging data science to predict healthcare needs and activate patient engagement.
Prior to Actium, I was a founding member and leader of the engineering team behind Mirth (acquired by NextGen Healthcare), an open source healthcare integration engine, and Health Data Hub, a cloud-based central data repository and aggregation platform.
I have spent the past two decades building software, primarily in healthcare technology, with focuses on SaaS product offerings, interoperability, and scalable data platforms.
Series B healthcare technology company leveraging data science to predict healthcare needs and activate patient engagement.
Member of the core executive team. Joined as a part of Series A and led through Series B. Secured $25M Series B in May, 2021.
In charge of the development of the Actium Health (formerly SymphonyRM) platform, product, infrastructure, operations, and data integrations. Built Actium’s CENTARI platform, differentiated by best-in-class data integration pipelines, real-time data labeling, data science integration, analytics, and intelligent multi-channel patient outreach.
Led multiple functions at Actium through its growth, including Engineering, Product, IT, InfoSec, Solutions Architecture, and Implementation.
Primary Technologies: Python, React, AWS, MySQL
Joined as a part of the Mirth acquisition. Scaled the Mirth team from under 60 employees at acquisition to over 150. Hired, grew, and led engineering teams across multiple products in both the US and in Bangalore, transitioning the organization to a scalable agile development methodology.
Engineering leader of Connected Health Solutions at NextGen Healthcare, focused on SaaS product offerings and scalable data platforms. Product oversight within Connected Health Solutions included Mirth Connect, Mirth Results, Mirth Analytics, Mirth Match, Mirth Mail, and Health Data Hub.
Led greenfield development of Health Data Hub, a cloud-based clinical data repository and aggregation platform to meet the demands of HIEs, hospitals, and large ambulatory practices.
Owner of the architecture, development, and design of Mirth Connect, the industry-leading open source healthcare integration engine. Transformed the open source Mirth Connect into the profit leader for NextGen’s Connected Health Solutions through an effort to commercialize enterprise extensions.
Primary Technologies: Node.js, Java, AngularJS, AWS, RabbitMQ, Elasticsearch, PostgreSQL, NoSQL
Acquired by NextGen Healthcare in September of 2013 after achieving “hockey stick” revenue growth and employee growth from just over 10 to more than 50.
Founding member of the core Mirth development team to design and release Mirth 1.0, a client-server based open source healthcare integration engine. Architected, designed, and led development of Mirth Connect through version 3.0, Mirth’s most significant release to date. Led efforts to heavily modify and eventually replace MuleSoft’s Mule ESB with a purpose-built messaging engine, propelling the growth of Mirth Corporation and its product suite.
Built a sustainable open source model for Mirth with revenue based primarily on support and services. Built and managed an open source community of over 25,000 users with active forums, wiki, and issue tracking.
Roles held: SWE, Senior SWE, Lead SWE, Engineering ManagerPrimary Technologies: Java, Swing, Java Web Start, SQL, JavaScript
Software Engineer on the Unisys Java Virtual Machine team, a custom implementation of the JVM for Unisys ES7000 servers. Developed software to emulate client use profiles, leveraged in performance and stress testing of the Unisys JVM.
Aside from building software, my hobbies include travel, music, technology, cars, and outdoor activities. In the winter, I am an avid snowboarder who often travels seeking fresh powder. In the summer, I enjoy remaining active by hiking local mountains and exploring the underwater world through scuba diving.
I have a passion for craft beer and cocktails, and I enjoy exploring the breweries and speakeasies in new destinations around the world. Recent trips have included breweries in Belgium, speakeasies in Hong Kong, and mezcalerías in Oaxaca. While in Germany, I was also able to visit the world-famous Nurburgring Nordschleife race track and tour Porsche’s assembly line at the factory in Stuttgart.
Ok, not quite all press, but here are some articles and presentations I've done or been featured in:


Tiny Simulator is a simple graphical simulator to help you understand how a modern processor works. Playing with the simulator, you will be able to trace how data moves accross the components of a processor pipeline and how instructions are executed.
For more information, check out the documentation.
You can find the simulator's sources in this GitHub repository. I also post articles in this blog.


Tests we offer.
- Antinuclear Antibody Test
- CA 125
- CAT Scan
- Chemotherapy
- Colonoscopy
- Complete Blood Count
- Coronary Artery Bypass Graft (CABG)
- Cortisone Injection
- Creatinine Blood Test
- Electrolytes
- Hemoglobin
- Hysterectomy
- Lap Band Surgery (Gastric Banding)
- Liver Blood Tests
- MRI Scan
- Pap Smear
- Thyroid Blood Tests
- Total Hip Replacement
- Total Knee Replacement
- Tuberculosis Skin Test (PPD Skin Test)
- Ultrasound


The Internet is a network of connected computing devices.
As simple as connecting two devices.
Device 1 ---- Device 2
We have ways to measure speed and so forth
To communicate with each other they need a language or a protocol.
The most import is the IP (Internet Protocol)
Utilize address -- two versions: IPv4 and IPv6
0-255.0-255.0-255.0-255
Has FOUR places and only has number of 0-255 (32 Bits)
Comprises of 8 places and uses hexadecimal values.
Example: 2001:0db8:0000:0042:0000:8a2e:0370:7334
| Normal | Hexadecimal |
|---|---|
| 1 | 1 |
| 2 | 2 |
| 3 | 3 |
| 4 | 4 |
| 5 | 5 |
| 6 | 6 |
| 7 | 7 |
| 8 | 8 |
| 9 | 9 |
| 10 | A |
| 11 | B |
| 12 | C |
| 13 | D |
| 14 | E |
| 15 | F |
Files must be transfered in small sizes -- Packets
Each packet contains a header that has information on how to route it
Protocols that computers use to split data and move them router to router until it reaches it's destination
Since there are many routes the Internet is very redundant
However IP doesn't take care if the packets go missing? Or corruption?
These are higher level protocols that are used on top of IP to improve it.
UDP provides a mechanism to detect corruption but does not solve other problems. This makes it faster than TCP but less reliable.
This makes UDP less used but it does have some use cases such as: Facetime and other things
TCP is a more commonly used protocol so much that its normally called TCP/IP The TCP header contains more Fields than the UDP ones.
Its a bit more complicated than UDP to send data first they need to establish a 3-Way Handshake
This makes the whole system very secure and we can see how it handles packets:
The World Wide Web is based on protocols. Some protocols are such:
These protocols are used in addition on top of the TCP/IP
DNS helps us to memorize names easier instead of typing in <IP_ADDRESS> we simply do wikipedia.org
A domain name is made up of 3 levels.
[3rd level.2nd Level.Top Level]
Top level domains are limited such as .com, .edu, .org
Behind the scenes Domain Names are mapped to IP addresses. A computer will go through these steps to find the IP of the domain.
After it has the IP address it then sends a HTTP request to the IP. Which likes this:
> GET /index.html HTTP/1.1 > Host: www.example.com
The server will send back a response which looks like this:
> HTTP/1.1 200 OK
Numbers represent status code, which 200 means OK.
Then the browser renders the HTTP. This process also can be represented with TCP/IP.
To be scalable means that you are able to withstand a spike or an increase of users.
In fact the Internet itself is scalable:
Apps are also scalable. Something people can do is Load Testing.
By using the companies, own computer's they can use it to simulate a website under load.
There is a need for standardization. Consider this:
They don't follow the same protocol so they fail to communicate.
If they agree on one standard they can agree on what represents what. This will be what happens.
It's important because every computer can join without proprietary technology.
Difference:
Internet is not accessible to everyone across the globe.
It costs a lot to build infrastructure for the Internet so some countries do not have the budget. There are also other factors.
Some governments restrict access to the Internet such as
Even in country, access to the Internet is not equal for everyone. People in Urban areas have better Internet.
Some programs try to help these like the FCC Connect America
People do not have the same income so they also can't afford Internet.


Google Pixel 3 is starting to show the same battery problems as the Nexus 6P
by Jared PetersIf there’s one thing Google is good at, it’s repeating mistakes. Apparently the Pixel 3 is starting to show some of the same battery issues that plagued the Nexus 6P, which, in case you forgot, is a phone that ended its life as a class action lawsuit because it was pretty broken for tons of users. Not exactly a model citizen in smartphone history.
Same old battery problems
The issue happens when the Pixel 3 and Pixel 3 XL get below 30% of battery life. Sometimes users have huge drops in battery after that point, while others report a complete shutdown, almost as if the last third of the battery is unusable. This is what happened to cause the Nexus 6P’s early shutdown problems and forced Google to shell out a bunch of cash and replacements for dysfunctional phones.
These problems started appearing on Google’s own support forums back in April, and have only grown since then. Google’s solution for these affected users is to factory reset their device and try to boot into safe mode, except those don’t actually solve any of the problems. Even the RMA replacements that are being sent out exhibit some of the same issues, which means this might be a systemic problem with the Pixel 3’s battery.
This is going to be especially problematic as Pixel 3 batteries get older. Newer batteries naturally have fewer problems, but as they age these kinds of issues pop up more and more often. So far it doesn’t seem as common as the Nexus 6P’s issues, but this still isn’t very promising.
via: Android Police


2 Kings 17:25
And so it was at the beginning of their dwelling there, that they feared not the LORD: therefore the LORD sent lions among them, which slew some of them.


Contributor
Annotations
Type
Content
Title
DiscourseParts
Date
ID
Parent ID
Explore
List
(
0
selected)
List of selected dps goes here, with delete affordance
About DiscourseDB
Not logged in
Sign out
Apply for an account
Named data selection
blank
Remember
Forget
Annotate
Annotate with BRAT
Help! How to Annotate
Import/Export
Download as CSV
Export For Training
(text & annos (no id)
for Lightside)
Export For Learning
(text & ids (no annos)
for Lightside)
Re-Import After Inference
(Lightside annotations)
Help! How to use external learning tools.


Toggle navigation
Help Desk
Home
Services
Contact
Ticket Admin
Did you try turning it on and off again?
If that didn't work, maybe I can help!
Your Name:
Contact Info:
System/Device:
Request Type:
Priority:
Low
Medium
High

Submit Ticket


{% include get-widget-data-and-options widget="links" include=include %} {%- if widget_options.inline -%}{%- else -%}


Desktop version is coming very soon.
exclusive merchandise
money can't buy experiences
predicting match outcomes
downloading apps
sharing & more
beat your mates
rank highest in Leaderboards


Example reassignment JSON file showing the current and proposed replica assignment
Current partition replica assignment
{"version":1,"partitions":[{"topic":"my-topic","partition":0,"replicas":[3,4,2,0],"log_dirs":["any","any","any","any"]},{"topic":"my-topic","partition":1,"replicas":[0,2,3,1],"log_dirs":["any","any","any","any"]},{"topic":"my-topic","partition":2,"replicas":[1,3,0,4],"log_dirs":["any","any","any","any"]}]}
Proposed partition reassignment configuration
{"version":1,"partitions":[{"topic":"my-topic","partition":0,"replicas":[0,1,2,3],"log_dirs":["any","any","any","any"]},{"topic":"my-topic","partition":1,"replicas":[1,2,3,4],"log_dirs":["any","any","any","any"]},{"topic":"my-topic","partition":2,"replicas":[2,3,4,0],"log_dirs":["any","any","any","any"]}]}


Notice: You have traveled back in time to the year 2001...be careful interacting with the past can be dangerous!
Once you're done living in the past,
click here
to take a look at what this place looks like now.
Home
-
Band
-
News
-
Pics
-
Shows
-
Lyrics
PICS
rob @ the upper room
rob @ Jesus Fest in May
rob @ Jesus Fest
rob @ WolfRock
dan @ the upper room
dan gettin' ready to jump
dan @ Jesus Fest
dan @ king's cafe
trey @ the upper room
trey @ Jesus Fest
trey @ king's cafe
king's cafe
the crowd getting into it @ Jesus Fest
East Lincoln Youth Rally
Jesus Fest
WolfRock
king's cafe
Upper Room
POC + AHF


Add New Schedule Item
|
Load Schedule
|
Save Schedule
|
Main Page
Saving....
Zone:
Zone 1
Zone 2
Zone 3
Zone 4
Zone 5
Zone 6
Zone 7
Zone 8
Reset
All Off
✖
Start Date:
End Date:
Time:
Duration:
Repeat Every:
Day
2 Days
3 Days
4 Days
5 Days
6 Days
Week
Every 8 Days
Every 9 Days
Every 10 Days
2 Weeks
3 Weeks
4 Weeks
On:
Sun
Mon
Tue
Wed
Thu
Fri
Sat


I just wrote a small plugin that highlights your friends in the scoreboard of the full server details page. It's not particularly useful (although you can quickly see how your friends currently do on the server without searching through a scoreboard with 64 players), basically it's purpose is to get me started on bblog plugins :)
Testing and feedback, especially from other plugin developers, is highly appreciated!
Post edited 1 x times, last by
BrainFooLong
Administrator
BrainFooLong
Administrator
Pretty nice coded. Just one requirement.
Don't add variables to global scope via "var plugin = {..." outside of the plugin itself, this override any previous declaration in the page, and especially a word like this could be used by battlelog itself in the global scope.
Add it in the recommended way directly with the "var plugin"
Like this
BBLog.handle( 'add.plugin', {...} );
Topicstarter
HoPi
Whoops, you're right. I just did that for debugging purposes and forgot to change it, but it's fixed now. I also updated the link.
I tried to clone the "join"-button from the comcenter to the scoreboard, but adding the element triggers the domchange event and makes my plugin run in an infinite loop. My first attempt was to set a boolean isWorking property in the plugin object, like this:
for ( var i = 0; i < l; i++ ) {
f = friendList[ i ];
$tr = $( 'tr[data-userid=' + f.userId + ']' );
if ( $tr.length > 0 ) {
instance.log( f.username + ' is playing on this server, highlighting...' );
$tr.find( 'td' ).css( 'background-color', 'rgba( 0, 128, 0, 0.4 )' );
// clone join button
}
}
instance.isWorking = false;
}
Unfortunately, that didn't work. Whenever the domchange event ocurred, my isWorking property was reset to false. Any suggestions?
BrainFooLong
Administrator
Yes, you reset it after you execute the code "highlightFriends".
That means, after the highlight you start from scratch and your code runs again.
Check of the join button already exist before you add it again.
Than the next domchange update don't disturb you.
Topicstarter
HoPi
BrainFooLong wrote:
Yes, you reset it after you execute the code "highlightFriends".
Of course, the purpose is to make my plugins domchange function not do anything only while the loop is adding objects to the DOM. I thought my "for"-loop runs while a domchange event gets fired and my plugin starts over (parallel), triggering more domchange events.
Check of the join button already exist before you add it again.
Than the next domchange update don't disturb you.
Alternative approach, gonna try that :) thanks.
BrainFooLong
Administrator
A few more tips.
Don't use a lazy selector like $("tr"), it matches first every <tr> in the dom which is slow.
Search a anchor before with a id, for example most of containers in battlelog have a ID. A ID is unique per HTML definiation, therefore the selector is much faster.
Also you can avoid the problem with parellel runs of domchange with setting a class to a already processed <tr> and than check before you do something again if the class exists, if yes than skip the <tr>.
But in your case it doesn't matter, the complete run just require a few milliseconds at max, a domchange is only triggered 200 milleseconds after a change has done in the DOM.
The plugin domchange is a BBLog handler that fires not on every domchange, it fires just 200ms after the last real domchange has been done. To avoid such problem with too much calls.
 I'll add that to my to-do list.
BrainFooLong wrote:
Also you can avoid the problem with parellel runs of domchange with setting a class to a already processed <tr>
That's pretty elegant, I will definetely give it a try.
BrainFooLong wrote:
The plugin domchange is a BBLog handler that fires not on every domchange, it fires just 200ms after the last real domchange has been done. To avoid such problem with too much calls.
Is there some sort of documentation for these things?
Nonetheless: updated. When players joined while the scoreboard was active, my selector won't work because these new elements don't get the class which I'm searching for.
BrainFooLong
Administrator
Is there some sort of documentation for these things?
No, but all can be readed in the source code of BBLog itself.
In this special case, i'll update the documentation of the example plugin.
 When checking your link it says "Not Found - The resource could not be found."
Would be great if you can fix it, its a great plugin.


{% extends "coderdojochi/_base.html" %} {% load static %} {% block title %}Meetings | {{ block.super }}{% endblock %} {% block meta_facebook_title %}Meetings | {{ block.super }}{% endblock %} {% block meta_twitter_title %}Meetings | {{ block.super }}{% endblock %} {% block meta_description %}Meetings provide an opportunity for volunteers to collaborate on coding projects, as well as prepare for upcoming We All Code classes.{% endblock %} {% block meta_facebook_description %}Meetings provide an opportunity for volunteers to collaborate on coding projects, as well as prepare for upcoming We All Code classes.{% endblock %} {% block meta_twitter_description %}Meetings provide an opportunity for volunteers to collaborate on coding projects, as well as prepare for upcoming We All Code classes.{% endblock %} {% comment %} {% block meta_facebook_image %}{% endblock %} {% endcomment %} {% comment %} {% block meta_twitter_image %}{% endblock %} {% endcomment %} {% block body_class %}page-meetings{% endblock %} {% block contained_content %}
Here are a list of upcoming meetings. Meetings provide an opportunity for volunteers to collaborate on coding projects, as well as prepare for upcoming We All Code classes.
We look forward to seeing you soon!
{{ meeting.meeting_type.description|safe|truncatechars_html:180 }}
Check back in a few days for new meetings.


com.googlecode.objectify.impl
Class
SessionCachingAsyncObjectifyImpl
java.lang.Object
com.googlecode.objectify.impl.AsyncObjectifyImpl
com.googlecode.objectify.impl.SessionCachingAsyncObjectifyImpl
-
All Implemented Interfaces:
-
AsyncObjectify
-
public class SessionCachingAsyncObjectifyImpl
- extends AsyncObjectifyImpl
Extends the AsyncObjectifyImpl to add a session cache. Note that
it only needs to override a few key methods.
-
Author:
-
Jeff Schnitzer
| Field
Summary |
protected java.util.Map<Key<?>,java.lang.Object>
|
cache
The
cache is a simple hashmap |
protected static java.lang.Object
|
NEGATIVE_RESULT
Value
which gets put in the cache for negative results |
| Method
Summary |
Result<java.lang.Void>
|
delete(java.lang.Iterable<?> keysOrEntities)
|
|
get(java.lang.Iterable<?
extends Key<? extends
T>> keys)
|
|
put(java.lang.Iterable<?
extends T> objs)
|
|
query()
Not
currently part of the AsyncObjectify api, but the actual logic lives
here. |
|
query(java.lang.Class<T> clazz)
Not
currently part of the AsyncObjectify api, but the actual logic lives
here. |
| Methods inherited from class
com.googlecode.objectify.impl.AsyncObjectifyImpl
|
delete,
delete,
delete,
find,
find,
find,
get,
get,
get,
get,
get,
get,
getAsyncDatastore,
getFactory,
getTxn,
put,
put,
sync
|
| Methods inherited from class
java.lang.Object |
clone, equals, finalize, getClass, hashCode,
notify, notifyAll, toString, wait, wait, wait |
NEGATIVE_RESULT
protected static final java.lang.Object NEGATIVE_RESULT
-
Value which gets put in the cache for negative results
cache
protected java.util.Map<Key<?>,java.lang.Object> cache
-
The cache is a simple hashmap
SessionCachingAsyncObjectifyImpl
public SessionCachingAsyncObjectifyImpl(ObjectifyFactory fact,
com.google.appengine.api.datastore.AsyncDatastoreService ds,
com.google.appengine.api.datastore.Transaction txn)
get
public <T> Result<java.util.Map<Key<T>,T>> get(java.lang.Iterable<? extends Key<? extends T>> keys)
-
-
Specified by:
-
get
in interface
AsyncObjectify
-
Overrides:
-
get
in class
AsyncObjectifyImpl
-
-
See Also:
-
Objectify.get(Iterable)
put
public <T> Result<java.util.Map<Key<T>,T>> put(java.lang.Iterable<? extends T> objs)
-
-
Specified by:
-
put
in interface
AsyncObjectify
-
Overrides:
-
put
in class
AsyncObjectifyImpl
-
-
See Also:
-
Objectify.put(Iterable)
delete
public Result<java.lang.Void> delete(java.lang.Iterable<?> keysOrEntities)
-
-
Specified by:
-
delete
in interface
AsyncObjectify
-
Overrides:
-
delete
in class
AsyncObjectifyImpl
-
-
See Also:
-
Objectify.delete(Iterable)
query
public <T> Query<T> query()
-
Description copied from class:
AsyncObjectifyImpl
-
Not currently part of the AsyncObjectify api, but the actual logic
lives here.
-
-
Overrides:
-
query
in class
AsyncObjectifyImpl
-
query
public <T> Query<T> query(java.lang.Class<T> clazz)
-
Description copied from class:
AsyncObjectifyImpl
-
Not currently part of the AsyncObjectify api, but the actual logic
lives here.
-
-
Overrides:
-
query
in class
AsyncObjectifyImpl
-
Copyright © 2011 Jeff Schnitzer and a gang of pirates. All
Rights Reserved. Build version: 3.1


April 23, 2019
Michelle Topal, MSW, LCSW | North Carolina Society for Clinical Social Work |<EMAIL_ADDRESS>James Michael Nichols | Equality NC |<EMAIL_ADDRESS>|<PHONE_NUMBER>
Adam Polaski | Campaign for Southern Equality |<EMAIL_ADDRESS>|<PHONE_NUMBER>
This month the North Carolina Society for Clinical Social Work (NCSCSW), in its representing clinical social workers for 40 years and in its support of the LGBT community, announced its strong support for HB516/S426 and signed on as a coalition partner for Born Perfect NC, the campaign to protect young people in North Carolina from so-called “conversion therapy.”
More than 150+ licensed mental health professionals signed onto a letter from NCSCSW, addressed to legislators considering the Mental Health Protection Act, which would prohibit licensed mental health professionals from subjecting young North Carolinians to “conversion therapy” Read the letter here.
NCSCSW released a formal position paper supporting legislation to ban the use of conversion therapy by licensed clinicians. Below is an excerpt from that position paper, which you can read in full here.
“As licensed clinicians we know the lifelong damage so-called conversion or reparative therapies do to those who identify as LGBTQ, especially minors and adults who are disabled. Clinicians are required to treat diagnosable conditions according to the Diagnostic and Statistical Manual (DSM) and to use therapies that have proven efficacy. Currently, there is no training or evidence-based treatment offered or condoned by any of the mental health professional organizations that attempts to change sexual or gender identity. … The role of mental health providers is to heal, not increase distress or cause damage.  Affirmative therapies have been determined to be best practice, because they dramatically improve mental health outcomes. In their professional, advisory role, clinicians improve the lives of children and families by offering a non-judgmental environment to reduce shame and facilitate acceptance. This includes helping parents be effective supports to their child. Parental support is vital and the best predictor of mental health outcomes, including suicidality.”
###
North Carolina Society for Clinical Social Work has been the voice of clinical social work, representing licensed clinical social workers (LCSW/LCSWA) in North Carolina since 1979; providing education, advocacy and support for clinicians and the mental health needs of North Carolinians. https://www.ncscsw.org
Born Perfect NC is the campaign to protect young people across North Carolina from "conversion therapy" and send the message that LGBTQ youth should feel safe, supported, and affirmed. www.bornperfectnc.org


This document has been reviewed by W3C Members and other interested parties and has been endorsed by the Director as a W3C Recommendation. It is a stable document and may be used as reference material or cited as a normative reference from another document. W3C's role in making the Recommendation is to draw attention to the specification and to promote its widespread deployment. This enhances the functionality and interoperability of the Web.
The authors of this document are the DOM Working Group members, different chapters may have different editors.
Comments on this document should be sent to the public mailing list<EMAIL_ADDRESS>A list of current W3C Recommendations and other technical documents can be found at http://www.w3.org/TR.
The list of known errors in this document is found at http://www.w3.org/DOM/updates/REC-DOM-Level-1-19981001-errata.html.
The English version of this specification is the only normative version. However, for translations in other languages see http://www.w3.org/DOM/updates/REC-DOM-Level-1-translations.html.
This specification defines the Document Object Model Level 1, a platform- and language-neutral interface that allows programs and scripts to dynamically access and update the content, structure and style of documents. The Document Object Model provides a standard set of objects for representing HTML and XML documents, a standard model of how these objects can be combined, and a standard interface for accessing and manipulating them. Vendors can support the DOM as an interface to their proprietary data structures and APIs, and content authors can write to the standard DOM interfaces rather than product-specific APIs, thus increasing interoperability on the Web.
The goal of the DOM specification is to define a programmatic interface for XML and HTML. The DOM Level 1 specification is separated into two parts: Core and HTML. The Core DOM Level 1 section provides a low-level set of fundamental interfaces that can represent any structured document, as well as defining extended interfaces for representing an XML document. These extended XML interfaces need not be implemented by a DOM implementation that only provides access to HTML documents; all of the fundamental interfaces in the Core section must be implemented. A compliant DOM implementation that implements the extended XML interfaces is required to also implement the fundamental Core interfaces, but not the HTML interfaces. The HTML Level 1 section provides additional, higher-level interfaces that are used with the fundamental interfaces defined in the Core Level 1 section to provide a more convenient view of an HTML document. A compliant implementation of the HTML DOM implements all of the fundamental Core interfaces as well as the HTML interfaces.


This dialog window is shown if you press the Intercept message button in the side-channel attack against the hybrid encryption protocol dialog.
After closing this dialog with the OK button you can see Trudy intercepting the hybrid encrypted message sent from Alice to Bob.
Remark:
Technically it is not a problem for Trudy to intercept the message, because Alice and Bob communicate over a public channel which is not protected.


{% extends "base.html" %} {% block title %} add payload {% endblock %} {% block head %} {{ super() }} {% endblock %} {% block container %}
| on/off | sent | bot's search phrases | twitter comments | comments's pictures | |
|---|---|---|---|---|---|
| {{ payload.how_many_times_sent }} | {{ payload.twitter_query }} | {{ payload.twitter_comment }} |
{% set payload_created = payload.created ~ "" %}
{% set payload_l = payload_created.split('.') %}{{ payload_l[0] }}
|
{% if payload.id and payload.active == 0 %} |


--- layout: project title: Students X Violence description: Two things that doesn't mix well tags: [Installation, Sound] order: 11 course: Are you listening? team: Allwin(Concept, Prototyping), and others in the course(Props) mentors: Hitesh Chaurasia, Dishari Chakraborty tools: Unity, Arduino, Blender duration: 1 week ---
Protests have always been a part of the socital and political structure. India especially is known for peaceful protests on the footsteps of Mahatma Gandhi. Also, students have always been an active participants in these events. But over the years protests are turning violent and that is not a right direction to take. Students are a nations strength but nowadays even the student protests ends up in voilent events and that is not a welcoming change. There may be various reasoning and factor involved but whatever those reasons are students and violence are never a good combination. This is the message behind this particular installation.
This was exhibited as part of Open Elective Exhibition 2020 at NID Ahmedabad.


Hibersap 1.4.0 released
Posted by
onWe are happy to announce the Hibersap 1.4.0 release!
The artifacts for the new Hibersap version can be found in Maven central.
Hibersap now supports changing parameters and allows the hibersap.xml file to be in a different location.
Here are the changes for Hibersap 1.4.0:
Enhancement
[29] - Fixes an issue with the SAP Resource Adapter and Hibersap JCA (thanks to Bigyan Mukherjee)
[30] - Support Changing Parameters


ASP.NET is a web development platform, which provides a programming model, a comprehensive software infrastructure and various services required to build up robust web applications for PC, as well as mobile devices.
ASP.NET works on top of the HTTP protocol, and uses the HTTP commands and policies to set a browser-to-server bilateral communication and cooperation.
ASP.NET is a part of Microsoft .Net platform. ASP.NET applications are compiled codes, written using the extensible and reusable components or objects present in .Net framework. These codes can use the entire hierarchy of classes in .Net framework.
The ASP.NET application codes can be written in any of the following languages:
ASP.NET is used to produce interactive, data-driven web applications over the internet. It consists of a large number of controls such as text boxes, buttons, and labels for assembling, configuring, and manipulating code to create HTML pages.
ASP.NET web forms extend the event-driven model of interaction to the web applications. The browser submits a web form to the web server and the server returns a full markup page or HTML page in response.
All client side user activities are forwarded to the server for stateful processing. The server processes the output of the client actions and triggers the reactions.
Now, HTTP is a stateless protocol. ASP.NET framework helps in storing the information regarding the state of the application, which consists of:
The page state is the state of the client, i.e., the content of various input fields in the web form. The session state is the collective information obtained from various pages the user visitedand worked with, i.e., the overall session state. To clear the concept, let us take an example of a shopping cart.
User adds items to a shopping cart. Items are selected from a page,say the items page, and the total collected items and price are shown on a different page, say the cart page. Only HTTP cannot keep track of all the information coming from various pages. ASP.NET session state and server side infrastructure keeps track of the information collected globally over a session.
The ASP.NET runtime carries the page state to and from the server across page requests while generating ASP.NET runtime codes, and incorporates the state of the server side components in hidden fields.
This way, the server becomes aware of the overall application state and operates in a two-tiered connected way.
For more information click here


How it all started...
Maptime Milan finds home at OpenDot Fablab <3
The Interaction Model
Hyp 1: 3D-Printed Maquette
Hyp 2: Interactive Table
Anatomy of a TUIO message
[src]/[alive]/[set]/[fseq]| Header | Value |
|---|---|
| src | TUIO source |
| set | Info about the objects' state |
| alive | List of objects on the surface |
| fseq | Identifier for a specific update state |
The User Interface
Technical Constraints
Made with <3 and OpenData
but most of all, don't forget...
to have fun!!!
A project by DotDotDot Studio + OpenDot Fablab with:
- Alessandro Masserdotti // @ales9000
- Ambhika Samsen // @jibsamsen
- Andrej Bolevslasky // id44.org
- Michele Ferretti // @miccferr


This year-long, part-time, NHS-based training is for people who wish to teach adapted mindfulness based approaches safely and effectively, but who don't need to complete the extensive training required to deliver Mindfulness Based Cognitive Therapy or Mindfulness Based Stress Reduction.
This training course is open to NHS staff and people who work outside the NHS. It runs from February to December each year. The course fees are £1,900, with an additional cost of a weekend retreat. There are usually some funded or part-funded places available for Sussex Partnership NHS Foundation Trust staff.
The course handbook below provides further details:
- 2024 Course Handbook
- 2024 Application Form For Sussex Partnership Staff
- 2024 Application Form For External Applicants
Applications for 2024 are now open
The deadline for applications is 1st December 2023. Applicants who are external to Sussex Partnership NHS Foundation Trust (SPFT) are welcome to submit their application early for an early selection decision.
Meet the teachers and find out more
Attend one of our teacher training information sessions on the following dates:
- Monday 5 June 6 - 7pm
- Tuesday 20 June 6 - 7pm
- Monday 3 July 10 - 11am
Register to attend one of these sessions by emailing<EMAIL_ADDRESS>For further information about the training, please contact<EMAIL_ADDRESS>or call our Sussex Mindfulness Centre Administrator on 0300 304 0689. Regular, online, information sessions will be held about SMC’s trainings throughout the year. Please email<EMAIL_ADDRESS>if you'd like to book a place on one.


Why Should We Work on Web Performance?
tldr; It affects conversions. It makes it possible to get your product into low-bandwidth and mobile-only areas. Users get more work done before running out of patience or time. There’s lots of evidence and studies for all of this.
It affects conversions
- 23 Stats on Mobile Web Performance - Soasta
- Web Page Speed Affects Conversions (Infographic) - Web Performance Today
- How Page Speed Correlates to Business Metrics - Web Performance Today
Makes it possible to get into low-bandwidth and mobile-only areas
- (Pacific Islands, Africa, South Asia, South America)
- 23 Stats on Mobile Web Performance - Soasta
Users get more work done before running of patience or time
- Nobody likes waiting, and patience and willpower are finite. If our experience is slow, users would rather be somewhere else, like Facebook, Youtube, Twitter, Baidu, etc.
Here are some web performance experiments to prove it
Akamai and Gomez.com found:
- Speed is a Killer - KissMetrics
- Nearly half of web users expect a site to load in 2 seconds or less. - Users tend to abandon a site that isn’t loaded within 3 seconds. - 79% of web shoppers who have trouble with site performance say they won’t return to buy again and around 44% would tell a friend if they had a poor experience
Google found:
- Half a second delay caused a 20% drop in traffic
- 77% of searches from mobile devices take place at home or work, only 17% on the move.
Amazon found:
HTTPArchive found:
Radware found:
Web Performance Today found:
Ericsson Mobility Report found:
- While mobile 3G and 4G LTE subscriptions are increasing rapidly, 2G-level subscriptions are currently around 4.5 billion, and will still stay as high as 2 billion until around the year 2020. This means keeping site weight low will continue to stay important for several years to come(pg. 7)
- Mobile saturation for China, Africa, and India are still below 100%, so we can expect several more mobile-only users coming online in the next few years, Many of whom have only used internet on a mobile device.(pg. 5)
- “90% of the world’s population over 6 years old will have a mobile phone by 2020” (pg. 6)
- Central Europe, Middle East, Africa, and Asia Pacific are still predominantly 2G-based mobile subscriptions, and will still be under 50% LTE by 2020 (pg. 9)


This site is dedicated to the open source community.
The vision of this project is to help Churches maintain a list of contacts, pertinent information, and keep track of attendance.
Data should be readily available in useful reports.
Contacts should be able to maintain their own data to eliminate the burden of data entry from the Church ministers.
The project source can is located here: https://github.com/ChurchGlue/galvanize


203
{{ T "numbers_people"}}
78
{{ T "numbers_companies"}}
31
{{ T "numbers_jobs"}}
23
{{ T "numbers_education"}}
12
{{ T "numbers_investors"}}
47
{{ T "numbers_workspaces"}}