Looking for some way to optimize your site for search engines? Check this article for some very good ideas. I like it.
More on FooCamp
Recently I posted about FooCamp. Here you can find a very good article on it and the business relation.
Archive.org Taking Over MP3.com?
I am never stopping to be amazed of Archive.org. They might not be archiving all of MP3.com, including all the songs. They are currently adding 40 terabytes per month to the archive and the 5 terabyte MP3.com wouldn’t really change much. And they have all the bandwidth they need!!! Read more on The Register
The Fundamentals of Finance

(comment: As originally posted on the OUBS Blog)

This is the first course book on the Finance part of the MBA at the OUBS. It deals primarly with understanding the way corporations get financing and their relationships with financiers. Here both private and public sector are taken into account. A major part of all of this is money, which fulfils three functions: - being a medium of exchange - being a store of value - being a unit of account

This is actually interesting in relation to the founding concept of VISA, which was: If anything imaginable was possible, if there were no constraints whatever, what would be the nature of an ideal organization to create and world’s premier system for the exchange of value? (From Dee Hock, Birth of the Chaordic Age)

The book looks both at the internal and external parts of financial management, which is often not about finance but about ratios that are a lot easier to compare.

Finance has had a broad effect on our world, both in the private sector, where things have moved from maximize size to optimize size through finance, and in the public sector where privatisation has grown and public sector enterprises are generally being managed from a financial viewpoint too.

Finance must always weight short-term spending versus long-term goals. This is also why often the chain of command between those who implement the strategy and those who go into detail is often very short in finance. You need to see the broad picture and the detail. Some questions will be asked repeatedly: - which projects should a company invest in? - how should it procure financing to pay for them?

This brings us to four basic themes in finance: - information, accountability and control - return - risk - markets and market efficiency.

In terms of financial vocabulary you need to remember that there is a different between US and UK terminology even though things are moving closer together with globalisation.

The mathematics of finance are extensive, but reoccuring themes are things like net present value and discounted cash flow. You need to remember that mathematics can do a lot of things, including giving you the wrong answer. You need to look at whether the system you used will give you the right answer.

Finance, Accounting and Corporate Governance

This part is mainly in relation to our first theme, being information, accountability and control. Finance and accounting are actually often closely related within a company even though they are concerned with different thing. Finance is mainly about making decisions for the future while accounting is about the past. This is also the difference about what a treasurer and a financial controller does. The treasurer is looking at liquidity, external funds, financial risks, relationships to providers of funds, analyst and the financial press. The financial controller is looking more at building annual accounts or monthly accounts for managers, including budgets with their key relationships being the auditors.

The corporate governance part can be best explained with agency theory.

… a contract under which one or more persons (the principals) engage another person (the agent) to perform some service on their behalf which involves delegating some decision-making authority to the agent. - Jensen and Meckling (1976)

Here we need to remember that the agent might have other information than the principal and the principal never 100% knows what the agent’s decisions are based on. There is a moral hazard then about the agent knowing that he cannot be exactly monitored and doing things in his interest while appearing to do them in the principals interest, but only appearing so.

Legislators are now trying to control the situation by a framework for reporting guidelines for limited liability companies where the problem is highlighted as the owners are not owning the company but only shares. The relationship with between shareholders and the management of the company needs to be somehow regulated to make it clear what the terms of that relationship are in light of potential conflict.

The information asymmetry has been address by disclosure requirements for corporations while linking corporate performance to management pay has been established to closer link the interests of management and shareholders. In light of problem in this relationship there are now corporate governance codex in different shapes and sizes in most countires. In the UK there is the ‘Principles of Good Governance’ and ‘Codes of Best Practice’. In Germany there is now the Der deutsche Corporate Governance Codex’. Some of the effects can be seen in annual reports.

Looking closer at changes in corporate reporting from 1951 to 2001, it can be seen that reports have become a lot more elaborate growing something like seven times in size. They are also often more understandable (to benefit the small shareholder) and have more information about directors compensation.

Return on Investment

Our second theme was return, and a fair one at that. The idea is to find a way to think about how much it is worth to wait to have money. In terms of return, you should think about percentage return and take into account the total returns, including potential tax benefits, appreciation, interest and whatever else is giving you monetary value. And you need to include the time value of money, which is worth more to you today than would be in 10 years, the same $100 that is. Here to take into account your time preference for money, your risk premium and an adjustment for inflation.

Time preference is about that given a choice, you would rather have money today than tomorrow, as it would lower your choices (once the money is gone it’s gone) and the price depends on the supply and demand. Time preference is estimated between 2-2.5% in relation to the government dept market and 3-3.5% in case of Treasury economists. Once you established your rate, it is likely to remain stable over time.

Then we have inflation. Remember that the inflation is always an estimate and largely depends on what you spend your money on. So if we have a time preference of 3% and want to lend you $100 for a year, then we would want $103 in a years time in case there is no inflation. Presuming we have an inflation of 5% then we would need to get $105 x 103% = $108.15. These 8.15% are called the nominal rate of return, while the 3% are called the real rate of return.

Investment Risk

Here we are looking at both the second and third theme, being return and risk. In general there is a risk/return tradeoff or rather, an uncertainty attached to a certain return really materialising. You can find this value by looking at the mean return of a set of data and then calculating the standard deviation. The fun thing of the standard deviation is that for 2S, 95.4% of the expected values for the return are included in the probability. If you get a mean return of 10% and have a standard deviation of 2% then you can say with 95% certainty that your real return will between 8% and 12%.

What are the risk factors though. Here maturity, liquidity, variability of income, default or credit risk, event risk and interest rate risk are important. There are two financial instruments that we need to understand, equity and dept.

Borrowers for example want to keep money as long as possible while investors want their money back as fast as possible. This conflict is reconciled through the stock market or secondary capital market, with the primary capital market being the issuance of securities by companies who then get money. The secondary capital market is rather about management of liquidity of issued securities.

In general, return and risk can be looked at closer through DCF (discounted cash flow) and NPV (net present value) analysis. DCF allows you to evaluate two investments with maturity, cash flow and risk in mind and NPV lets you decide whether to go ahead with an investment. You need to discount cash flows with your required rate of return in this case. The difference between the value of the discounted cash flow and the cost of investment can be the seen as the NPV of the investment.

The market context

Here the last of the four themes comes in, being markets and market efficiency. In general financial markets bring a large number of buyers and sellers together, allowing them to easily find each other. This does not remove volatility though. The question is whether markets are valueing investments fairly at all time, meaning that they are efficient, nobody has more information than anybody else and hence you all know what something is worth and have the same idea about the price. In a perfect market there would also be no entry or exit barrier and no transaction costs.

It hence becomes obvious that financial markets are not perfect. Then the question becomes if they are totally imperfect, meaning that they are totally random and profit does not only come from coincidence? Based on research from the 1950s and 1960s, you cannot predict the way the stock markets turn, something being called the random walk theory. The problem was seen in the fact that information needs to filter through, but all available information was priced into a stock. This is the idea of the efficient markets hypothesis (EMH).

The EMH is found in Roberts (1967) and Fama (1970). Fama argued that "in an efficient market at any point in time the actual price of a security will be a good estimate of its intrinsic value". The important point though is that this is based on all available information and the things that the market believes to be happening in the future. There are different levels of EMH:

Strong-form EMH: All public information establishes a price and if some private information tells you that the price is too low, you buy until demand and supply makes it right again. This is hard to prove though. Only the person that first acts on inside information wins. This of course is hard to prove.

Semi-strong form EMH: Here the market is efficient when all publicly available information is quickly reflected in the stock price. Here, even fundamental analysis cannot produce consistently higher returns.

Weak form EMH: Here all information that is reflected in the stock price is old, or already available information. Any new information is unrelated to the available information, as it is new, and hence stock prices movements of new information cannot be predicted. This brings us back to the random walk theory. The study of past movements cannot predict future prices (chart analysis)

The arguement against all of this is that investors are not that rational but that their is a herd instinct, churn in protfolios, under- or over-react, and more. Other anomalies include the ‘small firm’ effect (they grow more in value than the market), the January effect (outperformance of small cap stocks was done in January), mean reversion (stocks travel arround their mean, meaning that they fall lower if they climbed higher).

Looking at real market data from 1900 to 2000 to get some hard statistics, researchers found the problem of finding a (at least partly) correct inflation, getting all the data, and getting over a bias of survivors about what would have been bought without hindsight. The found two things very interesting. First, there is a close relations been theoretical seperate market, even at the start at the century and not only in the last 20 years. Second, higher risk and higher return indeed go hand in hand.

Otherwise, get the book out and get some more interesting stats that I won’t repeat here.

Commenting Innovation
Interesting way to group comments together. Check this out.
The Almost Performers
Very nice article on FastCompany: Knowledge workers have met the enemy, and it is us. More than ever before, people have opportunities earlier in their careers to start companies, lead business units, run projects, and make a difference. So why do so many of us seem to blow it? As business psychologists and directors of Harvard Business School’s MBA Career Development Programs, James Waldroop and Timothy Butler have helped some of the best and the brightest wrestle with that question.
Scobelizer on MS Profitability
Sometimes Scobelizer has some very good posts in his endless stream of rumblings (sometimes it just gets too much man! ;)) This is definitely one of them. Read the article by Cringley he links to first to get the full idea of what it is all about. Both are very good!
Azubo.de
Azubo.de is a new online auction place in Germany. The fun twist is that it works on the basis of a countdown system. The seller gives a starting price and a stop price. The auction then starts at the high start price going down (for example) a cent a second. Whoever strikes first wins. :) If eBay makes you sweat, just wait for sweating at this one :)
AOL Buys Singingfish
Singingfish is a multimedia search engine that is actually quite nice and has had some very good growth recently. Now this growth can continue with the support of a big media company, as AOL has bought Singingfish.
76 Blowjobs
I just found the following picture via fleshbot:
A mean averaging of 76 images of fellatio.
Interesting.


Election Map Project
Designed to mimic the US Electoral College, my version of the election map votes on internet favorites: Cat Memes vs. Instagram Dogs. Scrolling over the map changes the color of the state and the results in the bottom table.
Skills used: JavaScript, Factory Functions, Tables


