Three days of demoscene compos and activities on July 20th to 22nd in Stockholm!
Edison is the biggest multiplatform demoparty in Sweden and has been around since 2011.
Edison features lots of competitions including coding for all available platforms, composing music, drawing or animating beautiful graphics and now even competing live on stage – there's something for everybody and we welcome all platforms and disciplines!
We are set on bringing you the best possible party experience we can - but we need your help to make the compos something truly special.
The venue Eggeby Gård features a converted barn named Teaterladan with plenty of space, an open field for camping, free parking and the Stockholm metro system nearby.
It's a perfect place to experience the Swedish summer, meeting other sceners outside in the warm sun or working on your production inside the barn while it rains.
Reserve the date in your calendar, pre-register on this site, buy your tickets and check out our timetable - it's that easy!
Are you new to the demoscene? Great, come join us and see what it's all about! We're convinced you'll be inspired by the party experience and want to start working on your own demo productions!
We need a list of participants before the event starts for legal reasons. We can't let you in if you're not registered or bought a ticket online.
Enter your e-mail address to get invited to the party Slack where you can chat with organizers and participants before, during and after the event.
You can also create private group channels without message history limitations.
You can pre-purchase your tickets online to save money and help us plan the event even better! The t-shirts are no longer available for pre-purchase, but you can still order one from our self-service store.
| Tickets Online | What you get | Price |
|---|---|---|
| Party Ticket | The party ticket just as before! Gain full access to the entire party experience! | 350 SEK |
| Supporter Ticket | If you love what we do and want a twice as expensive ticket! | 700 SEK |
| Sponsor Ticket | The easy way to become a sponsor, simply buy a sponsor ticket after contacting us for a sponsor agreement! | 5000 SEK |
| I Love Edison But Can't Come ❤ | You can donate any amount to the sofa scener fund to help us out with our lovely live-streaming efforts! | ANY SEK |
| Tickets At The Door | What you get | Price |
|---|---|---|
| Party Ticket (pre-registration required) | The party ticket payed using credit card at the door just as before! With a slight price adjustment and pre-registration still mandatory. | 400 SEK |
Please note that SJ is doing track maintenance between Stockholm Central and Stockholm Södra during the party. If your travel plan involve those tracks you'll have to switch between SL commute trains at Flemingsberg or Stockholm Södra. Please read more at SJ.
When travelling by plane we recommend the Arlanda or Bromma airports. Taxi directly from Arlanda to the party shouldn't be more than around 550 SEK, so if you are a group of people that's recommended.
From Stockholm Central Station there it's a matter of either taking a cab or going by the metro. If you want to go by metro, the closest stop is Tensta on the blue line, and from there it's a 1.5 kilometer walk to the party. A more scenic but longer walk can be enjoyed walking from Kista, also the blue line.
Going by taxi from Stockholm Central Station is easy if you use the designated taxi area outside. The cabs there are regulated and won't charge any exuberant fees. It is located in the front of the building.
The map below gives some hints. From the E18, take the exit at either Tensta (heading west) or Hjulsta (heading east) and get on Hjulstavägen heading east. Then turn right onto Spånga Kyrkväg in Tensta and immediately turn left at the gas station and follow Krällingegränd, going under the E18. You'll see Eggeby Gård from here on.


IBM Cloud Mobile Services - Push Notifications server-side SDK for NodeJs
The IBM Cloud Push Notifications service provides a unified push service to send real-time notifications to mobile and web applications. The Node.js SDK is used for sending push notifications through the IBM Cloud Push Notifications service.
Ensure that you go through IBM Cloud Push Notifications service documentation before you start.
Contents
- Prerequisites
- Installation
- Initialize SDK
- Simple Notification
- Notification options
- Send bulk Push Notifications
- Samples and videos
Prerequisites
-
Ensure that the following prerequisites are in place:
var PushNotifications = require('ibm-push-notifications').PushNotifications; var Notification = require('ibm-push-notifications').Notification; var PushMessageBuilder = require('ibm-push-notifications').PushMessageBuilder; var PushNotificationsApiKey = require('ibm-push-notifications').PushNotificationsWithApiKey;
Installation
npm install ibm-push-notifications --save
Initialize SDK
Initialize PushNotifications with details about your IBM Cloud Push Notifications service.
-
Initialize with AppSecret
var myPushNotifications = new PushNotifications(PushNotifications.Region.US_SOUTH, "your-push-app-guid", "your-push-service-appSecret");
-
Initialize with ApiKey
//Initialize var myPushNotifications = new PushNotificationsApiKey(PushNotifications.Region.US_SOUTH, "your-push-app-guid", "your-push-push-apikey"); // Get authtoken myPushNotifications.getAuthToken(function(hastoken,token){ console.log(hastoken, token); }
Note: If you are using the APIKEY for Initialisation kindly call
getAuthToken()
, bofre sending any notification. This will add an Authorization header for the request.
The first parameter in the initializer is the IBM Cloud region where the Push Notifications service is hosted. The four options are :
-
PushNotifications.Region.US_SOUTH
-
PushNotifications.Region.UK
-
PushNotifications.Region.SYDNEY
-
PushNotifications.Region.JP_TOK
-
PushNotifications.Region.FRANKFURT
-
PushNotifications.Region.US_EAST
If
null
is supplied for the last 2 parameters, their values will be automatically retrieved from the IBM Cloud app's environment variables, provided that your Node.js app is bound to the IBM Cloud app. If you are using dedicated service, useoverrideServerHost
and add any of the bluemixRegion (IBM Cloud region) value.PushNotifications.overrideServerHost = "YOUR_SERVICE_HOST"; var myPushNotifications = new PushNotifications(PushNotifications.Region.US_SOUTH, "your-push-app-guid", "your-push-service-appSecret");
Simple Notification
Create the push notification that you want to broadcast by supplying the alert message you want to be displayed. An optional URL may be supplied with the alert.
var message = PushMessageBuilder.Message.alert("20% Off for you")
.url("www.ibm.com").build();
var notificationExample = Notification.message(message).build();
Notification options
You can specify which devices, users, platforms, tag-subscriptions the notification should be sent to and customize the alert they receive.
-
Create the target. You can either set
deviceIds
oruserIds
or platforms ortagNames
.The following code snippet uses platforms, same way you can do it for deviceIds(...) or userIds(...) or tagNames(...).
var target = PushMessageBuilder.Target.platforms( [Notification.Platform.Apple, Notification.Platform.Google, Notification.Platform.WebChrome,Notification.Platform.WebFirefox, Notification.Platform.WebSafari,Notification.Platform.AppExtChrome]).build();
-
Create the message as listed:
var message = PushMessageBuilder.Message.alert("20% Off Offer for you") .url("www.ibm.com").build();
Functionality added for FirefoxWeb, ChromeWeb, SafariWeb, ChromeAppExtension and extra optional settings introduced for Apns and FCM.
-
Set all the optional settings for platforms (APNs, FCM, Safari etc).
-
APNs
//For APNs settings var apns = PushMessageBuilder.APNs.badge(1).interactiveCategory("Accept") .iosActionKey("PUSH_OFFER").sound("sound.mp3").type(Notification.APNsType.DEFAULT) .payload({ "alert" : "20% Off for you" }).titleLocKey("OFFER") .locKey("REPLYTO") .launchImage("launchImage1.png") .titleLocArgs(["Jenna","Frank"]).locArgs(["Jenna","Frank"]).subtitle("IBM Cloud") .title("IBM") .attachmentUrl("https://developer.blackberry.com/native/files/documentation/images/text_messages_icon.png") .build();
-
FCM
/* Options style and lights are new optional settings added to FCM, / * If your require lights and style settings you can create style and lights objects as listed */ var style = PushMessageBuilder.FCMStyle.type(Notification.FCMStyleTypes .BIGTEXT_NOTIFICATION).text("IBM Push").title("Big Text Notification").url("https://developer.blackberry.com/native/files/documentation/images/text_messages_icon.png") .lines(["IBM", "IBM Cloud", "Big Text Notification"]).build(); var lights = PushMessageBuilder.FCMLights.ledArgb(Notification.FCMLED.BLACK) .ledOffMs(1).ledOnMs(1).build(); //Also timetolive setting is provided which specifies how long (in seconds) //The message should be kept in FCM storage if the device is offline. var fcm = PushMessageBuilder.FCM.collapseKey("ping") .interactiveCategory("Accept").delayWhileIdle(true) .payload({ "alert" : "20% Off for you" }) .androidTitle("Title for Android") .priority(Notification.FCMPriority.DEFAULT).sound("sound.mp3").timeToLive(1.0) .icon("http://www.iconsdb.com/icons/preview/purple/message-2-xxl.png") .sync(true).visibility(Notification.Visibility.PUBLIC) .style(style).lights(lights).build();
-
Safari
//For Safari. //All the three settings are mandatory to provide. var safariWeb = PushMessageBuilder.SafariWeb.title("IBM").urlArgs(["www.IBM.com"]) .action("View").build();
-
Firefox
//For Firefox var firefoxWeb = PushMessageBuilder.FirefoxWeb.title("IBM") .iconUrl("http://www.iconsdb.com/icons/preview/purple/message-2-xxl.png") .timeToLive(1.0).payload({ "alert" : "20% Off for you" }).build();
-
ChromeAppExtension
//For ChromeAppExtension. //You need to provide proper iconUrl or else chromeApp would not work. var chromeAppExt = PushMessageBuilder.ChromeAppExt.collapseKey("ping") .delayWhileIdle(true).title("IBM") .iconUrl("https://encrypted-tbn3.gstatic.com/images?q=tbn:ANd9GcTptVxkAVpfhZO0h2KXbnQLg16yvDa7uF-y1t5KGmABDxJ13XoHR1YklGM").timeToLive(1.0) .payload({ "alert" : "20% Off for you" }).build();
-
Chrome
//For Chrome var chromeWeb = PushMessageBuilder.ChromeWeb.title("IBM") .iconUrl("http://www.iconsdb.com/icons/preview/purple/message-2-xxl.png") .timeToLive(1.0).payload({ "alert" : "20% Off for you" }).build();
-
Create settings with all platforms optional settings.
var settings = PushMessageBuilder.Settings.apns(apns).fcm(fcm).safariWeb(safariWeb) .firefoxWeb(firefoxWeb).chromeAppExt(chromeAppExt).chromeWeb(chromeWeb).build();
-
Create final notification using target, settings, and message.
var notificationExample = Notification.message(message) .target(target).settings(settings).build();
-
Send the Push notification.
myPushNotifications.send(notificationExample, function(error, response, body) { console.log("Error: " + error); console.log("Response: " + JSON.stringify(response)); console.log("Body: " + body); });
Send bulk Push Notifications
To send bulk push notifications do the following,
myPushNotifications.sendbulk([notificationExample,notificationExample1,notificationExample2], function(error, response, body) {
console.log("Error: " + error);
console.log("Response: " + JSON.stringify(response));
console.log("Body: " + body);
});
Samples and videos
-
For samples, visit - Github Sample
-
For video tutorials visit - IBM Cloud Push Notifications
Learning more
Connect with IBM Cloud
Twitter | YouTube | Blog | Facebook |
======================= Copyright 2020-21 IBM Corp.
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.


