The primary focus of our team’s redesign included integrating a new feature to prompt users to send cryptocurrency tips to musicians they like. The beta product, including our redesign, will launch in Fall 2018.
How might we help music influencers discover new talent they want to support and keep them engaged in their music discovery process?
A mobile app where music influencers can easily send micropayments to independent artists they want to support.
Test the PurpleThrone alpha application to find areas of improvement. Conduct user interviews to better understand how PurpleThrone can meet the needs of music influencers and provide them with a cryptocurrency tipping feature.
101 screener survey responses
7 user interviews
3 contextual inquiries with PurpleThrone's alpha app
Competitive and comparative feature analysis
Affinity mapping
I created an interview script that would steer our conversations towards these topics:
What compels people to participate in digital crowdfunding campaigns?
Why do people tip street musicians?
Why: We needed wrap our minds around why people give money (both online and in-person) to entrepreneurs, musicians and other content creators.
How do people discover new music?
Why: Our client wanted us to redesign the app’s “leaderboard,” a screen displaying the most frequently streamed music videos. We needed to investigate how and why music influencers find new tunes.
How do people feel about cryptocurrency?
What platforms do people use to send money online?
Why: PurpleThrone has already created its own cryptocurrency: PurpleCoin. Our team needed to determine how comfortable the target demo was with crypto like Ethereum and BitCoin, and whether they might be open to experimenting with the lesser-known PurpleCoin. We also wanted to know what platforms (e.g. Venmo, PayPal) our users were most comfortable with and why.
Music influencers are insatiable
Our target demographic finds great satisfaction in discovering and exploring music via apps. Their curiosity motivates them to obsessively click around applications like Spotify — discovering musicians, tracks, playlists and more. This enjoyable feedback loop keeps them engaged. We dubbed this the “Music Influencer Loop.”
Influencers don’t care about leaderboards
People who are obsessed with being in-the-know about music (our target demo) don’t look at Top 40 or charting hits — they want to know about artists before they make it big. We presented this insight to our client and he agreed that our design should not include a leaderboard feature.
Proof of tipping concept > Cryptocurrency integration
Our target users weren’t active in the cryptocurrency community and most were not interested in experimenting with a new crypto like PurpleCoin. Our team decided to focus our research efforts and design on integrating a tipping feature that accepts US dollars, and our client agreed that would be the best use of our design sprint.
Influencers expect algorithm-based, personal music recommendations
The music apps that influencers are already using often give algorithm-based suggestions. Influencers want and expect this feature. During our contextual inquiries with the PurpleThrone alpha app, we found that users were disappointed when they did not receive personal recommendations after answering survey questions during onboarding.
 Our research revealed that a majority of the target demographic didn’t like this—and they told us they felt “bad” being negative towards an artist who had put time and effort into their music.
Based on insights from our user research, we hypothesized that if a user likes a song and favorites it, they will feel as though the artist is good enough to merit a tip. We tested our hypothesis with our low-fi wireframes, and continued iterated on our tipping concept, copy and design aesthetic.
2 rounds of design studio
Whiteboarding, sketching & feature prioritization
4 usability tests with low-fi wireframes
5 usability tests with mid-fi prototype
2 usability tests with hi-fi prototype
Though all users could easily complete tasks, 2 of 4 users were turned off by the word “tip,” and they wanted to know where the money was going. Also, users expressed disgust over the idea that they’d see the tip pop-up screen after each song they liked.
Changing the copy on the tip screen to “back this artist” elicited positive feedback during usability testing of our mid-fi and hi-fi wireframes. We also decided to change the tip format: rather than have the pop-up screen triggers by the user liking a song, the pop-up screen would act like Spotify ad because many of our users are familiar with Spotify. After listening to a few songs, a user would see the tip screen and either have to send a tip right away, or wait 30 seconds before s/he can listen to the next song.
For our mid-fidelity wireframes, we created a quick “thank you” screen. Our testing revealed that users liked the screen but wanted a more personal message, and wanted to be notified about getting a receipt. We added a photo of the artist, a “thank you” quote from him/her, and copy telling users that a receipt would be emailed to them.
Users had no trouble understanding the onboarding screens we created for our mid-fi usability testing. People loved the lighthearted “Party On” call-to-action button, and they also liked the rocker hand icon. In our mid-fi prototype, we had users select their favorite genres during onboarding and then we designed the homepage to display songs/artists from that genre—users noticed and made positive comments about the personalization.
Since supporting independent artists is a core value proposition setting PurpleThrone apart from competitors in mobile music streaming, we wanted to highlight that visually using a “rock” icon throughout our designs.
We introduced the “rock” icon when we redesigned PurpleThrone’s onboarding, and our usability testing revealed that the icon was learnable and memorable—many users commented on it as they moved through the app.
Extending this project beyond the initial design sprint, our team would like to dive into the following:
Additional testing of hi-fi prototype
Cryptocurrency integration
Calendar feature for users to browse live events with PurpleThrone artists
Research, design and testing of separate product for artists to manage their presence on PurpleThrone


This component role is to create a link that will respond with a redirect inside that website the moment it is clicked.
The path to redirect is given using the properties and if it is not given then the component will not be rendered.
tag
attributes is encouraged because the webc-link will support menu page changes in menu.json
in this way.
If you opt out for page
attribute, you will have to manage by yourself the url changes.
This component child is a span that will render the info on an newly created button
.


Simple Form
Name
You name is required.
Address
Address is too short.
Email
Enter a valid email.
Phone Number
Enter a valid phone number.
Submit


