Redis-inspired key/value store written in PicoLisp
16 Jun 2020You can get it on GitHub.
This program mimics functionality of a Redis™ in-memory database, but is designed specifically for PicoLisp applications with optional on-disk persistence and encryption.
Note: This library DOES NOT use the RESP protocol and thus cannot work with the
redis-cli
or other Redis clients/servers.
The included server.l
and client.l
can be used to send and receive “Redis-like” commands over TCP or UNIX named pipess.
Requirements
- PicoLisp 32-bit/64-bit
v17.12
tov20.6.29
, orpil21
- Linux or UNIX-like OS (with support for named pipes)
Getting Started
This library is written in pure PicoLisp and contains no external dependencies.
To ensure everything works on your system, run the tests first: make check
Using the CLI tools
- Launch a server with:
./server.l --pass <yourpass> --verbose
- Check the server info with:
./client.l --pass <yourpass> INFO
That should return some interesting info about your server. See below for more examples.
Using as a library
Server
- Load the library in your project:
(load "libkv.l")
- Set the server password:
(setq *KV_pass "yourpass")
- Start listening for requests:
(kv-listen)
Client
- Load the client library in your project:
(load "libkvclient.l")
- Set the server password
(setq *KV_pass "yourpass")
- Start the client listener with
(kv-start-client)
- Send your command and arguments with
(kv-send-data '("INFO" "server"))
Received data will be returned as-is (list, integer, string, etc). Wrap the result like: (kv-print Result)
to send the output to STDOUT
:
: (load "libkvclient.l")
-> kv-start-client
: (setq *KV_pass "yourpass")
-> "yourpass"
: (kv-start-client)
-> T
: (kv-send-data '("set" "mykey" 12345))
-> "OK"
: (kv-send-data '("get" "mykey"))
-> 12345
: (kv-send-data '("set" "yourkey" "12345"))
-> "OK"
: (kv-send-data '("get" "yourkey"))
-> "12345"
Feel free to observe the example code in client.l.
Note: Using
(kv-send-data)
will send the data to the server and automatically block the client while waiting for a response.
Usage
This section describes usage information for the CLI tools server.l
and client.l
.
Server
The server listens in the foreground for TCP connections on port 6378
by default. Only the password
, port
, persistence
, and verbosity
are configurable, and a password
is required:
# server.l
Usage: ./server.l --pass <pass> [options]
Example: ./server.l --pass foobared --port 6378 --verbose --persist 60
Options:
--help Show this help message and exit
--binary Store data in binary format instead of text (default: plaintext)
--pass <password> Password used by clients to access the server (required)
--persist <seconds> Number of seconds between database persists to disk (default: disabled)
--port <port> TCP listen port for communication with clients (default: 6378)
--verbose Verbose flag (default: False)
Examples
./server.l --pass yourpass --verbose
Parent PID: 38867
[sibling]=38874
[child]=38873 [parent]=38867
[msg] from client: (pid: 38873) ::ffff:<IP_ADDRESS> ("IDENT" ("id" . "3F21CC32") ("hostname" . "meta.lan"))
[msg] from child : (pid: 38873) ("message" 38873 ("IDENT" ("id" . "3F21CC32") ("hostname" . "meta.lan")))
[msg] to client: "OK 3F21CC32"
[msg] from client: (pid: 38873) ::ffff:<IP_ADDRESS> ("INFO" "server")
[msg] from child : (pid: 38873) ("message" 38873 ("INFO" "server"))
[msg] to client: "^J# Server^Japp_version:0.11.0^Jos:Linux 4.19.34-tinycore64 x86_64^Jarch_bits:64^Jprocess_id:38874^Jtcp_port:6378^Juptime_in_seconds:1^Juptime_in_days:0^Jexecutable:/usr/bin/picolisp^J"
[child]=38873 exiting
[msg] from child : (pid: 38873) ("done" 38873 NIL)
Client
The client handles authentication, identification, and sending of “Redis-like” commands to the server. It then prints the result to STDOUT
and can be parsed by standard *NIX tools. The client receives PLIO data over a TCP socket, or named pipe (if client/server are on the same system).
# client.l
Usage: ./client.l --pass <pass> COMMAND [arguments]
Example: ./client.l --pass foobared --encrypt SET mysecret -- <(echo 'mypass')
Options:
--help Show this help message and exit
--commands Show the full list of commands and exit
--decrypt Enable decryption of values using a GPG public key (default: disabled)
--encrypt Enable encryption of values using a GPG public key (default: disabled)
--name <name> Easily identifiable client name (default: randomly generated)
--host <host> Hostname or IP of the key/value server (default: localhost)
--pass <data> Password used to access the server (required)
--poll <seconds> Number of seconds for polling the key/value server (default: don't poll)
--port <port> TCP port of the key/value server (default: 6378)
-- STDIN Reads an argument from STDIN
COMMAND LIST Commands are case-insensitive and don't always require arguments
APPEND key value Append a value to a key
BGSAVE Asynchronously save the dataset to disk
CLIENT ID Returns the client ID for the current connection
CLIENT KILL ID id [id ..] Kill the connection of a client
CLIENT LIST Get the list of client connections
CONVERT Convert a plaintext database to binary or vice-versa
DEL key [key ..] Delete a key
EXISTS key [key ..] Determine if a key exists
GET key Get the value of a key
GETSET key value Set the string value of a key and return its old value
HDEL key field [field ..] Delete one or more hash fields
HEXISTS key field Determine if a hash field exists
HGET key field Get the value of a hash field
HGETALL key Get all the fields and values in a hash
HKEYS key Get all the fields in a hash
HLEN key Get the number of fields in a hash
HMGET key field [field ..] Get the values of all the given hash fields
HSET key field value [field value ..] Set the string value of a hash field
HSTRLEN key field Get the length of the value of a hash field
HVALS key Get all the values in a hash
INFO [section] Get information and statistics about the server
LINDEX key index Get an element from a list by its index
LLEN key Get the length of a list
LPOP key Remove and get the first element in a list
LPOPRPUSH source destination Remove the first element in a list, append it to another list and return it
LPUSH key element [element ..] Prepend one or multiple elements to a list
LRANGE key start stop Get a range of elements from a list
LREM key count element Remove elements from a list
LSET key index element Set the value of an element in a list by its index
LTRIM key start stop Trim a list to the specified range
MGET key [key ..] Get the values of all the given keys
MSET key value [key value ..] Set multiple keys to multiple values
PING [message] Ping the server
RPOP key Remove and get the last element in a list
RPOLRPUSH source destination Remove the last element in a list, prepend it to another list and return it
RPUSH key element [element ..] Append one or multiple elements to a list
SAVE Synchronously save the dataset to disk
SET key value Set the string value of a key
STRLEN key Get the length of the value stored in a key
Notes and limitations
This section will explain some important technical details about the code, and limitations on what this library can and can’t do.
Technical notes
- All keys are stored under the prefix
*KV/
, example:*KV/mykeys
. This prefix is hardcoded everywhere and shouldn’t be changed. - Requests and commands generate statistics which are stored in memory (and lost when the server exits). Statistics are stored under the
*KV/%stats%/
prefix and are read-only by external clients. - Similar to the WebSockets protocol, a unique UUID:
7672FDB2-4D29-4F10-BA7C-8EAD0E29626E
is used during the handshake sequence between all clients and servers. For compatibility with future tools, please do not change it. - Passwords are hashed using a very simple and collision-prone hashing function. It is not cryptographically secure or used for that purpose. If using this library over a public network, please use stunnel or hitch as a TLS proxy between the client and server.
- Output from the
client.l
uses(prinl)
, so a result"2"
and2
will both appear the same. Lists are concatenated with a,
comma and also output using(prinl)
. Error messages are sent toSTDERR
and the client exits with error code1
. - Named pipes are created in the
(tmp)
directory of the server’s parent process, and will be removed when the parent exits cleanly. Please do not kill the parent process withkill -9
(orkill -KILL
) as it will leave an unresponsive zombie sibling with the TCP socket still open, and the named pipes will not be removed. - A best effort has been made to return the same datatypes and response types as Redis. Example: the
SET
command returnsOK
if the key was set. Not all responses are absolutely identical to Redis though. Please remember this library isn’t designed to be a perfect clone of Redis (see Limitations below).
Limitations
- This library is not used in production and has not been tested extensively (despite all the unit/integration tests). Please use at your own risk.
- This library DOES NOT use the RESP protocol and thus cannot work with the
redis-cli
or other Redis clients. - Since PicoLisp is not event-based, each new TCP connection spawns a new process, which limits concurrency to the host’s available resources.
- Not all Redis commands are implemented, because I didn’t have an immediate need for them. There are plans to slowly add new commands as the need arises.
- Using the
client.l
on the command-line, all values are stored as strings. Please use the TCP socket or named pipe directly to store integers and lists. Unlike Redis, there is no on-disk persistence and all keys will be lost when the server is restarted. This library was originally designed to be used as a temporary FIFO queue, with no need to persist the data. Support for persistence can be added eventually, and I’m open to pull-requests.Support for persistence has been added, see Persistence below.
How it works
For the server, everything starts with the (kv-listen)
function, which is where the TCP server is started:
+------------+ +---------------------+ +----------------+
| TCP client | | (parent) | | (sibling) |
+-----+---+--+ | +-------------+ | | +------------+ |
^ | | | TCP server | | | | Key/Value | |
| +---------> | (kv-listen) | | | | in-memory | |
| | +-------------+ | | | DB | |
| | | | +------------+ |
+-----+-------------> pipe_sibling +------> | |
| | | +-+-+-+----------+
| +--------+ | | | | |
+--+ child1 | <-----+ pipe_child_1 <----------+ | |
| +--------+ | | | |
| | | | |
| +--------+ | | | |
+--+ child2 | <-----+ pipe_child_2 <------------+ |
| +--------+ | | |
| | | |
| +--------+ | | |
+--+ child3 | <-----+ pipe_child_3 <--------------+
+--------+ | |
+---------------------+
Once (kv-listen)
is running, a TCP socket is opened on the configured port. An infinite loop begins and listens for incoming connections, giving each new TCP client its own forked child process for handling the request.
A named pipe called pipe_sibling
, is created in a temporary directory of the top-level parent process. This pipe will be used to communicate with other child processes, leaving the parent process to continue serving new TCP requests.
The parent process then forks another process, which we’ll call the sibling - an older sister if you prefer - and the sibling waits on the pipe_sibling
named pipe, listening for COMMANDS from the child processes.
The forked child processes will each create their own named pipe, called pipe_child_<pid>
, also in a temporary directory of the top-level parent process. The child process will listen on its own named pipe for messages sent by its older sister, the sibling. Once a message is received by the child, the response is sent back to the client over the TCP connection.
The idea is to have the sibling be the holder of all the keys. Every “Redis-like” command will have their data and statistics stored in the memory of the sibling process, and the sibling will handle receiving and sending its memory contents (keys/values) through named pipes to the respective child processes.
Persistence
Similar to Redis, this database implements “snapshotting” (full memory dump to disk) and “AOF” (append-only log file), however both features are tightly coupled, which makes for a much better experience.
- Persistence is disabled by default, but can be enabled with the
--persist N
parameter, whereN
is the number of seconds between eachBGSAVE
(background save to disk). - The database is stored in plaintext by default, but can be stored in binary with the
--binary
parameter. Binary format (PLIO) loads and saves much quicker than plaintext, but it becomes difficult to debug a corrupt entry. - The AOF follows the WAL approach, where each write command is first written to the AOF on disk, and then processed in the key/value memory store.
- The AOF only stores log entries since the previous
SAVE
orBGSAVE
, so it technically shouldn’t grow too large or unmanageable. - The database snapshot on disk is the most complete and important data, and should be backed up regularly.
- fsync is not managed by the database, so the server admin must ensure AOF log writes are actually persisted to disk.
- The AOF on-disk format is always plaintext, to allow easy debugging and repair of a corrupt entry.
- The
SAVE
andBGSAVE
commands can still be sent even if persistence is disabled. This will dump the in-memory data to disk as if persistence was enabled.
How persistence is implemented
Here we’ll assume persistence was previously enabled and data has already been written and saved to disk.
- On server start, some memory is pre-allocated according to the DB’s file size.
- The DB is then fully restored to memory
- If the AOF contains some entries, it is fully replayed to memory
- The DB is saved once more to disk and the AOF gets wiped
- A timer is started to perform periodic background DB saves
- Every new client connection sends the command to the AOF
- When a
BGSAVE
(non-blocking) command is received, a temporay copy of the AOF is made, the current AOF is wiped, and a background process is forked to save the DB to disk - A backup of the DB file is always made before overwriting the current DB file.
- To help handle concurrency and persistence, temporary files are named
kv.db.lock
,kv.db.tmp
,kv.aof.lock
, andkv.aof.tmp
. It’s best not to modify or delete those files while the server is running. They can be safely removed while the server is stopped.
AOF format
The AOF is stored by default in the kv.aof
file as defined by *KV_aof
.
Here are two separate entries in a typical AOF:
("1596099036.281142829" 54042 ("RPUSH" "mytestlist" ("four" "five" "six")))
("1596099059.683596840" 57240 ("RPUSH" "yourtestlist" ("seven" "eight" "nine")))
Each line is a PicoLisp list with only 3 items:
- Item 1:
String
Unix timestamp with nanoseconds for when the entry was created - Item 2:
Integer
Non-cryptographically secure hash (CRC) of the command and its arguments - Item 3:
List
Command name, first argument, and subsequent arguments
When replaying the AOF, the server will ensure the hash of command and arguments match, to guarantee the data is intact. Replaying an AOF can be slow, depending on the number of keys/values.
Note: Manually modifying the AOF will require recomputing and replacing the hash with the result from
(kv-hash)
or PicoLisp(hash)
.
(hash '("RPUSH" "mytestlist" ("four" "five" "zero")))
-> 61453
DB format
The DB is stored by default in the kv.db
file as defined by *KV_db
. When backed up, the new filename contains the suffix .old
.
Here are two separate entries in a typical DB:
("smalldata" ("test1" "test2" "test3" "test4" "test5" "test6"))
("fooh_1000" "test data 1000")
Each line is a PicoLisp list with the key in the (car)
, and values in the (cadr)
. They are quickly replayed and stored in memory with a simple (set)
command.
Differences from Redis
- Unlike Redis, persistence only allows specifying a time interval between each
BGSAVE
. Since the AOF is always enabled, it’s not necessary to “save after N changes”, so the config is much simpler. - Log rewriting is not something that “must be done”, because chances are the AOF will never grow too large. Of course that depends on the number of changes occurring between each
BGSAVE
, but even then the AOF is wiped when aBGSAVE
is initiated (and restored/rewritten if there was an error). - The DB snapshot is used to reconstruct the dataset in memory, not the AOF. The AOF is only used to replay the commands since the last DB save, which is much faster and more efficient, particularly when using
--binary
. - There is no danger of losing data when switching from
RDB
toAOF
, because such a concept doesn’t even exist.


--- title: Should we be skeptical of a "large" effect size if p > 0.05? author: Jefff Walker date: '2019-05-28' slug: should-we-be-skeptical-of-a-large-effect-size-if-p-0-05 categories: - stats 101 tags: - effect size - NHST - p-values - power ---
Motivator: A twitter comment “Isn’t the implication that the large effect size is a direct byproduct of the lack of power? i.e. that if the the study had more power, the effect size would have been found to be smaller.”1 2
A thought: our belief in the magnitude of an observed effect should be based on our priors, which, hopefully, are formed from good mechanistic models and not sample size“.3
But…maybe sample size should influence our prior, because the expected estimated effect magnitude is bigger than than the true effect if the true effect is near zero explored a bit here. This is because, if an effect is near zero, estimates will vary on both sides of zero, and the absolute value of most of these estimates will be bigger than the absolute value of the true effect. But what effect size should we worry about this?
library(ggplot2)
library(ggpubr)
## Loading required package: magrittr
library(data.table)
Simulate an experiment with two treatment levels (“control” and “treated”), with standardized (\(\frac{\delta}{\sigma}\)) effect sizes of 0.05, .1, .2, .3, .5, .8, 1, 2 and sample sizes of 100, 20, and 10. Cohen considered .8 a “large” standardized effect but I’ll leave what is large up to you. Regardless, its worth comparing the results here to observed effects.
n <- 100 # per treatment level. power will be a function of effect size
b_array <- c(0.05, 0.1, 0.2, 0.3, 0.5, 0.8, 1, 2)
niter <- 10^4
res_table <- data.table(NULL)
power_table <- data.table(NULL)
for(b1 in b_array){
y1 <- matrix(rnorm(n*niter), nrow=n)
y2 <- matrix(rnorm(n*niter), nrow=n) + b1
d100 <- apply(y2, 2, mean) - apply(y1,2,mean)
d20 <- apply(y2[1:20,], 2, mean) - apply(y1[1:20,],2,mean)
d10 <- apply(y2[1:10,], 2, mean) - apply(y1[1:10,],2,mean)
res_table <- rbind(res_table, data.table(b=b1, d100=d100, d20=d20, d10=d10))
power_table <- rbind(power_table, data.table(
b=b1,
"power (n=100)"=power.t.test(n=100, delta=b1, sd=1)$power,
"power (n=20)"=power.t.test(n=20, delta=b1, sd=1)$power,
"power (n=10)"=power.t.test(n=10, delta=b1, sd=1)$power
))
}
knitr::kable(power_table, digits=2)
| b | power (n=100) | power (n=20) | power (n=10) |
|---|---|---|---|
| 0.05 | 0.05 | 0.04 | 0.03 |
| 0.10 | 0.10 | 0.05 | 0.04 |
| 0.20 | 0.29 | 0.09 | 0.06 |
| 0.30 | 0.56 | 0.15 | 0.09 |
| 0.50 | 0.94 | 0.34 | 0.18 |
| 0.80 | 1.00 | 0.69 | 0.39 |
| 1.00 | 1.00 | 0.87 | 0.56 |
| 2.00 | 1.00 | 1.00 | 0.99 |
knitr::kable(res_table[, .("median(|b|) (n=100)"=median(abs(d100)),
"median(|b|) (n=20)"=median(abs(d20)),
"median(|b|) (n=10)"=median(abs(d10))
), by=b], digits=c(2, 3, 3, 3))
| b | median(|b|) (n=100) | median(|b|) (n=20) | median(|b|) (n=10) |
|---|---|---|---|
| 0.05 | 0.100 | 0.212 | 0.302 |
| 0.10 | 0.121 | 0.224 | 0.308 |
| 0.20 | 0.197 | 0.260 | 0.332 |
| 0.30 | 0.299 | 0.318 | 0.370 |
| 0.50 | 0.501 | 0.502 | 0.515 |
| 0.80 | 0.799 | 0.796 | 0.792 |
| 1.00 | 1.000 | 0.993 | 0.995 |
| 2.00 | 2.001 | 2.004 | 2.002 |
knitr::kable(res_table[, .(
"IF (n=100)" = median(abs(d100))/b,
"IF (n=20)" = median(abs(d20))/b,
"IF (n=10)" = median(abs(d10))/b
), by=b], digits=c(2, 1, 1, 1))
| b | IF (n=100) | IF (n=20) | IF (n=10) |
|---|---|---|---|
| 0.05 | 2.0 | 4.2 | 6.0 |
| 0.10 | 1.2 | 2.2 | 3.1 |
| 0.20 | 1.0 | 1.3 | 1.7 |
| 0.30 | 1.0 | 1.1 | 1.2 |
| 0.50 | 1.0 | 1.0 | 1.0 |
| 0.80 | 1.0 | 1.0 | 1.0 |
| 1.00 | 1.0 | 1.0 | 1.0 |
| 2.00 | 1.0 | 1.0 | 1.0 |
Notice that if power is obove about .2, the absolute median effect is not inflated. That is, a study would have to be wicked underpowered for there to be an expected inflated effect size. This is an indirect answer to question no. 2. A more direct answer is explored by computing the log10 ratio of absolute effects between sample size levels for each run of the simulation.
res_table[, d100.d20:=log10(abs(d20)/abs(d100))]
res_table[, d100.d10:=log10(abs(d10)/abs(d100))]
res_table[, d20.d10:=log10(abs(d10)/abs(d20))]
res_melt <- melt(res_table[, .SD, .SDcols=c("b", "d100.d20", "d100.d10", "d20.d10")], id.vars="b", variable.name="comparison", value.name="contrast")
res_melt[, b:=factor(b)]
pd <- position_dodge(0.8)
ggplot(data=res_melt, aes(x=b, y=contrast, fill=comparison)) +
geom_boxplot(position=pd, outlier.shape=NA) +
coord_cartesian(ylim=c(-1.25, 2))
If the true effect is really small (0.05) then a smaller sample will often estimate a larger effect (just less than 75% of the time when decreasing \(n\) from 100 to 20). When the true effect is about 0.5 or higher, decreasing sample size is no more likely to estimate a bigger effect than increasing sample size.
The original question, and the motivating tweet, raise the question of what a “large” effect is. There is large in the absolute since, which would require subject level expertise to identify, and large relative to noise.↩
Note that the original post was not about the statistical significance filter but about the ethics of a RCT in which the observed effect was “large” but there was not enough power to get a statistically significant p-value.↩
at least if we are using an experiment to estimate an effect. If we are trying to estimate multiple effects, the bigger observed effects have tend to be inflated and the smaller observed effects tend to be dd↩


Employee Team Roster
Dynamically written as employees are added.
Michael Scott
Manager
ID: 1
Email:
<EMAIL_ADDRESS>Office number: 10
Dwight Schrutte
Engineer
ID: 2
Email:
<EMAIL_ADDRESS>GitHub:
HateJim5000
Pam Beasley
Intern
ID: 3
Email:
<EMAIL_ADDRESS>School: Pitt


How many regions does Azure operate in?
All Azure Regions offer all Azure services.
What is an Affinity Group?
A group that prioritizes request traffic to a specific VM.
A grouping method used with on-premises servers that is not necessary in Azure, since Azure IaaS handles this automatically for you.
A method of grouping Azure services together to optimize performance so that resources are hosted on servers within close proximity to each other.
What does Zone-Redundant Storage (ZRS) do?
Replicates your data to a secondary geographic location, while providing read access to the data in the secondary location.
Maintains 3 copies of your data, replicated within a single facility.
Maintains 3 copies of your data, replicated across two to three facilities, either within a single region or across two regions.
Maintains 6 copies of your data. Three copies are replicated within the primary region, with three additional copies being replicated within a secondary region hundreds of miles away.
What does Locally Redundant Storage (LRS) do?
Replicates your data to a secondary geographic location, while providing read access to the data in the secondary location.
Maintains 3 copies of your data, replicated within a single facility.
Maintains 6 copies of your data. Three copies are replicated within the primary region, with three additional copies being replicated within a secondary region hundreds of miles away.
Maintains 3 copies of your data, replicated across two to three facilities, either within a single region or across two regions.
What does Geo-Redundant Storage (GRS) do?
Maintains 6 copies of your data. Three copies are replicated within the primary region, with three additional copies being replicated within a secondary region hundreds of miles away.
Replicates your data to a secondary geographic location, while providing read access to the data in the secondary location.
Maintains 3 copies of your data, replicated within a single facility.
Maintains 3 copies of your data, replicated across two to three facilities, either within a single region or across two regions.
What does Read Access Geo-Redunant Storage (RA-GRS) do?
Maintains 3 copies of your data, replicated within a single facility.
Maintains 6 copies of your data. Three copies are replicated within the primary region, with three additional copies being replicated within a secondary region hundreds of miles away.
Replicates your data to a secondary geographic location, while providing read access to the data in the secondary location.
Maintains 3 copies of your data, replicated across two to three facilities, either within a single region or across two regions.
Which is setup by default when you create an Azure Storage Account?
Locally Redundant Storage (LRS)
Zone-Redundant Storage (ZRS)
Geo-Redundant Storage (GRS)
Read Access Geo-Redundant Storage (RA-GRS)


--- layout: post title: Guard fix for could not start Spork server for Rspec categories: - today-i-learned tags: - ruby on rails - Rspec - Guard - TDD - Automation published: true ---
While working through the expertly written "The Ruby on Rails Tutorial" by Michael Hartl, I ran into a small configuration issue. The issue I experienced was with Guard not properly starting a Spork server from the command line. My system was able to run Rspec, Spork, and Guard with no errors as long as Guard didn't try to load Spork. Here is what my terminal output looks like.
{% highlight console %} josh@Josh-eOS:~/Web/Freelance/qstate$ guard 15:28:49 - INFO - Guard is using Libnotify to send notifications. 15:28:49 - INFO - Guard is using TerminalTitle to send notifications. 15:28:49 - INFO - Starting Spork for RSpec, Test::Unit Couldn't find a supported test framework that begins with 'testunit' Supported test frameworks: ( ) Cucumber (*) RSpec Legend: ( ) - not detected in project (*) - detected Using RSpec, Rails Preloading Rails environment Loading Spork.prefork block... Spork is ready and listening on 8989! 15:29:19 - ERROR - Could not start Spork server for RSpec, Test::Unit after 30 seconds. I will continue waiting for a further 60 seconds. {% endhighlight %}I'm positive that others have experienced this same error. The hint for the fix comes from the lines 15:28:49 - INFO - Starting Spork for RSpec, Test::Unit. Couldn't find a supported test framework that begins with 'testunit'
. This means that Guard was attempting to run tests using the testunit framework (which was not installed). To fix this add :test_unit => false
to your Guardfile's Spork block. It should look something like this.
For troubleshooting surrounding Guard and Spork, take a look at the github page for guard-spork. Here are a couple of the most basic things you can check.
- If you can start Spork manually but get the following error message when using Guard::Spork:
- Starting Spork for RSpec ERROR: Could not start Spork for RSpec/Cucumber. Make sure you can use it manually first.
- Try to increase the value of the :wait => 60 option before any further investigation. It's possible that this error is the result of an unnecessary /test directory in the root of your application. Removing the /test directory entirely may resolve this error.


--- layout: archive title: "Page Archive" permalink: /page-archive/ author_profile: true --- {% for post in site.posts %}


Status: Proposal FIRST passed, Nov 89 X3J13
Forum: Cleanup
Issue: &ENVIRONMENT-BINDING-ORDER
References: CLtL p. 145-146, 63
Issue DEFMACRO-LAMBDA-LIST
Category: CLARIFICATION
Edit History: V1, 24 Oct 1989, Sandra Loosemore
V3, 02 Nov 1989, Sandra Loosemore (comments from Moon)
Problem Description:
Issue DEFMACRO-LAMBDA-LIST states that &ENVIRONMENT can appear once
anywhere at top level of a macro lambda list, but doesn't say anything
about the order in which the &ENVIRONMENT variable is bound relative
to the other lambda-list variables.
Some implementations treat &ENVIRONMENT as a mechanism for naming the
second argument to the macro function, in which case it is bound
before any of the variables in the actual destructuring pattern.
Other implementations bind it with the other lambda parameters in the
usual left-to-right order.
The binding order of &WHOLE parameters is not an issue. This is
because a &WHOLE parameter must appear first in the lambda list, so
there is no difference between binding it first or binding it
left-to-right. The relative binding order of &WHOLE and &ENVIRONMENT
parameters is not an issue because neither one can include init forms
where the binding of the other might be visible.
There are two proposals, FIRST and LEFT-TO-RIGHT.
Proposal (&ENVIRONMENT-BINDING-ORDER:FIRST):
Clarify that the &ENVIRONMENT parameter is bound along with &WHOLE
before any of other variables in the lambda list, regardless of where
&ENVIRONMENT appears in the lambda list.
Rationale:
This proposal provides a convenient explanation for the special
treatment of &WHOLE and &ENVIRONMENT at top-level in a DEFMACRO-style
lambda list. Basically, these two parameters are stripped out and
used to name the two arguments to the macro function, then the binding
of the remaining arguments is handled exactly the same as at
non-top-level or in a DESTRUCTURING-BIND. It is also very
straightforward to implement this model (as opposed to having
special parsing code for destructuring top-level DEFMACRO lambda
lists).
Proposal (&ENVIRONMENT-BINDING-ORDER:LEFT-TO-RIGHT):
Clarify that the all lambda variables in a DEFMACRO-style lambda list
are bound left-to-right, including the &WHOLE and &ENVIRONMENT parameters.
Rationale:
This is more consistent with the order in which variables in ordinary
lambda lists are bound.
Current Practice:
Lucid CL, Utah CL, and KCL implement proposal FIRST. CMU CL
implements proposal LEFT-TO-RIGHT.
Symbolics Genera implements proposal FIRST. Specifically, &WHOLE is
bound first, followed by &ENVIRONMENT, then the destructuring
variables in the order listed.
Cost to implementors:
The changes are probably localized but potentially hairy. It is
possible that in some implementations it might be easier to completely
replace the code which handles lambda-list parsing and destructuring
than to try to patch it. Proposal FIRST is probably easier to
implement initially but the cost of converting an existing
implementation is probably about the same for both proposals.
Cost to users:
There are probably few user programs that would be affected by a
change in the binding order of &ENVIRONMENT parameters.
Benefits:
The language specification is made more precise.
Discussion:
Moon says:
I believe LEFT-TO-RIGHT is more clean, but I don't have strong feelings.
I am equally in favor of either of the two presented proposals or an
EXPLICITLY-VAGUE proposal.


pyodbc is a Python module that allows you to access ODBC databases. It implements the Python Database API Specification v2.0.
Some notable features include:
The following features are beyond the requirements of the DB API. They are intended to provide a very Python-like, convenient programming experience, but you should not use them if your code needs to be portable between DB API modules. (Though we hope future DB API specifications will adopt some of these features.)
The DB API specifies that results must be tuple-like, so columns are normally accessed by indexing into the
sequence (e.g. row[0]
) and pyodbc supports this. However, columns can also be accessed by name:
cursor.execute("select album_id, photo_id from photos where user_id=1") row = cursor.fetchone() print row.album_id, row.photo_id print row[0], row[1] # same as above, but less readable
This makes the code easier to maintain when modifying SQL, more readable, and allows rows to be used where a
custom class might otherwise be used. All rows from a single execute
share the same dictionary of
column names, so using Row objects to hold a large result set may also use less memory than creating a object for
each row.
The SQL "as" keyword allows the name of a column in the result set to be specified. This is useful if a column name has spaces or if there is no name:
cursor.execute("select count(*) as photo_count from photos where user_id=1") row = cursor.fetchone() print row.photo_count
Though SQL is very powerful, values sometimes need to be modified before they can be used. Rows allow their values to be replaced, which makes them even more convenient ad-hoc data structures.
# Replace the 'start_date' datetime in each row with one that has a time zone. rows = cursor.fetchall() for row in rows: row.start_date = row.start_date.astimezone(tz)
Note that columns cannot be added to rows; only values for existing columns can be modified.
The DB API makes this an optional feature. Each iteration returns a row object.
cursor.execute("select album_id, photo_id from photos where user_id=1") for row in cursor: print row.album_id, row.photo_id
The DB API specification does not specify the return value of Cursor.execute, so pyodbc returns different types based on the SQL statement executed.
A select statement returns the cursor itself, allowing the execute results to be iterated over and used to fetch. This makes the code very compact:
for row in cursor.execute("select album_id, photo_id from photos where user_id=1"): print row.album_id, row.photo_id row = cursor.execute("select count(*) from tmp").fetchone() rows = cursor.execute("select * from tmp").fetchall()
Update and delete statements return the number of rows affected:
count = cursor.execute("update photos set processed=1 where user_id=1") count = cursor.execute("delete from photos where user_id=1")
All other SQL statements return None
.
pyodbc Connection objects have an execute method that creates new Cursors automatically.
for row in cnxn.execute("select user_id from tmp"): print row.user_id
Since each call creates a new cursor, do not use this when executing multiple statements in a row.
As specified in the DB API, Cursor.execute accepts an optional sequence of parameters:
cursor.execute("select a from tbl where b=? and c=?", (x, y))
However, pyodbc also accepts the parameters directly. Note that the parameters are not in a tuple:
cursor.execute("select a from tbl where b=? and c=?", x, y)
Connections can be put into autocommit mode using the autocommit
keyword of
the connect function or
the autocommit attribute of the Connection
object.
Connection.getinfo function is an interface to SQLGetInfo.
Most of the ODBC catalog functions are available as methods on Cursor objects. The results are presented as SELECT results in rows that are fetched normally. Refer to Microsoft's ODBC documentation for details of how to use each function.
cnxn = pyodbc.connect(...) cursor = cnxn.cursor() for row in cursor.tables(): print row.table_name
| ODBC Function | Method | Description |
| SQLTables | Cursor.tables | Returns a list of table, catalog, or schema names, and table types. |
| SQLColumns | Cursor.columns | Returns a list of column names in specified tables. |
| SQLStatistics | Cursor.statistics | Returns a list of statistics about a single table and the indexes associated with the table. |
| SQLSpecialColumns | Cursor.rowIdColumns | Returns a list of columns that uniquely identify a row. |
| SQLSpecialColumns | Cursor.rowVerColumns | Returns a list of columns that are automatically updated any any value in the row is updated. |
| SQLPrimaryKeys | Cursor.primaryKeys | Returns a list of column names that make up the primary key for a table. |
| SQLForeignKeys | Cursor.foreignKeys | Returns a list of column names that are foreign keys in the specified table (columns in the specified table that refer to primary keys in other tables) or foreign keys in other tables that refer to the primary key in the specified table. |
| SQLProcedures | Cursor.procedures | Returns information about the procedures in the data source. |
| SQLProcedures | Cursor.getTypeInfo | Returns a information about the specified data type or all data types supported by the driver. |


---
start: 2016-09-07 13:00
edition: 18
participate: "https://www.eventbrite.com/e/practical-functional-programming-tickets-27433094123"
subheader: "Practical Functional Programming"
subnote: "From crunching millions of petabytes to scaling to hundreds of servers, Functional Programming drives it all. Mutexes, semaphores and locks are things of past and just functions are the solutions themselves. This is about making simple easy, tackling complexity with simplicity and taking a step backwards instead of forward so that the problem is much clear."
talk :
agenda:
-
time: "6:45 pm - 7:30 pm"
title: "From non-functional to Thinking Functional: Focusing on the goals rather than the means."
speaker_profile: "By: Rahul Dé and Abdulsattar Mohammed"
image: "rahulde.jpg"
-
time: "7:30 pm - 7:45 pm"
title: "Break & Networking"
-
time: "7:45 pm - 8:30 pm"
title: "From Thinking Functional to Being Functional: Using this newly acquired outlook to solve real problems."
speaker_profile: "By: Rahul Dé and Abdulsattar Mohammed"
image: "abdulsattar.jpg"
---


Outreach | The Winter Soldiers
We are devoted to making STEM available worldwide through our numerous community outreach programs.
Last summer a few members of our team traveled to Attapadi, Kerala, India to work with two FLL teams that we had started there previously.
We are proud to say that both teams made it to Nationals and did an amazing job.
While in India, we traveled to Hyderabad to meet the Kriyative Edge Academy and
talk to them about including FLL in their STEM program. We are excited to continue working with Kriyative Edge this coming season.
We have worked with FIRST Global for the past two seasons; the first year we hosted Skype calls with teams from the Solomon Islands and Micronesia, and the next year
we built a robot for Team Russia based on their designs after their robot kit was rejected in customs so that we could ship it to their competition in Mexico City.
This year we are excited to work with Team Solomon Islands again, and we are keeping in touch with Team Russia in case they need any help.
Last season we started an FTC Team (#14832 Robotic Radiation) in Rock Island, a socioeconomically disadvantaged town in Illinois. As everyone on last year's team was a senior, we will have all new members this season.
Last season we mentored two FLL teams at Skip-A-Long Daycare and Martin Luther King Jr. Center in Rock Island. Initially, we hosted an FLL camp with students from both Skip-A-Long and the MLK Center. During this camp, we taught the students both programming and project skills. Since then, we have met at both Skip-A-Long and MLK each week to help the students move along. Recently MLK has showed interest in starting another team and we are excited to continue working with them.
This summer we hosted a six-week STEM-themed summer camp at Martin Luther King Jr. Center in Rock Island. Meeting once or twice a week, we did a number of hardware-related activites before giving the campers an introduction to programming by setting them to program a servo-actuated tilting marble maze with basic commands. The camp was a huge success and the marble maze proved itself a useful asset to show at demos.


Colin Leath’s page
Last updated 2012-02-08
Permanent URL:
purl.org/j9k/
cv
calendar
links
map
solo & sit spot facilitation
forest blog
gear
a previous version
v?
Colin Leath <
If you render the javascript, you will see a mailto: link here.
>


When the rib breaks The words fall apart My hand trembles Fears grip and tears depart. The feeling of void Silence turmoiled! When the weight's too much for my back to bear ... Oh! How I wish you were here!


The number 151 is a prime palindrome because it is both a prime number and a palindrome (it is the same number when read forward as backward). Write a program that finds all prime palindromes in the range of two supplied numbers a and b (5 <= a < b <= 100,000,000); both a and b are considered to be within the range.
| Line 1: | Two integers, a and b |
5 500
5 7 11 101 131 151 181 191 313 353 373 383


A Bar chart with offset axes (so the upper part of the chart is larger than the lower). The data and labels have been adjusted to highlight the weekdays as opposed to the weekends. The tooltips have been customised so that they have a significantly different appearance than what is the default.
  Put this where you want the chart to show up:

This is the code that generates the chart - it should be placed AFTER the

tag:


This package contains custom file import rules that can be invoked from the File Analyzer.
The primary reason for providing import functionality is to support the match/merge capabilities of the File Analyzer GUI.
As new import rules are created, the File Analyzer could also serve as an ingest tool.


Software Engineer (at) FanDuel
May 2019 - Present
As the market leader in Sports Betting in the US market, the main challenges in this role have been keeping up with the explosive growth in customers while at the same time complying with the continous stream of new legislation as new states legalise sports betting. Initially a member of the ledger team for three years working with the services responsible for handling user's money internally, now I work in the payments team which integrates with an array of thrid-party payment gateways.
Implement and live support a high-performing distributed ledger that handles 150,000+ request per second at peak times.
Build a mobile-first web and native apps in React.
Highly integrated with AWS: EC2, Aurora, SNS, SQS, Lambda, EKS, S3.
Continous delivery ethos doing multiple daily releases with no downtimes. GitHub, Buildkite, CPanel.
Out of office hours live support, working with key shareholders and other teams to solve production problems.
Doing performance tests on the service and advising the team on areas for improvement and bottlenecks ahead of new season starts.


Unlike browser DOM elements, React elements are plain objects , and are cheap to create
Immutable. Once you create an element, you can’t change its children or attributes.
JSX may remind you of a template language, but it comes with the full power of JavaScript.
Components let you split the UI into independent, reusable pieces, and think about each piece in isolation.
Conceptually, components are like JavaScript functions. They accept arbitrary inputs (called “props”) and return React elements describing what should appear on the screen.
All React components must act like pure functions with respect to their props.
React has a few different kinds of components
State is similar to props, but it is private and fully controlled by the component.
A feature available only to classes.
Do Not Modify State Directly
State Updates May Be Asynchronous
React may batch multiple setState() calls into a single update for performance.State Updates are Merged
Then you can update them independently with separate setState() callsState is often called local or encapsulated. It is not accessible to any component other than the one that owns and sets it.
Handling events with React elements is very similar to handling events on DOM elements. There are some syntactic differences
React way
Keys help React identify which items have changed, are added, or are removed. Keys should be given to the elements inside the array to give the elements a stable identity
Keys Must Only Be Unique Among Siblings
Avoid using refs for anything that can be done declaratively.
For example, instead of exposing open() and close() methods on a Dialog component, pass an isOpen prop to it.In some cases, you want to pass data through the component tree without having to pass the props down manually at every level. You can do this directly in React with the powerful “context” API.
If you want your application to be stable, don’t use context. It is an experimental API and it is likely to break in future releases of React.


Couldn't find 'done' for this 'do'.
yes() {
while echo "y"
do
true
}
yes() {
while echo "y"
do
true
done
}
ShellCheck found a do
without a corresponding done
.
Double check that the done
exists, and that it correctly matches the indicated do
. A companion warning [[SC1062]] is emitted where ShellCheck first noticed it was missing.
None.


Crowd sourced Covid 19 data collation for in and around Kalpakkam
Home |
Plots |
FAQs |
Useful Links |
About |
Covid19-Township |
Covid19-IGCAR
Cumulative variation of Confirmed Cases


Account token missing {{ message|default:"A token for a third party account is missing. Please contact us." }}


My FreeCodeCamp Projects
Heres a list of all of my FreeCodeCamp projects:
Tribute Page Project
Survey Form Project


We Provide The Best Food At The Right Price
.Happy Hour
Party Time
Breakfast
Lunch
Dinner
Lorem ipsium dolor sir emet, consectetur adipisic
ing elt, sed do eiusmod tempor incididunt ut
labore et dolore magna aliqua. Ut enim ad minim
veniam, quis nostrud exercitation uliamco laboris
nisi ut aliquip ex ea commodo consequat. Duis
aute irure dolor in re prehenderit in voluptate velit
esse cilium dolore eu fugiat nulla pariatur. Exce
teur sint occaecat cupi datat non proident
Lorem ipsum dolor sit amet, consectetur adipisic
ing elit, sed do eiusmod tempor incididunt ut
labore et dolore magna aliqua. Ut enim ad minim
veniam, quis nostrud exercitation ullamco laboris
nisi ut aliquip ex ea commodo consequat. Duis
aute irure dolor in re prehenderit in voluptate veult
esse cillum dolore eu fugiat nulla pariatur. Exce teur sint occaecat cupi datat non proident.
chickenBurger
chickenPizza
beefBurger
You may have noticed we did not pass in an empty array as an argument when we created our
Janeobject in the line var Jane = new Contact("Jane", "Njeri");. Since we're defining the addresses property as
the same thing every single time we create a new Contact, there is no reason to require an empty array as an argument
. Instead, it's much more efficient to have our constructor
automatically create an addresses property and assign it to be an empty array..
Now we need to write an Address constructor. At a minimum each
Address object will need to know its own street, city, and county.
We can create an Address constructor
that will add each of those properties to every Address object created


Help Center Menu is displayed on the right side of the standard header. The Help Center menu icon drops down to a provide a general help center and page specific help.
It is contained in the help-center-menu
directive. The attributes of this directive are:
_self
, _blank
,
_parent
, _top
, framename
.
Help Center Menu consists of items that can be populated using the help-center-item
attribute in each element.
Any element with this attribute can define three attributes:
For example, if a colored button was a help center menu item which can be directly searched, the code would be as below:


Dialog App
Introduction
This project started as a way to remember how to construct a decent installer using Wix. The syntax of Wix is just bizarre enough that every 6 months or so when I need to create one I had to learn it all over again. So WixApp was constructed to provide a simple method for construction a Wix input file. That is then compiled using Visual Studio in the normal way and an installer is created.
Wix is a very complex product, WixApp is very simple. There are only a few things that it can do:
- Accept files that need to be installed in Progarm Files (x86)
- Create Shortcuts (when requested) on the start menu and the desktop
- Create one or more directories as needed into which files are placed in Program Files
- It can create multiple levels of directories in Program Files and the Start Menu
- If requested it will append a path to the system path for use in Command Prompt or PowerShell
- When WixApp is installed, SetEnv will also be installed
- The version number may be retrieved from an executable for the installer to use during installation
- It will create an uninstaller that will remove all of the files and directories that it creates
How Does WixApp Work
WixApp allows the user to start a new project installation or open an existing installation. WixApp places all of the information it gathers in a file with an "wxd" extension with the main name being the product name.
When all the information for the installation file has been gathered one can save both the wxd file and the Product.wxs file or if need be just the wxd file. Later when the user wishes to continue creating the installation one can "Open" the wxd project file.
The Product.wxs file is compiled by Visual Studio with the Wix Installer add on. When errors are discovered during the compilation one should return to WixApp to correct the error.
WixApp Input
The WixApp Dialog Box has three main sections:
- The Product Section
- The Feature Section
- The Component Section
There is only one Product Section. It will create information in the Product.wxs file Product Section (See Product.wxs Structure below).
The Feature Section of the dialog box is used to describe as many features as needed. Each Feature may have a unique directory under Program Files and a unique Start Menu directory name. Features may be created, edited and deleted. Features have a name and Feature names must only use alphanumeric characters, underscores, dots and spaces.
Each Feature section may contain any number of Components. A Component is a file. When a Feature is visible in the dialog box, the components described are added to the feature. Each feature has a Component name. Each component is required to have a path to the file. The remaining attributes of the component are optional. Component names may contain alphanumeric characters, underscores, dots and spaces. The component name is used to name shortcuts in the start menu and on the desktop.
Product.wxs Structure
Product.wxs has roughly four main sections:
- Product Section
- Features Section
- Directory Section
- Components Section
The Product Section contains information about the product, the icons, some data about the installer, and the list of "Features." A Feature is just a list of components and the Product section can contain one or more "Features." The Directory Section contains a description of all the directories used by the installer. Please note that some of the Directory IDs are magic words so take care changing them outside of WixApp. A Component is a description of exactly one file and what is to be done with the file during installation. Wix is not particularly sensitive about the order of these sections so WixApp creates the Product file in a way that works.
Directory Paths
A path in Windows is the text description of the location of a directory in a tree of directories. It is typically composed of a hard drive letter followed by colon and back slash followed by one or more names separated from each other by back slashes. WixApp may construct the Product.wxs using a fully qualified path or to use the location of the Visual Studio solution file as the starting point for a path (i.e. $(SolutionDir)..\Release\xxx.exe).
When New is selected in the File Menu a dialog box describes this step and next takes one to an open file dialog box to select the xxx.sln file for the project. It also has an input line for a project root path. The project root path is useful when there is no previous path to an object. If something happens (like a reorganization of the directories) the solution path may be adjusted by the selecting the Solution Menu item. The solution need only be input once usually so it does not appear in the Main Dialog Box. The Solution Dialog Box allows the user to use either addresses relative to the Solution directory or absolute addresses.


pgblog
A musician tackles code
Stack Overflow has been around since 2008, and today belongs to a vast network of question-and-answer sites known as Stack Exchange, although the latter did not become a unified entity until 2011. Since it's an open forum where anyone can contribute, it has its community problems, but on the whole—especially compared to those who post comments on youTube, for example—it's a well-behaved bunch, and spending time there can be very rewarding.
2008! You'll notice: that's a very short history, even shorter than the history of coding camps. Yet already it feels like these communities have been around forever, which may be a function of the size of the hole that they filled in the web's overall cultural landscape.
What makes a good Stack Overflow question? This has been asked many times, even on the Stack Overflow FAQ, where you'll get great information and links to further reading.
What it comes down to is this: pretend you're an experienced programmer whose first web visit in the morning is to Stack Overflow. Let's assume you're not there to just garner reputation, but because you want to help people. (The former kind of expert, I assert, is much less common than people seem to think.) How would you want to see questions formulated? Do you want to be distracted by poor grammar, confused by unclear or lacking examples, or bothered with questions that can easily be answered by Google?


In true previews of your site, the SharePoint ribbon will be here.
This area will be filled in by content you create in your page layouts.


[1]
none sounded like stand outs and we chose grey gables on the location and reasonable price .
[2]
issues , but they add up , a very poor old tv with limited channel choice .


Redmi K30 could sport a 120Hz display and the 60MP Sony IMX686 camera
by Aakash JhaveriRedmi K30 could sport a 120Hz display and the 60MP Sony IMX686 camera
Redmi K30 is slowly taking shape
(Image credit: Future)
The upcoming Redmi K30 5G is slowly taking shape, as a new report suggests we will get a 120Hz display, a side-mounted fingerprint scanner and the new 60MP Sony IMX686 image sensor.
These hardware elements were spotted in the MIUI 11 nightly build code by XDA Developers and gave some explanation of why the device could be the Redmi K30. All the mentioned additions will appear in a Xiaomi smartphone codenamed “Phoenix”, and the code has graphical cues of a phone that looks like the Redmi K30, whose picture was shared by the company’s GM, Lu Weibing. Regardless, take these correlations with a grain of salt.
Side-mounted fingerprint scanner
In the new MIUI 11 build, a new method called “isBroadSideFingerprint” was added, which returns true if the device name is “Phoenix” or “Picasso”. We don’t know much about Picasso at this point but it does share most of the aforementioned elements. “BroadSide” refers to the right side of the device, explains the string accompanying this code.
A graphic titled “core_scan_gesture_broadside” shows a device with a dual hole-punch display with a fingerprint scanner on the right side.
Considering that the Redmi K30 is the only confirmed device from Xiaomi’s portfolio to sport such a notch, it makes us believe that we are indeed talking about the same device.
120Hz refresh rate display
Last month, news surfaced that Xiaomi is working on a smartphone with a 120Hz refresh rate display, after a hidden setting to force the display to render at 120Hz was unearthed. It understandably did not function as none of Xiaomi’s current smartphones crosses the 60Hz threshold.
However, a method called “isSuppotHighFrameRate” returns true if the device name matches “Phoenix”. This could very well mean that the Redmi K30 could be one of Xiaomi’s first phones with a high refresh rate.
Sony IMX686 image sensor
Sony recently shared a bunch of sample shots from its upcoming flagship IMX686 image sensor, without touching upon any of the specifications. These were shared only on Weibo, which could imply that the first wave of IMX686-sporting phones will be in China. The only confirmed spec is that the sensor will be 60MP in size.
Qualcomm’s camera library for “Phoenix” includes strings labeled “phoenix_imx686”, “phoenix_s5k3t2”, “phoenix_gc02m1_depth” and “phoenix_gc02m1_front”. The S5K3T2 is a Samsung ISOCELL with a 20MP resolution and a 1/3.4-inch sensor size. This also technically confirms that the phone will have at least three cameras on the back and one on the front.
Expected to launch in December
The Redmi K30 is expected to be unveiled in China in December, with availability early next year. The “phoenixin” codename is also mentioned in the source code, which indicates that a variant of the phone destined for the Indian market also exists. It shouldn’t be long before we know everything about the successor to the Redmi K20 Pro.
- Everything we know about the Redmi K30
- Redmi K30 with Dual 5G could launch in December in China: Xiaomi CEO
- Realme X2 Pro launched in India at Rs 29,999


Termination Form
Manager:
Today's Date:
Employee Name:
Location:
Hire Date:
Term Date:
Type of Termination?
Termination
Self-Termination WITHOUT notice
Self-Termination WITH notice
How Much Notice:
Reason For Self-Termination:
if this doesn't apply, please put N/A
Reason For Termination:
if this doesn't apply, please put N/A
Eligible for Rehire?
Yes
No
Please explain:
if this doesn't apply, please put N/A
Post
Submitted successfully!
Error
Sorry there was an error sending your form.


Example Health
information
measurements
architecture
settings
This is a simulated health data system. Any resemblance to any person living or dead is purely coincidental.
Health background
smoker status:


{% extends 'layouts/layout-nhsprofile.html' %} {% block pageTitle %} Delete your NHS login {% endblock %} {% block content %}
Read our terms and conditions to check what we'll do with your information.


Cacti - T. pachanoi & Syrian Rue
The MAOI used was 3g Rue in tea form; the amount of cactus was 6' (3' dia). The resultant trip was equal in intensity to perhaps 4 microdots and had a duration of no less than 12 hours.
prep:
3gm of Peganum Harmala were ground to powder in a coffee grinder and simmered for 10 minutes in a solution of 6gm ascorbic acid/100mL water. The mixture was strained then honey was added, and finally it was left to chill in the refrigerator.
6' of Trichocereus Pachanoi 3' in diameter was cleaned by removing the inner core and spines only (cuticle remained). These chunks were frozen overnight and then chopped in a blender along with a little acidified water (~200mL,pH=3). This was strained, the liquid collected and the solids returned to the blender for another round with more water. This was done three times total and at the end the solid remains were of a surprisingly small size. The liquid/froth was in the amount of 1000mL. This was frozen and then thawed to break the bubbles.
exp:
11:50 - Drink rue tea. Yuck! This is much worse tasting than cactus juice.
12:00 - Drink first of four 250mL cups of cactus juice.
12:10 - Drink second cup. Before I do this, I am already feeling the first cup. Yeah! It's that quick.
12:30 - Third cup. Had to wait awhile on that one due to the bloated/full feeling.
12:40 - Final cup. I really only drank 3/4 of this one.
12:50 - *snap* I was feeling it before, but I felt a major head change here, 10 minutes after my final cup.
1:00 - Pupil check and we have distinct dilation.
1:20 - Here my notes simply say 'BOOM.' The ramp up was dramatic. This is where the trip began and I stopped making notes. The come-up was delightful yet short lived. The plateau was broad, expansive and long lasting. The quality of the experience was undeniable: it was authentic, organic, intelligent.
Sight and sound were equally seductive. Bodily, I felt great, although I would not describe it as orgasmic or even ecstatic. Many times I realized that my eyelids had fluttered closed and I was just wrapped up in a feeling. We went to the beach for the sunset and everything was so true. After 10+ years of psychedelic use, I have found a new favorite. This stuff is very much like 2CB and 2CT7 only better. Maybe I just allowed myself to enjoy it more due to the natural source.
9:00 - This is where I realized that I had stepped down a notch. The mirror showed that the dilation had diminished somewhat, but the effects were still pronounced. In fact my notes reflect that at...
12:00 - I wrote down 'STRONG' and at...
1:30 - I wrote down 'music' The music had me all wound up (DI.fm: Chillout)
3:00 - Drift beautifully into sleep.
I never felt nauseous although there was some intestinal gas, however. Next time I will boil the liquid down to just one cup. There were no high blood pressure or pulse problems. I never felt emotionally or mentally out of balance, but my wife did (she took 6' without MAOI). She 'couldn't get comfortable' and made remarks like, 'A person must need a really strong mind to enjoy this,' and 'I'm just not ready to face myself as totally as this cactus is asking me to.' I am thankful that we tripped at different times on this because she was a lot more fun to be around when she was sober. To be fair, I have considerable experience with a variety of psychedelics at high doses, while she has only used ecstasy and LSD at low doses. Besides, I think if she had done the full dose things would have turned out great for her.
In conclusion, Pedro + Rue works very well for me. I cannot imagine ever wanting more out of a trip, but I know there is further to go. 9' or 12' would probably be ok, but 18' + MAOI would most certainly involve quite a bit of squirming. 6' + MAOI was _definitely plenty_ for my first time.
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.


Select...
Switch account
Send feedback
Help
saved items
tags
Add saved images to a tag
Tags are where you add and organize your saved images


# classes are for reusing data # but are not drawn in the canvas class database image: "https://openclipart.org/image/2400px/svg_to_png/94723/db.png" end # objects extend a class and are rendered object a1 is database position: 118, 155 label: "I am a database!" end object a2 is database connect: [a1] label: "I am another database!" position: 389, 155 end
Diagramo


The Japanese Himawari 8 Satellite takes images of different parts of the spectrum (visible light and infrared). Himawari offers the best image quality but the satellite is geostationary.
You can also choose images from the NASA's EPIC camera on board of the DSCOVR satellite. This satellite always faces the sunlit side of the Earth.
The NOAA GOES satellites are geostationary like Himawari but show the pacific (GOES West) and the Americas (GOES East).
The Meteosat satellites are geostationary as well, but the Meteosat Prime satellite is centered at 0°E, while the Indian Ocean Data Coverage (IODC) is centered at 41.5°E41.5°E41.5°E41.5°E.
Image credit: Japan Meteorological Agency (JMA), National Aeronautics and Space Administration (NASA), National Oceanic and Atmospheric Adminstration (NOAA), European Organisation for the Exploitation of Meteorological Satellites (EUMETSAT).


Some dataset listings have a Research tab that displays an analysis of the data point attributes in the dataset. Follow these steps to clone the example research notebook of a dataset:


Class representing the context.
Class representing the context.
ptr
(Dev related) pointer to the context c++ object.
needs_input_grad
boolean listing arguments of forward
and whether they require_grad.
saved_variables
list of objects that were saved for backward via save_for_backward
.
new()
(Dev related) Initializes the context. Not user related.
AutogradContext$new( ptr, env, argument_names = NULL, argument_needs_grad = NULL )
ptr
pointer to the c++ object
env
environment that encloses both forward and backward
argument_names
names of forward arguments
argument_needs_grad
whether each argument in forward needs grad.
save_for_backward()
Saves given objects for a future call to backward().
This should be called at most once, and only from inside the forward()
method.
Later, saved objects can be accessed through the saved_variables
attribute.
Before returning them to the user, a check is made to ensure they weren’t used
in any in-place operation that modified their content.
Arguments can also be any kind of R object.
AutogradContext$save_for_backward(...)
...
any kind of R object that will be saved for the backward pass. It's common to pass named arguments.
mark_non_differentiable()
Marks outputs as non-differentiable.
This should be called at most once, only from inside the forward()
method,
and all arguments should be outputs.
This will mark outputs as not requiring gradients, increasing the efficiency
of backward computation. You still need to accept a gradient for each output
in backward()
, but it’s always going to be a zero tensor with the same
shape as the shape of a corresponding output.
This is used e.g. for indices returned from a max Function.
AutogradContext$mark_non_differentiable(...)
...
non-differentiable outputs.
mark_dirty()
Marks given tensors as modified in an in-place operation.
This should be called at most once, only from inside the forward()
method,
and all arguments should be inputs.
Every tensor that’s been modified in-place in a call to forward()
should
be given to this function, to ensure correctness of our checks. It doesn’t
matter whether the function is called before or after modification.
AutogradContext$mark_dirty(...)
...
tensors that are modified in-place.
clone()
The objects of this class are cloneable with this method.
AutogradContext$clone(deep = FALSE)
deep
Whether to make a deep clone.


| BlockManagerWorker |
Executor-side block manager.
|
| BlockTransferThrottler |
A class to restrict parallel connection per runtime edge.
|
| BroadcastManagerWorker |
Used by tasks to get/fetch (probably remote) broadcast variables.
|
| DataUtil |
Utility methods for data handling (e.g., (de)serialization).
|
| DataUtil.InputStreamIterator<T> |
An iterator that emits objects from InputStream using the corresponding DecoderFactory .
|
| DirectByteBufferOutputStream |
This class is a customized output stream implementation backed by
ByteBuffer , which utilizes off heap memory when writing the data via MemoryPoolAssigner.
|
| FileArea |
A file area descriptor.
|
| LimitedInputStream |
This class provide functionality to limit bytes read from InputStream .
|
| MemoryChunk |
This class represents chunk of memory residing in off-heap region
managed by MemoryPoolAssigner , which is backed by ByteBuffer .
|
| MemoryPoolAssigner |
The MemoryPoolAssigner assigns the memory that Nemo uses for writing data blocks from the MemoryPoolAssigner.MemoryPool .
|
| PipeContainer |
|
| PipeManagerWorker |
Two threads use this class
- Network thread: Saves pipe connections created from destination tasks.
|
| SerializerManager |
|


On arrival yachts are normally visited by Customs, Immigration, Police, Health and Port Captain.
Procedure on Departure: A zarpe (clearance) must be obtained from Immigration and the Port Captain must sign it. Passports must also have exit stamps from Immigration.
For length of stay permitted see Customs.
Details of Fees can be found below.
Last updated September 2014.
Passports must be valid for a period of 6 months,
Prior visas are not required by nationals of the European Union, Andorra, Argentina, Australia, Belize, Canada, Costa Rica, Ecuador, El Salvador, Honduras, Israel, Japan, Liechtenstein, New Zealand, Nicaragua, Norway, San Marino, Switzerland, USA and Uruguay.
A tourist visa card must be purchased on entry. This new CA-4 visa applies to the following countries:- Guatemala, El Salvador, Honduras, and Nicaragua. The length of stay (normally 90 days) applies to the whole group and only one extension will usually be granted. To remain in the region longer, a visit to a country outside the CA-4 area must be made and a new visa will be issued on re-entry.
There is a daily fine for overstaying one's permitted time.
Passports should always be carried especially if travelling inland.
Last updated November 2015.
Yachts can now cruise Guatemala for up to 12 months without being required to have a marina contract with an INGUAT (Istituto Guatemaltteco de Turismo) registered marina.
The rules that regulate the entry and stay of a yacht in Guatemala are as follows:
1. Boats entering Guatemala from abroad will receive a cruising permit valid for 3 months. The cost of this permit will be US $50,00 to be paid at the bank located near the customs office.
2. Boats who wish to remain longer than 3 months in Guatemala are recommended to ask immediately for an additional 9 month permit at the cost of US $150,00. If they do not ask for the extension straight away, the captain will have to return to Livingston to do this later.
3. Boats who wish to remain after the first 12 months may obtain a permit to remain an additional 12 months at a cost of US $150,00. This extension may be renewed each 12 months thereafter, but it requires that the vessel be located in an INGUAT (Istituto Guatemaltteco de Turismo) registered marina and there must be a contract with the marina.
The fees stated above are SAT fees and do not include fees that may be charged by immigration or an agent.
List of INGUAT marinas.
There is no requirement that vessels leave the country for three (3) months or any other period to qualify for these extensions.
Extensions MUST be applied for at least one month before the current permit expires. Once the previous permit expires the only option is to import the vessel (at 30% of the boat's value). Customs will not issue an extension if you apply for it too close to the time of expiration.
SAT (Guatemalan Customs) in Livingston can advise on the best way to apply for extensions.
Other Customs Rules
Note that SAT do a lot of control on the Pacific side of the country as there are many sport fishing boats there that never pay the taxes, so they enforce the law to the letter. Be sure your boat papers are in proper order, in particular if entering the country at Puerto Quetzal, Puerto Barrios and Santa Tomas.
Firearms must be declared. Firearms will be held by police or the port captain during the stay in port. A receipt will be issued.
Last updated September 2014.
Amoebic dysentery is endemic.
Malaria prophylaxis is necessary.
Dengue fever occurs throughout the year.
Hospitals in Guatemala are reluctant to give medical treatment unless they can be satisfied that you have medical insurance. It is therefore essential that you carry evidence of your insurance cover at all times.
Drink only bottled water.
ZIKA VIRUS ALERT: (September 2016) There have been recent safety alerts from the US State Department, UK Foreign Office, and Center for Disease Control (CDC) regarding travel to parts of Central and South America, Africa, southern Asia, the Caribbean, and the South Pacific islands. Guatemala is an area of interest with multiple reported cases and active virus transmission. There is growing concern about the rapid spread of the ZIKA Virus and the impact of the virus on pregnant women and babies. ZIKA is transmitted by mosquitos in tropical and sub-tropical climates, and there is currently no cure or vaccine. This situation is evolving rapidly, so please refer to the CDC’s dedicated website if you are intending to cruise in one of the effected areas.
Cruising yachts will be issued on arrival with a special permit consisting of a sticker that must be displayed prominently on the boat. The sticker will be attached by the customs officer in the first port of entry.
The new fees shown below (introduced April 2011) apply only to Monday-Friday check ins and check outs. On Saturdays and Sundays, a Q100 overtime fee will be applied.
As of April 9, 2011, US$1.00 = Q 7.66.
The new fees are as follows:
Check In
Q 500.00 Customs
Q 225.00 Immigration
Q 175.00 Port Captain
Q 100.00 Doctor
Q 1,000.00 total
Check Out
Q 160.00 Inmigration 2 persons
Q 25.00 Customs
Q 165.00 Port Captain
Q 550.00 total
Extensions for boat navigational permits have increased Q300 from Q1500 a year to Q1800 a year.
Last updated December 2011.
Animals must be declared and should have up-to-date health certificates. They are not allowed to land.


TABLE OF INTERACTIONS WITH
NEUROLEPTICS THAT TEND TO INDUCE TORSADES DE POINTES
From the French ANSM drug interactions document of September 2016, p. 164
NEUROLEPTICS THAT TEND TO INDUCE TORSADES DE POINTES CLASS CODE: N05A-002 |
SUBSTANCES THAT TEND TO INDUCE TORSADES DE POINTES CLASS CODE: C01-N05 |
Increased risk of ventricular arrhythmias, especially of torsades de pointes |
Contraindication -with citalopram, domperidone, escitalopram, hydroxyzine and piperaquine Not recommended -with the other medications that tend to induce torsades de pointes |


Meredith Jones
About
(current)
Portfolio
Contact
Portfolio
Happy Trails Hiking App: Group Project
Password Generator Application
Work Day Planner Application
Work Day Planner Application


The Battle to Save Earth!
A large group of huge space things are attacking Earth!
Fly your spacecraft using the arrow keys and space bar to shoot!
Sacrifice yourself so that the people of Earth can be get into a really big spaceship and leave you forever!
ORRRR... be *that guy* by just do nothing and allowing Earth to perish!
The choice is yours!


{% include head.html %}
{% include header.html %} {% include banner.html %} {% include doctor.html %} {% include project.html %} {% include form.html %} {% include js.html %}


'DEGRADING'
Scots stroke victim ‘forced to pee in plane sink with door open’ on TUI trip with ‘non-existent’ disabled facilities
by Bethan SextonA STROKE victim was forced to pee in a plane sink with the door open after TUI bungled arrangements for his trip.
David Anderson, 55, from Cardenden, Fife, suffered this and further indignities whilst on a £2000 cruise holiday in September.
He and wife Alana, 48, had spent hours researching their dream trip and informed TUI of David’s additional needs due to apprehension about travelling for the first time since his stroke in 2016.
Alana says the problems started with the flights, with David placed in a middle seat rather than the aisle in both directions, forcing him to consider urinating in a bottle.
She claims that on the Edinburgh to Palma flight, David made his way to the toilet with degrading results.
Relying on a walker, he was unable to fit his aid into the toilet cubicle and was forced to pee the sink with the door open, and only a curtain drawn for privacy from other passengers.
When the couple arrived at various ports in Italy they found TUI had not warned them about the accessibility issue with toilets.
Alana says provisions for disabled people were "non-existent" and on two occasions, in Sicily and Corsica, he resorted to urinating in a side street due to a lack of accessible toilets.
Other problems faced by the couple included steep gangway steps that meant David could only disembark twice during the week long cruise.
He also struggled with heavy doors, a lack of toilets on board the ship and was unable to access certain areas of the boat.
David was then also left bleeding on the way home after bungling airport staff failed to secure his wheelchair in a mobility lift.
Alana says she was separated from her husband during boarding, but later found him bleeding and "highly distressed."
Speaking today, she said: "We were also clearly told that the coaches would not be adapted for wheelchair accessibility so we would not be able to book them. However, on three occasions I saw that the coaches did indeed have lifts.
"There's obviously been a miscommunication in the chain about excursions.
"This is our first holiday since David’s stroke and I explained to them David’s physical capabilities and he was there with me in the travel shop so they could see.
"But being our first cruise, you obviously don’t know all the questions to ask, toilet facilities being one of them.
“It was horrendous, just so degrading, I know he’s my husband, but some things are private, toileting being one of them."
She added: “The adapted cabin was absolutely fantastic and I was really happy that it matched our expectations and the staff did on board did really try and help.

“I get that maybe EU countries aren’t quite as up to date with disables issues, but I wasn’t told that and had I have been I might have chosen a different destination.
It was horrendous, just so degrading, I know he’s my husband, but some things are private, toileting being one of them."
"Hindsight is a great thing, but there is definitely a gap in communication.
"When I got back to the travel agent and told them about it they were quite surprised and said it shouldn’t have happened.
"David is on benefits so for us to go on a cruise was just unbelievable and something I never thought I could afford for us and would never be within our reach.
“It’s not about the money though, it's about raising awareness and making sure people in a similar situation have the right information to make the right choice.”
James Taylor, Head of Policy and Public Affairs at disability equality charity Scope, said: "It's disgraceful that disabled customers are expected to put up with degrading situations like this when wanting to travel.
"Being able to go to the toilet during a plane journey should be a basic right for all customers.
"Accessibility is not just about being able to get onto a plane. “Half (43%) of disabled people say that having more accessible facilities would improve their experience of flying.
"Airlines should be doing much more to make services accessible for their disabled customers."
Alana has now been waiting more than five weeks for a formal response to her complaint.
TUI declined to comment.


Plato on Github
Report Home
src\ng\window.js
Maintainability
93.23
Lines of code
46
Difficulty
2.00
Estimated Errors
0.01
Function weight
By Complexity
By SLOC
'use strict'; /** * @ngdoc service * @name $window * * @description * A reference to the browser's `window` object. While `window` * is globally available in JavaScript, it causes testability problems, because * it is a global variable. In angular we always refer to it through the * `$window` service, so it may be overridden, removed or mocked for testing. * * Expressions, like the one defined for the `ngClick` directive in the example * below, are evaluated with respect to the current scope. Therefore, there is * no risk of inadvertently coding in a dependency on a global value in such an * expression. * * @example <example module="windowExample"> <file name="index.html"> <script> angular.module('windowExample', []) .controller('ExampleController', ['$scope', '$window', function($scope, $window) { $scope.greeting = 'Hello, World!'; $scope.doGreeting = function(greeting) { $window.alert(greeting); }; }]); </script> <div ng-controller="ExampleController"> <input type="text" ng-model="greeting" aria-label="greeting" /> <button ng-click="doGreeting(greeting)">ALERT</button> </div> </file> <file name="protractor.js" type="protractor"> it('should display the greeting in the input box', function() { element(by.model('greeting')).sendKeys('Hello, E2E Tests'); // If we click the button it will block the test runner // element(':button').click(); }); </file> </example> */ function $WindowProvider() { this.$get = valueFn(window); }


--- layout: page ---
I’m a designer based in Salt Lake City, Utah. I focus primarily on user experience and interface design, but I also have a lot of experience writing front-end code.
Depending on the time of year you might find me hiking or skiing in one of Utah’s beautiful mountain ranges, or exploring the deserts in Southern Utah.
A lot of my free time is devoted to reading, writing, and creatively expressing ideas. I occasionally post things on Medium, and I have a Youtube channel where I post essays about psychology, art, and film.


Bootcamps
June 2018 @ Erfurt Schedule and Materials
April 2018 Schedule and Materials
January 2018 Schedule and Materials
September 2017 Schedule and Materials
|
I learned from the basics to really cool stuff like interactive plots. Right after the bootcamp I decided to move fully into R. Really great bootcamp!
Edgar, Associate Professor
Every participant will have found something he or she could relate to, be it statistics, visualizations, presentations or web apps. It certainly made me want to take my computer and get cracking right away!
Johan, Analyst
Learning R at TheRBootcamp has offered me [...] the feeling of staying relevant in the changing finance industry
Irena, Credit Officer
|


THE THINKING MACHINE
COMPUTER ENGINEERING DEPARTMENT
2017-18
B.TECH 2nd YEAR
HOME
STUDENTS
TEACHERS
SVNIT SURAT
Computer Engineering Department
Learn More
>
BATCH:2016-20


The Center for Distributed Object Computing uses the Bugzilla bug tracking system to keep track of existing problems and enhancement requests.
To streamline our development process, you can now use it to enter problem reports or make a request for a particular feature that you'd like to see integrated into ACE, TAO or CIAO.
You can also use it to track the status of a particular bug or enhancement. In addition, the bug tracking system can be used to add comments and attachments that contain solutions or simple test cases.
The bug tracking system is located at the following web site: http://bugzilla.dre.vanderbilt.edu/
If all you want to do is browse through the bugs in our bug tracking system or view bug summary reports, then you can use the bug tracking system right away. However, if you want to be able to submit bug reports then you will have to create a bug tracking system account.
Upon entering a bug or enhancement request for the first time, you will be asked to enter an e-mail address. Once you've done that, you will be mailed a password that you can use to log on to the bug tracking system. You will only be asked to do this once. Any changes to bug reports you submit will be mailed to the e-mail address you provide.
Once you've logged on, you will have the ability to enter bug reports and modify existing ones. Other than adding comments, fixes and attachments, please do not modify bug reports you haven't submitted.
The bug tracking system is fairly straightforward to use. When entering bug reports or enhancement requests, enter as much information as possible. Most of the bug form fields provide help if you are unsure what a particular field is used for.
For more information about using Bugzilla, and about bug reporting in general, please see the following web sites:
http://www.mozilla.org/bugs/
http://www.mozilla.org/quality/bug-writing-guidelines.html
Keep in mind that the Bugzilla installation at the above web site is not the same Bugzilla installation at the Center for Distributed Object Computing. All bug reports and enhancement requests for ACE and TAO should be done at the Center for Distributed Object Computing's Bugzilla web site.


Drug dealer locked up for at least 26 years for Jodie Chesney murder
Svenson Ong-a-Kwie and a 17-year-old Arron Isaacs been looking to take revenge on rivals when they killed the teenager by mistake.
Two teenagers have been locked up for life for the “callous, casual and irresponsible” murder of Girl Scout Jodie Chesney.
Drug dealer Svenson Ong-a-Kwie, 19, and his 17-year-old runner Arron Isaacs had been looking to take revenge on rivals when they killed Jodie by mistake, the Old Bailey heard.
The popular 17-year-old student had been relaxing with friends in Amy’s Park in Harold Hill, east London, on the evening of March 1 when two shadowy figures emerged from the dark and one knifed her in the back.
Days later, they were arrested together as they fled from the rear of a house connected with the youth.
The defendants denied Jodie’s murder, each blaming the other for inflicting the fatal wound.
But prosecutor Crispin Aylett QC told jurors that both were responsible for the killing, amid incidents of “casual violence” in the drug-dealing world.
The jury deliberated for less than six hours to find them guilty last week of Jodie’s murder.
She sentenced Isaacs to be detained at Her Majesty’s Pleasure for at least 18 years.
She said that Jodie’s death led to a “world of anguish” for her family, which came amid “tit for tat” incidents.
Jodie was the victim of “callous, casual and irresponsible violence” which had shocked the community “to the core”, she said.
On the evidence, she found Ong-a-Kwie was the stabber and Isaacs his “enthusiastic supporter”.
The judge lamented the impact of criminals that had “carved up areas of the capital of this country”.
She added: “The dangers this brings to decent law-abiding members of the public is graphically spelled out in this case.”
The court heard moving tributes to Jodie and the “ripple effect” her murder had among friends, family and the wider community.
Mr Coyle has been left with post-traumatic stress from witnessing her murder.
“I’ve never lost anyone before and for the first funeral I’ve gone to to be my own girlfriend’s is incredibly hard. I loved her.”
Jodie’s father, Peter Chesney, who gave up a job in the City, said: “I have lost the most precious human being I will ever know. I have no idea how I’m going to continue my life or come to terms with the loss.”
Her sister, Lucy, said: “Jodie will be greatly missed and the people who caused such tragedy to a whole family should hang their head in shame. You have ripped away a bright future that was destined to make a change to many lives.”
The court heard that Ong-a-Kwie had convictions for possessing and supplying drugs.
He admitted being in breach of a six-week suspended sentence for handling stolen jewellery dating back to October last year.
The 17-year-old defendant had previous convictions for possessing a screwdriver, actual bodily harm, possession of cannabis as well as aggravated vehicle-taking.


|
Elektra
0.8.21
|
Implementation of all exceptions elektratools library might throw. More...
Classes | |
| struct | kdb::tools::ToolException |
| All exceptions from the elektratools library are derived from this exception. More... | |
Namespaces | |
| kdb | |
| This is the main namespace for the C++ binding and libraries. | |
| kdb::tools | |
| This namespace is for the libtool library. | |
Implementation of all exceptions elektratools library might throw.


Try out our Premium Member services: Virtual Legal Assistant, Query Alert Service and an ad-free experience. Free for one month and pay only if you like it.
Non-Reportable IN THE SUPREME COURT OF INDIA CIVIL APPELLATE JURISDICTION SPECIAL LEAVE PETTION (C) NOs.28116-28123 OF 2010 Sterlite Industries (I) Ltd. Etc. Etc. ... Petitioners Versus Union of India & Ors. Etc. Etc. ... Respondents O R D E R
A. K. PATNAIK, J.
We have heard Mr. C.A. Sundram, learned counsel for the petitioners, Mr. Vaiko in-person for respondent no.1, Mr. V. Prakash, learned counsel for the respondent no.2, Mr. Guru Krishna Kumar, learned Additional A.G. for the Government of Tamil Nadu, Mr. Subramanium Prasad, learned counsel for the Tamil Nadu Pollution Control Board, and Mr. Vijay Panjwani, learned counsel for the Central Pollution Control Board.
2. The High Court has by the impugned judgment inter alia directed that the industrial unit of the petitioner be 2 closedown immediately because of the environmental pollution caused by the industrial unit. On 01.10.2010, this Court directed that the matter be listed on 18.10.2010 and stayed the impugned judgment of the High Court till then. On 18.10.2010, the Court issued notice and continued the interim stay. The Court has continued the interim stay from time to time.
3. When the matter was taken up on 25.02.2011, the Court after hearing learned counsel for the parties was of the view that an independent assessment of the present situation and condition of the industrial unit of the petitioners, and its effect with reference to environmental pollution by National Environmental Engineering Research Institute (NEERI), after a joint inspection with the officials of Central Pollution Control Board, Tamil Nadu Pollution Control Board and the PIL petitioners before the High Court, will help the Court to arrive at a decision and accordingly directed NEERI to make a pollution and environmental impact assessment and submit its report. Accordingly, NEERI carried out the inspection during 6th to 8th April, 2011 and 19th to 22nd April, 2011 and submitted its report. 3
4. On 18.07.2011, the Court directed the Tamil Nadu Government as also the Tamil Nadu Pollution Control Board to submit their comments/suggestions with reference to the NEERI report so that the Court can have a clear view about the existing position. On 25.08.2011, the Court after perusing the Status Report of the Tamil Nadu Pollution Control Board directed the Tamil Nadu Pollution Control Board to file a synopsis specifying the deficiencies with reference to the NEERI report and suggest control measures that should be taken by the petitioners so that the Court can consider the direction to be issued for remedial measures which can be monitored by the Tamil Nadu Pollution Control Board.
5. The Tamil Nadu Pollution Control Board has filed along with an affidavit dated 30.08.2011, a Chart of deficiencies and measures to be implemented by the petitioners-industry which is to the following effect: "
Sl.No Deficiency Measures Suggested I To improve the (1) Hoods with extraction system emission are to be installed for control collection of fugitive emission efficiency in at (i) smelter lance, (ii) the process smelter feed port, (iii) rotary 4 section holding furnace-slag granulation & (iv) matte tapping and to be connected to the control measures. In view of the above additional emission load, the emission control measures of scrubbing system has to be enhanced.
(2) One bag house at smelter is to be installed prior to scrubber, to control dust emission.
(3) One bag house at converter is to be installed prior to scrubber, to control dust emission.
(4) Regulative measure for periodical soot blowing operation in waste heat recovery boiler is to be implemented to prevent
sudden emission load of soot particulates.
II To improve (1) Ducts to collect all the fugitive fugitive emission and control measure emission of flue gas desulphurization control system consisting of bag filter and 2 stage lime scrubber are to be provided, as per the engineering study carried out. (2) Gypsum conveyor belt is to be made fully closed so as to prevent fugitive emissions. (3) The unpaved roads within the 5 industry premises should be pave to control the dust due to movement of vehicles.
(4) The frequency of water sprinkling on roads is to be increased to 4 times per shift to reduce the re-suspended dust particles due to movement of vehicles.
(5) Permanent water sprinklers are to be provided at gypsum pond area and roc phosphate area.
III To improve (1) The chemical treatment effluent comprising coagulation- treatment flocculation and settling is operation to be operated effectively to optimize the treatment efficiency so as to improve the performance of fluoride remove.
(2) The existing reverse osmosis plant is to be operated to the maximum capacity of 1,600 kiloliters per day and maintained so as to recover, recycle and reuse the permeate.
(3) Iron removal plant as a pretreatment facility to reverse osmosis system is to be installed for sustaining the membrane life and achieving optimum membrane performance.
IV To improve (1) The evaporation system along 6 disposal of with drying facility must be rejects arising expanded to cope up with the from effluent capacity of the reverse treatment osmosis plant and improved Plant to generate the concentrate in solid form.
(2) The reverse osmosis rejects stored in the temporary storage ponds must be taken for concentration and drying followed by disposal in secured landfill facility. (3) The temporary storage ponds provided for disposal of reverse osmosis rejects must be removed, in view of capacity augmentation of evaporator system.
V To improve raw (1) The raw material of copper material concentrate is to be stored in storage and a closed shed and received & handling transferred in closed conveyor system.
(2) All the chemical storage tanks are to be provided with dykes to avoid the possibility of any accidental discharge. VI To improve (1) The deposited silt in the storm storm water water drains is to be removed drainage and and disposed off in secured collection landfill facility and this is to system be practiced regularly to prevent any pollutant carryover and to avoid water logging.
(2) Additional rainwater collection reservoir with storage capacity 7 of 30,000-50,000 cubicmeter, is to be provided to prevent discharge of runoff from the critical storage/process plant areas, during peak precipitation, taking into consideration of the recent updated meteorological data and maximum industrial utilization.
VII To improve (1) The sold waste of slag is to be solid waste stored within the stipulated disposal 10 hectares of land with a restricted stacking height of 12 meters so as to adhere with the safe load bearing capacity of 25 metric ton per square meter of the underlying soil/land in that area.
(2) The slag is to be disposed for beneficial uses, such as road formation, shot blasting, abrasive production, cement aggregate making and other relevant areas of application, with approval from concerned agencies. The monthly disposal must be at least 50% more than the monthly generation quantities of both slag and gypsum.
VIII To improve (1) Additional electromagnetic monitoring of flow meters (12 Nos.) are to be air quality, provided to assess (i) raw effluent and water consumption (4 Nos.), water (ii) rain water consumption (3 consumption Nos.) and (iii) waste water generation & waste water reuse (5 Nos.) 8 (2) Online pH meter is to be provided in reaction tanks of the effluent treatment plants to ensure optimum pH for effective precipitation of the pollutants.
(3) Fluoride concentration in groundwater at gypsum storage ponds is to be regularly monitored, recorded and ensured with the baseline fluoride concentration.
(4) Health monitoring of the people living in the nearby villages is to be carried out at least once every six months. IX To improve (1) Around 26 hectares of land greenbelt within the industry premises development is to be earmarked and developed as greenbelt, to the width of 25 meters.
(2) Greenbelt cover should be improved around the periphery of the smelter plant, slag yard, gypsum pond and secured landfill facility to act as barrier to control secondary fugitive emissions.
(3) The native species (achras sapota, azadirachta indica, cassia fistula, cassia slamea, casuarinas equisetifolia, eucalyptus sp. Flcus benghalensis, ficul eligiosa, millingtonia hortensis, oringa sp. Peltophorum 9 ferrugineum, polyathia lingifclia, pongarnia pinnata, prospis juliflora, tabefuia rosea, terminalia catappa, thespesia populnea, etc.) should be planted in new areas of greenbelt cover."
6. We direct the Tamil Nadu Pollution Control Board to issue directions, in exercise of its powers under the Air (Prevention and Control of Pollution) Act, 1981 and Water (Prevention and Control of Pollution) Act, 1974, to the petitioners-industry to carry out the aforesaid measures and remove the aforesaid deficiencies within such time as it thinks reasonable and proper. The directions will be issued by the Tamil Nadu Pollution Control Board within two weeks from today. The matter will be listed in the first week of January, 2012 and the interim stay of the impugned judgment will continue till then.
.............................J.
(R. V. Raveendran) .............................J.
(A. K. Patnaik) New Delhi, October 11, 2011.


{% extends 'layout.html'%}
{% block title %}Building Your Dreams{% endblock%}
{% block body%}
Building your Dreams!
We are a registered construction company providing services such as Planning and Design, Building
Construction, Renovation, Electrical, Electronics, Plumbing, Mechanical and other
services
.