Aka Document. A logical piece of information (value), identified by a unique name (path). A State's value can be of any Javascript type: primitive types, nested Objects or Arrays. Peers can add States to the Jet Bus by registrating them to the Daemon. States may change its value spontaneously or on behalf of another Peer. They are subject to fetching and thus are observable by other Peers.
States may represent things like user records, CPU temperature or network settings. The Peer adding the State defines the behaviour when a set request comes in and is free to do anything that is appropriate. If necessary the requested value maybe adapted, interpolated or refused.


|
Cellular Automaton
0.1
|
#include <simulation.h>
Public Member Functions | |
| Simulation () | |
| Default constructor. More... | |
| Simulation (int nLin, int nCol) | |
| Receive the dimensions of the petri_dish. More... | |
| ~Simulation () | |
| Desconstructor. More... | |
| void | initialize (int argc, char *argv[]) |
| Start the simulation reading configurations from cli and file. More... | |
| bool | game_over () |
| Runs while extinction, stability, or maximum generation is not reached. More... | |
| void | process_events () |
| Apply the rules of conway's game of life, defining which cells will live. More... | |
| void | update () |
| Update the petri_dish with the new generation, adding and removing cells. More... | |
| void | render () |
| Process the output (text and images). More... | |
Definition at line 24 of file simulation.h.
| Simulation::Simulation | ( | ) |
Default constructor.
Definition at line 3 of file simulation.cpp.
| Simulation::Simulation | ( | int | nLin, |
| int | nCol | ||
| ) |
Receive the dimensions of the petri_dish.
Definition at line 5 of file simulation.cpp.
| Simulation::~Simulation | ( | ) |
Desconstructor.
Definition at line 19 of file simulation.cpp.
| bool Simulation::game_over | ( | ) |
Runs while extinction, stability, or maximum generation is not reached.
Definition at line 23 of file game_loop.cpp.
| void Simulation::initialize | ( | int | argc, |
| char * | argv[] | ||
| ) |
Start the simulation reading configurations from cli and file.
Definition at line 3 of file game_loop.cpp.
| void Simulation::process_events | ( | ) |
Apply the rules of conway's game of life, defining which cells will live.
Definition at line 37 of file game_loop.cpp.
| void Simulation::render | ( | ) |
Process the output (text and images).
Definition at line 79 of file game_loop.cpp.
| void Simulation::update | ( | ) |
Update the petri_dish with the new generation, adding and removing cells.
Definition at line 42 of file game_loop.cpp.


Farmers market this saturday Farmers market this saturday in brunswick park starting at 11 am
Sydney road closed this tuesday Sydney road will remain closed for an hour this tuesday due to road work
Queen's birthday party at eagle bar
Queen's birthday party at eagle bar hosted by some of the famous personalities


Tool Illegally Enables Windows 7 Extended Security Updates
by Lawrence AbramsA method has been discovered that allows Windows 7 users to bypass eligibility checks and receive Extended Security Updates even if they have not paid for a license.
On January 14, 2020, Windows 7 will reach end of support (EoS), which normally means that Microsoft will no longer offer security updates for the operating system.
As many business and enterprise users are not able to switch from Windows 7 before EoS, Microsoft introduced a paid-for service called Extended Security Updates (ESU) that allows licensed users to continue to receive security updates.
While some devices, such as voting systems, can get this service for free for a limited time, other business users who have a volume licensing agreement would need to purchase a license for $25 to $200 per device depending on the Windows and the year of the program.
Users created bypass to get free Extended Security Updates
To use the Windows 7 Extended Security Updates service, users need to activate ESU on their Windows 7 devices using the license key issued to them by Microsoft.
In a post to the MyDigitalLife forums, a user has uploaded a tool called BypassESU that bypasses the ESU license checks so that users can get the updates for free.
It does this by patching the operating system so that ESU license checks always return true, meaning that the device is properly licensed..
This bypass has been tested and shown to work by utilizing the Windows 7 KB4528069 update, which is used to test whether the device is properly configured to receive Extended Security Updates.
When installed, if ESU is not properly setup on the device, the update will fail to install. On the other hand, if ESU is configured or the bypass is run, the update will install successfully.
This tool is illegal
While it may be tempting to use this bypass in order to continue to receive Windows 7 security updates after EoS, it is important to remember that using the bypass is illegal.
By using this tool, users are circumventing license restrictions placed by Microsoft in order to get a paid-for product for free.
Instead of using this crack, Windows 7 users should upgrade to Windows 10, which can still be done for free.
Furthermore, by using scripts like these that install DLLs and make modifications to the proper operation of the operating system, you are putting yourself at risk for malware or other types of attacks.
H/T Ghacks.net