just came across fhem.de (its in english) that allows to control valves etc.... it could be a VERY usefull adition to the CMS system.... but beeing no programmer who has interest to add it?
»
Archived Forum |
|
do we have a good programmer?Submitted by boelle on Tue, 09/04/2013 - 13:51just came across fhem.de (its in english) that allows to control valves etc.... it could be a VERY usefull adition to the CMS system.... but beeing no programmer who has interest to add it? » |
Re: do we have a good programmer?
fhem.de looks nice with the floor plan and method of setting the temperature in a particular room, nice! Yes adding some control widgets to the emoncms dashboard has been on the agenda for a while and not something that should be too hard to add so after your comment, this morning I though id create a basic button as a starting point: here it is:
Its been committed to the master branch of emoncms https://github.com/emoncms/emoncms
Would anyone else be interested in taking this button as a template for creating other control widgets? Here's the code for the button:
https://github.com/emoncms/emoncms/blob/master/Modules/dashboard/Views/js/widgets/button/button_render.js
Id be happy to help look over give pointers for code if anyone wants to take up the challenge.
Re: do we have a good programmer?
Hi!
Sounds very interesting... Will take a look but I have little programming knowledge.
Regards
Re: do we have a good programmer?
This FHEM-Thing sound very interesting and it would be great to do both: measure and control! And perhaps there are more Interface-controllers jet ready and only to include for example on the site: http://shop.busware.de/
I'm interested in also include and log weather-sensors like wind, rain, sun, temp. And I think the FHEM-Project could be interested in our logging- and dashboard- knowledge.
Stefan
Re: do we have a good programmer?
what i did not understand from the site is if the ras pi extension board could be used... but i think since the same radio module can also be used to command valves from conrad... i think its just a matter of having the protocol etc... i know the valves from conrad have a 4 digit code and you just send a serial command together with that... excatly how i have not figured yet
what research could i help with?
Re: do we have a good programmer?
From My early morning experiments with the button which was accidentally found, I can control a feed with the button (setting a 1 or 0) so my thought process is as below with the raspberry pi.
I can read the feed from the mysql easily with PHP and if used from cron can be used to post to CGI, python etc.
If using python can interface with the GPIOs of the Pi and as such can be programed to turn on an LED, transistor circuit for relays etc.
Also I would imagine that the GPIOs can be toggled quick enough to be used with the broad range of Home easy / byebye standby etc home automation (remote control switches). I already do this with an arduino, so this should not be too much more hassle, once I learn python.
Alternatively, it may be possible to set up a CRON to check the status of this feed and possible send over the uart to the RFM12PI and use the GPIOs of that to toggle, flip etc.
Final thought would be to us the RFM12PI to send a message out on the radio side of things to another node, so in my case I could have the following example:
So from any PC, Phone, Smart TV etc, I can turn on the lights to the room I am in, Alter the heating for the room I / we are currently in and so on.
Also The Pi could know what time and day it is, and at 6AM turn on the immersion heater for 15 mins to give enough hot water for the shower, but if the temperature is already adequate, dont turn it on etc.
Tie this in with a database of the sun rise and sunset, and weather predictions, combined with light levels, you can have truely automatic security lights, comfort lights etc. They may only come on when the Alarm is armed etc.
Sorry for the ramble, but I think I have a weekend project figuring out how to implement this and how to send 2 way communication to ad from the Pi and nodes.
Jimmy
Re: do we have a good programmer?
sorry for beeing away so much, have been playing getting my wter meter and heat mter added to the fun
but its nice to see that there are a bit of progress...
to turn things on and off at given times and conditions is a hughe step forward, if a radiotor valvehead from conrad could be controlled on a similar basis would be a good bonus
when i added my water meter i played with the dashboard system and a thought could be that it could be used to draw a sketch of the house and place sysmbols for the different things.... the draw area of course needs to be bigger for this, but then a symbol for the hot water cylinder and temp readings next to it... and a click on it would bring up a history of the temp.... same for room temp sensors etc....
just ideas for the more wise people :-d
Re: do we have a good programmer?
how is this one going along? will we have option to control wireless valves before winter?
Re: do we have a good programmer?
I'd say the bits and pieces are in place to actually do an experiment using the latest version of the event module (an emoncms module that is able to react to feed value changes by sending mails,calling urls, sending notifications or setting other feeds)
We've added the 'manual update' option for an event triggering, that coupled with the possibility of calling external urls and passing the feed value should enable people to exert basic control (button like) on things. The missing part is the actual control of the external device that will be dependent on how the actual device is reachable from the pi (lan,wifi,rfm12b,xbee,x10, gpio pin .. whatever) and on whether the code to do it already exists or has to be developed.
From there, it really is a matter of people needing a given functionality and having the necessary experience to code it or, at least spending the time to explain what they have in mind in detail and see if someone else is interested enough to spend some time adding that functionality, like it happened with the event module.
this thread: http://openenergymonitor.org/emon/node/2443 explains in detail what was added lately to the event module and can be used to provide feedback should any other feature need to be added.
As for how it relates to the actual need, it is possible to create buttons in a dashboard that when clicked will switch a given feed value from 0 to 1 and the other way around. It is possible to create an event that detects this change and acts accordingly (calls an url passing the feed value as a parameter, sends an email .. whatever). The check for the value change is done in real time so the reaction speed is decent. It is a little cumbersome and limited in functionality as it is, but it could be improved.
Regards
Re: do we have a good programmer?
ok, i was more thinking of valves from conrad that you via 868/rfm12b send a command to open such much in %
of course based on a feed from a temp node and schedule so you can set multiple on off a day
Re: do we have a good programmer?
Well, then it looks like you would have to:
-create a new widget that implements a slider in order to set a feed value in the 0-100 range
-configure a new event to react on the feed value changes of the feed associated to the slider
-find/write a tool that can accept parameters from an url and goes and controls your valves (if you can read german a good starting point would be here http://fhz4linux.info/tiki-index.php?page=FHT%20protocol ), the url parameters would contain a valve identifier and the feed value. The rfm12b should be able to do it, but since you would have to force it to use a different protocol than the one used to transmit data between the nodes you probably wouldn't be able to use it at the same time ... And you still would have to write the code for that
-find a way to programmatically set the feeds related to the valves according to a schedule, either by developing a new module or by using the api and cron or a custom program
... Sounds like a fun project but one where you would probably have difficulties to get someone else interested.
I would probably look at some home automation system with a web frontend where to implement all of this, and then would have the home automation system send data to emoncms to display data and would try to include the manual control page in an iframe displayed in a dashboard
Regards
Re: do we have a good programmer?
I added the button to my dashboard about 6 weeks ago. My Pi runs a python program that controls my central heating using the house temperature from my jeenodes. The Pi checks the status of the button which is called 'Mode' if the button has the value of 0 then the heating is completely disabled.
A few weeks ago we went to legoland for a couple of days and I used it to disable the central heating while we where away. Then I enabled the heating before we got home so the house was warm for our return. It worked GREAT!
Now it doesn't seem to work. When I click the button it turns red for a second or two and then turns green again. The feed status remains 'inactive'.
I'm not running emoncms locally but I'm using emoncms.org. Has this functionality recently become broken somehow? Is anyone else using a button successfully?
Thanks.


Toggle navigation
Austin Elite
Austin Elite
Teams
All Ages
Age 14U
Age 15U
Players
All Ages
Age 14U
Age 15U
Coaches
Sign in as Admin
Logout
Players
Teams
Coaches


HTML5 Boilerplate homepage | Documentation table of contents
HTML5 Boilerplate includes a basic project-level .gitignore
. This should
primarily be used to avoid certain project-level files and directories from
being kept under source control. Different development-environments will
benefit from different collections of ignores.
OS-specific and editor-specific files should be ignored using a “global ignore” that applies to all repositories on your system.
For example, add the following to your ~/.gitconfig
, where the .gitignore
in your HOME directory contains the files and directories you’d like to
globally ignore:
gitignore
[core]
excludesfile = ~/.gitignore


Toggle navigation
Serverless Telephonist
Sign in
Sign out
Serverless Telephonist
4Developers - Katowice
(06.11.2018)
On-Call Phone Number
Current On-Call Operator
Name
:
Phone number
:
Timezone
:
Test Number
Change password
Calling...
You should get incoming call right now.
Error!
{{CONTENT}}
×


| Class | Fusioncharts::DbJsController |
| In: |
app/controllers/fusioncharts/db_js_controller.rb
|
| Parent: | ApplicationController |
In this controller, we will plot a pie-chart showing total output of quantities and name of each factory in a pie-section. On clicking on a pie-section, we obtain detailed information on the quantity produced and date of production of the factory by using javascript.
In this action, the total quantity produced and name of each factory is obtained from the database and plotted. On clicking on a pie-section, it links to another chart giving detailed information of each output produced and the date of production. For this dataURL method is used from the js. of that factory. An array is created to store the index, factory name and total output. This array is accessible to the view. Also, a js_var_string variable is constructed. This variable contains javascript code to create an array, to contain the date of production and the factory output quantity.
# File app/controllers/fusioncharts/db_js_controller.rb, line 15 15: def default 16: headers["content-type"]="text/html"; 17: @factory_data = [] 18: @js_var_string ="" 19: index_count = -1 20: #Get data from factory masters table 21: factory_masters = Fusioncharts::FactoryMaster.find(:all) 22: factory_masters.each do |factory_master| 23: total=0.0 24: index_count = index_count + 1 25: factory_id = factory_master.id 26: factory_name = factory_master.name 27: # Construct the javascript variable to hold an array. 28: @js_var_string =@js_var_string+ "data[" + index_count.to_s + "] = new Array();\n" ; 29: 30: factory_master.factory_output_quantities.each do |factory_output| 31: date_of_production = factory_output.date_pro 32: # Formats the date to dd/mm without leading zeroes 33: formatted_date = format_date_remove_zeroes(date_of_production) 34: quantity_number = factory_output.quantity 35: # Calculate the total quantity for this factory 36: total = total + factory_output.quantity 37: # Append values to the javascript array 38: @js_var_string =@js_var_string+ "\t\t\t\tdata[" + index_count.to_s + "].push(new Array('" + formatted_date + "','" +quantity_number.to_s+"'));\n" 39: end 40: #Formatting the output html 41: @js_var_string =@js_var_string+"\t\t\t"; 42: #Push hash of values into the array 43: @factory_data<<{:factory_index=>index_count,:factory_name=>factory_name,:factory_output=>total} 44: end 45: end


Room for rent
Share a 2 bedroom, 1 bathroom apartment with this chump.
It'll cost $300 a week which includes a cleaner, but not the bills (electricity, gas and innernette).
The upsides
The downsides
- There's a main road out the front. May be an upside if you like trucks.
- The BP (AKA Fluoro Green Temple) right across the road. May also be a plus if you like snacks.
- Someone smokes in the fire stairs sometimes. It's gross.
- The barbecues by the pool don't work and never have.
Thank you.


--- layout: default footerlogos: yes title: "Rednerinnen" ---
Walter is an economist by training and has been involved in the domain of Netzpolitik for many years. He is project lead of the EU research project Open Data Incubator (ODINE), the Digitaler Offenheitsindex [do:index], and supervises the Open Data Census. He worked as a system administrator in NYC, before moving to Berlin, where he co-founded a start-up in 2012.
Walter hält am 28.04.2017 eine Kurzvortrag in der DataRun-Session.
Zum Programm Tag 1


GOT7's Jinyoung, Heo Kyung Hwan, Choi Ri, and Seo Eun Soo to be on 'Running Man'
by jennywillGOT7's Jinyoung, comedian Heo Kyung Hwan, and actresses Choi Ri and Seo Eun Soo will be on 'Running Man'.
The four of them are filming the episode right now on the 11th, and they'll be filming the ghost story episode of the variety show.
The episode will air on the 17th.


Precisely two day ago I was searching for weed. I recently moved to my current location and have been source less for a few weeks. In town, I asked a black person if he would mind hooking me up, he said it wouldnít be a problem, and I would be getting weed in a few minutes. I was very happy, as it had already taken me a few days of searching with no luck.
Later on that evening I had purchased about ten grams of very potent smelling weed. I have learned to trust my senses of smell when it comes to weed. I have smoked a large range of different buds, from Dutch White Widow/Jack Herrer to Israeli Shwag.
I smoked my first joint at the park the day after I bought it and had a paranoid, though not altogether unpleasant high. I was extremely paranoid of people, but when there was nobody around me I had a good time. A lot of deep thinking was done. I took no notice of any increase in Heart rate, temperature, or muscle tension. This to me seemed like a case of good weed, taken in an uncomfortable setting. I would try again later on that night.
Midnight it was, and my Aunt (who I am now staying with) was asleep for a good hour. Ripe time to smoke a joint. I rolled a nice big joint, and I remember feeling rather overwhelmed by the strong smell of ganja that emanated as I broke it up and then rolled it up.
I went downstairs and smoked the joint like a cigarette addict might smoke a cig after not having one for 12 hours. I mean I took deep lung-fulls of smoke and held them in hoping to get really high. Indeed, I did get really High.
The high picked up as soon as I stubbed my joint. My first feelings were of serenity and ecstasy, but there was also if I remember correctly, a feeling of excitement. I entered the house from the basement and was creeping along in the dark rooms overjoyed by the sensations of pleasure and the thoughts that continued to surge forth in multitudes. My plan was to meditate thereby enhancing the High, but unfortunately I had completely forgotten about that.
I decided to go on the porch and breath in the freshly polluted air outside, with a Ice tea by my side. I was feeling quite good as I went outside, but this is when the paranoia really set in. We have automatic lights on the porch and they would flash on to my various movements, freaking me out. In an attempt to turn off these God-forsaken lights a flying insect smacked my head and freaked me out even more. At this point I began to feel my heart really beginning to pound.
I sat down again and tried to calm myself as I drank some more Ice tea. I did not calm myself. I looked up into my auntís room and got an image of her eyes staring down at me through the Venetian blinds. This image was extremely powerful, and all the logic that I told myself to convince myself that it wasnít real did not help. The image scared me. I ran into the house, very frightened, and sat down to try and calm myself.
Now I realized that my heart was pounding uncontrollably and that my muscles were tensing sporadically. At this point I began to suspect that my bud had been contaminated by other much harsher drugs, this only helping to scare me further.
[Erowid Note: Some authors report suspicions that their cannabis has been 'laced' (adulterated), in some cases presumably with PCP. While this is possible, readers should be aware that idiosyncratic response to the effects of cannabis (usually higher doses) can lead some users to presume their cannabis has been 'laced'. There is no way to know if the cannabis in the report below was adulterated or not. The effects described in this report do not suggest PCP.]
I sat in half lotus and tried to focus on my breath, to no avail. My breathing was incredibly rapid and sporadic. I felt like my lungs were tensing along with my stomach and chest muscles. My panic set in at this stage and I hurried up the stairs to my bedroom. In my room I lied flat on the ground hoping that this would help calm my extremely frightened state of mind. I remember distinctly the feeling of the floor and me bouncing up and down in waves of muscle spasms. The convulsions picked up as I tried to calm them in the comfort of my room. Soon they were body wide and excruciatingly painful; it seemed I could do nothing at all to stop them.
My heart was beating like a superfast techno beat, and the bass was tearing off the ceiling of my mind. By freak chance I happened to have a stethoscope in my room. However, I dared not try it afraid that the sound of my bulging heart would only terrify me further. Gasping for air, and for thoughts of calm, I tried to distract myself from the convulsions and the pain in my heart. Hoping that if I stopped focusing on the convulsions they might go away and then allow my heart to calm down, and my breathing to return to normal.
I listened to music. Shape of my Heart by Sting (How Ironic) did little to quell the pain. Elliott Smithís Independence day is a great song, but it didnít distract me from my state of utter pain. Then I read and this helped to a small degree. Every now and then while reading I would almost forget what was going on, but then a huge jolt of the chest would send me back into this world of sporadic jolts and racing hearts.
After what seemed like an hour, I calmed down and watched some TV. I actually managed to laugh at the movie Rat Race. It was a kind of weak, I almost died but Iím laughing, kind of laughter. As I watched the TV I became extremely annoyed by these small left eye-ball spasms that have continued until today. While I was writing this I received a few. Yesterday I felt extremely stressed out, and my heart seemed to be telling me that if I tried to do anything that required the slightest amount of strength I would die.
From that day forward I make a vow that I will not buy bud unless I know for a concrete fact that it is pure good oleí Mary Jane. Nothing less and certainly nothing more. Iím 18, thatís far too young to die of a Heart Attack.
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.


Zoya Akhtar Attends International Emmy Awards In Style As Lust Stories Get Nominated For Best TV Movie/Mini-Series
by Koimoi.com TeamZoya Akhtar is a true auteur of Indian Cinema. From her first film, the filmmaker has been backing distinctive and path-breaking projects, be it films or web series. The filmmaker is at the forefront of representing Indian cinema on international platforms. Currently, Zoya Akhtar is representing India at the International Emmy awards for her short film ‘Lust Stories‘ which was nominated in the TV Movie/Mini-Series category.
With Lust Stories being nominated in Emmy, Zoya has proved that she is ruling on international platforms as well.
A testimony to the same is the fact that her movie Gullyboy has also received an international nomination and is India’s official entry for the 92nd Oscars in the best foreign film category. The movie has generated a massive fandom with a cult-like following and has received critical acclaim not just in India but also internationally.
The filmmaker is at the forefront of creating quality content as her web series Made in heaven is touted as the most popular OTT show of 2019.
Zoya Akhtar’s production house ‘Tiger Baby Productions’ has produced both Gully Boy and Lust stories under their banner. Zoya Akhtar is one filmmaker who is known for making films and shows that instantly strike a chord with the audience because of its magical content sided with a dish of reality.
On the work front, the filmmaker is currently working on the second season of Made In Heaven.


#coding:utf-8
#
# PROGRAM/MODULE: saturnin-core
# FILE: saturnin/core/types.py
# DESCRIPTION: Saturnin type definitions and constants
# CREATED: 22.4.2019
#
# The contents of this file are subject to the MIT License
#
# 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.
#
# Copyright (c) 2019 Firebird Project (www.firebirdsql.org)
# All Rights Reserved.
#
# Contributor(s): Pavel Císař (original code)
# ______________________________________.
# pylint: disable=R0902
"""
Saturnin common type definitions and constants
==============================================
This module contains:
1. Type aliases and new types for type annotations.
2. Commonly used constants like platform, vendor and mime type identifiers.
3. Exceptions.
4. Sentinels.
5. Enums.
6. Dataclasses.
"""
from __future__ import annotations
from typing import List, Dict, Optional, Callable, Any, NewType, ByteString, Final
from enum import IntEnum, IntFlag, Enum, auto
import uuid
from dataclasses import dataclass, field, replace as _dcls_replace
import zmq
from firebird.base.types import Error, Distinct, MIME, Sentinel
from firebird.base.config import Config
from firebird.base.protobuf import PROTO_STRUCT, load_registered, create_message, \
struct2dict, dict2struct
# Type annotation types
TSupplement = Optional[Dict[str, Any]]
"""name/value dictionary"""
Token = NewType('Token', ByteString)
"""Message token"""
RoutingID = NewType('RoutingID', ByteString)
"""Routing ID"""
# Constants
#: Platform OID (`firebird.butler.platform.saturnin`)
PLATFORM_OID: Final[str] = '<IP_ADDRESS>.4.1.534<IP_ADDRESS>'
#: Platform UID (:func:`~uuid.uuid5` - NAMESPACE_OID)
PLATFORM_UID: Final[uuid.UUID] = uuid.uuid5(uuid.NAMESPACE_OID, PLATFORM_OID)
#: Platform version (semver)
PLATFORM_VERSION: Final[str] = '0.8.0'
#: Platform vendor OID (`firebird.butler.vendor.firebird`)
VENDOR_OID: Final[str] = '<IP_ADDRESS>.4.1.534<IP_ADDRESS>'
#: Platform vendor UID (:func:`~uuid.uuid5` - NAMESPACE_OID)
VENDOR_UID: Final[uuid.UUID] = uuid.uuid5(uuid.NAMESPACE_OID, VENDOR_OID)
#: MIME type for protobuf messages
MIME_TYPE_PROTO: Final[str] = MIME('application/x.fb.proto')
#: MIME type for plain text
MIME_TYPE_TEXT: Final[str] = MIME('text/plain')
#: MIME type for binary data
MIME_TYPE_BINARY: Final[str] = MIME('application/octet-stream')
#: Configuration section name for local service addresses
SECTION_LOCAL_ADDRESS: Final[str] = 'local_address'
#: Configuration section name for node service addresses
SECTION_NODE_ADDRESS: Final[str] = 'node_address'
#: Configuration section name for network service addresses
SECTION_NET_ADDRESS: Final[str] = 'net_address'
#: Configuration section name for service UIDs
SECTION_SERVICE_UID: Final[str] = 'service_uid'
#: Configuration section name for service peer UIDs
SECTION_PEER_UID: Final[str] = 'peer_uid'
#: Default configuration section name for service bundle
SECTION_BUNDLE: Final[str] = 'bundle'
#: Default configuration section name for single service
SECTION_SERVICE: Final[str] = 'service'
#: protobuf ID for peer information message
PROTO_PEER: Final[str] = 'firebird.butler.PeerIdentification'
# Exceptions
[docs]class InvalidMessageError(Error):
"A formal error was detected in a message"
[docs]class ChannelError(Error):
"Transmission channel error"
[docs]class ServiceError(Error):
"Error raised by service"
[docs]class ClientError(Error):
"Error raised by Client"
[docs]class StopError(Error):
"Exception that should stop furter processing."
[docs]class RestartError(Error):
"Exception signaling that restart is needed for further processing."
#Sentinels
#: Sentinel for return values that indicates failed message processing
INVALID: Final[Sentinel] = Sentinel('INVALID')
#: Sentinel for return values that indicates timeout expiration
TIMEOUT: Final[Sentinel] = Sentinel('TIMEOUT')
#: Sentinel for return values that indicates restart request
RESTART: Final[Sentinel] = Sentinel('RESTART')
# Enums
[docs]class Origin(IntEnum):
"""Origin of received message in protocol context."""
UNKNOWN = auto()
SERVICE = auto()
CLIENT = auto()
ANY = auto()
# Aliases
PROVIDER = SERVICE
CONSUMER = CLIENT
[docs] def peer_role(self) -> Origin:
"""Returns peer's role, i.e. complementary to current (CLIENT/SERVICE,
PROVIDER/CONSULER) value.
Note: Returns current value if it's `ANY` or `UNKNOWN`.
"""
if self in (Origin.ANY, Origin.UNKNOWN):
return self
return Origin.CLIENT if self == Origin.SERVICE else Origin.SERVICE
[docs]class SocketMode(IntEnum):
"""ZeroMQ socket mode."""
UNKNOWN = auto()
BIND = auto()
CONNECT = auto()
[docs]class Direction(IntFlag):
"""ZeroMQ socket direction of transmission."""
NONE = 0
IN = zmq.POLLIN
OUT = zmq.POLLOUT
BOTH = OUT | IN
[docs]class SocketType(IntEnum):
"""ZeroMQ socket type."""
UNKNOWN_TYPE = -1 # Not a valid option, defined only to handle undefined values
DEALER = zmq.DEALER
ROUTER = zmq.ROUTER
PUB = zmq.PUB
SUB = zmq.SUB
XPUB = zmq.XPUB
XSUB = zmq.XSUB
PUSH = zmq.PUSH
PULL = zmq.PULL
STREAM = zmq.STREAM
PAIR = zmq.PAIR
[docs]class State(IntEnum):
"""General state information."""
UNKNOWN_STATE = 0
READY = 1
RUNNING = 2
WAITING = 3
SUSPENDED = 4
FINISHED = 5
ABORTED = 6
# Aliases
CREATED = READY
BLOCKED = WAITING
STOPPED = SUSPENDED
TERMINATED = ABORTED
[docs]class PipeSocket(IntEnum):
"""Data Pipe Socket identification."""
UNKNOWN_PIPE_SOCKET = 0 # Not a valid option, defined only to handle undefined values
INPUT = 1
OUTPUT = 2
[docs]class FileOpenMode(IntEnum):
"""File open mode."""
UNKNOWN_FILE_OPEN_MODE = 0 # Not a valid option, defined only to handle undefined values
READ = 1
CREATE = 2
WRITE = 3
APPEND = 4
RENAME = 5
[docs]class Outcome(Enum):
"""Service execution outcome.
"""
UNKNOWN = 'UNKNOWN'
OK = 'OK'
ERROR = 'ERROR'
[docs]class ButlerInterface(IntEnum):
"""Base class for service API code enumerations (FBSP interfaces).
"""
[docs] @classmethod
def get_uid(cls) -> uuid.UUID:
"Returns interface UUID."
raise NotImplementedError()
# Dataclasses
[docs]@dataclass(eq=True, order=False, frozen=True)
class AgentDescriptor(Distinct):
"""Service or Client descriptor dataclass.
Note:
Because this is a `dataclass`, the class variables are those attributes that have
default value. Other attributes are created in constructor.
Arguments:
uid: Agent ID
name: Agent name
version: Agent version string
vendor_uid: Vendor ID
classification: Agent classification string
platform_uid: Butler platform ID
platform_version: Butler platform version string
supplement: Optional list of supplemental information
"""
uid: uuid.UUID
name: str
version: str
vendor_uid: uuid.UUID
classification: str
platform_uid: uuid.UUID = PLATFORM_UID
platform_version: str = PLATFORM_VERSION
supplement: TSupplement = None
[docs] def get_key(self) -> Any:
"""Returns `uid` (instance key). Used for instance hash computation."""
return self.uid
[docs] def copy(self) -> AgentDescriptor:
"""Returns copy of this AgentDescriptor instance.
"""
return _dcls_replace(self)
[docs] def replace(self, **changes) -> AgentDescriptor:
"""Creates a new `AgentDescriptor`, replacing fields with values from `changes`.
"""
return _dcls_replace(self, **changes)
[docs]@dataclass(eq=True, order=False, frozen=True)
class PeerDescriptor(Distinct):
"""Peer descriptor.
Arguments:
uid: Peer ID
pid: Peer process ID
host: Host name
supplement: Optional list of supplemental information
"""
uid: uuid.UUID
pid: int
host: str
supplement: TSupplement = None
[docs] def get_key(self) -> Any:
"""Returns `uid` (instance key). Used for instance hash computation."""
return self.uid
[docs] def as_proto(self) -> Any:
"""Returns `firebird.butler.PeerIdentification` protobuf message initialized
from instance data.
"""
msg = create_message(PROTO_PEER)
msg.uid = self.uid.bytes
msg.pid = self.pid
msg.host = self.host
if self.supplement is not None:
sup = msg.supplement.add()
sup.Pack(dict2struct(self.supplement))
return msg
[docs] def copy(self) -> PeerDescriptor:
"""Returns copy of this PeerDescriptor instance.
"""
return _dcls_replace(self)
[docs] def replace(self, **changes) -> PeerDescriptor:
"""Creates a new `PeerDescriptor`, replacing fields with values from `changes`.
"""
return _dcls_replace(self, **changes)
[docs] @classmethod
def from_proto(cls, proto: Any) -> PeerDescriptor:
"""Creates new PeerDescriptor from `firebird.butler.PeerIdentification` protobuf
message.
"""
if proto.DESCRIPTOR.full_name != PROTO_PEER:
raise ValueError("PeerIdentification protobuf message required")
data = None
if proto.supplement:
for i in proto.supplement:
if i.TypeName() == PROTO_STRUCT:
msg = create_message(PROTO_STRUCT)
i.Unpack(msg)
data = struct2dict(msg)
break
return cls(uuid.UUID(bytes=proto.uid), proto.pid, proto.host, data)
[docs]@dataclass(eq=True, order=False, frozen=True)
class ServiceDescriptor(Distinct):
"""Service descriptor.
Arguments:
agent: Service agent descriptor
api: Service FBSP API description or `None` for microservice
description: Text describing the service
facilities: List of Saturnin facilities that this service uses
factory: Locator string for service factory
config: Service configuration factory
"""
agent: AgentDescriptor
api: List[ButlerInterface]
description: str
facilities: List[str]
factory: str
config: Callable[[], Config]
[docs] def get_key(self) -> Any:
"""Returns `agent.uid` (instance key). Used for instance hash computation."""
return self.agent.uid
[docs]@dataclass(eq=True, order=False, frozen=True)
class ApplicationDescriptor(Distinct):
"""Application descriptor.
Arguments:
uid: Application ID
name: Application name
version: Application version string
vendor_uid: Vendor ID
classification: Application classification string
description: Text describing the application
factory: Locator string for application `typer` command
config: Locator string for application configuration factory
"""
uid: uuid.UUID
name: str
version: str
vendor_uid: uuid.UUID
classification: str
description: str
factory: str
config: str
[docs] def get_key(self) -> Any:
"""Returns `uid` (instance key). Used for instance hash computation."""
return self.uid
[docs]@dataclass(order=True)
class PrioritizedItem:
"""Prioritized item for use with `heapq` to implement priority queue.
Arguments:
priority: Item priority
item: Prioritized item
"""
priority: int
item: Any=field(compare=False)
load_registered('firebird.butler.protobuf')
load_registered('firebird.base.protobuf')
del load_registered


7. What’s next?
turn this into a real library?
- You might want to build this as an object rather than a library of functions
- It’d be nice to generate validating data structures from the original ruby code?
- could that be automated to keep things in sync on version change?
- Other langauges? other approaches?


Image Zoom Options
Opacity fade duration
Hover delay (seconds)
Update interval (updates per second)
Container offset
Use mouse to cycle through imgur albums
Add hovered links to web history
CSS
Mode
Normal
Vim
Blacklisted domains
?
Example:
reddit.com
stackoverflow.com
facebook.com
Domains are separated by newlines.
Save
Reset


Toledo Rockets defensive lineman ejected for brutal hit on quarterback who slipped
by Ryan GaydosA Toledo Rockets defensive end was ejected from Wednesday night’s game against the Northern Illinois Huskies for a brutal hit levied on a quarterback.
Northern Illinois quarterback Ross Bowers received a snap in the third quarter and rolled to his left. However, Bowers stumbled and fell to the ground which signaled the end of the play. As Bowers was getting up off of his knees, Rockets defender Terrance Taylor hit him from behind.
OHIO STATE DE CHASE YOUNG TO MISS TO MISS ONE MORE GAME FOR NCAA VIOLATION
Bowers was on the ground for a brief moment before slowly getting back up. He remained in the game and was able to put the Huskies up 21-7 on the same drive.
Taylor was called for a personal foul and was ejected from the game. He will miss the first half of Toledo’s next game against Buffalo. He had one tackle before he was forced out of the matchup.
OHIO BOBCATS LINEMAN PERFORMS CARTWHEEL ON TEAM'S PASS PLAY
Bowers finished the game 15-of-26 passing for 193 yards and a touchdown. Northern Illinois won the game 31-28.
CLICK HERE FOR MORE SPORTS COVERAGE ON FOXNEWS.COM
Northern Illinois improved to 4-6 overall and 3-3 in the Mid-American Conference with the win. Toledo dropped to 6-4 on the season and 3-3 in the conference.


Eras of mass destruction which changed Shrewsbury pinpointed in new book
by Toby NealFour eras of destruction in Shrewsbury are pinpointed in a new book which charts the changing townscape since mid-Victorian times.
And author and local historian David Trumper says that unfortunately historic places in the county town are continuing to be demolished to this day.
"Lost Shrewsbury" tells the story in pictures and highlights features which have radically changed or disappeared completely over the decades.
"Since the dawn of photography there have been four major periods that have greatly altered the town and seen the loss of many ancient buildings," says David, from Shrewsbury.
The first period, he says, was between 1865 and 1869 with the building of the Victorian market hall.
The site chosen was home to over 300 people, and included 29 shops, 16 brewhouses, and three pubs, and at the Mardol end were two magnificent timber-framed houses, one six storeys high, which were among the finest in the town.
"The site was completely cleared and the new market hall opened in September 1869."
A second period of destruction was in the 1930s when a plan was prepared to establish an inner link road and central car park.
During the demolition, which included many slum properties, Rowley's House, which had been completed surrounded by other buildings, was uncovered and saved by the borough surveyor Arthur Ward.
"The third period was in the late 1950s and early 1960s when the war cry was 'down with the old and up with the new.'
"Three major hotels, the Raven, the Crown and the George, were demolished, the 19th century Shirehall and market hall were knocked down, the cattle market was moved out of town, and several smaller sites were redeveloped.
"A slum clearance project was also taking place in the suburbs during this period, again with the loss of some fine buildings and the breaking up of whole communities.
"Two bright points during this period were that the Bear Steps complex in the heart of the town was saved by the newly formed civic society and that the old Co-op building in Frankwell was dismantled and reassembled at the Avoncroft Museum of Buildings."
David says the fourth period was the redevelopment of derelict land in Raven Meadows with the building of the Pride Hill and Darwin centres.
"Unfortunately, historical places in the town are still being demolished. One example of this is the destruction of Copthorne Barracks, the majority of which was demolished for house building in 2019."
"Lost Shrewsbury" is published by Amberley and costs £14.99.


This paragraph is contained within a hc-tile component.
hc-tile
This is a tile with tight styling. It has less padding.
tight


White Orchid
White Orchid is a movie starring Rachael Taylor, Olivia Thirlby, and Jennifer Beals. A shy investigator assumes the identity of a small town murder victim in order to solve her gruesome death.


While the mentee is looking for guidance from you, please treat the mentee with respect and follow the mentoring schedule you agree with the mentee.
Mentoring is exclusively to help the mentees in their research. Provide feedback on the mentee's work and ideas. Any ideas shared/discussed/given to the mentees, mentees have full right to use the idea as their own.
Ideas of mentees cannot be used or discussed with anyone else by the mentor. The mentor cannot work on research problems the mentee discusses with the mentor.
Mentee has the complete right to use or not use any suggestion/advice given.
Keep mentorship about research and related issues like career, and keep other issues (e.g. personal) outside the scope.


{% extends "base.html" %} {% load avatar_tags %} {% block exthead %} {% endblock %} {% block menubar %} {% endblock %} {% block content %} {% if STATUS_LOGO_URL %}
{% if status_level == 'success' %}There are no known issues at this time{% else %}Some systems are experiencing issues{% endif %}
{% endif %} {% for incident in incident_list %} {% include "status/partials/incident.html" with with_callout=True %} {% endfor %} {% if STATUS_TICKET_URL %}If you are having an issue that is not listed above, please turn in a ticket!


# React vs Vue
- Both component based systems
- Both have state management solutions
- React is purely a library, Vue is a more like a framework
## State Management
## Unidirectional data flow
## React ❤ Redux
State is immutable
## Vue ❤ Vuex
State is mutable
## Accessibiliity to Volunteers
## Cleaner, testable code
## Readability


--- title: Countify order: 6 website: https://twitter.com/multifyco developed: April 2014 technologies: - C# - ASP.net MVC - OAuth2 (Foursquare Realtime API) - Entity Framework - MySql ---
The Countify product is a stylish sign that can be hung outside a business to track customer check-ins on Foursquare in real-time. It has already seen moderate success with adoption by several businesses in Ankara and even a pre-order from the co-founder of Foursquare.
The website was developed using ASP.net MVC technology and uses a custom-written OAuth2 client (source) to interact with the Foursquare API for authentication. Once authenticated, the back-end server processes push notification from Foursquare in real-time and sends updates to the Arduino board that runs the counter.
Once logged in to the website, clients are provided with a dashboard to manage their sign, and administrators have a dashboard to manage the clients. Administrators are also notified via email of important events such as pre-orders for the sign.
In the time since this initial development, development responsibilities have been taken over by others. The product has also evolved with Foursquare to use the Swarm logo and has rebranded as Multify.


Wed Apr 4, 2007
What kind of perks do you get at work? Is it better to have a meaty salary and work like a dog - or have fun all day and get paid less? This dilemma is exemplified in a comparison of arch enemies Microsoft and Google. Microsoft pays really well but I’ve heard from people who work there that it’s a fast-track to slavery and that you can kiss your nights and weekends goodbye. There’s this mentality that you should be privileged to work for Bill Gates and willingly lay down your life for the company. But how loyal are Microsoft employees really? Compare this mentality with Google who treat their employees like royalty. Thought you had it good at work? Google was just voted best company to work for by Fortune Magazine, and it’s not hard to see why. Check out this clip of the Google work environment (Via Digital Inspiration).
Watching this video, it almost seems like Google is becoming a cult. Think about it - you never have to leave the office, it’s more fun hanging out at work and eating gourmet food and getting massages than hanging out at home. I’m sure “Googlers” work longer hours than Microsoft employees but nobody’s complaining. People will willingly work all night because their loyalty is unshakable. Productivity is through the roof. If only more companies would start treating their employees like their most precious commodity, what a world this would be.
On a similar note, I’ve just accepted a summer internship position at alive magazine. I’m pretty excited about it. Alive is a nationwide publication with a readership of almost half a million. I’ll be working in the editorial department as a writer and editor. I’ve already start writing some articles for them on environmental issues and fitness. It’s awesome! I get to inspire people to live fuller, more enriching lives and get paid for it. What more could you want?


Connect to the Adobe Analytics API v2.0, which powers Analysis Workspace. The package was developed with the analyst in mind and will continue to be developed with the guiding principles of iterative, repeatable, timely analysis. New features are actively being developed and we value your feedback and contribution to the process. Please submit bugs, questions, and enhancement requests as issues in this Github repository.
# Install devtools from CRAN
install.packages("devtools")
# Install adobeanayticsr from github
devtools::install_github('benrwoodard/adobeanalyticsr')
# Load the pacakge
library(adobeanalyticsr)
There are four setup steps required to start accessing your Adobe Analytics data. The following steps are each outlined in greater detail in the following sections:
.Renviron
file.aw_token()
.company_id
by using the function get_me()
.Regardless of how many different Adobe Analytics accounts you will be accessing, you only need a single Adobe Console API project (you will still need to have working user credentials for each account you want to access, but the Adobe Console API project is just the way you then get access to authenticate using those user credentials; yes…confusing!):
https://adobeanalyticsr.com/token_result.html
*https://adobeanalyticsr\.com/token_result\.html
** This is simply a helper site I’ve set up in order to make it easier to generate a token. The site does not store any information.
If you are knowledgeable of the ins and outs of this auth process and feel you have a better way to explain and/or set this up, please submit an issue or create a pull request with your recommendation!
Creating an Adobe Console API Project in under 60 seconds
This file is essential to keeping your information secure. It also speeds up analysis by limiting the number of arguments you need to add to every function call.
If you do not have an .Renviron
file (if you have never heard of this file you almost certainly don’t have one!), then create a new file and save it with the name .Renviron
. You can do this from within the RStudio environment and save the file either in your Home
directory (which is recommended; click on the Home button in the file navigator in RStudio and save it to that location) or within your project’s working directory.
Get the following variables from the OAuth project and add them to the file* (see Creating an Adobe Console API Project above):
AW_CLIENT_ID
- OAuth client id found in the Adobe Developer ConsoleAW_CLIENT_SECRET
- OAuth client secret key found in the Adobe Developer Console(Optional) Add AW_COMPANY_ID
and AW_REPORTSUITE_ID
variables once you know them (how to find available values for these two variables is described in step 4 below).
After adding these 2-4 variables to the .Renviron
file and saving it, restart your R session (Session > Restart R in RStudio) and reload adobeanalyticsr
(library(adobeanalyticsr)
).
* The format of variables in the .Renviron
file is straightforward. If you add all four of the variables above, they would simply each be their own line in the file:
AW_CLIENT_ID = "[OAuth client ID]"
AW_CLIENT_SECRET = "[OAuth client secret]"
AW_COMPANY_ID = "[Company ID]"
AW_REPORTSUITE_ID = "[RSID]"
The last step is to get your company_id
(or, if you have access to multiple accounts, get the company_id
you want to work with). This is also an excellent way to confirm that everything is set up correctly:
get_me()
and press company_id
as AW_COMPANY_ID
in your .Renviron
file as described in step 2 above. Otherwise, you can specify it within each function call that requires it.AW_REPORTSUITE_ID
in your file as described in step 2 above. You can retrieve all of the report suite IDs for a given company_id
using the function aw_get_reportsuites(company_id = '[the company ID for account of interest]')
.If you added any values to your .Renviron
file (and then saved it!), then restart your R session (Session > Restart R in RStudio) and reload adobeanalyticsr
(library(adobeanalyticsr)
).
You now should be set to start pulling data, typically starting with aw_get_metrics()
and aw_get_dimensions()
to get a list of available dimension and metric IDs, and then aw_freeform_table()
to pull some data!


Stanford Language and Cognition Lab
We're interested in your decision making when you come
across some new toys.
This HIT should take less than 5 minutes. Please pay attention, thanks!
By answering the following questions, you are participating in a study being performed by cognitive scientists in the Stanford Department of Psychology. If you have questions about this research, please contact us at<EMAIL_ADDRESS>You must be at least 18 years old to participate. Your participation in this research is voluntary. You may decline to answer any or all of the following questions. You may decline further participation, at any time, without adverse consequences. Your anonymity is assured; the researchers who have requested your participation will not receive any personal information about you. We have recently been made aware that your public Amazon.com profile can be accessed via your worker ID if you do not choose to opt out. If you would like to opt out of this feature, you may follow instructions available here: http://www.amazon.com/gp/help/customer/display.html?nodeId=16465241
We will first begin with a sound test to confirm working audio.
Please make sure that your computer's sound is at an appropriate volume.
To play the sound, press the button below.
Please type in the name of the obect you were asked to find:
Imagine that you and your friend Bob are hanging out at Bob's house, and you see some of his favorite toys that you can try. There are three toys that you can play with.
Each toy was built with two possible actions (left vs. right) and designed so that when you perform the correct action, it will play music!
But each toy was designed differently and you don't know which action (left vs. right) will make that toy play music.
Which action would you like to try to make this toy play music?
Which action would you like to try to make this toy play music?
Which toy do you want to select?
Why did you choose this toy?
Thanks for your Time!


My urge to experiment with new information is too time consuming. I have to remind myself time and again that my curiousity about the new toy must be tempered with the finite currency of time.
DBC will be throwing a ton of info at their student, getting bogged down in the details or distracted by the next sparkling new object will be crytonite to me.
So far, I tend to go off on my own rather than seek help. I find I sit alone hitting a problem in many different ways and being creative. Sometimes, this work and I high five myself. Other times, hours have past.... then I ask for help... just to find a solution was only a comma or a hyphen away.
To properly expand my mind, I think two or three minds are better than one. I need to seek outside input faster.


Ruby and JS
The differences of looping
1/24/2016
This week at DBC, we have transitioned from Ruby into JavaScript. It has been a rough week of learning new syntax. The lack of help when it comes to errors is also something I have had to learn to miss from Ruby. Another big difference I have come to realizee is the power of built in methods that Ruby has. Some of these built in methods contain large amounts of code that condense the amount of code that you need to type.
Looping in JavaScript is similar to using the while method in Ruby. In the above example, we use the "for" method to iterate over array using the variable index. We set the index to start at 0, or the first index of an array, and continue until index reaches one number below array.length or the length of the array. The index++ will increase the number of index by 1 each time so it will execute the block for each element of the array. The block puts the element into the console.
In Ruby, we can use the each method to iterate over every element of the array and the syntax is much simpler. As you can see the code is much easier to read. For the given array, we run the block {|x| x + 1} which takes each element as x and adds 1 to it. The power and simplicity that Ruby brings is amazing and I am glad I was able to temper my logic skills using Ruby before I dove into other languages.


{% extends "iphone_base.html" %} {% block content %}
CracklyFinger is the super-secret test site for FlyingCracker.com


--- layout: post title: A brief introduction to Active Resource categories: - documentation author: David published: true date: 2006-12-14 16:20:00.000000000 +00:00 ---
Rick Olson is getting jiggy with Active Resource these days and decided to spread the love with a brief introduction to the newest member of the Rails framework family. He takes you through how to use ARes as a client for the Beast forum in a few simple steps.


Graph Page
Graphs are displayed below:
Dataframe of past sales
{{ response|safe }}
Out of sample/step forward anaylsis results below:
{{ oos_df|safe }}
Multivariate Linear Regression dataframe of test values and predictions:
{{ mlr_df|safe }}
Neural Network dataframe of test values and predictions:
{{ nn_df|safe }}


--- layout: post title: EuPathDB is Hiring category: [GiardiaDB] ---
The Eukaryotic Pathogen Database resource (EuPathDB.org)
is a large,
multi-institution project that develops scientific data-mining websites
used by
researchers worldwide to study selected microbial pathogens, including
those responsible
for malaria and enteric diseases. At
the request of the Bill & Melinda
Gates Foundation, we are expanding this effort, with the goal of
leveraging our
extensive experience in the integration and analysis of pathogen
genomics and
functional datasets, so as to accommodate diverse clinical,
epidemiological,
socioeconomic, and geospatial information.
This new initiative focuses on the interplay between early
childhood nutrition
and the enteric infectious disease burden (cf.
Mal-ED.fnih.org).
We anticipate
hiring in the following areas:
Note that because EuPathDB staff work
at several sites, hires could potentially be based at any of these
institutions
|
|
|
Univ Pennsylvania (US) |
Univ Georgia (US) |
Univ Liverpool (UK) |
|
|
|
|||
|
» |
Senior Project Coordinator |
02-24983 |
20170049 |
|
|
» |
Outreach
Specialist |
02-24758 |
20170045 |
006825 |
|
» |
Biomedical Ontologist |
02-24756 |
20170044 |
006824 |
|
» |
Data
Loader |
02-24762 |
20170043 |
not yet posted |
|
» |
Software Developer |
02-24765 |
20170112 |
|
|
» |
Application
Developer I |
02-24757 |
20170029 |
not yet posted |
|
» |
Application Developer II |
02-24755 |
20170105 |
|
Join our international team of 30+ software developers and biologists,
combining the advantages of an academic environment with the rigor of
developing
a production system. Make
a difference to global public health!


Floating Ghost
A smiling ghost that floats ups and down while looking at the user interactions.
Email
e.g<EMAIL_ADDRESS>Password


|
ChainedList
1.0
|
#include <listeChainee.h>
Data Fields | |
| size_t | size |
| Size of the list. | |
| Node * | head |
| Pointer to the head of the list. | |
| Node * | tail |
| Pointer to the tail of the list. | |
| Node ** | adresses |
| An array of pointers to the nodes of the list. | |
| void(* | addToTail )(ListeChainee *listeChainee, void *data) |
| void(* | addToHead )(ListeChainee *listeChainee, void *data) |
| void(* | insertAt )(ListeChainee *listeChainee, void *data, int index) |
| void(* | getAll )(ListeChainee *listeChainee, void(*function)(void *values[], int size)) |
| void(* | removeAll )(ListeChainee *listeChainee) |
| void(* | remove )(ListeChainee *listeChainee, Node *node) |
| void(* | removeAt )(ListeChainee *listeChainee, int index) |
| void(* | clear )(ListeChainee *listeChainee) |
| Node *(* | get )(ListeChainee *listeChainee, int index) |
| void(* | set )(ListeChainee *listeChainee, int index, void *value) |
A structure handling a list and common operations to apply to it.
| void(* addToHead) (ListeChainee *listeChainee, void *data) |
Add the given data to the head of the list. Previous head is conserved and deplaced from one index.
| listeChainee | A pointer to the list to edit. |
| data | Data to add to the list. |
| void(* addToTail) (ListeChainee *listeChainee, void *data) |
Add the given data to the head of the list. Previous head is conserved and deplaced from one index.
| listeChainee | A pointer to the list to edit. |
| data | Data to add to the list. |
| void(* clear) (ListeChainee *listeChainee) |
Don't use it. Not done.
| listeChainee |
| Node*(* get) (ListeChainee *listeChainee, int index) |
Get the element at the given index from the list.
| listeChainee | A pointer to the list that contains your data/ |
| index | Index of the element you want to get. |
| void(* getAll) (ListeChainee *listeChainee, void(*function)(void *values[], int size)) |
Get all the elements from the list and pass them to the given function.
| listeChainee | A pointer to the list to get data from |
| function | The function to apply to the data. |
| void(* insertAt) (ListeChainee *listeChainee, void *data, int index) |
Insert the given data at the given index of the list. It's creating a new node, not replacing the old one. The old one is moved from
| listeChainee | A pointer to the list to edit. |
| data | Data to add at given index. |
| index | Index where the data should be added. |
| void(* remove) (ListeChainee *listeChainee, Node *node) |
Remove the given element from the list.
| listeChainee | A pointer to the list to edit. |
| node | Pointer to the node you want to remove. |
| void(* removeAll) (ListeChainee *listeChainee) |
Remove all the elements from the list.
| listeChainee | A pointer to the list to edit. |
| void(* removeAt) (ListeChainee *listeChainee, int index) |
Remove the element at given index from the list.
| listeChainee | A pointer to the list to edit. |
| index | Index of the value you want to remove. |
| void(* set) (ListeChainee *listeChainee, int index, void *value) |
Set the value of the given index to the new value passed to the function.
| listeChainee | A pointer to the list to edit. |
| index | Index of the value to set. |
| value | New value to set. |


Campus - Talk
The anonymous chat platform with
posts
What would you look at today,
Create Account
Login
Create New Post


{% extends 'frontend/base.html' %} {% load staticfiles %} {% block body %}
EliteTradeRoutes provides an easy way to search for details on various game data related to trading for the game Elite: Dangerous. The first version of this website will be focused on providing a REST API as well as an equally featured web view.
You can find specific game data by using the search box or by browsing the database through the categories listed in the nav bar.
This site also provides a REST API. Any data you can see on the web will also be
available via the API. Currently no there are no API keys but please go easy on the server.
To specify the return type of the content you can either use the appropriate
accept header (recommended) or append '.json', '.html' or '.api' to the end
of your calls. ex. /systems/1/.json
will return the data for that
endpoint in json and /systems/1/.api
will display api information
for that endpoint.
The use of accept header is recommended because if a suffix is used, all of the hyperlinks returned on that page will also have the suffix. This can become somewhat bothersome as it makes the return value not very consistent.
The data used in this website is collected from eddb.io and EDDN.
{% endblock %}


Habitat
Originally from the Kanto region. It is also found in Jotto. It lives in dense forests with tall trees, where it gathers its flock and hunts on a vast territory.


Aldi selling gin selection box for Christmas but you’ll have to be quick to get one
We're upgrading our usual chocolate selection box!
by Nancy BrownWhile the Cadbury's Selection Box will always hold a special place in our hearts, it's the new Aldi offering that we'd like to unwrap this festive season!
The humble selection box has had an over-18s makeover, with the bargain supermarket releasing a gin selection box.
Yes, you read that correctly.
Instead of the traditional bars of chocolate in your Christmas selection box, this year you can go boozy and unbox a selection of gins.
Read more: X Factor boyband JLS reportedly set to make a comeback
If that doesn't put you on the naughty list, we don't know what will!
The 12 Gins Of Christmas Selection Box costs £24.99 and it's on sale now.
Be quick though gin fans, this limited-edition boxset is only on sale while stocks last.
Inside the box you'll find 12 different gins and tonics by Scottish gin makers Eden Mill.
Read more: Gemma Collins "axes plans to release Christmas single"
Flavours include Salted Caramel & Apple Gin with cola, Passion Fruit & Coconut Gin with pineapple juice, Blueberry & Vanilla Gin with American cream soda and Chilli & Ginger Gin with ginger ale.
There are also a couple of cocktails – the Candy Cane promises to be particularly festive – and an alcohol-free Citrus Gin and tonic.
An Eden Mill spokesperson said: "Perfect for Christmas gifting or sharing with friends and family over the festive period, the collection offers something for every gin lover this Christmas."
Head to our Facebook page @EntertainmentDailyFix and let us know what you think of our story.


Class Entity
public
the
|
|
public
the
|
|
public
the
|
|
public
the
|
|
public
the
|
|
public
the
|
|
public
the
|
|
public
the
|
|
public
|
|
public
|
|
public
|
|
public
|
|
public
|
|
public
|
|
public
|
|
public
|
protected
number
|
$menuId |
|
|
protected
string
|
$menuRoute |
|
|
protected
string
|
$menuName |
|
|
protected
string
|
$menuIcon |
|
|
protected
number
|
$menuOrder |
|
|
protected
string
|
$menuLocation |
|
|
protected
boolean
|
$menuActive |
|
|
protected
|
$menuItemEntity |
|


A clan that is clan level 7 or above may use 10,000 reputation points to create Knight units.
Up to 4 Knights units may be created in this way. At the time of creation, 10 clan members may be accepted per Knight unit.
Clans at level 9 may use a reputation score of 5,000 to increase the Order of Knights.
Each Knight unit created must appoint one direct clan member as a Knight Commander. The social rank of the appointed clan commander will be accordingly raised.
Create Knights.
Reinforce Knights. [not done]
Change the name of Knights.
Change the Knight Commander.
back.


This is the content that will appear on the home page of your website.
And Yet Another Post
And the hits just keep on coming!
My Second Post
And yes, here’s my second post!
My First Post
This is a really great post!
This is the content that will appear on the home page of your website.
And the hits just keep on coming!
And yes, here’s my second post!
This is a really great post!


Education Form
You can customize information here.
Education Name
Place
Date Start
Date End
Description
Save


Rava Fillet Steak
Main Dish
We are a fine dining restaurant whose goals is to provide suitable environment for family and friends to sit around a table and have an experience that will last a lifetime.
Suited for small private parties.
Prices start from Kshs. 9,999
Great for functions of 20 - 30 guests. Prices start from Kshs.29,500
Best for dinner parties for 8 guests. Prices start from Kshs. 6,950
Feel free to reach us via phone, email or any of our social media platforms for any inquiries.
We are happy to serve you with our finest meals.
Visit it us today for a truly memorable experience.
© 2020 Narava Restaurant. All Rights Reserved


--- layout: page title: About header-img: "img/about-bg.png" ---
Uriah is currently a student in the Flatiron Software Engineering Program.


Remote Bass Lessons
Back to Bassics
After a period of doing my own thing I decided it’s time to get back to having regular bass lesson. A good teacher will identify your problems and help you fix them, will break up learning objectives into small achievable chunks and will know when it’s time to move on so you feel achievement. Perhaps most importantly you get accountability for actually practising what’s agreed between lessons. The fact you’re paying also helps with the dedication :)
So I was all set to resume cycle trips over to my teacher with my bass on my back to get some learning. However, CORVID19 has caused seismic shifts in how teachers can provide their traditional interactive music education. Face to face is out of the question and remote lessons via video are no longer only for the odd brave practitioner. Rather, everyone has to get on board with adapting to a remote style using the latest video calling technology.
Zooming in on the problem
Luckily video calling services are really solid now and bandwidth is generally fast enough. Zoom has surfaced as the reliable “go to” service for most people, and for good reasons It just works. Plus Zoom are proving to be responsive to the security and usage issues that a bound to appear with so much use and scrutiny.
Thus, Zoom is definitely my first choice for remote bass lessons. A free account is fine for a 1 hour lesson between 2 of you, and as of right now, Zoom often waive the the 40 minute free call limit when there are 3 or more participants.
Mixing it up
In my last attempt to play bass over Zoom I played it through my bass combo using the PC’s built in mic. No one could hear me. Zoom is flexible enough to work reliably out of the box for voice calls. But for music there are a few extra things to consider.
So this time I decided I needed more control and DI-ing the bass while using a mic with a mixer would be the most flexible approach. Having the excellent McMillen K-Mix combined mixer and digital interface meant I had high hopes I could achieve this pretty easily.
Fortunately, Zoom also has you covered with the options you need to work with music and a mixer.
Student Set Up
This then, is a summary of what I did.
- Disabled all the clever voice signal processing that zoom does. In Preferences -> Audio -> Advanced make sure ‘Show use Original Sound’ is checked and then when in a call it can be selected top left of the display.
- Used my McMillen K-mix to provide a monitor mix of bass, microphone and computer audio. My passive bass and an old dynamic mic both plugged in to the flexible channel 1 & 2 inputs with trim and fader levels set to get a good sound on my monitor amp and speakers on output 1 & 2. All other channels where muted. USB Channels 1 & 2 from the PC are then routed to K-mix outputs 1 & 2 with levels being set on the PC with the sound mixer. I didn’t use the K-mix compressor, eq or reverb for bass or mic but you could I guess, as long as you set Channels 1 and 2 “USB Output” to be post fader.
- Used K-mix as a digital input interface for bass and mic. I panned both channels to centre as Zoom’s mic input that they appear as is mono.
- Set Zoom to use the K-mix driver for input and output.. This way I can hear every thing local and remote via the monitors and my teacher will hear a mix of my mic and DI’d bass. You can use Zooms Audio settings dialog to monitor the input and output. I turned off the AGC on this dialog for good measure.
- Saved the K-mix settings to a preset. This way it’s easy to get back all the K-mix settings after using it for other applications (like ripping my vinyl).
Success
During my first remote bass lesson this quick audio set up worked perfectly well. As an aside, it’s interesting how you have to adopt your playing position so the teacher can see your both hands. All in all, I think remote lessons are going to work out just fine. As long as I practice between lessons, of course. :)