Superchild is a POSIX-only (e.g., Linux, Mac OS X) wrapper around
node.js’s built-in child_process
module, which requires a lot of
care and attention to use correctly.
Links:
The purpose of Superchild is to allow large node.js programs to be split into independent processes (and sub-processes, resulting in process trees), while handling the tedious parts of process management and communication.
Superchild aims to be compatible with any program
that reads from and writes to their stdin
, stdout
, and stderr
streams, regardless of what language the program is written in.
This allows interesting hacks like using ssh
to execute a
module on a remote host, written in another language, over an
encrypted link, while using the near-universal format of
line-delimited JSON messages over stdio
.
Features that make Superchild different from node’s built-in
child_process
module include the following (many of these
are currently possible only due to restricting focus to POSIX
platforms, i.e., not Windows):
A single function to replace fork()
, exec()
,
and spawn()
from the built-in child_process
module.
Waits for stdout
and stderr
streams to end before
emitting an exit
event, unlike child_process.ChildProcess
.
Handles isolating child process and its children in a
separate, detached process group that can be terminated
as a subtree using the POSIX kill
command. This means
that calling close()
on a Superchild instance will kill
not just the child process, but all its child processes
and so on (i.e., the entire process group lead by the child).
Note that if any processes in the sub-tree detach themselves
into a new process group, they will not be part of our
child’s process group, and will not be killed.
Handles graceful termination of child’s entire process group
using SIGTERM
-> SIGKILL
signals with a configurable timeout.
Handles unexpected termination of the current process by
killing the child’s entire process group immediately with SIGKILL
.
Automatically serializes and deserializes line-delimited JSON
values (LD-JSON) sent to and received from child, intermixed
with stdout
. stderr
is passed through unbuffered. Effectively,
this means that the child’s stdout
stream is demultiplexed
into the child streams stdout_line
(parsed raw text lines),
json_object
(parsed JSON objects), and json_array
(parsed JSON
arrays). Regular processes have 3 I/O streams (stdin, stdout,
stderr); Superchildren have 6 streams (stdin, stdout, stderr,
stdout_line, json_object, json_array).
npm install superchild
Get a directory listing line-by-line using ls
.
var superchild = require('superchild');
var child = superchild('ls -lh');
child.on('stdout_line', function(line) {
console.log('[stdout]: ', line);
});
Spawn a node.js module in another process and communicate with it.
Note that the child uses the superchild.unlogger
helper function
to parse its standard input for LD-JSON arrays and objects.
master.js
var assert = require('assert');
var superchild = require('superchild');
var child = superchild('node echo.js');
child.send({
some: 'data',
});
child.on('json_object', function(jsonObj) {
assert.equal(jsonObj.some, 'data');
});
echo.js
var unlogger = require('superchild').unlogger;
unlogger().on('json_object', function(jsonObj) {
// Echo JSON object from parent back to parent.
console.log(JSON.stringify(jsonObj));
});
Superchild is an EventEmitter. The following events can be listened for
using child.on()
and child.once()
functions.
| Event | Arguments | Description |
|---|---|---|
exit |
code , signal |
Child process exited, identical to child_process.exit |
stderr_data |
dataStr |
Received unbuffered data on child’s stderr stream. |
stdout_line |
lineStr |
Received a full line of text from the child process. |
json_object |
jsonObj |
Parsed a line-delimited JSON object from child’s stdout stream. |
json_array |
jsonArr |
Parsed a line-delimited JSON array from child’s stdout stream. |
| Method | Description |
|---|---|
send(jsonVal) |
Serialize and send a JSON-serializable object or array to the child as LD-JSON. |
close(cb) |
Gracefully terminate the child, invoking the callback when the child has died. |
node.js
version 0.11.13 or higher, due to the use of spawnSync
.The full annotated source code of superchild.js
follows, generated
automatically by Docco.
/** @license The MIT License, Copyright (c) 2016 Mayank Lahiri<EMAIL_ADDRESS>*/
var events = require('events')
, fmt = require('util').format
, fs = require('fs')
, spawn = require('./respawn').spawn
, spawnSync = require('./respawn').spawnSync
, JSONSieve = require('./json-sieve')
;
var NODE_MAJOR = parseInt(process.version.replace(/\..+/, '').substr(1), 10);
var LEGACY_NODE = NODE_MAJOR < 5;
var CLEANUP_PROCESSES = {};
function superchild(commandLine, options) {
if (!commandLine) throw new Error('Superchild: empty commandLine provided.');
options = (typeof options == 'object' ? options : {});
var opt = {}, setDefault = function(key, defaultVal) {
opt[key] = (key in options) ? options[key] : defaultVal;
};
stringEncoding
: character encoding to use while communicating
with the child. This is required to make node.js return strings instead
of raw buffers. Defaults to utf-8. setDefault('stringEncoding', 'utf-8');
killOnExit
: kill child process group when our own process
exits, if the child is still running. Defaults to true. setDefault('killOnExit', true);
cleanupTimeoutMs
: amount of walltime to wait for child process
to exit after close()
is called, before sending it SIGTERM. Defaults
to 500ms. setDefault('cleanupTimeoutMs', 500);
shell
: run the command line through a system shell, defaults
to true. setDefault('shell', true);
cwd
: working directory to execute child process in, defaults
to process.cwd(). setDefault('cwd', process.cwd());
detached
: makes the process the leader of its own process group. setDefault('detached', true);
env
: environment variables to pass to child. setDefault('env', undefined);
Construct an EventEmitter
instance to return to the caller. This
is a proxy emitter for the child process so that we can
re-order events received from the child process if necessary.
var emitter = new events.EventEmitter();
Spawn a child process with the detached
option makes it
the leader of its own process group. This allows us to
terminate all its descendant processes (if we need to) by running
kill -$PGID
(negation of the child’s process group id).
var child;
var hasExited = false, stdoutEnded = false, stderrEnded = false;
try {
var spawnOpt = {
detached: opt.detached,
shell: opt.shell,
cwd: opt.cwd,
stdio: 'pipe',
env: opt.env,
};
Use respawn.spawn()
to spawn the child process.
child = spawn(commandLine, spawnOpt);
child.stdout.setEncoding(opt.stringEncoding);
child.stderr.setEncoding(opt.stringEncoding);
Node 4 (LTS) and below: no setDefaultEncoding() function.
if (child.stdin.setDefaultEncoding) {
child.stdin.setDefaultEncoding(opt.stringEncoding);
}
if (LEGACY_NODE) {
Node 4 (LTS) and below: child.pid
is not immediately populated, and
child_process.spawnSync
does not support the detached
option. So
the best we can do if child.pid
is undefined is some exponential
backoff polling that is not guaranteed to succeed.
var pollIntervalMs = 1;
(function pollFn() {
if (child.pid) {
Successfully have child’s pid
emitter.pid = child.pid;
if (opt.killOnExit) {
CLEANUP_PROCESSES[child.pid] = true;
}
} else {
if (pollIntervalMs < 100) {
setTimeout(pollFn, pollIntervalMs);
pollIntervalMs *= 2;
}
}
})();
} else {
Node 5+ natively returns child.pid set.
emitter.pid = child.pid;
if (opt.killOnExit) {
CLEANUP_PROCESSES[child.pid] = true;
}
}
} catch(e) {
throw new Error(fmt(
'superchild: cannot spawn() child process, reason=%s, stack=%s',
e.message, e.stack));
}
Read from the child process by parsing out complete lines and
line-delimited JSON objects and arrays from its stdout
stream using
JSONSieve
.
var sieve = new JSONSieve();
var sieveClosed = false;
child.stdout.on('data', function(dataStr) {
sieve.observe(dataStr);
});
sieve.on('json_object', emitter.emit.bind(emitter, 'json_object'));
sieve.on('json_array', emitter.emit.bind(emitter, 'json_array'));
sieve.on('stdout_line', emitter.emit.bind(emitter, 'stdout_line'));
child.stderr.on('data', emitter.emit.bind(emitter, 'stderr_data'));
child.stdout.on('data', emitter.emit.bind(emitter, 'stdout'));
send()
emitter.send = function(jsonVal) {
try {
var serData = JSON.stringify(jsonVal) + '\n';
child.stdin.write(serData, opt.stringEncoding);
return {
bytesWritten: serData.length,
prefix: serData.substr(0, 100),
};
} catch(e) {
throw new Error('Unable to write to process: ' + e.message);
}
};
close()
Kill the child’s process group gracefully. This involves the following steps:
SIGTERM
signal to the child process group, allowing all
processes in the group to die gracefully.opt.cleanupTimeoutMs
milliseconds.SIGKILL
to the
process group.This method is a public method that is offered
via the return value of the superchild()
call.
Note that we wait for the proxy emitter’s exit
event before invoking
the callback rather than the underlying node.js child process’s exit
event. This is in order to wait for all output streams to flush before
actually emitting the exit
event, which is not guaranteed with
node’s underlying child_process implementation.
emitter.close = function(cb) {
cb = cb || function() {};
if (!child || !child.pid) throw new Error('superchild: child is not running.');
var termGroupCmdLine = fmt('/bin/kill -s SIGTERM -- -%d', child.pid);
var killGroupCmdLine = fmt('/bin/kill -s SIGKILL -- -%d', child.pid);
spawnSync(termGroupCmdLine, {shell: true, stdio: 'inherit'});
setTimeout(function() {
if (!sieveClosed) {
spawnSync(killGroupCmdLine, {shell: true, stdio: 'inherit'});
}
}, opt.cleanupTimeoutMs);
emitter.once('exit', cb);
};
If the killOnExit
option is specified, then when our own
current process exits, kill the child’s process group using
the POSIX kill
command with the child’s process group ID,
which is the negation of its process id, since it is the leader
of its own process group.
If the child exits, then we need to wait for its streams to close as well, and then flush the JSON sieve before emitting the ‘exit’ event through the proxy emitter.
var exitCode, exitSignal;
var cleanupFn = function() {
if (hasExited && stdoutEnded && stderrEnded && !sieveClosed) {
sieve.close(function() {
emitter.emit('exit', exitCode, exitSignal);
emitter.removeAllListeners();
});
sieveClosed = true;
}
};
var onStdoutEnd = function() { stdoutEnded = true; cleanupFn(); };
var onStderrEnd = function() { stderrEnded = true; cleanupFn(); };
child.stdout.once('close', onStdoutEnd);
child.stderr.once('close', onStderrEnd);
child.once('exit', function(code, signal) {
hasExited = true;
exitCode = code;
exitSignal = signal;
delete CLEANUP_PROCESSES[child.pid];
cleanupFn();
});
The superchild()
call returns a proxy EventEmitter
with two
additional methods that are used to control the child process:
close()
and send()
.
return emitter;
}
process.once('exit', function() {
Object.keys(CLEANUP_PROCESSES).forEach(function(pid) {
var killCmdLine = fmt('/bin/kill -s SIGTERM -- -%d', pid);
spawnSync(killCmdLine, {stdio: 'inherit'});
});
});
module.exports = superchild;
Class JSONSieve
,
parses a readable stream into JSON objects and arrays, and stdout lines.function unlogger()
,
an example of establishing bi-directional communication between a parent
and child that can be easily ported to many other languages.superchild.JSONSieve = require('./json-sieve');
superchild.unlogger = require('./unlogger');


INSTRUCTIONS
- Partner Up
- Rochambeau || Choose an Admin
- Follow Your Roles
- Once Finished - Switch Roles With Your Partner and Repeat Step 3
ADMINS
- Clone This Repository
- Create a New GitHub Repository
- Push Cloned Repository to Your New GitHub Repository
- Add Your Partner as a Contributor
Once The Contributor (Your Partner) Creates a Pull Request...
- Check New Pull Request
- Accept Pull Request
- Try Update Your Local Repository
- Fix Any Merge Issues If Necessary
CONTRIBUTORS
Once You Become a Contributor...
- Clone Admin's (Your Partner) New Repository
- Create a New Branch for this Repository
- Make Some Change to Your New Branch
- Push New Branch and Changes to Admin's Repository
- Create a Pull Request
Once Your Pull Request is Accepted...
- Try Update Your Local Repository
- Fix Any Merge Issues If Necessary