connectomics.data.augmentation¶
-
class
Compose
(transforms: list = [], input_size: tuple = (8, 256, 256), smooth: bool = True, keep_uncropped: bool = False, keep_non_smoothed: bool = False, additional_targets: typing.Union[dict, NoneType] = None)[source]¶ Composing a list of data transforms.
The sample size of the composed augmentor can be larger than the specified input size of the model to ensure that all pixels are valid after center-crop.
Parameters: - transforms (list) – list of transformations to compose.
- input_size (tuple) – input size of model in \((z, y, x)\) order. Default: \((8, 256, 256)\)
- smooth (bool) – smoothing the object mask with Gaussian filtering. Default: True
- keep_uncropped (bool) – keep uncropped image and label. Default: False
- keep_non_smooth (bool) – keep the non-smoothed object mask. Default: False
- additional_targets (dict, optional) – additional targets to augment. Default: None
- Examples::
>>> # specify addtional targets besides 'image' >>> kwargs = {'additional_targets': {'label': 'mask'}} >>> augmentor = Compose([Rotate(p=1.0, **kwargs), >>> Flip(p=1.0, **kwargs), >>> Elastic(alpha=12.0, p=0.75, **kwargs), >>> Grayscale(p=0.75, **kwargs), >>> MissingParts(p=0.9, **kwargs)], >>> input_size = (8, 256, 256), **kwargs) >>> sample = {'image':input, 'label':label} >>> augmented = augmentor(data) >>> out_input, out_label = augmented['image'], augmented['label']
-
class
DataAugment
(p: float = 0.5, additional_targets: typing.Union[dict, NoneType] = None)[source]¶ DataAugment interface. A data augmentor needs to conduct the following steps:
- Set
sample_params
at initialization to compute required sample size. - Randomly generate augmentation parameters for the current transform.
- Apply the transform to a pair of images and corresponding labels.
All the real data augmentations (except mix-up augmentor and test-time augmentor) should be a subclass of this class.
Parameters: -
set_params
()[source]¶ Calculate the appropriate sample size with data augmentation.
Some data augmentations (wrap, misalignment, etc.) require a larger sample size than the original, depending on the augmentation parameters that are randomly chosen. This function takes the data augmentation parameters and returns an updated data sampling size accordingly.
- Set
-
class
Elastic
(alpha: float = 16.0, sigma: float = 4.0, p: float = 0.5, additional_targets: typing.Union[dict, NoneType] = None)[source]¶ Elastic deformation of images as described in [Simard2003] (with modifications). The implementation is based on https://gist.github.com/erniejunior/601cdf56d2b424757de5. This augmentation is applied to both images and masks.
[Simard2003] Simard, Steinkraus and Platt, “Best Practices for Convolutional Neural Networks applied to Visual Document Analysis”, in Proc. of the International Conference on Document Analysis and Recognition, 2003. Parameters: - alpha (float) – maximum pixel-moving distance of elastic deformation. Default: 10.0
- sigma (float) – standard deviation of the Gaussian filter. Default: 4.0
- p (float) – probability of applying the augmentation. Default: 0.5
- additional_targets (dict, optional) – additional targets to augment. Default: None
-
class
Grayscale
(contrast_factor: float = 0.3, brightness_factor: float = 0.3, mode: str = 'mix', invert: bool = False, invert_p: float = 0.0, p: float = 0.5, additional_targets: typing.Union[dict, NoneType] = None)[source]¶ Grayscale intensity augmentation, adapted from ELEKTRONN (http://elektronn.org/).
Randomly adjust contrast/brightness, randomly invert the color space and apply gamma correction. This augmentation is only applied to images.
Parameters: - contrast_factor (float) – intensity of contrast change. Default: 0.3
- brightness_factor (float) – intensity of brightness change. Default: 0.3
- mode (string) – one of
'2D'
,'3D'
or'mix'
. Default:'mix'
- invert (bool) – whether to invert the images. Default: False
- invert_p (float) – probability of inverting the images. Default: 0.0
- p (float) – probability of applying the augmentation. Default: 0.5
- additional_targets (dict, optional) – additional targets to augment. Default: None
-
class
Rotate
(rot90: bool = True, p: float = 0.5, additional_targets: typing.Union[dict, NoneType] = None)[source]¶ Continuous rotatation of the xy-plane.
If the rotation degree is arbitrary, the sample size for x- and y-axes should be at least \(\sqrt{2}\) times larger than the input size to ensure there is no non-valid region after center-crop. This augmentation is applied to both images and masks.
Parameters:
-
class
Rescale
(low: float = 0.8, high: float = 1.25, fix_aspect: bool = False, p: float = 0.5, additional_targets: typing.Union[dict, NoneType] = None)[source]¶ Rescale augmentation. This augmentation is applied to both images and masks.
Parameters: - low (float) – lower bound of the random scale factor. Default: 0.8
- high (float) – higher bound of the random scale factor. Default: 1.2
- fix_aspect (bool) – fix aspect ratio or not. Default: False
- p (float) – probability of applying the augmentation. Default: 0.5
- additional_targets (dict, optional) – additional targets to augment. Default: None
-
class
MisAlignment
(displacement: int = 16, rotate_ratio: float = 0.0, p: float = 0.5, additional_targets: typing.Union[dict, NoneType] = None)[source]¶ Mis-alignment data augmentation of image stacks. This augmentation is applied to both images and masks.
Parameters:
-
class
MissingSection
(num_sections: int = 2, p: float = 0.5, additional_targets: typing.Union[dict, NoneType] = None)[source]¶ Missing-section augmentation of image stacks. This augmentation is applied to both images and masks.
Parameters:
-
class
MissingParts
(deformation_strength: int = 0, iterations: int = 40, p: float = 0.5, additional_targets: typing.Union[dict, NoneType] = None)[source]¶ Missing-parts augmentation of image stacks. This augmentation is only applied to images.
Parameters:
-
class
Flip
(do_ztrans: int = 0, p: float = 0.5, additional_targets: typing.Union[dict, NoneType] = None)[source]¶ Randomly flip along z-, y- and x-axes as well as swap y- and x-axes for anisotropic image volumes. For learning on isotropic image volumes set
do_ztrans
to 1 to swap z- and x-axes (the inputs need to be cubic). This augmentation is applied to both images and masks.Parameters:
-
class
MotionBlur
(sections: int = 2, kernel_size: int = 11, p: float = 0.5, additional_targets: typing.Union[dict, NoneType] = None)[source]¶ Motion blur data augmentation of image stacks. This augmentation is only applied to images.
Parameters:
-
class
CutBlur
(length_ratio: float = 0.25, down_ratio_min: float = 2.0, down_ratio_max: float = 8.0, downsample_z: bool = False, p: float = 0.5, additional_targets: typing.Union[dict, NoneType] = None)[source]¶ 3D CutBlur data augmentation, adapted from https://arxiv.org/abs/2004.00448.
Randomly downsample a cuboid region in the volume to force the model to learn super-resolution when making predictions. This augmentation is only applied to images.
Parameters: - length_ratio (float) – the ratio of the cuboid length compared with volume length.
- down_ratio_min (float) – minimal downsample ratio to generate low-res region.
- down_ratio_max (float) – maximal downsample ratio to generate low-res region.
- downsample_z (bool) – downsample along the z axis (default: False).
- p (float) – probability of applying the augmentation. Default: 0.5
- additional_targets (dict, optional) – additional targets to augment. Default: None
-
class
CutNoise
(length_ratio: float = 0.25, mode: str = 'uniform', scale: float = 0.2, p: float = 0.5, additional_targets: typing.Union[dict, NoneType] = None)[source]¶ 3D CutNoise data augmentation.
Randomly add noise to a cuboid region in the volume to force the model to learn denoising when making predictions. This augmentation is only applied to images.
Parameters: - length_ratio (float) – the ratio of the cuboid length compared with volume length.
- mode (string) – the distribution of the noise pattern. Default:
'uniform'
. - scale (float) – scale of the random noise. Default: 0.2.
- p (float) – probability of applying the augmentation. Default: 0.5
- additional_targets (dict, optional) – additional targets to augment. Default: None
-
class
MixupAugmentor
(min_ratio: float = 0.7, max_ratio: float = 0.9, num_aug: int = 2)[source]¶ Mixup augmentor (experimental). Conduct linear interpolation between two image samples. The segmentation mask of the sample with higher weight should be used with the augmented output.
The input can be a numpy.ndarray or torch.Tensor of shape \((B, C, Z, Y, X)\).
Parameters: - Examples::
>>> from connectomics.data.augmentation import MixupAugmentor >>> mixup_augmentor = MixupAugmentor(num_aug=2) >>> volume = mixup_augmentor(volume) >>> pred = model(volume)
-
class
TestAugmentor
(mode='mean', num_aug=4)[source]¶ Test-time augmentor.
Our test-time augmentation includes horizontal/vertical flips over the xy-plane, swap of x and y axes, and flip in z-dimension, resulting in 16 variants. Considering inference efficiency, we also provide the option to apply only x-y swap and z-flip, resulting in 4 variants. By default the test-time augmentor returns the pixel-wise mean value of the predictions.
Parameters: - Examples::
>>> from connectomics.data.augmentation import TestAugmentor >>> test_augmentor = TestAugmentor(mode='mean', num_aug=16) >>> output = test_augmentor(model, inputs) # output is a numpy.ndarray on CPU


If, like me, you intend to spend the autumn in the great outdoors, entented at Camp Dabbler, be sure to read the by no means exhaustive list of Victorian camping gear stowed in my cupboard this week.
Useful as the list is, it raises a number of questions. The following puzzlers spring to mind, though I have not yet been able to come up with answers.
Which version of the Bible is best suited for a camping trip?
How many boxes should one pack, and of what kind?
Which is the most effective oil to apply to one's Brogans?
Why is the harness the sole item on the list which one should examine, presumably before the start of the camping trip? Are we to assume that all the other things can be shoved willy nilly into one's camping pantechnicon without them being given the once over with a gimlet eye?
“Meal (in bag). Meal-bag.” Does this mean the properly prepared camper should take two meal-bags, one containing meal and one empty? Or is the repetition designed to hammer the point home for the camping dunderpate, much as one hammers home the pegs of the dunderpate's tent?
Regarding pens, should one take ballpoints (with tips about the size of a lobster's brain) or thick black magic markers, or fountain pens, or indeed swans?
No particular song-book is recommended, and it would be helpful to have some idea of the kind of songs one might be expected to sing while hunched around the fire at Camp Dabbler.
If any readers can help out with these, or other camping-related questions thrown up by the list, please use the Comments facility.


2 THESSALONIANS
1
Greeting
1 Paul, Silvanus, and Timothy,
To the church of the Thessalonians in God our Father and the Lord Jesus Christ:
2 Grace to you and peace from God our Father and the Lord Jesus Christ.
Thanksgiving
3 We ought always to give thanks to God for you, brothers, as is right, because your faith is growing abundantly, and the love of every one of you for one another is increasing.
4 Therefore we ourselves boast about you in the churches of God for your steadfastness and faith in all your persecutions and in the afflictions that you are enduring.
The Judgment at Christ's Coming
5 This is evidence of the righteous judgment of God, that you may be considered worthy of the kingdom of God, for which you are also suffering—
6 since indeed God considers it just to repay with affliction those who afflict you,
7 and to grant relief to you who are afflicted as well as to us, when the Lord Jesus is revealed from heaven with his mighty angels
8 in flaming fire, inflicting vengeance on those who do not know God and on those who do not obey the gospel of our Lord Jesus.
9 They will suffer the punishment of eternal destruction, away from the presence of the Lord and from the glory of his might,
10 when he comes on that day to be glorified in his saints, and to be marveled at among all who have believed, because our testimony to you was believed.
11 To this end we always pray for you, that our God may make you worthy of his calling and may fulfill every resolve for good and every work of faith by his power,
12 so that the name of our Lord Jesus may be glorified in you, and you in him, according to the grace of our God and the Lord Jesus Christ.


This site is a collection of APIs developed from the Su / Wu Labs at Scripps Research on COVID-19-related data and resources. These APIs provide all the data at outbreak.info, which is a resource to collect, share, and integrate COVID-19 and SARS-CoV-2 data critical to scientific research.
These APIs were built using BioThings SDK and follow the same design pattern of our official BioThings APIs (MyGene.info, MyVariant.info, MyChem.info, etc). These APIs are also pending to be integrated into the proper official BioThings API based on their entity type.
Since these APIs follow the same design pattern as our BioThings APIs, you may refer to the following MyChem.info API documentation as a guide on how to use these APIs. Additionally, you may try the live APIs on the Try It pages below.


A part of a pattern can be enclosed in parentheses pattern:(...)
. This is called a “capturing group”.
That has two effects:
Let’s see how parentheses work in examples.
Without parentheses, the pattern pattern:go+
means subject:g
character, followed by subject:o
repeated one or more times. For instance, match:goooo
or match:gooooooooo
.
Parentheses group characters together, so pattern:(go)+
means match:go
, match:gogo
, match:gogogo
and so on.
js run alert("Gogogo now!".match(/(go)+/gi)); // "Gogogo"
Let’s make something more complex – a regular expression to search for a website domain.
For example:
mail.com
users.mail.com
smith.users.mail.com
As we can see, a domain consists of repeated words, a dot after each one except the last one.
In regular expressions that’s pattern:(\w+\.)+\w+
:
```js run let regexp = /(+.)++/g;
alert(“site.com my.site.com”.match(regexp)); // site.com,my.site.com ```
The search works, but the pattern can’t match a domain with a hyphen, e.g. my-site.com
, because the hyphen does not belong to class pattern:\w
.
We can fix it by replacing pattern:\w
with pattern:[\w-]
in every word except the last one: pattern:([\w-]+\.)+\w+
.
The previous example can be extended. We can create a regular expression for emails based on it.
The email format is: name@domain
. Any word can be the name, hyphens and dots are allowed. In regular expressions that’s pattern:[-.\w]+
.
The pattern:
```js run let regexp = /[-.]+@([-]+.)+[-]+/g;
<EMAIL_ADDRESS>@ his@site.com.uk”.match(regexp)); //<EMAIL_ADDRESS><EMAIL_ADDRESS>```
That regexp is not perfect, but mostly works and helps to fix accidental mistypes. The only truly reliable check for an email can only be done by sending a letter.
Parentheses are numbered from left to right. The search engine memorizes the content matched by each of them and allows to get it in the result.
The method str.match(regexp)
, if regexp
has no flag g
, looks for the first match and returns it as an array:
0
: the full match.1
: the contents of the first parentheses.2
: the contents of the second parentheses.For instance, we’d like to find HTML tags pattern:<.*?>
, and process them. It would be convenient to have tag content (what’s inside the angles), in a separate variable.
Let’s wrap the inner content into parentheses, like this: pattern:<(.*?)>
.
Now we’ll get both the tag as a whole match:

and its contents match:h1
in the resulting array:
";
let tag = str.match(/<(.*?)>/);
alert(tag[0]); //alert(tag[1]); // h1 ```
Parentheses can be nested. In this case the numbering also goes from left to right.
For instance, when searching a tag in subject:<span class="my">
we may be interested in:
match:span class="my"
.match:span
.match:class="my"
.Let’s add parentheses for them: pattern:<(([a-z]+)\s*([^>]*))>
.
Here’s how they are numbered (left to right, by the opening paren):
In action:
```js run let str = ‘’;
let regexp = /<(([a-z]+)([^>]*))>/;
let result = str.match(regexp); alert(result[0]); // alert(result[1]); // span class=“my” alert(result[2]); // span alert(result[3]); // class=“my” ```
The zero index of result
always holds the full match.
Then groups, numbered from left to right by an opening paren. The first group is returned as result[1]
. Here it encloses the whole tag content.
Then in result[2]
goes the group from the second opening paren pattern:([a-z]+)
- tag name, then in result[3]
the tag: pattern:([^>]*)
.
The contents of every group in the string:
Even if a group is optional and doesn’t exist in the match (e.g. has the quantifier pattern:(...)?
), the corresponding result
array item is present and equals undefined
.
For instance, let’s consider the regexp pattern:a(z)?(c)?
. It looks for "a"
optionally followed by "z"
optionally followed by "c"
.
If we run it on the string with a single letter subject:a
, then the result is:
```js run let match = “a”.match(/a(z)?(c)?/);
alert(match.length); // 3 alert(match[0]); // a (whole match) alert(match[1]); // undefined alert(match[2]); // undefined ```
The array has the length of 3
, but all groups are empty.
And here’s a more complex match for the string subject:ac
:
```js run let match = “ac”.match(/a(z)?(c)?/);
alert(match.length); // 3 alert(match[0]); // ac (whole match) alert(match[1]); // undefined, because there’s nothing for (z)? alert(match[2]); // c ```
The array length is permanent: 3
. But there’s nothing for the group pattern:(z)?
, so the result is ["ac", undefined, "c"]
.
``warn header="
matchAllis a new method, polyfill may be needed" The method
matchAll` is not supported in old browsers.
A polyfill may be required, such as https://github.com/ljharb/String.prototype.matchAll.
When we search for all matches (flag `pattern:g`), the `match` method does not return contents for groups.
For example, let's find all tags in a string:
```js run
let str = '

';
let tags = str.match(/<(.*?)>/g);
alert( tags ); //
,

The result is an array of matches, but without details about each of them. But in practice we usually need contents of capturing groups in the result.
To get them, we should search using the method str.matchAll(regexp)
.
It was added to JavaScript language long after match
, as its “new and improved version”.
Just like match
, it looks for matches, but there are 3 differences:
pattern:g
is present, it returns every match as an array with groups.null
, but an empty iterable object.For instance:
```js run let results = "".matchAll(/<(.*?)>/gi);
// results - is not an array, but an iterable object alert(results); // [object RegExp String Iterator]
alert(results[0]); // undefined (*)
results = Array.from(results); // let’s turn it into array
alert(results[0]); //,h2 (2nd tag) ```
As we can see, the first difference is very important, as demonstrated in the line (*)
. We can’t get the match as results[0]
, because that object isn’t pseudoarray. We can turn it into a real Array
using Array.from
. There are more details about pseudoarrays and iterables in the article info:iterable.
There’s no need in Array.from
if we’re looping over results:
".matchAll(/<(.*?)>/gi);
for (let result of results) { alert(result); // first alert:,h2 } ```
…Or using destructuring:
Every match, returned by matchAll
, has the same format as returned by match
without flag pattern:g
: it’s an array with additional properties index
(match index in the string) and input
(source string):
".matchAll(/<(.*?)>/gi);
let [tag1, tag2] = results;
alert(tag1[0]); //```
``smart header="Why is a result of
matchAll` an iterable object, not an array?" Why is the method designed like that? The reason is simple - for the optimization.
The call to matchAll
does not perform the search. Instead, it returns an iterable object, without the results initially. The search is performed each time we iterate over it, e.g. in the loop.
So, there will be found as many results as needed, not more.
E.g. there are potentially 100 matches in the text, but in a for..of
loop we found 5 of them, then decided it’s enough and made a break
. Then the engine won’t spend time finding other 95 matches.
## Named groups
Remembering groups by their numbers is hard. For simple patterns it's doable, but for more complex ones counting parentheses is inconvenient. We have a much better option: give names to parentheses.
That's done by putting `pattern:?<name>` immediately after the opening paren.
For example, let's look for a date in the format "year-month-day":
```js run
*!*
let dateRegexp = /(?<year>[0-9]{4})-(?<month>[0-9]{2})-(?<day>[0-9]{2})/;
*/!*
let str = "2019-04-30";
let groups = str.match(dateRegexp).groups;
alert(groups.year); // 2019
alert(groups.month); // 04
alert(groups.day); // 30
As you can see, the groups reside in the .groups
property of the match.
To look for all dates, we can add flag pattern:g
.
We’ll also need matchAll
to obtain full matches, together with groups:
```js run let dateRegexp = /(?
let str = “2019-10-30 2020-01-01”;
let results = str.matchAll(dateRegexp);
for (let result of results) { let { year, month, day } = result.groups;
alert(${day}.${month}.${year}
); // first alert: 30.10.2019 // second: 01.01.2020 } ```
Method str.replace(regexp, replacement)
that replaces all matches with regexp
in str
allows to use parentheses contents in the replacement
string. That’s done using pattern:$n
, where pattern:n
is the group number.
For example,
```js run let str = “John Bull”; let regexp = /(+) (+)/;
alert(str.replace(regexp, “$2, $1”)); // Bull, John ```
For named parentheses the reference will be pattern:$<name>
.
For example, let’s reformat dates from “year-month-day” to “day.month.year”:
```js run let regexp = /(?
let str = “2019-10-30, 2020-01-01”;
alert(str.replace(regexp, “ < day > .
Sometimes we need parentheses to correctly apply a quantifier, but we don’t want their contents in results.
A group may be excluded by adding pattern:?:
in the beginning.
For instance, if we want to find pattern:(go)+
, but don’t want the parentheses contents (go
) as a separate array item, we can write: pattern:(?:go)+
.
In the example below we only get the name match:John
as a separate member of the match:
```js run let str = “Gogogo John!”;
! // ?: exludes ‘go’ from capturing let regexp = /(?:go)+ (+)/i; /!
let result = str.match(regexp);
alert( result[0] ); // Gogogo John (full match) alert( result[1] ); // John alert( result.length ); // 2 (no more items in the array) ```
Parentheses group together a part of the regular expression, so that the quantifier applies to it as a whole.
Parentheses groups are numbered left-to-right, and can optionally be named with (?<name>...)
.
The content, matched by a group, can be obtained in the results:
str.match
returns capturing groups only without flag pattern:g
.str.matchAll
always returns capturing groups.If the parentheses have no name, then their contents is available in the match array by its number. Named parentheses are also available in the property groups
.
We can also use parentheses contents in the replacement string in str.replace
: by the number $n
or the name $<name>
.
A group may be excluded from numbering by adding pattern:?:
in its start. That’s used when we need to apply a quantifier to the whole group, but don’t want it as a separate item in the results array. We also can’t reference such parentheses in the replacement string.


5 references to HostResponseReceived
System.Management.Automation (5)
engine\remoting\server\ServerPowerShellDriver.cs (2)
387
dsHandler.
HostResponseReceived
+= HandleHostResponseReceived;
396
dsHandler.
HostResponseReceived
-= HandleHostResponseReceived;
engine\remoting\server\ServerRemotingProtocol2.cs (2)
658
Dbg.Assert(
HostResponseReceived
!= null,
667
HostResponseReceived
.SafeInvoke(this, new RemoteDataEventArgs<RemoteHostResponse>(remoteHostResponse));
engine\remoting\server\ServerSteppablePipelineDriver.cs (1)
136
DataStructureHandler.
HostResponseReceived
+= HandleHostResponseReceived;


Players tipped to sign for Birmingham City as former Blue makes second debut
The latest Birmingham City news and views brought to you by Birmingham Live
by Mark WakefieldBRILLIANT NEWS
Birmingham City fan Tommy Plant has made a remarkable recovery being critically ill - and Blues celebrated his return home with him by inviting him to St Andrew's.
The youngster suffered a cardiac arrest back in January and was in a coma for three days.
He initially recovered but returned to hospital four weeks ago and was in intensive care .
Boss Pep Clotet sent the seven-year-old his and the club's best wishes and the club followed that up by bringing him down to St Andrew's to welcome him back once he returned home.
His story captured the hearts of Blues players, who personally reached out to the youngster.
And they posed for pictures with Tommy in the dressing room and around the ground.
Blues don't have a match today due to the international break, their next Championship clash a trip to Huddersfield Town on Saturday week.
FORMER BLUES STAR MAKES SECOND DEBUT
League Two side Swindon Town have confirmed they have re-signed former Birmingham City defender Paul Caddis.
Caddis rejoins the Robins on a short-term deal, six years after leaving the club to sign for Blues in 2013.
The experienced right-back made more than 150 appearances in two spells for Blues, with his first stint coming as a loan spell from Swindon in the 2012-13 season.
His move to St Andrew’s was then made permanent that summer, and he went on to spend three-and-a-half more seasons with Blues before signing for Bury in 2017.
Since leaving Birmingham, Caddis has had spells at Bury, Blackburn Rovers, Bradford City, before rejoining the club he initially signed for in 2010.
His first stint with Swindon saw Caddis make 92 appearances and has now re-signed for the club on a short-term deal.
Prior to joining Swindon, the 31-year-old has been training with the club in recent weeks to keep fit and sharp and manager.
“He is a very good trainer, very fit and a good footballer as well – and, above all, his attitude is spot on,” said manager Richie Wellens.
Caddis featured in Swindon’s 302 win over Salford City on Saturday, coming on as a substitute for the final minutes of the clash at Moor Lane.
PLAYERS LINKED WITH BLUES
Birmingham City are already a third of the way through the 2019-20 Championship campaign - and the January transfer window is fast approaching.
The first month of 2020 will provide Pep Clotet and his rival managers in the second tier with the chance to bolster their squads for the rest of the season.
Clotet has already spoken about his plans for the window and the club strategy that has been drawn up.
"The club is preparing for any position in case something happens. We have a wide squad at the minute so we need to be selective with what we want to bring,” he said.
“I know the club is working very hard and they have already our targets selected. That for me is a pleasure to see in a club.
“The club is as committed as well as much as possible to be able to recruit as early as possible in January."
So who could Blues look to bring in?
We've gathered together a list of the players they have previously been linked with ahead of the window opening in seven weeks' time.


# coding:utf-8
#
# The MIT License (MIT)
#
# Copyright (c) 2016-2018 yutiansut/QUANTAXIS
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
# in the Software without restriction, including without limitation the rights
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
# copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included in all
# copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
# SOFTWARE.
"""
QA fetch module
@yutiansut
QAFetch is Under [QAStandard#0.0.2@10x] Protocol
"""
from QUANTAXIS.QAFetch import QAWind as QAWind
from QUANTAXIS.QAFetch import QATushare as QATushare
from QUANTAXIS.QAFetch import QATdx as QATdx
from QUANTAXIS.QAFetch import QAThs as QAThs
from QUANTAXIS.QAFetch import QACrawler as QACL
from QUANTAXIS.QAFetch import QAEastMoney as QAEM
[docs]def use(package):
if package in ['wind']:
from WindPy import w
# w.start()
return QAWind
elif package in ['tushare', 'ts']:
return QATushare
elif package in ['tdx', 'pytdx']:
return QATdx
elif package in ['ths', 'THS']:
return QAThs
[docs]def QA_fetch_get_stock_day(package, code, start, end, if_fq='01', level='day', type_='json'):
Engine = use(package)
if package in ['ths', 'THS', 'wind']:
return Engine.QA_fetch_get_stock_day(code, start, end, if_fq)
elif package in ['ts', 'tushare']:
return Engine.QA_fetch_get_stock_day(code, start, end, if_fq, type_)
elif package in ['tdx', 'pytdx']:
return Engine.QA_fetch_get_stock_day(code, start, end, if_fq, level)
else:
return Engine.QA_fetch_get_stock_day(code, start, end)
[docs]def QA_fetch_get_stock_realtime(package, code):
Engine = use(package)
return Engine.QA_fetch_get_stock_realtime(code)
[docs]def QA_fetch_get_stock_indicator(package, code, start, end):
Engine = use(package)
return Engine.QA_fetch_get_stock_indicator(code, start, end)
[docs]def QA_fetch_get_trade_date(package, end, exchange):
Engine = use(package)
return Engine.QA_fetch_get_trade_date(end, exchange)
[docs]def QA_fetch_get_stock_min(package, code, start, end, level='1min'):
Engine = use(package)
if package in ['tdx', 'pytdx']:
return Engine.QA_fetch_get_stock_min(code, start, end, level)
else:
return 'Unsupport packages'
[docs]def QA_fetch_get_stock_list(package, type_='stock'):
Engine = use(package)
if package in ['tdx', 'pytdx']:
return Engine.QA_fetch_get_stock_list(type_)
else:
return 'Unsupport packages'
[docs]def QA_fetch_get_stock_transaction(package, code, start, end, retry=2):
Engine = use(package)
if package in ['tdx', 'pytdx']:
return Engine.QA_fetch_get_stock_transaction(code, start, end, retry)
else:
return 'Unsupport packages'
[docs]def QA_fetch_get_stock_transaction_realtime(package, code):
Engine = use(package)
if package in ['tdx', 'pytdx']:
return Engine.QA_fetch_get_stock_transaction_realtime(code)
else:
return 'Unsupport packages'
[docs]def QA_fetch_get_stock_xdxr(package, code):
Engine = use(package)
if package in ['tdx', 'pytdx']:
return Engine.QA_fetch_get_stock_xdxr(code)
else:
return 'Unsupport packages'
[docs]def QA_fetch_get_index_day(package, code, start, end, level='day'):
Engine = use(package)
if package in ['tdx', 'pytdx']:
return Engine.QA_fetch_get_index_day(code, start, end, level)
else:
return 'Unsupport packages'
[docs]def QA_fetch_get_index_min(package, code, start, end, level='1min'):
Engine = use(package)
if package in ['tdx', 'pytdx']:
return Engine.QA_fetch_get_index_min(code, start, end, level)
else:
return 'Unsupport packages'
[docs]def QA_fetch_get_stock_block(package):
Engine = use(package)
if package in ['tdx', 'pytdx', 'ths']:
return Engine.QA_fetch_get_stock_block()
else:
return 'Unsupport packages'
[docs]def QA_fetch_get_stock_info(package, code):
Engine = use(package)
if package in ['tdx', 'pytdx']:
return Engine.QA_fetch_get_stock_info(code)
else:
return 'Unsupport packages'
[docs]def QA_fetch_get_future_list(package,):
Engine = use(package)
if package in ['tdx', 'pytdx']:
return Engine.QA_fetch_get_future_list()
else:
return 'Unsupport packages'
[docs]def QA_fetch_get_future_day(package, code, start, end, frequence='day'):
Engine = use(package)
if package in ['tdx', 'pytdx']:
return Engine.QA_fetch_get_future_day(code, start, end, frequence=frequence)
else:
return 'Unsupport packages'
[docs]def QA_fetch_get_future_min(package, code, start, end, frequence='1min'):
Engine = use(package)
if package in ['tdx', 'pytdx']:
return Engine.QA_fetch_get_future_min(code, start, end, frequence=frequence)
else:
return 'Unsupport packages'
[docs]def QA_fetch_get_security_bars(code, _type, lens):
return QATdx.QA_fetch_get_security_bars(code, _type, lens)


CHAPTER 124
MILITARY COURTS-MARTIAL
REPEALED. L 1982, c 171, §6.
Cross References
For present provisions, see chapter 124A.


Welcome to the Beans'R'Us Pricing Page
Current price of coffee beans =
$5.49
Price valid for 15 minutes from 19:42 on Wednesday 27/05/2009.


High Prefect Finker:
Anyone wishing to become an Orc Shaman must have achieved at least level 20.
You passed the Orc Shaman test, but you haven't earned enough experience. Raise your level and then come back to me.


These dancers performed similarly to you on your competitions.
Legend:
- Better dancers;
- Like you;
- Weaker dancers.
The page creates a personalized ranking based on yor performance, comparing to other dancers you have competed
with.
(It also means if dancer A is better than dancer B on your ranking, A is not necessary better than B on B's ranking)
Your scores are always 0, if someone performs better than you at a given event, gets positive score, if worst
negative score.
The scores are weighted with the time passed since that competition.
The page also maintains an accuracy score to each dancer.
Accuracy score is lower if you haven't competed with the given dancer since a while.
Dancers with the lowest accuracy score are filtered out.


GitLab • June 2021 - October 2021
Hivestack • September 2020 - May 2021
GitHub • February 2020 - August 2020
DNEG • May 2019 - January 2020
Bachelor's Degree in Computer Science • January 2016 - December 2018
Courses: Artificial Intelligence, Computer Networking, Data Structures and Algorithms, Databases, Object Oriented Programming, Software Engineering, Web Programming


Vincent Kendrick
Home
(current)
Blog
Resume
Ready To Work
My Ups And Downs, Extras
This is where I let you know a little more about me.
Delta.2006-2020
This is where I am now
This is where I should be
And this is how I feel about everything. I Love Web Development
Check Out My Music I made for my son.. He Loves it.
Primary


--- layout: default --- {% include submenu_documentation.html %}
This website contains the latest, most up to date version of the documentation. In general we hope the documentation here is accurate and makes reference to specific version compatibility issues, but we know this isn't always true. In some cases it may be valuable to refer to the documentation written for your specific driver version.
{{ content }}


Facter 101
02 Apr 2013Facter is what gives Puppet it’s brains. It collects information about the computer it is run on and then passes it to the Puppet Master for use in manifests and can optionally be stored. I know, it doesn’t sound like the most earth shattering revelation of all time, but stop for a moment. Every time your current scripts need to taget a specific OS version or a machine with a certain bit of hardware, you need to code it directly into the script. If the method of extracting that information changes, you need to modify every single script that uses that method. With Facter, you’re editing one file, which is always up to date on the client. Anyway, that’s enough waffle from me. Let’s get started.
Requirements
- VirtualBox
- Vagrant
- Either a Mac running 10.8 that you don’t mind wiping, or a Virtual Machine running in VMWare Fusion or similar.
- Git (Install the Command Line Tools from within Xcode’s preferences if you don’t have it).
Setup
We need a Puppet Master - fortunately there’s one pre-built that has everything we need. Make sure you’ve installed everything in the requirements, and then open up your trusty Terminal:
This will pull down the needed bits to get your own Puppet Master running and then vagrant up
will start things going. If you get errors about Postgres, just issue a vagrant reload
Now for your test Mac: I’ve made a script to automate the process. If you don’t have a DNS entry for your Puppet Master, and you’re using the Vagrant setup described above, run this in your terminal:
If you are using a different setup, please refer to the script’s readme for more information
Learn some Facts
On your client machine, run this in a Terminal
Your test Mac will churn away for a minute and then spit out a ton of information - you’ll see everything from the uptime of the machine to the amount of RAM. Still not overly useful sitting on that one machine. We need this information somewhere central to make use of it.
We need to make one small change to ~/src/facter-101/puppet/manifests/site.pp
to get the puppet run working:
This is to stop Puppet complaining that there’s nothing to import - which there isn’t yet.
Assuming your Puppet Master is running, this is on your test Mac:
You’ll see a load of files being synced to your test Mac - these are custom Facts, plugins and assorted other goodies being pulled from the server. We’ll get to using custom Facts in a moment. If you load up http://<IP_ADDRESS>:3000 in your browser of choice, you’ll see your client having checked into Puppet. Click on it’s hostname and you’ll be presented with a list of all of the available Facts for that machine.
That’s all very nice, but what can we use it for?
The Plan
We’re going to install some extra facts from the Puppet Forge onto our Master, and then write some code to target a specific set of machines. In our fictional world, every Mac with 4GB or more of RAM will be designated a “design” Mac. We’ll install Firefox on those (that’s a design app, right?).
First we’ll install the extra Facts onto our Master from the Forge.
Now we’ll write a class that will:
- Test that the client machine is a Mac
- Test that the client machine also has more than 4GB RAM
- If both conditions are satisfied, will install Firefox.
Create your ~/src/facter-101/puppet/manifests/classes/design.pp
and make it look like the following.
Puppet has a default node - all machines checking into the Master get anything that’s declared in this node by default. Open up ~/src/facter-101/puppet/manifests/site.pp
and make it look like:
We’ve added some classes, so the Puppet Master process needs to be restarted - rebooting the whole VM is probably quicker.
On your Test Mac, perform a Puppet run.
Depending on how much memory is in your test Mac, this might or might not do anything. Play with the $::mac_memory_in_gb value, starting high and then bringing it down to the amount of RAM in your test Mac - or if you are running your test Mac in a VM, you could also adjust the amount of memory assigned to it.
So that’s Facter - you’re not limited to using this with the default node, this technique can be used anywhere you write Puppet code. Try changing your design.pp file to look like the following - we’re using Facter Facts directly within our manifest to write data to the test Mac.
Which gives us
This is a very simple example of how you can use Facter to configure your machines. Facter can be used anywhere you’d set a variable manually - the Puppet documentation on Conditional Statements is an excellent next step with dynamically assigning configuration to your machines.


Part-Time Clinic Nurse
The Clinic Nurse has the responsibility of providing case management, prenatal and parenting education, pregnancy tests and other related medical services to clients of Lifeline Pregnancy Help Clinic. In addition, the Clinic Nurse may be trained in limited obstetrical ultrasound to be performed under the supervision of the Medical Director. The successful candidate will be well organized, self-motivated, personable, adhere to strict confidentiality, enjoy health education, and have a desire to share the love of Jesus Christ with all they serve. Additional duties within the Clinic will also be performed as assigned. Position is two days per week, 12-16 hours.
Qualifications of Position:
- Must have current Missouri Registered Nursing license
- Possess bachelor’s or master’s degree in nursing or equivalent experience
- Exhibit strong interpersonal and instructional skills
- Computer skills including Microsoft Office programs, electronic file systems, etc.
- Experience in charting and maintaining client files
- Agreement with the Lifeline Statement of Faith and Statement of Principle
- Faithfully attend church and be a committed Christian who demonstrates a personal relationship with Jesus Christ as Savior and Lord
- Exhibit strong commitment to the sanctity of human life
- Submit to a criminal background check prior to employment
- Self-motivated, driven, and able to carry out responsibilities with little supervision
- Certified in limited obstetrical ultrasound, or willingness to be trained for certification
- Must complete Lifeline Client Advocate Training
Major Responsibilities:
- Perform client pregnancy tests and limited obstetrical ultrasound (only if certified)
- Client intake and enrollment to Lifeline Programs
- Client case management and referrals for various support services
- Provide prenatal and parenting education
- Charting, data entry, and follow-up for clients served
- Stay current on all curriculum updates and training necessary to maintain programs
- Help to ensure all medical equipment is properly operated and maintained
- Assist with supervision and training of client advocate volunteers
- As needed assist with special projects, fundraisers, etc.
Training and Support:
- On-the-job training and support will be provided
- Training in Limited Obstetrical Ultrasound both hands on and didactic
Position Reports to: Executive Director
Resignation Requirements: Position requires at least a two-week notice for resignation in good standing.
Please send cover letter, resume and references to:
Lifeline Pregnancy Help Clinic
Attn: Breanne Hunt
PO Box 663
Kirksville, MO 63501


Last week I bought some salvia divinorum to share with some friends on winter holidays next week. Having read about the strength of its psychedelic qualities, I was (and still am actually) quite uncertain if it would be a good idea to share this plant with people that have no experience with psycheldelics whatsoever.
Last night I decided to smoke a little of the extract I had bought to get a suggestion of what and where a full experience would bring me. Maybe I could taste some of the fear and awe so many people are talking about. I must admit, however, that I am very sensitive to any drug. The fact that I was alone made me even more cautious.
In one toke I finished what can't have been more than 40 mg of the material, kept the smoke in my lungs for about 15 seconds and exhaled. It came on fast, like ether. My shirt was getting itchy, and it felt very pleasant to stretch and relax the muscles of my face. Then it suddenly felt like someone was pulling me gently on my shirt. This seemed very real. I remember laughing and thinking 'come on, don't try to play with me'.
When I opened my eyes I saw myself hanging in the middle of some kind of circular and transparent platform. Suddenly it felt like this platform was pushed upwards at one side, what caused me to hang sideways. Again it was like there was someone who was doing this to me, someone I felt very familiar with. It made me giggle.
Several seconds later I was completely out of that strange world. In total the effects can not have lasted more than 2 to 5 minutes. For the rest of the evening I felt very relaxed and read every article from the newspaper I had bought with unusual interest.
This encounter made me curiouser than I was before. I hope that next time, with a strong dose, I won't meet Mike Tyson in the ring either.
Experience Reports are the writings and opinions of the individual authors who submit them.
Some of the activities described are dangerous and/or illegal and none are recommended by Erowid.


Web Developer
A highly motivated Computer Science fresh graduate, second-class honor, seeking to work for an organization that can help me in enhancing my skills, strengthening my knowledge and realizing my potential to grow along with the organization's objective.


Buy the book
The updated IVT source code (runs with IVT version 1.3.8-1 and newer, does note require Qt anymore - except chapter 10) for the applications from the book is available here: SourceFiles-updated.zip.
The book homepage is: http://wwwiaim.ira.uka.de/computer-vision, where you can also find the original source code for the book (running with IVT version 1.0.6).
Computer vision is probably the most exciting branch of image processing, and the number of applications in robotics, automation technology and quality control is constantly increasing. Unfortunately entering this research area is, as yet, not simple. Those who are interested must first go through a lot of books, publications and software libraries.
With this book, however, the first step is easy. The theoretically founded content is understandable and is supplemented by many practical examples. Source code is provided with the specially developed platform-independent open source library IVT in the programming language C/C++. The use of the IVT is not necessary, but it does make for a much easier entry and allows first developments to be quickly produced.
The authorship is made up of research assistants of the chair of Professor Ruediger Dillmann at the Institut für Technische Informatik (ITEC), Universitaet Karlsruhe (TH). Having gained extensive experience in image processing in many research and industrial projects, they are now passing this knowledge on.
Fundamental section: Among other subjects, the following are dealt with in the fundamentals section of the book: Lighting, optics, camera technology, transfer standards, camera calibration, image enhancement, segmentation, filters, correlation and stereo vision.
Practical section: The practical section provides the efficient implementation of the algorithms, followed by many interesting applications such as interior surveillance, bar code scanning, object recognition, 3-D scanning, 3-D tracking, a stereo camera system and much more.


Forms Research
Over 2.4 billion people are projected to buy products online in 2021 (Coppola). This means that more likely than not, each of these individuals will fill out a web form in the process of making their online purchase. As websites have grown to become more than just informational, businesses rely on their website for managing customer interactions. Web forms can be helpful ways to collect contact information for future product promotions or sales. Businesses can use a contact form to give customers a way to ask for assistance while removing the need to put their own email address on the website. Spammers have been known to scrape email addresses from websites and to inundate them with junk mail (Broadley).
Generally, people aren’t thrilled about having to fill out contact forms. Whether they’re nervous about giving away personal information or pressed for time, customers won’t freely give their information away without some incentive. Businesses need to be conscious of getting just enough information for their use without overwhelming customers by asking too many questions. As Kristen Baker states in her blog, “If your web form doesn’t make sense to your leads —if it’s complicated or asks for too much information —potential leads may lose interest and leave your site. Consider how much the offer at the end of the form is worth and adjust your web form accordingly.(Baker)” Businesses should be intentional about what questions they ask, and try to keep the number of fields on the form to the bare minimum. For example, imagine a chain of bakeries. The bakery owners have all people who visit their website fill out a simple form that asks the visitor to fill their address before they can view the site. They ask this because they want to know where their customers are, so that they can customize the next page to show the closest bakery’s address and promotions. They could easily lose business, because many of their potential customers are unwilling to provide their address just to visit the site. Instead, the bakery website could ask for postal-code. Customers will be more willing to fill out their postal-code since it’s a single field and less-sensitive information. By keeping in mind what the business is offering the customer, and why they want the information in the first place, businesses can design web forms that are tailored based to their specific product and customer needs.


IFTAB
Section: Linux Programmer's Manual (5)Updated: 26 February 2007
Index Return to Main Contents
NAME
iftab - static information about the network interfacesDESCRIPTION
The file /etc/iftab contains descriptive information about the various network interfaces. iftab is only used by the program ifrename(8) to assign a consistent network interface name to each network interface./etc/iftab defines a set of mappings. Each mapping contains an interface name and a set of selectors. The selectors allow ifrename to identify each network interface on the system. If a network interface matches all descriptors of a mapping, ifrename attempt to change the name of the interface to the interface name given by the mapping.
MAPPINGS
Each mapping is described on a separate line, it starts with an interface name, and contains a set of descriptors, separated by space or tabs.The relationship between descriptors of a mapping is a logical and. A mapping matches a network interface only is all the descriptors match. If a network interface doesn't support a specific descriptor, it won't match any mappings using this descriptor.
If you want to use alternate descriptors for an interface name (logical or), specify two different mappings with the same interface name (one on each line). Ifrename always use the first matching mapping starting from the end of iftab, therefore more restrictive mapping should be specified last.
INTERFACE NAME
The first part of each mapping is an interface name. If a network interface matches all descriptors of a mapping, ifrename attempt to change the name of the interface to the interface name given by the mapping.The interface name of a mapping is either a plain interface name (such as eth2 or wlan1) or a interface name pattern containing a single wildcard (such as eth* or wlan*). In case of wildcard, the kernel replace the '*' with the lowest available integer making this interface name unique. Note that wildcard is only supported for kernel 2.6.1 and 2.4.30 and later.
It is discouraged to try to map interfaces to default interfaces names
such as
eth0, wlan0 or ppp0.
The kernel use those as the default name for any new interface,
therefore most likely an interface will already use this name and
prevent ifrename to use it. Even if you use takeover, the interface
may already be up in some cases. Not using those name will allow you
to immediately spot unconfigured or new interfaces.
Good names are either totally unique and meaningfull,
such as
mydsl or privatehub,
or use larger integer, such as
eth5 or wlan5.
The second type is usually easier to integrate in various network utilities.
DESCRIPTORS
Each descriptor is composed of a descriptor name and descriptor value. Descriptors specify a static attribute of a network interface, the goal is to uniquely identify each piece of hardware.Most users will only use the mac selector despite its potential problems, other selectors are for more specialised setup. Most selectors accept a '*' in the selector value for wilcard matching, and most selectors are case insensitive.
- mac mac address
-
Matches the MAC Address of the interface with the specified MAC
address. The MAC address of the interface can be shown using
ifconfig(8)
or
ip(8).
This is the most common selector, as most interfaces have a unique MAC address allowing to identify network interfaces without ambiguity. However, some interfaces don't have a valid MAC address until they are brought up, in such case using this selector is tricky or impossible. - arp arp type
-
Matches the ARP Type (also called Link Type) of the interface with the
specified ARP type as a number. The ARP Type of the interface can be
shown using
ifconfig(8)
or
ip(8),
the
link/ether
type correspond to
1
and the
link/ieee802.11
type correspond to
801.
This selector is useful when a driver create multiple network interfaces for a single network card. - driver driver name
- Matches the Driver Name of the interface with the specified driver name. The Driver Name of the interface can be shown using ethtool -i(8).
- businfo bus information
- Matches the Bus Information of the interface with the specified bus information. The Bus Information of the interface can be shown using ethtool -i(8).
- firmware firmware revision
- Matches the Firmware Revision of the interface with the firmware revision information. The Firmware Revision of the interface can be shown using ethtool -i(8).
- baseaddress base address
-
Matches the Base Address of the interface with the specified base
address. The Base Address of the interface can be shown using
ifconfig(8).
Because most cards use dynamic allocation of the Base Address, this selector is only useful for ISA and EISA cards. - irq irq line
-
Matches the IRQ Line (interrupt) of the interface with the specified
IRQ line. The IRQ Line of the interface can be shown using
ifconfig(8).
Because there are IRQ Lines may be shared, this selector is usually not sufficient to uniquely identify an interface. - iwproto wireless protocol
-
Matches the Wireless Protocol of the interface with the specified
wireless protocol. The Wireless Protocol of the interface can be shown
using
iwconfig(8)
or
iwgetid(8).
This selector is only supported on wireless interfaces and is not sufficient to uniquely identify an interface. - pcmciaslot pcmcia slot
-
Matches the Pcmcia Socket number of the interface with the specified
slot number. Pcmcia Socket number of the interface can be shown
using
cardctl ident(8).
This selector is usually only supported on 16 bits cards, for 32 bits cards it is advised to use the selector businfo. - prevname previous interface name
-
Matches the name of the interface prior to renaming with the specified
oldname.
This selector should be avoided as the previous interface name may vary depending on various condition. A system/kernel/driver update may change the original name. Then, ifrename or another tool may rename it prior to the execution of this selector. - SYSFS{filename} value
-
Matches the content the sysfs attribute given by filename to the
specified value. For symlinks and parents directories, match the
actual directory name of the sysfs attribute given by filename to the
specified value.
A list of the most useful sysfs attributes is given in the next section.
SYSFS DESCRIPTORS
Sysfs attributes for a specific interface are located on most systems in the directory named after that interface at /sys/class/net/. Most sysfs attribute are files, and their values can be read using cat(1) or more(1). It is also possible to match attributes in subdirectories.Some sysfs attributes are symlinks, pointing to another directory in sysfs. If the attribute filename is a symlink the sysfs attribute resolves to the name of the directory pointed by the symlink using readlink(1). The location is a directory in the sysfs tree is also important. If the attribute filename ends with /.., the sysfs attribute resolves to the real name of the parent directory using pwd(1).
The sysfs filesystem is only supported with 2.6.X kernel and need to be mounted (usually in /sys). sysfs selectors are not as efficient as other selectors, therefore they should be avoided for maximum performance.
These are common sysfs attributes and their corresponding ifrename descriptors.
- SYSFS{address} value
- Same as the mac descriptor.
- SYSFS{type} value
- Same as the arp descriptor.
- SYSFS{device} value
- Valid only up to kernel 2.6.20. Same as the businfo descriptor.
- SYSFS{..} value
- Valid only from kernel 2.6.21. Same as the businfo descriptor.
- SYSFS{device/driver} value
- Valid only up to kernel 2.6.20. Same as the driver descriptor.
- SYSFS{../driver} value
- Valid only from kernel 2.6.21. Same as the driver descriptor.
- SYSFS{device/irq} value
- Valid only up to kernel 2.6.20. Same as the irq descriptor.
- SYSFS{../irq} value
- Valid only from kernel 2.6.21. Same as the irq descriptor.
EXAMPLES
# This is a commenteth2 mac 08:00:09:DE:82:0E
eth3 driver wavelan interrupt 15 baseaddress 0x390
eth4 driver pcnet32 businfo 0000:02:05.0
air* mac 00:07:0E:* arp 1
myvpn SYSFS{address} 00:10:83:* SYSFS{type} 1
bcm* SYSFS{device} 0000:03:00.0 SYSFS{device/driver} bcm43xx
bcm* SYSFS{..} 0000:03:00.0 SYSFS{../driver} bcm43xx
AUTHOR
Jean Tourrilhes -<EMAIL_ADDRESS>/etc/iftabSEE ALSO
ifrename(8), ifconfig(8), ip(8), ethtool(8), iwconfig(8).
Index
- NAME
- DESCRIPTION
- MAPPINGS
- INTERFACE NAME
- DESCRIPTORS
- SYSFS DESCRIPTORS
- EXAMPLES
- AUTHOR
- FILES
- SEE ALSO
This document was created by man2html, using the manual pages.
Time: 05:34:00 GMT, December 24, 2015


The Medical Informatics platform offers a wide list of Data mininig and Machine learning tools for patients classification exploiting a bottom up approach (from data to diagnosis). The main tools are reported hereinafter: o Semi-supervised rule-based clustering algorithm: The rule-based algorithm aims to explain the variability between individuals, and describes a population by a group of “local over-densities”. These are defined as subspaces over combinations of variables. The algorithm performs an exhaustive search of the data space to predict the outcome variables. A typical use case consists of the health status of each subject in terms of the presence or absence of AD. In our experiment, the predictive variables are the 90 brain region volumes, age, gender, and individual subject global volumes. o Informatics-based Model - Enriched Automated Diagnostic Tools: This is an automated classifier from a set of MRI scans that came from deceased, pathologically diagnosed individuals. This classifier provides prognostic value on clinically categorised living people. o Informatics-based Model - Deep Learning for Automated Features Extraction: The increasing calculation power of computers has led to a rising interest in complex machine learning methods. In particular, the investigation of artificial neural networks with many hidden layers continuously results in promising new applications. These include image and face recognition (1, 2, 3), speech recognition (1, 2) and signal processing (1). Very recently, these deep learning networks have also been used in the classification of AD patients versus healthy control subjects, resulting in accuracies of up to 95% (Suk, Heung-Il; Shen, Dinggang; Deep learning-based feature representation for AD/MCI classification Medical Image Computing and Computer-Assisted Intervention–MICCAI 2013 583- 590,2013).o Informatics-based Model - Rasch Model and Factor Analysis for Learning Disease Severity: We propose to extract an index or a latent variable from the neuroimaging data to quantify the disease severity for each subject and regional vulnerability by applying factor analysis. Since the atrophy pattern correlates with the loss of neurons, this severity has a biological meaning and is independent of symptoms. We aim to test if the estimated severity significantly associates with clinical diagnosis and identify the regions highly weighted in calculating the severity. o Informatics-based Model - Bi-Clustering Applied to Gene Expression and Brain Volumetric Data: The Ping-Pong Algorithm (PPA) is a bi-clustering method used to compare two datasets with one common dimension. The algorithm uses a random weighted set of genes as a starting point (called a seed). It then selects subjects in which these genes deviate from the mean across subjects. Using these subjects, it then selects brain regions whose volumes deviate from the mean in these subjects. Using these regions, it selects a second vector of subjects for which the volumes of these regions deviate from the mean across subjects. Finally, it selects a new set of genes whose expression in these subjects deviates from the norm. This process is repeated until convergence is reached (i.e. the gene, subject, and region sets do not change from one iteration to the next). o Informatics-based Model - Bayesian Causal Model: We aimed at designing, equations derivation and implementing the causal Bayesian model similar to the General Linear Model (GLM) for distributed Data. GLM is one of the most used models to estimated dependences between clinical, neuropsychological and Neuroimaging variables. In our case the data is distributed in different Hospitals and it is not possible to move them to a unique Federation node where the GLM could be computed in a classical way. Therefore special equations should be developed that allow us to have reliable GLM estimations under this condition. The Bayesian Formalism provides us the necessary armamentarium to deal with it and offers general sophisticated ways to extend to other models and managing high dimensional and Multimodal Data.o Disease subtypes signatures - Big Medical Data Strategy (3-C): We offer a 3C strategy (Categorize, Cluster & Classify) that starts from the medical knowledge, categorizing the available set of features into three types: the patients’ assigned disease diagnosis, clinical measurements and potential biological markers, proceeds to an unsupervised learning process targeted to create new disease diagnosis classes, and finally, classifying the newly proposed diagnosis classes utilizing the potential biological markers. Our strategy, developed as part of the medical informatics work package at the EU Human Brain flagship Project strives to connect between potential biomarkers, and more homogeneous classes of disease manifestation that are expressed by meaningful features.Label Propagation Framework is a MIP function providing a Feature Extraction Framework. Data mining is to be based on a number of brain structure volume features, which are automatically extracted from patient MRI scans. o Multi-Target Regression on Data Streams is a MIP function that implements the FIMT-DD and iSOUP-Tree algorithms for learning decision trees from data streams, the former for single-target prediction and the latter for multi-target prediction. Both of these algorithms produce models in the form of a model tree, i.e., a decision tree, which uses linear functions in the leaves to achieve better performance. o Predictive Clustering Trees combine aspects from both predictive modeling and clustering. Predictive clustering trees (PCTs) partition the set of examples into subsets in which examples have similar values of the target variable, while clustering produces subsets in which examples have similar values of the descriptive variables. The task of predictive clustering is to find clusters of examples which have similar values of both the target and the descriptive variables. o The Rule Ensembles function implements the FIRE algorithm, which employs the rule ensembles approach for solving multi-target regression and time series problems. We can improve the accuracy of the rule model by adding simple linear functions to the ensemble, which results in a model that is a combination of global linear functions and rules. o The Feature Ranking for Structured Targets implements two algorithms for feature ranking for structured targets: (1) RF-RANK exploits the random forests mechanism and (2) GENIE3 exploits the variance reduction at each tree node from the ensemble. For the latter method, the ensemble could be random forest or an ensemble of extra trees. The both methods use predictive clustering trees as base predictive models.o Subgroup Discovery from Multi-Resolution Data is a tool that can use ontological domain knowledge (RDF graphs) in the learning process. Subgroup descriptions contain terms from the given domain knowledge and enable potentially better generalizations. o The Subgroup Discovery from Heterogeneous Data performs network propositionalization on a heterogeneous network by first deconstructing the network into several homogeneous networks. The homogeneous networks are constructed using user-supplied meta-paths in the heterogeneous network (for example, in a network consisting of papers and their authors, we can construct a homogeneous network of papers where two papers are connected if they share an author). The result of this function is a set of feature vectors, one for each node of the target type. Recently, the function was updated so that it can accept not only heterogeneous networks, but also standard data instances (with feature vectors) as input. In that case, the function constructs a proximity network of instances and performs network propositionalization on the resulting network. o Brainspan Co-Expression Clustering is a multi-dimensional co-expression analysis method for extracting disease signatures. We used BrainSpan human transcriptome database for our experiments. o BH-tSNE is a non-linear dimensionality reduction (DR) algorithm to visualize high- dimensional data. The main advantage of non-linear DR algorithms in comparison to linear DR algorithms such as PCA is that non-linear DR algorithms can represent neighbouring samples in the high-dimensional space better than linear DR algorithms in the lower dimensional space such as 2D or 3D. This advantage is crucial to visualize similarities between the features of samples of the data (such as gene expressions, disease phenotypes), hence to observe possible correlations between the samples and classify them in the same cluster.


Current State of JavaScript Game Development
by Igor Pelekhan
About me
- Front-end developer at EPAM Poland
- Game development enthusiast
- Attended Ludum Dare once: https://wowsuch.games/ludum-dare-44/
- Ultimate goal is to finally finish at least one game 😅
Current state
- CSS 3d Transforms (not JS actually, but cool)
- HTML5 Canvas
- WebGL
- WebSocket and WebRTC
- Gamepad API
HTML5 Canvas
Browser support
HTML5 Canvas
Canvas API
<canvas id="canvas"></canvas>
const canvas = document.getElementById('canvas');
const ctx = canvas.getContext('2d');
ctx.fillStyle = 'green';
ctx.fillRect(10, 10, 150, 100);
HTML5 Canvas
Canvas API
Result
HTML5 Canvas
Frameworks
HTML5 Canvas
- ✅ Great browser support
- ✅ Easy to use api
- ❌ Low performance
- ❌ Most cool kids use WebGL
WebGL
Browser support (WebGL)
WebGL
Browser support (WebGL 2.0)
WebGL
OpenGL implementation in the browser
WebGL
Pipeline
WebGL
Shaders
void main() {
gl_Position = projectionMatrix * modelViewMatrix * vec4(position.x+10.0, position.y, position.z+5.0, 1.0);
}
void main() {
gl_FragColor = vec4(0.0, 0.58, 0.86, 1.0);
}
WebGL
Shaders
Result
WebGL
- ✅ High performance
- ✅ Relatively great browser support for WebGL1
- ❌ No support for WebGL2 on Apple devices
- ❌ Verbose API
WebGL
Doing WebGL for fun
WebGL
Three.js
- ✅ WebGL abstracted very well
- ✅ Easy to use, great documentation
- ✅ Most popular WebGL library
- ❌ Just a graphics library
- ❌ Some parts are lacking ES Modules support
WebGL
Babylon.js
- ✅ Stable API
- ✅ Very active community (Three.js oldest bug ~2014, Babylon.js ~few days ago)
- ✅ Written in TypeScript
- ✅/❌ Supported by Microsoft
- ❌ Less popular
WebGL
Babylon.js
WebGL
Pixi.js
- ✅ Easy API
- ✅ Optimized for 2d
- ✅ Used by large companies (Disney, Youtube, McDonald's)
- ❌ Only renderer
WebGL
Phaser
WebGL
Phaser
- ✅ Full blown game engine
- ✅ Easy to use API
- ✅ Most popular JS game engine
- ❌ Some parts are not documented
- ❌ Limited TypeScript support
- ❌ Single person "show"
Gamepad API
Browser support
* no haptic support everywhere except Firefox though
Networking
WebRTC


Back-End Developer with interest in PHP, Python and Javascript. Front-End Newbie.
He Also Loves Simplicity.
Portfolio
FanCity, an online platform that promotes and rewards the love for football by providing news and organizing
quizzes about football in which winners get rewards.


About
Portfolio
Contact
Here's
some
recent
work.
APPLICATION // JAVA
FTP Client
See source code
Web Application // HTML/CSS/JavaScript
Find a buddy
See source code
Assignment // Bootstrap
Layout in bootstrap
See source code
© Vikram Guhilot. All rights reserved.


VISION
Eliminate obesity and diabetes by
enabling all primary care doctors
to cure these diseases by
treating their root causes.
MISSION
To make curative solutions commercially viable
by engaging thought leaders, payors, and
doctors to work together
PROBLEM
Despite the tens of billions invested in research and initiatives to treat obesity and diabetes, things have gotten worse NOT better. Currently over half (60%) of the US population is overweight, nearly half (40%) of the US population is obese, and an alarming one third of the US population is projected to have type 2 diabetes by the year 2050. Not only are our new research and development efforts not helping, but none of our wellness initiatives are having an impact either.
Both obesity and type 2 diabetes are reversible. Many academic thought leaders know that most type 2 diabetes is curable in less than six months if given the right treatment. Curing diabetes is not limited to new diabetics, but includes those who have had diabetes for decades. Data reported by IDM suggests cure rates could be as high as 95%. Yet our primary care doctors do not even treat obesity and those that treat type 2 diabetes treat it as a chronic incurable disease. This is because instead of being trained to identify and treat the root causes of the type 2 diabetes, they have been taught to focus almost exclusively on addressing disease symptoms. This means managing blood glucose and disease complications like renal disease, retinopathy, and debilitating ulcers. Most have little or no training in managing obesity. The results have been disastrous. Millions of Americans now suffer and even die from side effects of obesity and diabetes diseases that we have the means to both prevent and cure.
Obesity and type 2 diabetes now represent the single largest contributor to US healthcare costs and to our healthcare crisis. Estimated at over $1 Trillion dollars annually we now spend one in every three US healthcare dollars on obesity and type 2 diabetes.
SOLUTION
We need to enable ALL our primary care doctors to provide the kind of root cause based treatments that can slow, halt, and ultimately reverse obesity and diabetes. These are treatments and approaches using validated methodologies that go well beyond traditional wellness programs that frequently run without doctor supervision. These are treatments that can and will reverse obesity and type 2 diabetes and which can only be administered properly when doctors are involved. This paves the way for large-scale prevention and treatment that can change the course of our healthcare crisis. It may not reverse severe end organ damage, but it can eliminate the disease that will lead to progression and it can set the stage for therapeutic interventions that now have a chance to treat end organ damage. Yet most efforts to treat obesity and diabetes focus on wellness programs that dis-intermediate or exclude physician involvement. While these are important and helpful, they are clearly not enough.
If training most of our doctors to use Viagra for impotence moved this product from nothing to nearly 90% market penetration in less than three years, imagine what training all our doctors to treat obesity and diabetes can do in three years.
VAVICI uses a state of the art web-based platform to work with thought leaders, payors, and doctors to make proper patient treatment commercially feasible. This platform empowers and engages both physicians and patients to take control and to seek and identify the specific root causes and solutions that will work for each individual patient. This is NOT a one size fits all, but a personalized medicine approach that can only be done with a physician.
The VAVICI platform will create a massive database integrating both outcomes and interventions allowing both physicians and patients to work together to crowd source the data needed to know what works. A frequent complaint in the community is the regular appearance of a new fad diet or “miracle” supplement recommendation. These are almost always based on insufficient data and very limited patient experience. While a single patient’s data might not be meaningful, VAVICI will be able to empower patients and doctors to aggregate data from thousands perhaps millions of patients. By creating collaborative communities of doctors and patients, we can assemble the data to convincingly prove what works and build the unified support needed to make real change. In a world where opposing interests easily outspend wellness initiatives one hundred to one, there is no room for egos and self interest we must all come together as one.


While other technologies will have a significant impact in the world, the Internet of Things is poised to be the most revolutionary. The world will have 25 billion Internet-connected objects by 2020 — just a short four years away.
Create a startup and develop a business model that revolves around providing assistance and care to the ongoing Syrian Refugee crisis. 12 million Syrians need humanitarian assistance!
The Makerspace is a student-run space for everyone to collaborate and build their dream projects for FREE! Design a startup that targets this platform.
Brainstorm and pitch your own ideas to solve real world problems. Note: You will not be eligible for the $500 prize.
Proud to be geeky. Unhealthy obsessions with the internet, data, marketing, and customer experience. Spent a decade working with enterprises like Google, American Express, and Chase Bank on demand gen and marketing campaigns, then took a leap of faith with an early stage tech startup (acquired in 2013) and have never looked back.
Currently Co-Founder of TenStartups - A community-based accelerator program (Alpha), and JustReply - A performance reporting platform that prompts employees to report things back by simply replying to an email. (Beta).
Passionate about helping startups and entrepreneurs with growth and marketing strategies and execution. Unofficial Startup Weekend, Ladies Learning Code, and Code for Kids ambassador.


TABLE OF INTERACTIONS WITH
TORSADES DE POINTES INDUCING MEDICATIONS (EXCEPT ANTIPARASITICS, NEUROLEPTICS, METHADONE)
From the French ANSM drug interactions document of September 2016, p. 220
TORSADES DE POINTES INDUCING MEDICATIONS (EXCEPT ANTIPARASITICS, NEUROLEPTICS, METHADONE) CLASS CODE: C01B |
SUBSTANCES THAT TEND TO INDUCE TORSADES DE POINTES CLASS CODE: C01-N05 |
Increased risk of ventricular arrhythmias, especially of torsades de pointes |
Contraindication --for erythromycin and vincamine, only the forms administered by IV route are affected by this interaction. --for spiramycin, the IV and oral routes are concerned Not recommended --with the antiparasitics (chloroquine halofantrine, lumefantrine, pentamidine), the neuroleptics, methadone and hydroxychloroquine |


You need to enable JavaScript to run this app.
Loading...
Enter Your Information
All fields are required. Please check for accuracy and spelling to avoid delays
Personal Information
First name
Middle Name
Last name
Current home address
Date of Birth
Social Security Number (SSN)
Verify Your Income Information
Please provide 2 recent paystubs and annual income
Verify income
Applicant Consent & E-Signature:
I am providing my electronic signature to certify all information entered is complete accurate.
I agree, submit


How to enable or disable the document title to function as a download link to the associated document for the Documents module. This setting is enabled by default.
Important. Documents cannot be downloaded if the 'Show Title Link' field is disabled and the 'Download Link' is not Visible. In this scenario, the document titles and visible columns are displayed as static text to all users who can view the module.
Title Link disabled and the alternative Download Link enabled