King Krule @ Kings Theatre on BrooklynVegan Presale (password here)
by BrooklynVegan StaffTickets for the King Krule show at Kings Theatre are on BrooklynVegan presale today from 10 AM to 10 PM. Use password KINGVEGAN.
If you miss out on our presale, tickets go on sale to the general public on Friday, November 22 at 10 AM. All tour dates are listed here.


Improving efficiency and cost upon scaling through data flow management, workflow orchestration, resource provisioning, event driven and self service automation combined with scheduling, monitoring , visibility and alerting.
Faster reaction,reduction in effort,improved understanding making use of predictive analytics and automation to offer operations self healing upto a level. Real time processing of streaming data providing insights in anomaly detection,malware traffic detection, outlier detection,historical analysis, vulnerability detection,performance analysis,remediation advice,root cause analysis. Additionally, training to automatically respond to alerts without human intervention is also possible.
Increased reliability, reduced operations cost and streamlining recurring tasks. This basically leads to fewer human resources for repetitive work as the task is now much simpler and effective.
Identification leads to analysis of productivity gaps and process optimization resulting in maximizing efficiency. Simplifying automation with aggregation, assimilation and analysis of data leading to better decision making to cover the productivity gap.


About this site
Specifications
This page describes the layout of the site database, data formats, and
REST API according to the Assignment 2 specification.
Database Schema
| Table |
Column Name |
Type |
Key |
Extra |
Description |
| Polls |
id |
int(11) |
Primary |
autoincrement |
Uniquely identifies a poll record |
| Title |
varchar(50) |
|
|
Short description of poll, e.g. "Food" |
| Question |
varchar(255) |
|
|
Question posed by the poll, e.g. "Pick your favourite food" |
| Options |
id |
int(11) |
Primary |
autoincrement |
Not used by the API; included for database integrity |
| PollId |
int(11) |
Foreign |
References Polls.id |
Poll that this answer belongs to |
| Answer |
int(11) |
|
Unique with PollId |
Should correspond to an array index |
| AnswerText |
varchar(255) |
|
|
One of the options for a poll, e.g. "Chocolate biscuits" |
| Votes |
id |
int(11) |
Primary |
autoincrement |
Not used by the API; included for database integrity |
| PollId |
int(11) |
Foreign |
References Options.PollId |
Must correspond to a poll |
| Answer |
int(11) |
Foreign |
References Options.Answer |
Must correspond to one of the poll's answers |
| Address |
varchar(255) |
|
|
IP address of the device that submitted the vote |
Poll object
{
"title": "Poll title",
"question": "Poll question",
"answers": ["Answer 1", "Answer 2"]
}
Vote counts object
{
"votes": [1, 0, 0, 5, 2]
}
Vote object
{
"address": "<IP_ADDRESS>",
"pollId": 2,
"answer": 0
}
Polls API Documentation
| Method |
URI |
Request Data |
Response Data |
Action |
GET |
services/polls |
|
Array of poll objects (without answers) |
Read |
POST |
services/polls |
Poll object |
'Location' header with URI of newly created poll |
Create |
GET |
services/polls/(:id) |
|
Poll object |
Read |
DELETE |
services/polls/(:id) |
|
|
Delete |
GET |
services/votes/(:pollId) |
|
Vote counts object |
Read |
DELETE |
services/votes/(:pollId) |
|
|
Delete |
POST |
services/votes/(:pollId)/(:answer) |
|
|
Create |
Back