HTML Templates with Handlebars.js
Making JavaScript code by template!
Handlebars.js: Setup and Usage
To use Handlebars follow the steps:
Acquire handlerbars.js:
From the site at
http://handlebarsjs.com/
Using bower:
$ bower install handlebars
Src the script in the HTML file:


First name:
Volvo
Saab
Mercedes
Audi
At w3schools.com you will learn how to make a website. We offer free tutorials in all web development technologies.
cell 1
cell 2
cell 3
cell 4
Insert
Delete
disabled
enabled


A quick reference comparison for syntax and features between languages.
Comments
-- This is a comment
-- This is a comment
## This is a comment
Primitives
1 : Int
1.1 : Float
True : Bool
False : Bool
'c' : Char
"hello" : String
-- multi-line String
"""
This is useful for holding JSON or other
content that has "quotation marks".
"""
(1,'c') : (Int, Char)
Just 123 : Maybe Int
Nothing : Maybe a
Ok 123 : Result err Int
Err "Problem!" : Result String a
[1,2,3] : List Int
Array.fromList [1,2,3] : Array Int
Set.fromList [1,2,3] : Set Int
x :: Dict Int Bool
x = Dict.fromList [(1,True), (2, False)]
-- Unit type
() : ()
1 :: Int
1.1 :: Float
True :: Bool
False :: Bool
'c' :: Char
"hello" :: String
-- Requires raw-strings-qq package
{-# LANGUAGE QuasiQuotes #-}
import Text.RawString.QQ
[r|
This is useful for holding JSON or other
content that has "quotation marks".
|]
(1,'c') :: (Int, Char)
Just 123 :: Maybe Int
Nothing :: Maybe a
Right 123 :: Either err Int
Left "Problem!" :: Either String a
[1,2,3] :: [Int] -- Note: type List a = [a]
import qualified Data.Vector as Vector
Vector.fromList [1,2,3] :: Vector Int
import qualified Data.Set as Set
Set.fromList [1,2,3] : Set Int
import qualified Data.Map as Map
x :: Map Int Bool
x = Map.fromList [(1,True), (2, False)]
-- Unit type
() :: ()
TBC
Custom types
Note: Custom types are sometimes called tagged unions. Some communities call them ADTs.
type Status = Todo | Doing | Done
Todo : Status
Doing : Status
Done : Status
data Status = Todo | Doing | Done
Todo :: Status
Doing :: Status
Done :: Status
TBC
Custom types can be polymorphic. Maybe a
is an example:
type Maybe a = Just a | Nothing
Just 123 : Maybe Int
Nothing : Maybe a
data Maybe a = Just a | Nothing
Just 123 :: Maybe Int
Nothing :: Maybe a
## No Maybe. This is by design. If a function
## returns a potential error, use Result with an
## error type that uses a zero-arg tag to describe
## what went wrong. (For example,
## List.first : List a -> Result a [ ListWasEmpty ]*
## instead of
## List.first : List a -> Maybe a.)
## If you want to have a record field be optional,
## use an Optional Record Field directly
## (see earlier). If you want to describe something
## that's neither an operation that can fail nor an
## optional field, use a more descriptive tag - e.g.
## for a nullable JSON decoder, instead of
## nullable : Decoder a -> Decoder (Maybe a),
## make a self-documenting API like
## nullable : Decoder a -> Decoder [ Null, NonNull a ]*.
Records
point = -- create a record
{ x = 3, y = 4 }
point.x -- access field
List.map .x [point,{x=0,y=0}] -- field access function
{ point | x = 6 } -- update a field
{ point -- update many fields
| x = point.x + 1
, y = point.y + 1
}
dist {x,y} = -- pattern matching on fields
sqrt (x^2 + y^2)
type alias Location = -- type aliases for records
{ line : Int
, column : Int
}
-- Haskell has no anonymous records
x point
fmap x [point,point]
point { x = 6 }
point
{ x = (x point) + 1
, y = (y point) + 1
}
dist Point{..} = -- Requires RecordWildCards
sqrt (x^2 + y^2)
data Location =
Location
{ line : Int
, column : Int
}
point =
{ x: 3, y: 4 }
point.x
List.map .x [point,{x=0,y=0}]
{ point & x = 6 }
{ point
& x: point.x + 1
, y: point.y + 1
}
dist = \{x,y} ->
sqrt (x^2 + y^2)
Location :
{ line : Int
, column : Int
}
Functions
addOne : Int -> Int
addOne x = x + 1
add : Int -> Int -> Int
add x y = x + y
add : Int -> Int -> Int
add = (+)
poly : a -> Int
poly x = 14
addOne :: Int -> Int
addOne x = x + 1
add :: Int -> Int -> Int
add x y = x + y
add :: Int -> Int -> Int
add = (+)
poly :: a -> Int
poly x = 14
addOne : Int, Int
addOne = \x -> x + 1
add : Int, Int, Int
add = \x, y -> x + y
add : Int -> Int -> Int --@TODO is this right?
add = (+)
poly : a, Int
poly = \x -> 14
Anonymous Functions
square =
\n -> n ^ 2
squares =
List.map (\n -> n ^ 2) (List.range 1 100)
square =
\n -> n ^ 2
squares =
fmap (\n -> n ^ 2) [1..100]
square =
\n -> n ^ 2
squares =
List.map (\n -> n ^ 2) (List.range 1 100)
Function application & composition
All the following are equivalent.
viewNames names =
String.join ", " (List.sort names)
viewNames names =
String.join ", " <| List.sort names
viewNames names =
names
|> List.sort
|> String.join ", "
viewNames =
String.join ", " << List.sort
viewNames =
List.sort >> String.join ", "
import qualified Data.List as List
import Data.Function ((&))
import Control.Arrow ((>>>))
viewNames names =
List.intercalate ", " (List.sort names)
viewNames names =
List.intercalate ", " $ List.sort names
viewNames names =
names
& List.sort
& (List.intercalate ", ")
viewNames =
List.intercalate ", " . List.sort
viewNames =
List.sort . List.intercalate ", "
TBC
Conditionals
if power > 9000 then "Wow!" else "Meh"
if key == 40 then
n + 1
else if key == 38 then
n - 1
else
n
if power > 9000 then "Wow!" else "Meh"
if key == 40 then
n + 1
else if key == 38 then
n - 1
else
n
TBC
Pattern matching
case maybe of
Just xs -> xs
Nothing -> []
case xs of
hd::tl -> Just (hd,tl)
[] -> Nothing
fib n =
case n of
0 -> 1
1 -> 1
_ -> fib (n-1) + fib (n-2)
case maybe of
Just xs -> xs
Nothing -> []
case xs of
hd:tl -> Just (hd,tl)
[] -> Nothing
fib n =
case n of
0 -> 1
1 -> 1
_ -> fib (n-1) + fib (n-2)
TBC
Let expressions
let
( three, four ) =
( 3, 4 )
hypotenuse a b =
sqrt (a^2 + b^2)
in
hypotenuse three four
let
( three, four ) =
( 3, 4 )
hypotenuse a b =
sqrt (a^2 + b^2)
in
hypotenuse three four
## No let/in required, indentation sensitive
( three, four ) =
( 3, 4 )
hypotenuse a b =
sqrt (a^2 + b^2)
hypotenuse three four
Modules
module MyModule exposing (..)
-- qualified imports
import List -- List.map, List.foldl
import List as L -- L.map, L.foldl
-- open imports
import List exposing (..) -- map, foldl, concat, ...
import List exposing ( map, foldl ) -- map, foldl
import Maybe exposing ( Maybe ) -- Maybe
import Maybe exposing ( Maybe(..) ) -- Maybe, Just, Nothing
module MyModule where
-- qualified imports
import qualified List -- List.map, List.foldl
import qualified List as L -- L.map, L.foldl
-- open imports
import List -- map, foldl, concat, ...
import List ( map, foldl ) -- map, foldl
import Maybe ( Maybe ) -- Maybe
import Maybe ( Maybe(..) ) -- Maybe, Just, Nothing
TBC
Type Annotations
answer : Int
answer =
42
factorial : Int -> Int
factorial n =
List.product (List.range 1 n)
distance : { x : Float, y : Float } -> Float
distance {x,y} =
sqrt (x^2 + y^2)
answer :: Int
answer =
42
factorial :: Int -> Int
factorial n =
List.product (List.range 1 n)
-- Haskell has no anonymous records
data Point = Point { x :: Float, y :: Float }
distance :: Point -> Float
distance Point{..} = -- Requires RecordWildCards
sqrt (x^2 + y^2)
answer : Int
answer =
42
factorial : Int, Int
factorial = \n ->
List.product (List.range 1 n)
distance : { x : Float, y : Float }, Float
distance = \{x,y} ->
sqrt (x^2 + y^2)
Type Aliases
type alias Name = String
type alias Age = Int
info : (Name, Age)
info =
("Steve", 28)
type alias Point = { x : Float, y : Float }
origin : Point
origin =
{ x = 0, y = 0 }
type Name = String
type Age = Int
info :: (Name, Age)
info =
("Steve", 28)
data Point = Point { x :: Float, y :: Float }
origin :: Point
origin =
Point { x = 0, y = 0 }
Name : String
Age : Int
info : (Name, Age)
info =
("Steve", 28)
Point : { x : Float, y : Float }
origin : Point
origin =
{ x = 0, y = 0 }
String interpolation
In all cases `toEuros` must return a string.
-- None, use concatenation
costOnSale money =
"It cost " ++ toEuros money ++ " when on sale."
-- None, use concatenation
costOnSale money =
"It cost " ++ toEuros money ++ " when on sale."
-- Alternatively, with a QuasiQuotes package
{-# LANGUAGE QuasiQuotes #-}
import NeatInterpolation
costOnSale money =
let
euros = toEuros money
in
[text|
It cost ${euros} when on sale.
|]
costOnSale money =
euros = toEuros money
"It cost \(euros) when on sale."


’11 killed’ as Israel strikes Iranian targets in Syria
The Israeli military said its fighter jets hit multiple targets belonging to Iran’s elite Quds Force.
The Israeli military said it has struck dozens of Iranian targets in Syria, carrying out a “wide-scale” strike in response to rocket fire on the Israeli-controlled Golan Heights the day before.
A Britain-based war monitoring group said the Israeli air strikes killed 11 people, including seven non-Syrians who are most likely to be Iranians.
Syrian state media only reported that two civilians were killed.
The Israeli military said its fighter jets hit multiple targets belonging to Iran’s elite Quds Force, including surface-to-air missiles, weapons warehouses and military bases.
After the Syrian military fired an air defence missile, the Israeli military said a number of Syrian aerial defence batteries were also destroyed.
The death toll of 11 was reported by Rami Abdurrahman, who heads the Britain-based Syrian Observatory for Human Rights, an opposition activist group with a network of activists across Syria.
The observatory said the air strikes targeted arms depots belonging to the Quds Force in the Damascus suburbs of Kisweh and Qudsaya.
Mr Abdurrahman added that several other areas were targeted in Wednesday’s strikes, including the Mazzeh airbase in western Damascus where air defence units are stationed.
Syria’s state SANA news agency said the two civilians were killed by shrapnel when an Israeli missile hit a house in the town of Saasaa, south west of Damascus.
It said several others were wounded, including a girl in a residential building in the suburb of Qudsaya, also west of the Syrian capital.
It claimed that Syrian air defences destroyed most of the Israeli missiles before they reached their targets.
The strikes further burst into the open what has been a long shadow war between Israel and Iran.
The two foes have increasingly clashed over what Israel says is Iran’s deeper presence along its borders.
“Yesterday’s Iranian attack towards Israel is further clear proof of the purpose of the Iranian entrenchment in Syria, which threatens Israeli security, regional stability and the Syrian regime,” the military said in a statement, adding that it would “continue operating firmly and resolutely” against Iran in Syria.
Israel intercepted the four rockets on the Golan Heights on Tuesday, which came amid heightened tensions between Israel and Iranian proxies along its borders.
Israeli Prime Minister Benjamin Netanyahu has issued a series of warnings recently about Iranian aggression throughout the Middle East and has vowed to respond firmly.
“I made it clear: whoever harms us, we will harm them. That’s what we did tonight,” he said early on Wednesday.
“We will continue to aggressively protect Israel’s security.”
Israel’s new hard-line defence minister Naftali Bennett issued an equally firm statement.
“The rules have changed: whoever fires on Israel during the day will not sleep at night,” he said.
“Our message to the leaders of Iran is simple: you are no longer immune.
The rare rocket fire comes a week after an Israeli air strike against a top Palestinian militant based in Syria.
Akram al-Ajouri, a member of the leadership of the militant Islamic Jihad group who is living in exile, survived the attack but his son and granddaughter were killed.
Israel frequently strikes Iranian interests in Syria.
But last week’s air strike appeared to be a rare assassination attempt of a Palestinian militant in the Syrian capital.
It came the same day as another Israeli air strike killed a senior Islamic Jihad commander in Gaza, setting off the fiercest round of fighting there in years.
Iran has forces based in Syria, Israel’s northern neighbour, and supports Hezbollah militants in Lebanon.
In Gaza, it supplies Islamic Jihad with cash, weapons and expertise.
Mr Netanyahu has also claimed Iran is using Iraq and far-off Yemen, where Tehran supports Shiite Houthi rebels at war with a Saudi-led coalition backing the government, to plan attacks against Israel.
Hamas also receives some support from Iran.


Salvia Divinorum (20x extract), H.B. Woodrose Seeds & Cannabis
I have tripped before with mushrooms, LSD, and weed and have had good experiences except for one bad trip with ingested weed. I was very excited to have my first salvia trip.
Early in the morning around 10am I sat down on a dark room and smoke it, nothing, smoke it again and then the room started to tilt towards the right and I felt very uncomfortable, the salvia made me very hungry and dizzy and since I was looking forward for extreme hallucinations I was disappointed. I also felt very hungry so I walked very heavily to the kitchen, my legs felt very heavy and I couldn't believe that I failed at the salvia experience. I had cereal but couldn't even find milk so I had to eat it with yogurt.
I went back to the room to give this another try so I filled the pipe once more and inhaled and held the smoke for as long as I could and then I coughed and as I laid down I kept coughing, or so I though because I think that I was only dreaming that I was coughing, and coughing and then I started to hear voices and felt how cold the room was and it was then that the experience became terrifying. I was looking at some strange honeybee nest patterns that extended from the wall all the way close to my eyes. I kept coughing and then I realized that I was holding the lighter and slowly leaning down. I felt very empty.  I felt dead.
I was heartbroken with the experience since I didn't go to a wonderful world. I was expecting to explore my dreams with full consciousness but it didn't happen.  Shortly afterwards I joined my sister and her friend while they were smoking weed and tell them about the experience and how it sucked and how I missed the ganja and the pleasant feeling of joy and happiness that I just didn't have then. This is when the Woodrose seeds come in: Since I was disappointed with the salvia trip and seriously thought it was a bad idea to keep smoking salvia I decided I should try these seeds I just got and had never tried. So I start eating them while we are talking and eating MORE SUGAR, that is, chocolate cake. I gave them three seeds but I ate seven! I didn't clean them or anything I just chewed them.
20 minutes later I felt very drugged, but not trippy drugged rather I felt sedated and very nauseous so I just laid down and moaned. They just stared at me and went outside to smoke some more weed.  My sister scolded me for trying to trip just after the bad trip I had with salvia. I was so uneasy and felt so dirty so I took a bath and while I was taking the bath I remembered I was still high with salvia and started to puke. I felt very good afterwards. I join them once again and after they woke up from their naps at around 11:30 am we talk about how the seeds are kicking in and how we all feel extremely high and even drunk. We had a great time and it was then that I joined them and smoked marijuana.
I felt a rush. I had not smoked in more than two months and I felt so high. In fact, I don't remember even feeling this type of high. The trip had fractal visuals included. We stared at the clouds for about 6 hours that day and concrete was our comfortable bed on three different locations. Its all blurry but I remember we just changed location once in a while and ended up laying on the floor while looking either at the floor itself, snails that we caught, or the clouds and their movements. The trip was so intense that right now I have hyperopia and can barely type and its 7:33 am.
One can only imagine the feelings of emptiness that these drugs made me feel and it is only now that I feel that I am coming down from the trip. I felt highly tempted to try salvia once more but rejected the idea and instead logged on to the internet to read more experiences.
Summary of the HBWS + weed after salvia with some caffeine and lots of sugar:
Lots of energy yet no muscle strength to use it.
Body doesn't feel pain yet strong feelings of nausea.
Strong visuals but no enlightenment associated with them.
Visuals can be controlled to a certain extent yet not the mood or thought itself, as was possible with mushrooms.
Feelings of a nightmarish world with salvia.
Almost impossible to talk to friends who were not themselves drugged with the seeds.
No spirals as with LSD.
No colors as with LSD.
Music had a stronger emotional effect but no visuals associated with it.
Dried mucosa and no saliva. (it was very, very, very hard to eat)
Steppenwolf type of introspection confusion feelings. (Steppenwolf by Herman Hesse)
It is important to mention that even while parts of this trip were very scary because of the thoughts of conflict that attacked me from within they were not as near horrifying as a ganja overdose. I highly recommend the woodrose seeds because they have extreme potential for visuals. I do not recommend salvia. At least not 20x. Specially if you are hoping for a joyful happy experience. Salvia just brought out the worse in me as opposed to LSD which brought intense happiness and pleasure.
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.


The ultimate in coffee voteing has been brought to you by Big Rob.
Have you ever wondered what people favourite coffee bean is?


Government decides to remove Nawaz Sharif's name from ECL: sources
by https://www.facebook.com/dunyanewsISLAMABAD (Dunya News) – The federal government has on Friday decided to remove former prime minister Nawaz Sharif’s name from the Exit Control List (ECL) following his deteriorating health, sources privy to Dunya News reported.
The interior ministry will write a letter to the federal cabinet and the erstwhile premier’s name will be removed from the ECL after approval. The interior ministry had received an application from the Sharif family seeking removal of Nawaz’s name from the ECL.
The plea was submitted for Nawaz Sharif’s treatment abroad. The Sharif family had tasked Pakistan Muslim League-Nawaz (PML-N) President Shehbaz Sharif to submit the application.
Nawaz’s deteriorating health
The doctors at the Sharif Medical City Hospital recommended shifting the erstwhile premier abroad for treatment as his platelets count has dropped below 30,000.
On the other hand, PML-N vice president Maryam Nawaz said her father, Nawaz Sharif, must go anywhere around the world where his treatment is possible.
Maryam Nawaz talked to media outside an accountability court (AC) in Lahore and maintained that it is another debate whether Nawaz Sharif is willing for treatment abroad.
She told that the PML-N supreme leader’s health is still very critical as his platelets count is not getting stable despite medication. Nawaz Sharif’s platelets dropped yesterday as well and doctors are not able to identify his disease, Maryam said.
Nawaz Sharif on Wednesday had been discharged from Lahore’s Services Hospital, where he was undergoing a medical treatment for 16 days due to fluctuation in his platelets count.
Nawaz, Shehbaz and Maryam going abroad
Nawaz Sharif is likely to leave for London next week along with Shehbaz Sharif and Maryam Nawaz for medical treatment, sources privy to Dunya News reported.
Leader of the Opposition in the National Assembly Shehbaz Sharif will presumably accompany elder brother Nawaz Sharif and has cancelled all other engagements.
Maryam Nawaz has contacted her legal team and decided to file miscellaneous petition to get her passport back which was submitted in the Lahore High Court following her bail approval. The counsels also met Shehbaz Sharif.
Nawaz Sharif granted bail
The Islamabad High Court (IHC) had granted Nawaz Sharif bail for eight weeks to obtain medical treatment on October 29. The PML-N supremo was ordered to deposit two bail bonds worth Rs2 million each.
A two-judge bench comprising Justice Mohsin Akhtar Kayani and Justice Mohsin Akhtar Kayani heard Shehbaz Sharif’s request to grant Nawaz Sharif bail on medical grounds in the Al-Azizia corruption reference.
On October 25, the Lahore High Court (LHC) had bailed Nawaz Sharif indefinitely on medical grounds, days after he was taken to Services Hospital from Kot Lakhpat Jail after deterioration of his health.
The ruling had come after doctors confirmed Nawaz Sharif was suffering from an autoimmune blood disorder requiring immediate medical attention.


Class WC_Shortcodes
WC_Shortcodes class.
Package: WooCommerce\Classes
Category: Class
Author: WooThemes
Version: 2.0.0
Class: WC_Shortcodes
Located at classes/class-wc-shortcodes.php
Category: Class
Author: WooThemes
Version: 2.0.0
Class: WC_Shortcodes
Located at classes/class-wc-shortcodes.php
Methods summary
public
|
|
public
string
|
|
public
string
|
|
public
string
|
|
public
string
|
|
public
string
|
|
public
string
|
|
public
string
|
|
public
string
|
|
public
string
|
|
public
string
|
|
public
string
|
|
public
string
|
|
public
string
|
|
public
string
|
|
public
string
|
|
public
string
|
|
public
string
|
|
public
string
|
|
public
string
|
|
public
string
|
|
public
string
|
|
public
string
|
|
public
string
|
|
public
|
|
public
string
|
#
product_attribute( array $atts )
List products with an attribute shortcode Example [product_attribute attribute='color' filter='black'] |


---
layout: page
title: About Me
---
Software Engineering
- Front-End (Javascript, React, Vue.js, ES6, Web Audio)
- Back-End (Web, Audio-Streaming, Java, Python, Spring)
- Big Data, NoSQL (Spark, Hadoop)
- MicroService Architecture
Language
Travel
- Japan
- Singapore
- Australia
- USA


One Direction dancer quits showbiz after snapping both heels in freak accident
EXCLUSIVE: Gemma McKee said her Great Dane Cesar helped her make a full recovery when she was left in a wheelchair after breaking both heels duringa show six years ago
by Aaron SharpAn ex-One Direction dancer is dedicating herself to helping animals in memory of the pet dog who gave her the strength to walk again after a freak injury.
Gemma McKee faced life in a wheelchair when she broke both heels while performing in 2012.
But she says the bond she had with Great Dane Cesar helped her make a full recovery.
And it was made all the more special when Cesar suffered complications with his own legs and had to use a wheeled harness to follow Gemma around.
But the 10st faithful dog, who even helped Gemma get through a broken marriage, had to be put down last year.
“It was quite sudden, almost like he’d been hanging on for me and putting all his energy into me,” says a heartbroken Gemma.
“As soon as he knew I was going to be OK, he let go.”
Now she’s given up dancing to foster homeless dogs and study veterinary science to become an animal physiotherapist.
She got Cesar as a puppy in 2011 after her widowed mum died of cancer. The same year she got her big break as a backing dancer on a 1D tour.
But in 2012, Gemma’s life was thrown into turmoil.
A leap into a pool in Hamburg as part of a dance routine by her troupe Doll House went horribly wrong when she landed feet first in the shallow end.
She had metal plates inserted into both heels and there was no guarantee she’d walk again.
But with Cesar by her side, Gemma, 32, summoned up the courage to take her first steps in August 2013. Two years later tragedy struck again when Cesar’s back legs gave way.
But the two kept encouraging each other and Gemma went from strength to strength, even getting back on the dance floor.
“He became a local celebrity and owners of disabled pets told me our story gave them hope.”
The Sunday People revealed their amazing story and they even appeared on ITV’s This Morning.
In August 2017, Gemma wed her long-time partner in Tuscany with Cesar walking her down the aisle in a waistcoat and bow tie.
But the marriage fell apart in just over a year. Once more, her companion was there for her. “He would wipe away my tears, snuggle up with me and physically drag me out of bed in the morning when I didn’t want to get up,” says Gemma.
But not long after she had moved out of the marital home, Cesar fell seriously ill and there was no hope of recovery. Gemma relives the painful moment he looked at her for the last time.
“Human or animal it doesn’t matter. I was lucky enough to meet my soulmate and experience true love. Looking at me, he stretched out and gave a huge sigh before his big, soft eyes closed.”
Now living in Surrey with Cesar’s ashes buried under a great Dane statue by the door, Gemma works for a veterinary surgery’s management team.
“I know he’d be proud of everything I’ve done,” she says. “He was my soulmate.
“So far I’ve rescued four dogs from Cyprus and helped them find loving homes in the UK.
“Cesar and I both gave each other a second chance in life and I want other dogs and families to experience that.”
- To donate to Gemma’s foster service please visit https://paws4homesfoundation.com


Verification Email
Please ignore this mail if the information is wrong!
Here are your registry information:
This refers to your activation page, please notice it is only valid for
ONE DAY


I used to be an accountant for six years until I found my passion in the tech field. I am now a graduate student at Northeastern University. I hope to be a software engineer in the near future.
I love outdoor activities and hanging out with my close friends. At the time being, I spend quite some time watching Youtube videos every day and doing yoga sometimes.


{% extends "base.html" %} {% load markdown %} {% block title %} {{ puzzle.spoiler_free_title }} {% endblock %} {% block main %}
You are not yet spoiled on this puzzle! Do you want to be spoiled on it?
{% if role %}You currently have the {{ role }} role on this puzzle, so it's likely that you want to continue.
{% endif %}


This sample demonstrates the integration of Advanced Content Filter (ACF) with a custom Abbreviation plugin, as explained in the Integrating Plugins with Advanced Content Filter article.
Advanced Content Filter (ACF) is a CKEditor core feature that filters incoming HTML content by transforming and deleting disallowed elements, attributes, classes and styles. The introduction of content filtering have impacted the plugin development process and slightly changed the data processing model of CKEditor. With ACF plugins can take control over the content available in the editor and adaptively adjust the user interface when allowed content changes.
The custom Abbreviation plugin created in the tutorials lets the users insert abbreviations into their documents.
The abbreviations use the <abbr>
HTML element and its attributes, so content filtering rules needed
to be adjusted to allow these elements.
Note: Advanced Content Filter was introduced in CKEditor 4.1.


This is a form. This form breaks at 600px and goes from a left-label form to a top-label form. At above 1200px, the labels align right. It also indicates focused fields with :focus-within. Full Name Email Message Select a Choice First Choice Second Choice Third Choice Check All That Apply First Choice Second Choice Third Choice Select a Choice First Choice Second Choice Third Choice


{% load static %} {% block content %}
Please sign in with your username and password or use dropdown menu to reset password or sign in with Google.


Jeremiah 31:39
And the measuring line shall yet go forth over against it upon the hill Gareb, and shall compass about to Goath.


This diagram shows how the precedence rules may be used to achieve the effect of rows being separated by a border. There is no border above or below the table and there are no vertical borders at all.
The table shows a table of three columns and three rows. Each cell contains an integer that labels it. The top row is separated from the second by a solid black border. The second row is separated from the third by a solid black border as well.


Maine artists commissioned for $1M public art installation
PORTLAND, Maine (AP) - Two Maine artists have been commissioned to design a $1 million permanent art installation for a new convention center in Seattle.
The Portland Press Herald reports Wade Kavanaugh, of Bethel, and Stephen Nguyen, of Portland, will create the installation for the Washington State Convention Center.
Kavanaugh and Nguyen are two of 18 artists that have been commissioned to create artwork for the building.
The Maine pair is working with an $800,000 budget for their specific project. An additional $200,000 has been allocated for necessary architectural changes.
Kavanaugh says the two spent a few days in Washington state to “get a sense of the landscape” as they design their piece.
This will be Kavanaugh and Nguyen’s first permanent piece. It is scheduled to be installed in 2021.
Information from: Portland Press Herald, http://www.pressherald.com
Sign up for Daily Newsletters
Copyright © 2019 The Washington Times, LLC.
Please read our comment policy before commenting.


Get Connected
Share your comments, questions, and suggestions!
-----------------------------------------------------------------
Home
Fill out my
online form
.
HTML Forms powered by
Wufoo
.


Paging is a memory management scheme that eliminates the need for contiguous allocation of physical memory. This scheme permits the physical address space of a process to be non – contiguous. The basic method for implementing paging involves breaking physical memory into fixed-sized blocks called frames and breaking logical memory into blocks of the same size called pages. When a process is to be executed, its pages are loaded into any available memory frames from their source (a file system or the backing store).
Every address generated by the CPU is divided into two parts: a page number (p) and a page offset (d). The page number is used as an index into a page table. The page table contains the base address of each page in physical memory. This base address is combined with the page offset to define the physical memory address that is sent to the memory unit.
Virtual memory is a technique that allows the execution of processes that are not completely in memory. Virtual memory involves the separation of logical memory as perceived by users from physical memory. This separation allows an extremely large virtual memory to be provided for programmers when only a smaller physical memory is available. By using virtual memory, a program would no longer be constrained by the amount of physical memory that is available. Users would be able to write programs for an extremely large virtual address space, simplifying the programming task.
Demand paging is a technique where the Operating System loads pages of a process into the main memory only as they are needed. This technique is commonly used in virtual memory systems. With demand-paged virtual memory, pages are loaded only when they are demanded during program execution. Pages that are never accessed are thus never loaded into physical memory. memory. The swapping in of pages into memory is done by a lazy swapper, which never swaps a page into memory unless that page is be needed.
While implementing demand paging, if a required page is not present in the memory, it is termed as a page fault, and that page has to be brought into the memory from the disk. The swapped in page mudt be placed in a free frame in the memory. However, if there is no free frame available in the memory, we use a page replacement algorithm to select a victim page. The victim page is written back into the disk and the required new page in stored in that frame, and the required changes are made to the page and frame tables. Below are the algorithms that can be used to select a victim page to be replaced.
The simplest page-replacement algorithm is a first-in, first-out (FIFO) algorithm. A FIFO replacement algorithm associates with each page the time when that page was brought into memory. When a page must be replaced, the oldest page is chosen.
If we use the recent past as an approximation of the near future, then we can replace the page that has not been used for the longest period of time. This approach is the least recently used (LRU) algorithm. LRU replacement associates with each page the time of that page’s last use. When a page must be replaced, LRU chooses the page that has not been used for the longest period of time.
In the optimal page replacement algorithm , we replace the page that will not be used for the longest period of time in future. Use of this page-replacement algorithm guarantees the lowest possible page-fault rate for a fixed number of frames.
For each page in the main memory, we maintain a reference bit. When a page is loaded into the memory, its reference bit is set to 0. However subsequently, if there is a page hit that references that page, its reference bit is set to 1. The basic algorithm of second-chance replacement is a FIFO replacement algorithm. When a page has been selected, however, we inspect its reference bit. If the value is 0, we proceed to replace this page; but if the reference bit is set to 1, we give the page a second chance and move on to select the next FIFO page. When a page gets a second chance, its reference bit is cleared, and its arrival time is reset to the current time. Thus, a page that is given a second chance will not be replaced until all other pages have been replaced (or given second chances).In addition, if a page is used often enough to keep its reference bit set, it will never be replaced.


One Step Back
- The classical “Enterprise” application uses multi-threading. li>
- Each request is assigned to a Thread, giving to the developer a “view” of serving a unique (isolated) request.
- Since we have our “own” Thread, usually the I/O API is blocking


Small Swamp [aa03], swamp, in Diamond Island, wilderness
Last updated Turn #128
Small Swamp [aa03], swamp, in Diamond Island, wilderness
------------------------------------------------------------------------
7: The Savvy Aardvark [ha5r], ship, 2 hulls, 1 rowing port, 6 sails,
7: 16% damaged, arrived from Ocean [aa02], owner:
7: Phantasm [n4b], Imperial Empire, duke, with two workers,
7: eight sailors
8: The Savvy Aardvark [ha5r], ship, 2 hulls, 1 rowing port, 6 sails,
8: 16% damaged, departed for Ocean [aa04].
11: It has become quite windy.
Routes leaving Small Swamp:
East, to Ocean [aa04], Crystal Sea, 2 days
South, swamp, to Small Swamp [ab03], 14 days
West, to Ocean [aa02], Crystal Sea, 2 days
It is windy.
Seen here:
Stack of centaurs [as1g], centaurs, number: 43
Stack of nazgul [jd3t], nazgul, number: 3


Conrad Mitchell: 4/28/18 8:45pm
General feedback-- What did you like? What could be improved? Would you use this website?
user login should go away when the user logs in and when the user makes an account it should automatically log them in
Julia Long: 4/28/18 9:15pm
General feedback-- What did you like? What could be improved? Would you use this website?
When I'm looking at a specific course, there is no way for me to go back to the course page, only the home page. Also, the "Not you? Logout" button shows up even when I'm not logged in. Between the two levels of department buttons, you need some space. They're on top of each other. When the user creates an account, there is no indication of whether or not the account creation was successful. When someone logs in, their name should be displayed instead of their email. The creation of a new department is not intuitive. There should be a button to add it. ^^ Ditto for the creating a new course I do like what happens when you create a department, you can see it instantly! Make the review boxes bigger by default Add a "Grade received box" "Update your review" shows up when you haven't written a review yet
Rachel Shapiro: 4/28/18 10:12pm
General feedback-- What did you like? What could be improved? Would you use this website?
The up vote/down vote on the comments does not have a cap, so you can up vote/down vote as many times as you want, instead of letting each user only vote up/down once per comment. It did not allow me to create an account, or when I clicked create an account- all the fields cleared. unclear which was the problem but it doesn't work. Regarding the filter reviews section- it is unclear what you mean by "show this enjoyment" and "show this difficulty." Maybe instead have it like "filter difficulty high to low" or "low to high" sort of like when you are online shopping. Also, when i try to log in nothing happens- it doesn't tell me if i got the wrong password or don't have an account.


Users
This is the users section
AddyRob
Chuck
Sam
User: {{params.name}}
This is {{params.name}}'s section
Contact
This is the contact section
online
Stuart Benonline
Albert Halloffline
Jolia Morisonline
Stuart Benoffline
Albert Hallonline
Jolia Morisonline
Hello, How Are you today Robin ?
03:40 PM
R u available now a days ? I like to hire you for one of my project. Please let me know so I can prepare your new contract
03:45 PM
Thanks, Yes I am available. You can hire me via Upwork now. I will be happy to work in this project
03:58 PM
It will be great if you share the project brief with me or give me Jira Access of that specific project
03:40 PM


{% extends 'base/base.html' %} {% load static %} {% block title %} School Management System {% endblock %} {% block content %} Welcome To School Management System


--insert image here--
DiscountCoin is a Proof of Stake Cryptocurrency. The first two weeks after release will consist of a two week Proof of Work period.
It is the goal of the BitcoinDark developers for everyone involved in the Cryptocurrency revolution to have access to the exciting developments that have been taking place. An ASIC-friendly, mixed PoW/PoS coin with eventual anonymous transaction capabilities has been sorely overlooked.
The BitcoinDark developers believe that progress should never be held back. ASICs use much less energy than GPUs and are orders of magnitude more efficient. The energy used mining Scrypt coins for years to prolong the days of GPU mining was a truly enormous waste of resources on a global scale. Why hold back progress? DiscountCoin encourages it.
Coin Generation: Pure Proof of Stake with Proof of Work period upon release
Proof of Work Algorithm: SHA-256
Total Number of Coins: 22 million
PoW Block Reward: 80 DCT
PoW Blocks: 20,160
PoW Target Blocktime: 1 minute
RPC Port: 15632
Port: 15631
Time to Maturity: 100 Confirmations
Proof of Stake Reward: 5% per year
Minimum Coin Stake Age: 8 hours


Already have an Intuit account?
I forgot my User ID or Password
Sign In
mint
quickbooks
turbotax
Create an Intuit account
One account for everything Intuit, including Mint.
Learn more
E-mail Address
Phone (recommended)
Standard call, messaging or data rates may apply.
Password
Create Account
captcha
Invisible reCAPTCHA by Google
Privacy Policy
and
Terms of Use.


{{ gameInfo.contract }}
{{ gameInfo.originated }}
{{ gameInfo.player1 }}
{{ gameInfo.player2 }}
Player {{ gameInfo.currentPlayer }}
{{ gameInfo.winner }}


3
1 Yahweh said to me, "Go again, love a woman, loved by her husband, but who is an adulteress. Love her just as I, Yahweh, love the people of Israel, although they turn to other gods and love raisin cakes."
2 So I bought her for myself for fifteen pieces of silver and a homer and a lethek of barley.
3 I said to her, "You must live with me many days. You will not be a prostitute or belong to any other man. In the same way, I will be with you."
4 For the people of Israel will live for many days without a king, prince, sacrifice, stone pillar, ephod or household idols.
5 Afterward the people of Israel will return and seek Yahweh their God and David their king. And in the last days, they will come trembling before Yahweh and his goodness.


- editAmColor(int) - Method in class com.nfcalarmclock.NacSharedPreferences
-
Edit the AM color, in the time, of all alarm cards.
- editAppFirstRun(boolean) - Method in class com.nfcalarmclock.NacSharedPreferences
-
Edit whether this is the app's first run or not.
- editAudioSource(String) - Method in class com.nfcalarmclock.NacSharedPreferences
-
Edit the default audio source to use when a new alarm card is created.
- editAutoDismiss(int) - Method in class com.nfcalarmclock.NacSharedPreferences
-
Edit the index corresponding to a time in which to auto dismiss the alarm.
- editCardHeightCollapsed(int) - Method in class com.nfcalarmclock.NacSharedPreferences
-
Edit the height of the alarm card when it is collapsed.
- editCardHeightCollapsedDismiss(int) - Method in class com.nfcalarmclock.NacSharedPreferences
-
Edit the height of the alarm card height it is collapsed, but the dismiss
button is showing.
- editCardHeightExpanded(int) - Method in class com.nfcalarmclock.NacSharedPreferences
-
Edit the height of the alarm card when it is expanded.
- editCardIsMeasured(boolean) - Method in class com.nfcalarmclock.NacSharedPreferences
-
Edit the flag indicating if the alarm card has been measured or not.
- editDayButtonStyle(int) - Method in class com.nfcalarmclock.NacSharedPreferences
-
Edit the value indicating which day button style to use.
- editDays(int) - Method in class com.nfcalarmclock.NacSharedPreferences
-
Edit the default days to use when a new alarm card is created.
- editDaysColor(int) - Method in class com.nfcalarmclock.NacSharedPreferences
-
Edit the color of the days an alarm will go off on.
- editEasySnooze(boolean) - Method in class com.nfcalarmclock.NacSharedPreferences
-
Edit the flag indicating whether the user wants to snooze easily or not.
- editMaxSnooze(int) - Method in class com.nfcalarmclock.NacSharedPreferences
-
Edit the max number of times a user is able to snooze an alarm.
- editMediaPath(String) - Method in class com.nfcalarmclock.NacSharedPreferences
-
Edit the default media path to use when a new alarm card is created.
- editName(String) - Method in class com.nfcalarmclock.NacSharedPreferences
-
Edit the default name to use when a new alarm card is created.
- editNameColor(int) - Method in class com.nfcalarmclock.NacSharedPreferences
-
Edit the color of the name of an alarm.
- editNextAlarmFormat(int) - Method in class com.nfcalarmclock.NacSharedPreferences
-
Edit the time format to display the next alarm in.
- editPmColor(int) - Method in class com.nfcalarmclock.NacSharedPreferences
-
Edit the PM color, in the time, of all alarm cards.
- editPreviousVolume(int) - Method in class com.nfcalarmclock.NacSharedPreferences
-
Edit the previous system volume, before an alarm goes off.
- editRateMyAppCounter(int) - Method in class com.nfcalarmclock.NacSharedPreferences
-
Edit the counter that will indicate whether it is time to show dialog to
Rate My App.
- editRepeat(boolean) - Method in class com.nfcalarmclock.NacSharedPreferences
-
Edit the default repeat value when a new alarm card is created.
- editShouldRefreshMainActivity(boolean) - Method in class com.nfcalarmclock.NacSharedPreferences
-
Edit the value indicating whether the main activity should be refreshed or
not.
- editSnoozeCount(int, int) - Method in class com.nfcalarmclock.NacSharedPreferences
-
Edit the current snooze count for an alarm with the given ID.
- editSnoozeDuration(int) - Method in class com.nfcalarmclock.NacSharedPreferences
-
Edit the snooze duration preference value.
- editSpeakFrequency(int) - Method in class com.nfcalarmclock.NacSharedPreferences
-
Edit the frequency at which the text-to-speech should go off when an alarm
is going off.
- editSpeakToMe(boolean) - Method in class com.nfcalarmclock.NacSharedPreferences
-
Edit the flag indicating whether text-to-speech should be used when an
alarm goes off.
- editStartWeekOn(int) - Method in class com.nfcalarmclock.NacSharedPreferences
-
Edit the index indicating which day to start the week on.
- editThemeColor(int) - Method in class com.nfcalarmclock.NacSharedPreferences
-
Edit the theme color.
- editTimeColor(int) - Method in class com.nfcalarmclock.NacSharedPreferences
-
Edit the color of the time for all alarm cards.
- editUseNfc(boolean) - Method in class com.nfcalarmclock.NacSharedPreferences
-
Edit the default use NFC value when an alarm is created.
- editVibrate(boolean) - Method in class com.nfcalarmclock.NacSharedPreferences
-
Edit the default vibrate value when an alarm is created.
- enable() - Method in class com.nfcalarmclock.NacDayButton
-
Enable and animate the view.
- enqueueWork(Context, Intent) - Static method in class com.nfcalarmclock.NacDatabase.BackgroundService
-
- equals(NacAlarm) - Method in class com.nfcalarmclock.NacAlarm
-
Check if this alarm equals the given alarm.
- equals(NacWakeupProcess) - Method in class com.nfcalarmclock.NacWakeupProcess
-
Check if one wakeup process equals another.
- exists(Context) - Static method in class com.nfcalarmclock.NacNfc
-
Check if NFC exists on this device.
- exists(T) - Method in class com.nfcalarmclock.NacTreeNode
-
- exists(NacTreeNode<T>) - Method in class com.nfcalarmclock.NacTreeNode
-
- expand() - Method in class com.nfcalarmclock.NacCardHolder
-
Expand the alarm card.


{% extends "base.html" %} {% set active_page = "content" %} {% block content %}
Whenever I have a question that needs to be answered or a problem that needs to be solved, the first thing I do is look it up online. The purpose of this content is to uniquely contribute to that collective intelligence.
Developing an algorithm is only half of the job.
Continue Reading.


1x1 GIF
by Pawel Szymczykowski / @makenai
for DHTMLConf 2000
Hi, and thanks for coming to DHTMLConf. First off, I want to do quick audience poll. How many of you want me to say GIF? uh huh. And how many for JIFF? ok. Anyone for other - something else? OK, so ___ it is. I'll try to remember to pronounce it that way.
So, my name is Pawel Szymczykowski, @makenai on twitter.
Vegas JS {}
+
I'm here repping VegasJS {}, our Las Vegas JavaScript users group. It's a great group, so please drop by if you're ever passing through town.
I'm also here on behalf of Zappos.com, where I develop back end API's in Java for our mobile apps. When I get back home I'll be sure to tell them how much I enjoyed Java Fest.
I'm here along with Dave Stevens who spoke yesterday on Hapi versioning and Dan Harden who will talk after me.
I hobby around a lot on JavaScript and robotics for education, and it's become my go-to language for most things I write for fun.
I'm not going to make any presumptions that you all do web design, and especially not that you did web design a long time ago when the 1x1 gif trick was popular. Today, we can lay things out very nicely with CSS. You can control how every element on the page is presented - as a block, inline and a host of others. You can also specify the margins, padding and even x/y position of nearly anything very cleanly.
This trick comes from a time before all that was possible, when the only choice for the flow of your web page was down and to the right.
The trick in the 1x1 gif trick was to take a 1 pixel transparent image, and stretch it out so that it would take up enough space to push your content over to achieve the position that you wanted.

WomensNet

Voice of Women

...
The code looked a little like this.  It made it hard to navigate and wreaked havoc on screen readers.
It also violated a concept called the 'semantic web' - a term coined by Tim Berners Lee that prioritizes content over presentation to make it easier to use data on the web. An invisible or decorative image has no semantic value.
Does anyone know who this man is?
His name is Dave Siegel. Or is it Seejel? If people like Tim Berners Lee and Jeffrey Zeldman are the patron saints of semantic web and good design using web standards, Dave is like the Satanic priest wearing furry goat leggings, hopping around and poking impressionable developers with smouldering sticks.
He wrote this book back in 1996, it's called Designing Killer Websites. He's also the inventor os the 1x1 gif trick. It wasn't just "this one weird trick", the table of contents of this book is simply brimming with similar tricks, hacks and workarounds of a similar nature. Table based layouts, frames and a whole lot of nope.
"If you want machines to read your web pages, use things like definition lists, unordered lists, headers, etc. If you want people to read them, don’t do it. They take away your typographic control. Specify your own font sizes when you want a size change. If you must use bullets, make your own bullets (I don’t see much point in bullets if your vertical grouping is good). And try not to number your list items. It is hardly ever necessary."
— Dave Siegel
He had an interesting way of looking at things, and often said things that would make Tim Berners Lee cry. You can't really blame him too much. It was a different era, and he came at the problem from the point of view of a print designer. He was a little bit of a control freak, and didn't try very hard to find a middle ground between style and structure. He might have been one of the first people to try to address web DESIGN instead of just web DEVELOPMENT. He just wanted his web sites to look good and didn't apologize for anything.
Now is the time for all good men to come to the aid of their country.
 Now is the time for all good men to come to the aid of their country.
I'm going to take you a few of the things you could do with single pixel gifs. These are all things that can be done very easily today, but weren't possible then without resorting to trickery. I was a pretty bad web designer back then, and I've done all of these. I even hosted a website called 1x1gif.net for hosting transparent single pixel gifs because I used them so often. I'm still a pretty bad web developer today, but now I use CSS.
You could use a long thin GIF to indent the first line of a paragraph.  Now, you can do a text-indent in a CSS file.
I wish you would oh, nevermind.
I wish you would oh, nevermind.
em dashes - vertically center your long gif and make it black, and you have an em-dash. Esthetically nice, but wrong, and huge pain when copying and pasting. There are now html entities pointing to the proper unicode code points with the correct semantic meaning for this.
Who needs
css line
spacing?
Who needs

css line

spacing?

If you make your invisible gif tall instead of long, you can control line spacing. At this time, the most you could do was double space, so yearning for this level of control is understandable. It also horrible, because you need to insert at least one gif per line and it makes your code a mess. We have a css line spacing property now.

This one just makes me say WHY. There is no good reason to do this. Dave is using a combination of purple and clear gifs to construct an ornate horizontal rule. The amount of space taken by the markup is probably larger than if there was an image. We had the technology for this.
__utm.gif
As an aside - one other really common usage for these transparent gifs is what you call web bugs or creepy pixels. Third party sites have you link them from your website so that your visitors browser load them and they can be tracked. You might be familiar with this one - it's used by Google analytics. Now, the requests of this image are in the - a really large number I don't know the name of-s per day, so you might assume they want to keep it effecient, and you'd be right. The pixel they send is 35 bytes.
Header: 6 bytes ("GIF89A")
Logical Screen Descriptor: 7 bytes
Global Color Table: 6 bytes
Graphic Control Extension: 8 bytes
Image Descriptor: 10 bytes
Image Data: 5 bytes
GIF Trailer: 1 byte (";")
= 35 bytes
http://probablyprogramming.com/2009/03/15/the-tiniest-gif-ever
A few years ago, a developer over at probably programming (the name is not mentioned) did started investigating the smallest possible gif she or he could make. It turns out that these are the component parts of the gif and the one that google sends is a 1x1 pixel with a whte background. I can't be sure, but I like to think that somewhere there did the research and decided it was worth it losing transparency to send 2 bytes less.

Content Here

Let's take a look at one more bad hack.. rounded corners. My favorite way of doing this was to create a GIF with a white background and a transparent foreground - and you can stick it into a table and change the background color of the table. It's not literally the worse, but it's not elegant.
But then things like Scriptaculous same out and all of a sudden you could keep your markup relatively clean while an inocculous looking javascript makes it pretty for you. Cool, right?
 I think this might be even a little bit worse. It seems like we went through a phase of 'images are evil and anything is better' but it was just kind of a step in a different but equally wrong direction.
If any of this has any kind of point, I want it to be this: if you don't build things in a way that lets people do what they want. They're going to work around it. If their workaround is convenient enough, other people are going to do it. If enough people do, it maybe it will catch on or someone will write a book about it and it will haunt us for a long time. Maybe it will hurt the internet or javascript.
I'm not even sure it's a bad thing. Each of those hacks I showed you has a nice solution today. If it wasn't for the doing all of the wrong things, we probably wouldn't have found nice ways of doing them. It's kind of a chicken and egg problem - if ES6 was around a few years ago, would coffeescript event be a thing? And if coffeescript hadn't been invented, would the ES6 spec even look the way it does today?
I don't know.
I'm not going to say don't create hacks - that's a time honored and proud tradition in computers. Go ahead and do it! But I would like us to be thoughtful when we're implementing that hack. Also think about how you'd solve that problem in an ideal world. Then maybe we can spend less time doing the wrong thing.
#extendthewebforward
https://extensiblewebmanifesto.org/
But I don't write rendering engines or javascript runtimes! You might say. but you don't have to. The people who do write those things work on a set of standards - and those standards are written and tweaked by people like you.
Please go read the extensible web manifesto, spend some time reading draft specs, maybe just some discussion lists. You might even like it.
Your experience and thoughtfulness today, can help make the future less painful.
end of transmission.
DHTMLConf 2000 continues.


The Way of the Program
The goal of this book is to teach you to think like a computer scientist. This way of thinking combines some of the best features of mathematics, engineering, and natural science. Like mathematicians, computer scientists use formal languages to denote ideas (specifically computations). Like engineers, they design things, assembling components into systems and evaluating tradeoffs among alternatives. Like scientists, they observe the behavior of complex systems, form hypotheses, and test predictions. The single most important skill for a computer scientist is problem solving. Problem solving means the ability to formulate problems, think creatively about solutions, and express a solution clearly and accurately. As it turns out, the process of learning to program is an excellent opportunity to practice problem-solving skills. That’s why this chapter is called, The way of the program. On one level, you will be learning to program, a useful skill by itself. On another level, you will use programming as a means to an end. As we go along, that end will become clearer.


Minhaz | Google | Singapore
I am working with Next Billion Users Org at Google. My team builds technologies for emerging markets.
I feel the goal of delivering cutting edge technologies to resource-constrained devices with seamless performance is hard, at times frustrating but worthwhile.
Hoping for positive impact, good Karma and unbounded learning ;)
These days I am working on #Computational-Photography and try hard at #Photography as well.
I have good experience with #Distributed-Systems and #Applied-ML.
All the posts and opinions are personal and are not related to any organisations I work for.


I've try to change value PHASECALL In the function EnergyMonitor. it start from 0.9 increase. but i didnt see real power and power factor value change. whereas the difference real power of my system between multimeter about 11 W.
Can anyone explain it to me in simple terms?
Thanks.
Re: How to Calibrate PHASECALL
PHASECAL is an adjustment to correct the errors in the input sensors. You adjust the value so that, with a purely resistive load, you have power factor = 1.00
The method is here: http://openenergymonitor.org/emon/modules/emontx/firmware/calibration
If your test load is 11 W, I think it is very unlikely that you will see any difference, as the true current will be masked by electrical noise.
Re: How to Calibrate PHASECALL
How normally the range of work to read power??
i've try to change the constant of PHASECALL from 0.9 - 2 but the value of power didnt change, so far i know it should have changed.
electrical noise?? you mean THD?
how about THD? In the function EnergyMonitor there is no filter. I'm also still confused this section.
Can you explain it to me in simple terms?
thanks in advance.
Re: How to Calibrate PHASECALL
"How normally the range of work to read power??" Sorry, but I do not understand what you are asking.
"electrical noise?? you mean THD?" No, I mean electrical noise from the digital part of the processor. It causes the input to change randomly by two or three counts even with nothing connected. You read that as a "current" of maybe 200 mA and a "power" of maybe a few tens of watts maximum. This is not real current nor is it real power. That is normal and you can do nothing about it. To set PHASECAL, you need a much larger load than that - say 500 W - so that the true current is much larger than the "noise current". When you do that, you should see the power factor change as you change PHASECAL.
The real power calculation in emonLib will correctly calculate the power even when the current and voltage waves are distorted - provided there is no significant power in the harmonics above the 25th.
Re: How to Calibrate PHASECALL
i mean large load that can be read correctly? >500, <500 ??
im sorry i dont use emonLib.h library. my code use in the book "arduino projects to save the world"
I'm confused when the current and voltage waves are distorted. because there is no filter.
from this code, if i change constan of PHASECALL, the real power doesnt change.
this is the code :
Re: How to Calibrate PHASECALL
That code looks as if it has been copied from here and altered for your book. Sorry, but I don't have the time to debug someone else's code. The author of the book is the person best placed to provide you with support.
Try this sketch. You will need emonLib. It will not drive a local display, and if you do not have the radio module, you will need to remove that from the sketch or it will hang.
[Edit]
I can see a mistake in the code. The power calculation is incorrect. It appears to be a deliberate change and if you have not changed the code out of the book, you'll need to ask the authors of the book why they have changed it from the original on this site. If it is their change, I think their understanding of electrical theory is suspect.
Re: How to Calibrate PHASECALL
the power calculation is incorrect??
what do you mean? which part is wrong?? can you explain it? I've contacted the author but not yet replied.
im sorry, I forgot to remove the serial begin. I just changed Calibration coefficients and constans.
so this code will correctly calculate the power even when the current and voltage waves are distorted?? i didnt get it.
Re: How to Calibrate PHASECALL
shaulagara, I've just posted a set of results on a different thread which show a voltage and current waveform that are nicely in phase. That's because the current is passing through a resistive load (a 2 kW heater), and the voltage transformer is not introducing much phase shift.
PhaseCal is a software technique that introduces a phase shift in the voltage waveform. When measuring a resistive load, phase shift has very little effect on Real Power. I posted a video some months ago in which I introduced a phaseCal value of 5, and it made very little difference to the circuit's performance.
Re: How to Calibrate PHASECALL
calypso_rae,
so in order to have a large effect on the real power I have tried in capacitive or inductive loads?
What's the title of the thread that you post video???
Re: How to Calibrate PHASECALL
All the videos that I've posted are listed on my Summary Page.
The particular one that I mentioned is at http://www.youtube.com/watch?v=v8ifoUJvcXY


The rhinoceros gets its name from one of its most notable features: its horns. The word rhinoceros come from the Greek words rhino meaning “nose” and ceros meaning “horn.” The number of horns that a rhino has varies on the species. The two African species (the black rhino and the white rhino) and the Sumatran rhino have two horns, while the Javan rhino and one-horned rhino have one horn.
Sea turtles are characterized by a large, streamlined shell and non-retractile head and limbs.  Their limbs are flippers that are adapted for swimming, so they are vulnerable while on land.
Giraffes are known for their long, tall appearance. They have a small hump on their back like a camel and have a spotted pattern similar to that of a leopard. Because of the combination of these features, some people called the giraffe a “camel-leopard.” That’s where the giraffe’s species name “camelopardalis” comes from.
Elephants are the largest existing land animal, with massive bodies, large ears, and long trunks. Elephants’ long trunks are multifunctional.
Dolphins range in color depending on the species, from white, pearl, and pink to darker shades of brown, gray, blue, and black. They have smooth skin, flippers, and a dorsal fin. They have a long, slender snout with about 100 teeth and a streamlined body. They have a single blowhole on top of their head, which has a flap that opens to reveal a pair of nostrils. The dolphin uses these nostrils for breathing when it surfaces.


Dear
Your lobbycal account has been created, please click on the URL below to activate it:
Activation Link: Activation Link
After activation, please complete the registration in order to use the plugin. For this, please login to your account and go to Settings to fill the empty fields Direct link to the settings: hostname/#/settings
Finally, you need to set up the plugin on your website to display your lobby meetings. You can download the plugin here: hostname/lobbycal2press.zip Ιn the Wordpress settings dialogue, enter this value as "API URL for your MEP": Plugin URL
You can configure other things there, like which fields to show or how many appointments to show on one page. Give it a try!
Kind Regards,
lobbycal.


#include "copyright.h"
#include "system.h"
#include "machine.h"
#include "addrspace.h"
#include "physMem.h"
#include "tlb.h"
#include "pagefaultmanager.h"
#include "mmu.h"
Software sets up a table of legal translations. We look up in the table on every memory reference to find the true physical memory location.
Two types of translation are supported here.
Linear page table -- the virtual page # is used as an index into the table, to find the physical page #.
Translation lookaside buffer -- associative lookup in the table to find an entry with the same virtual page #. If found, this entry is used for the translation. If not, it traps to software with an exception.
In practice, the TLB is much smaller than the amount of physical memory (16 entries is common on a machine that has 1000's of pages). Thus, there must also be a backup translation scheme (such as page tables), but the hardware doesn't need to know anything at all about that.
Note that the contents of the TLB are specific to an address space. If the address space changes, so must do the contents of the TLB!


Setting Up a Print Server
You can lessen the burden on computers that request printing services by setting up a print server. You can also use the print server to install printer drivers on other computers, so that users of those computers do not need to install the printer driver from the CD-ROM/DVD-ROM.
Configuring Settings on the Print Server Computer
Installing Drivers via the Print Server (Client Settings)


These are fairly well documentated, the basic process is to:
The process is pretty simple (and well documented), we won't go into setting up Docker and the EB CLI stage in any more depth
docker run hello-world
(Sequences may be shortened)
{
"AWSEBDockerrunVersion": 2,
"volumes": [],
"containerDefinitions": []
}
"volumes": [
{
"name": "php-app",
"host": {
"sourcePath": "/var/app/current/php-app"
}
},
{
"name": "nginx-proxy-conf",
"host": {
"sourcePath": "/var/app/current/proxy/conf.d"
}
}
],
"containerDefinitions": [
{
"name": "php-app",
"image": "php:fpm",
"essential": true,
"memory": 128,
"mountPoints": [
{
"sourceVolume": "php-app",
"containerPath": "/var/www/html",
"readOnly": true
},
{
"sourceVolume": "awseb-logs-php-app",
"containerPath": "/var/log/sample-app"
}
]
},
...
{
"name": "nginx-proxy",
"image": "nginx",
"essential": true,
"memory": 128,
"portMappings": [
{
"hostPort": 80,
"containerPort": 80
}
],
"links": [
"php-app"
],
"mountPoints": [
{
"sourceVolume": "php-app",
"containerPath": "/var/www/html",
"readOnly": true
},
{
"sourceVolume": "awseb-logs-nginx-proxy",
"containerPath": "/var/log/nginx"
},
{
"sourceVolume": "nginx-proxy-conf",
"containerPath": "/etc/nginx/conf.d",
"readOnly": true
}
]
}
Switch themes:
Black (default) -
White -
League -
Sky -
Beige -
Simple
Serif -
Blood -
Night -
Moon -
Solarized


{% extends 'base.html' %}{% load mptt_tags %}{% load compress %}{% load cache %} {% block content %}
{{game.flavor_n}}
{% endif %}By participating in this game, you certify that you have have read and agree to the game rules, player waiver, and Terms and Conditions before playing.
{% if game.status == 'in_progress' %} {% if player and not player.human %}{% else %}{% endif %}The objective of zombies is to tag humans. The objective of humans is to survive.  The zombie will then either enter your bite code on the website. You will then turn into a zombie.  Hitting the zombie again does not reset the timer however a zombie must start in a safe zone after being stunned and cannot chase after a human leaving a safe zone immediatly. Academic buildings and residences are safe. Please join the chat if you need tactical support or friendship.
{% endif %}You have already registered for this game. Sit tight!
{% endif %} {% elif game.status == "in_progress" %}{{ game.end_date|timeuntil }} until it all ends.
{% if user.is_authenticated and not player %}Game in progress. Registration is no longer possible.
{% elif player and not player.active %}You registered for this game but have not been activated. Please contact a moderator for assistance.
{% elif player and player.starved %}You have missed too many supply drops and have "starved". You may no longer participate in the game.
{% elif player and player.suspended %}You have been suspended by an administrator. You may not participate in the game while you are suspended. Please contact the head administrator ASAP if you have not done so already.
{% endif %} {% elif game.status == "finished" %}Killed by {{ player.kill_object.killer.user.get_full_name }} on {{ player.kill_object.date }}
{% endif %} {% endif %}You still need to add geotags and/or notes to the kills below:
***Kills are timestamped at the time of submission, so enter your bite codes while they're still fresh!***
We don't have a phone number on file for you in case we need to contact you! Add it to your profile.*
{% endif %} {% if game.status == 'registration' or game.status == 'in_progress' %}No active missions at the moment. Keep checking this page for missions; they will not be announced and could happen at any moment.
{% endif %} {% endif %}You are ranked #{{ player_rank.0 }} of {{ player_rank.1 }} {% if player.human %}humans{% else %}zombies{% endif %}. Visit your player page for more details and point breakdowns.
My Player Page {% if player.squad %}My Squad Page{% endif %} {% endif %} {% else %}Scores are not available at this time.
{% endif %}{{ kills_per_hour|floatformat:2 }}
{% if kills_in_last_hour and game.status == "in_progress" %}{{ kills_in_last_hour|floatformat:0 }}
{% endif %} {% if game.status == 'in_progress' %}All data below is updated in real time.
{% endif %}Where Courage = (Total human points earned by hall / # Players in hall) * 100
| Hall | Courageousness |
|---|---|
| {{ e.dorm }} | {{ e.points|floatformat }} |
Where Infectivity = (Total zombie points earned by hall / # Players in hall) * 100
| Hall | Infectivity |
|---|---|
| {{ e.dorm }} | {{ e.points|floatformat }} |
The names of surviving humans have been obfuscated in the interest of national human security.
{% endif %}| Name | Human Points |
|---|---|
| {{ p.display_name }} {% if not p.human %}(killed in action){% endif %} | {{ p.human_points }} |
| Name | Kills | Zombie Points |
|---|---|---|
| {{ p.display_name }} | {{ p.kills }} | {{ p.zombie_points }} |
Where squad points = (total human or zombie points / # of squad members) * 10
Squads must have ≥2 casualties to qualify as a zombie squad.
| Name | # Alive | Human Squad Points |
|---|---|---|
| {{ s.name }}{% if s.num_humans == 0 %} (killed in action){% endif %} | {{ s.num_humans }} of {{ s.size }} | {{ s.human_points }} |
| Name | # Undead | Zombie Squad Points |
|---|---|---|
| {{ s.name }} | {{ s.num_zombies }} of {{ s.size }} | {{ s.zombie_points }} |
There are no zombie squads...yet.
{% endif %}{% if player and player.active %} {% if player.human %} {{ game.flavor_h }} {% else %} {{ game.flavor_z }} {% endif %} {% else %} {{ game.flavor_h }} {% endif %}


{{ $thisSection := $.Page.Section }} {{.Inner}} {{ $allRecipes := (sort (where ( where .Site.Pages "Section" $thisSection ) ".Title" "!=" $thisSection) ".Name" "asc")}}
List of the {{ len $allRecipes }} recipe(s) within the "{{ $thisSection }}" section:


Make sure you hire an experienced deck builder in Cedar Falls and Cedar Rapids, IA
Our experienced sales associate will meet your needs at your home, go over your material preferences and get to work designing and budgeting your new gutters and or gutter guards. You’ll have new gutters that you love and will show off your home in no time. Our experienced staff can work with your budget and help you make the best decision that will provide the best value to your home.
T.E.A.M. Builders LTD has experience installing gutters of all kinds on properties in the Cedar Falls and Cedar Rapids, IA area. Rely on us to build your custom deck quickly and correctly.
Enjoy your home’s curb appeal
Looking for a trustworthy gutter installer? Look no further. T.E.A.M. Builders LTD installs gutters in Cedar Falls and Cedar Rapids, IA and surrounding areas.


This is a system to moderate marked documents online. It makes use of Google Drive to store the marked documents and as such a Google account is required to make use of this system (Google Drive comes free with a Google account). I suggest creating a new Google account to use this system, so it stays seperate from the documents in your personal Google Drive.


{% extends "parents/base_sort.html" %} {% block js %} {% endblock %} {% block title %} Comb Sort {% endblock %} {% block info %}
Comb Sort is a sorting algorithm really similar to Bubble Sort. It highly improves its performances by removing the "turtles", that is the small elements placed near the end of the data structure that slows down a lot the performances of Bubble Sort.
Bubble Sort is based on comparing adjacent elements, so with a distance of 1. Comb Sort increases this distance using a shrink factor k (usually with a value of 1.3). Initially, the distance has a value of n. For each iteration, a Bubble Sort gets executed using the new distance value instead of 1. The distance gets progressively divided by the shrink factor k.
This procedure gets executed until the distance reaches the value of 1. At this point, the algorithm is a regular Bubble Sort, but the majority of the "turtles" already got removed.
Its average time complexity depends, in addition to the number of elements of the data structure, by a value p, representing the number of divisions carried out.
{% endblock %} {% block medio %} Ω(n2 / 2p) {% endblock %} {% block peggiore %} O(n2) {% endblock %} {% block migliore %} Θ(n × log n) {% endblock %} {% block memoria %} O(1) {% endblock %}