Do Home PCs Have a Negative Impact on Student Achievement?
The answer to that question is a big yes if you believe the results of a large study carried out by Professors Malamud of the University of Chicago and his collaborator, Cristian Pop-Eleches of the University of Columbia. This is not the first time that research has pointed to PCs in the home having a negative effect on student academic achievement. I read about the study last month but was prompted to comment on it by Randall Stross’ very interesting article in the NY Times this week.
The basic finding of these multiple studies is that student academic achievement declines after the introduction of a PC and broadband connection in their home. Disturbingly, the impact is most pronounced with children living in lower income homes i.e. the very group you would intuitively think would benefit most.
In my opinion, while the effect may be real (The sample sizes are very large and across multiple geographies) the conclusions being drawn are dangerously wrong.
To accept the findings of the study you also have to accept the logical counter conclusion that low income students would be better off academically if they were not distracted by having an Internet connected PC at home. Every fiber of my body tells me that this conclusion cannot be correct.
Having wrestled with this contradiction since reading about the study back in May I have arrived at my own conclusions. The problem with the study findings is bound up in what is being measured i.e. academic achievement.
 In the 17th century you needed to know how to join wood or bend iron. Today you need to know how to access and interpret information, how to draw you own conclusions, how to synthesize new ideas and how to communicate those ideas to an increasingly distributed set of collaborators.
In my opinion the conclusions being drawn from this study say far more about foundational problems in our academic system; what is taught and how we assess student’s readiness to enter a 21st century workforce. It is largely the case (Exceptions do exist) that the public K-12 system is still designed to turn out workers for a 19th century industrial economy. We teach kids how to learn facts, be able to follow instruction and to respect authority. If you are lucky enough to come from a middle or upper income family you can of course obtain a much more progressive and technology enabled education in the private sector.
What these studies tell us is that the affected students got worse at doing standardized tests. I would ask so what? We already know that family income level has a profound effect on standardized testing scores which impacts the long term economic potential of children from these environments. The problem isn’t the kids or the PC the problem is an education system which is has an inbuilt biased against them.
That standardized testing has become the single determinant of academic achievement borders on the criminal. When I hire talent for my business I am not interested in their standardized test scores. I want to know if they can think creatively, solve problems, communicate their ideas effectively and are smart enough to know that life is about learning all the time. These studies do not tell us anything about how access to PCs and the Internet might possibly improve or develop these skills. It might just be the case that collaborative problem solving with a network of friends on FaceBook is a far more valuable economic life skill than leraning to remember the who was the 33rd President of the United States.
I really do believe that these studies are dangerous. The danger is that they will become an impediment to programs which are focused on closing a very important digital divide that exists between rich and poor families and between rich and poor nations. I can’t help believing that a similar research project in the 17th century would have found that having a hammer, saw, wood and nails in the home was distracting children from their religious studies.