text:
Thursday, May 30, 2013
For the past decade, Ive focused on the MS stack – but the cheese is moving, and its time to look for more cheese!
Henceforth I will focus on C++, JavaScript & Algorithms.
So what happened? NET was well marketed & easy to learn – a massive amount of blogs & reading material ensured the development of communities and pools of skilled employees to draw upon. The language of choice for NET, C#, is a highly efficient programming language, as long as you don't go outside the box.
It is foolish to bet your mortgage on the long term viability of any development platform. What goes up must come down, and the software industry is prone to rapid changes. Do you seriously expect todays skills to be relevant in 10 years?
The fact is, NET just didn't have a tangible ROI for MS (it wasn't a product), but it helped with portability lockin for application servers & dev stations – & that can only work if a critical mass of win OS deployments remains the status quo.
Only 8% of .NET 4.5 classes can be used in Win8 non-desktop apps - http://blogs.msdn.com/b/dotnet/archive/2012/04/17/net-for-metro-style-apps.aspx
Once people figure out they don't need Windows, NET has no where to run on - lets look at the options:
Conclusion: As MS is not selling Win7 anymore, and corporations wont upgrade to Win8 even for desktop mode ? NET is heading to legacy land.
Having said that, I've pretty much decided to put NET behind me.
I consider the past decade a wasted effort of personal esoteric research in MS APIs, for the following reasons:
Whats left that's innovative in NET: LINQ, TPL, RX
We are a long way from developers, developers, developers - MS is refocusing on becoming a devices [that the market has rejected] and services [which boils down to VM re-hosting]
Azure is not the solution for a NET dev - problems:
Win8 fail points:
Win8 == death of .NET - there are 2 grim scenarios:
Win8 does have a dirty trick up its sleeve though - the UEFI monopoly on laptops Ubuntu is idiot proof, but has zero marketing –>and thus zero market awareness. computer stores & OEMs just do not stock desktops / laptops with Linux pre-loaded OS's UEFI stops Wubi - the UEFI secureboot story is currently a bit of a trainwreck: http://www.linuxbsdos.com/2012/11/05/dual-boot-windows-8-and-ubuntu-12-10-on-uefi-hardware/
At this point I don't see Google / Linux attacking MS on their home turf - enterprise computing. The current IT department lock-in stems from skills & infrastructure built around MS Office & the NET framework.
Now that JavaScript has won, there is no great need for IDE bells & whistles.
MS has recognized this, & is scrambling to find some kind of lockin inducing strategy for applications requiring visual studio support (and thus windows):
Office cannot be relied upon to always be a cash cow with demand that requires Windows.
Canonical has done an amazing job with Ubuntu & LibreOffice - It is a viable competing platform & is just a saner economic choice than Win8 + Office 13 licensing in the workplace. However, Ubuntu has zero market mindshare - people are just unaware of its viability.
Likewise, Google is not exactly ratcheting up the marketing engine for ChromeBook & Google Docs in the enterprise.
If Canonical solves its UEFI issues, and both Canonical & Google start marketing their competitive platforms, then MS could be in serious trouble: Instead of guarding their enterprise hen-house (which they have deemed 'legacy'), MS is focusing on an uphill battle in the consumer market.
2 years ago , I was a lot less jaded – I enjoyed the MS dev ecosystem, and scoffed at the term "year of Linux of the Desktop" – (funny how that turned out with Android running on a Linux kernel).
In 2011, I applied for an MVP award in the area of Technical Computing (which is my area of expertise). During this process, the Technical Computing group was dissolved and scattered to other groups - I found myself awarded an MVP … in System Center, which I knew nothing about !
In 2012 I applied again – this time I received an award in Technical Computing, but found myself in the Azure group !
I enjoyed the perks of being an MVP, but as I am heading in different directions, needless to say I wont be re-applying this year !
The fact is I have 3 degrees (BSc Comp Sci, Grad Dip Biotech, MSc Bioinformatics), and I don't feel the need to promote a specific vendor under the auspices of an additional certificate of technical adeptness. So thanks MS, & good journeys on your road.
Well that's my 2 cents
As the human torch says, flame on !
Posted On Thursday, May 30, 2013 8:52 AM | Comments (14)
Monday, January 28, 2013
Unit testing is critical for quality code – they help you:
Google has created a unit testing framework for C++ :
I downloaded Google Test from http://code.google.com/p/googletest/downloads/list and built the solution under the msvc folder (Im using Visual C++ today). I see that there is a lib file created here called gtest-1.6.0\msvc\gtest\Debug\gtestd.lib
I then created a new VC++ Win32 Console App and set the following project properties:
VC++ Directories > Include Directories – added path to ..\ gtest-1.6.0\include
VC++ Directories > Library Directories – added path to ..\ gtest-1.6.0\msvc\gtest\Debug
Linker > Input > Additional Dependencies - added gtestd.lib
All swell ?
I thought so, until I compiled & got the dreaded LNK2005: http://msdn.microsoft.com/en-us/library/72zdcz6f(v=vs.80).aspx
WTF – linker errors ?
To quote Cousin Eddie from National Lampoon's Vacation:
'Everytime Catherine would turn in the microwave I'd piss my pants and forget my name' - C++ often makes me feel like an idiot !
Thank God for Pavel http://blogs.microsoft.co.il/blogs/pavely/ , who pointed out to me that I need to change the C runtime library from DLL multithreaded debug to multithreaded debug:
I could now build.
I added an include to access the Google Test macros:
#include "gtest/gtest.h"
I then created a canonical testable function:
int Factorial(int x, int result = 1) {
if (x == 1) return result; else return Factorial(x - 1, x * result);
if (x == 1) return result;
else return Factorial(x - 1, x * result);
I used the TEST macro to construct a named test – it leveraged the EXPECT_EQ & EXPECT_GT macros to test for equality and greater than respectably.
TEST(FactorialTest, Negative) {
EXPECT_EQ(1, Factorial(-1));
EXPECT_GT(Factorial(-10), 0);
in my main function, I initialized google test & used RUN_ALL_TESTS macro to … run all tests.
int _tmain(int argc, _TCHAR* argv[])
int x;
std::cin >> x;
return 0;
I debugged my code - It breaks into the test:
And I get the following test results displayed:
So I am up & running with C++ Google Test !
Further things to try:
All fun & games !
Posted On Monday, January 28, 2013 12:24 PM | Comments (0)
Saturday, January 12, 2013
2 years ago I built & presented a course on XNA 4: http://www.e4d.co.il/Events/ExpertDays2011/Courses/Details/29
XNA may be dead & buried, but the 3D programming concepts are tech-stack-agnostic – They apply equally well to DirectX. I've extracted this subsection into a set of slides:
enjoy !
Posted On Saturday, January 12, 2013 4:44 AM | Comments (1)
Thursday, January 10, 2013
I've been reading through the C++ Cookbook (an oldie but a goodie – I assume that 99% of C++ out there is not modern C++, and modern C++ does not mean you don't need to be able to grok templates, pointers etc – you may need to port something, or use a 3rd party lib)
Anyway, reading through stream manipulators, from my understanding this is how you pass a generic 'delegate' into a constructor & invoke it:
template<typename T, typename C>
class ManipInfra {
ManipInfra (basic_ostream<C>&
ManipInfra (basic_ostream<C>&
(*pFun) (basic_ostream<C>&, T), T val) // pass in
(*pFun) (basic_ostream<C>&, T), T val) // pass in
: manipFun_(pFun) // init list – init func pointer var , val_(val) {}
: manipFun_(pFun) // init list – init func pointer var
, val_(val) {}
void operator( )(basic_ostream<C>& os) const
void operator( )(basic_ostream<C>& os) const
{ manipFun_(os, val_); // Invoke the generic function pointer with the stream and value }
manipFun_(os, val_); // Invoke the generic function pointer with the stream and value
T val_;
T val_;
basic_ostream<C>& (*manipFun_) (basic_ostream<C>&, T); // a function pointer – a delegate !
basic_ostream<C>& (*manipFun_) (basic_ostream<C>&, T); // a function pointer – a delegate !
Note: C++ 11 has function<T> which provides the same functionality – courtesy of my esteemed colleague Tomer Shamam http://blogs.microsoft.co.il/blogs/tomershamam/ :
class YourClass
YourClass(std:function<return_type (param_type param)> func) {
YourClass(std:function<return_type (param_type param)> func) {
func(param); }
func(param); }
YourClass y([](param_type param){ ...});
Posted On Thursday, January 10, 2013 6:31 AM | Comments (3)
Sunday, December 30, 2012
Over the past year I went into study overdrive: I learned A LOT about C++, Maths, Algorithms, Finance & JavaScript. It was a great year in terms of knowledge acquisition.
pro amore scientiam !
C / C++ is the language for performant algo dev. It also has a higher barrier of entry than C#. While C# is elegant, it is targeted towards LOB apps and it is very easy to pick up à a proliferation of decent NET code monkeys is a career race to the bottom. It is a wise time to move back to C++. Note: I am about to revise this all again !
· C# to C++ guide – a good refresher
· Revise Kinnect API
· WMF from Pavels course - I worked with this API for 2 months this year – non-trivial !
· ConcRT & PPL – I went through everything on msdn + Alon's course materials. Unlike TPL you can control priority. The agent paradigm is quite similar to Axum, TPL DataFlow.
· AMP – see my post here: http://geekswithblogs.net/JoshReuben/archive/2011/12/04/c-amp.aspx
· Book: C++ AMP http://amzn.to/WWxC2J – a great book with much practical advice.
· Win32, strings, pragmas, intrinsics, lbs vs dlls, project settings, etc etc etc
· COM, ATL – be prepared for a lot of dead code out there !
· STL / TR1 – I wrote a set of exercises for a course on this
· Book: Windows via C/C++ http://amzn.to/WWxO1S - essentially thread management – I never realized how insecure Windows was until I read this !
· WRL & C++/CX - just in case pigs fly !
· C++ 11 – some amazing changes to the standard.
3D is an interesting & non-trivial problem domain. I hope to do further work in this area.
· SIGGRAPH – http://www.siggraph.org/asia2011/hong-kong I attended this conference 1 year ago – an eye opening trip into the future! I participated in intense courses on OpenGL & OpenCL.
· Book: Mathematics for Computer Graphics http://amzn.to/WWxwZ2 - I used this to build an XNA course (before it died)
· Book: DirectX http://amzn.to/WWxj81 - see my summary here: http://geekswithblogs.net/JoshReuben/archive/2012/03/14/d3d-11-programming-in-a-nutshell.aspx
· Direct3D tooling – I'll blog on this sooner or later
· RasterTek DirectX tutorials – http://www.rastertek.com/tutindex.html - the only way to learn DX !
· Book: Unity3D http://amzn.to/WWxbph - I built the island, shot coconuts at the hut door, and started a particle fire !
· I did a fair few consults for trading firms – they have unique high performant scalable infrastructure requirements – leave your NET hat at the door ! see my blog post here: http://geekswithblogs.net/JoshReuben/archive/2012/03/26/low-latency-high-performant-financial-app-infrastructures.aspx
· Onyx FIX - http://www.onixs.biz/ – a low latency API for messaging with the FIX (financial information exchange) protocol. Critical for trading systems.
· LMAX – I blogged about this trading API here: http://geekswithblogs.net/JoshReuben/archive/2011/07/08/lmax-.net-api-walkthrough.aspx
· Book: Big Data Glossary http://amzn.to/UpRaJs
· NOSQL – did an investigative comparison
· LMAX Disruptor – amazing ring buffer architectural paradigm: http://lmax-exchange.github.com/disruptor/
· Redis - http://redis.io/ - an incredibly fast distributed in memory cache
Going through life, I feel it is a core personal goal to understand as much as possible about the nature of reality.
· Book: Physics http://amzn.to/WWA610 - a great coffee table book detailing the greatest 500 discoveries in physics
· Schuams Computer Architecture http://amzn.to/UpNXte - an in depth drill down into registers, microcode & memory hierarchies. Very worthwhile read. Hadn't looked at this since my first degree 20 years ago !
· Book: Schaums Vector Analysis http://amzn.to/UpO9IV - nice refresher on linear algebra + some interesting stuff on Stokes Theorem & intro to Tensors
· Book: Schaums Mathematica http://amzn.to/UpPAHm - while this has very little penetration in the Israeli market, it is an amazingly powerful symbolic mathematical programming language environment. I will delve deeper. See my blogpost here: http://geekswithblogs.net/JoshReuben/archive/2012/07/04/mathematica-programming-languagendashan-introduction.aspx
· Book: Excel Scientific Computing http://amzn.to/UpPGyG - everything you need to know about programming excel
· Book: Language instinct - http://amzn.to/UpPPCm - amazing coverage on how language works – will serve me well if I ever head into NLP
· Numerical analysis videos - http://numericalmethods.eng.usf.edu/videos/ - an awesome resource.
· Book: Short Intro to Reality - http://amzn.to/UpQ5Bf - philosophical questions regarding the simulated universe hypothesis – stop thinking like an ant, & read this.
· Book: Short Intro to Sociology - http://amzn.to/UpQbsO - a bit wishy washy, but a good analysis of how & why aspects of cultures are socially constructed
· Book: short intro to Game Theory http://amzn.to/UpQQub - will serve me well if I ever head into constructing a probabilistic reasoning system for decision support.
· Book: Short intro to Nothing http://amzn.to/UpQP9s - Is the Higgs Field the new ether ?
· Book: History of Modern Computing http://amzn.to/UpQV0V - gives you perspective into how fast paradigms can shift
· Book: The Quest for AI http://amzn.to/UpRIPi - a good refresher after reading Norvig & Russell
· Book: C# numerical computing http://amzn.to/UpT9xm - a nice overview via a toy language
· Book: millennium problems http://amzn.to/UpTccv - it is quite amazing to grasp the current limits of our understanding
· Extreme Optimization Library – the strongest C# maths library - http://www.extremeoptimization.com/
· Book: C# ANNs + Encog http://amzn.to/UpTikt - see my blogpost here: http://geekswithblogs.net/JoshReuben/archive/2011/02/04/c-neural-networks-with-encog.aspx
The world is rapidly changing – we don't live in a bubble – its worthwhile to understand the patterns in the undercurrents.
· Book: How the west was lost http://amzn.to/UpTro1
· Book: Cartoon Guide to Macroeconomics http://amzn.to/UpTDUj
· Book: After America http://amzn.to/UpTxMd
· Book: Crash Course http://amzn.to/UpTQql
· Peak Oil http://amzn.to/UpU3K6
I've got a fair few years experience as a web dev – its important to keep abreast of the current Cambrian explosion of JavaScript platforms. JavasScript is pervasive.
· WebGL- a GPU accelerated javascript library for 3D that loads shaders via the canvas 3D context – see my blogpost here: http://geekswithblogs.net/JoshReuben/archive/2012/07/26/an-introduction-to-webgl.aspx
· Book: Javascript pocket guide http://amzn.to/UpUp3v - a good refresher
· JS WebWorkers – true parallelization on the client
· Book: HTML 5 & CSS 3 http://amzn.to/UpUO67 - good overview of whats new
· KnockoutJS – a descent MVVM framework with binding support
· EmberJS – the strongest client side platform – feature rich
· Book: Javascript Design Patterns – good to revise 2 things in one ! http://addyosmani.com/resources/essentialjsdesignpatterns/book/
· Javascript for C# devs http://blog.boyet.com/blog/javascriptlessons/ - a great blog series
· Book: JQuery Pocket Guide http://amzn.to/UpUVP8 - another good refresher
· QUnit – client side unit testing
· JQueryUI
· HTML5 Boilerplate
· Book: ImpactJS HTML5 game programming http://amzn.to/UpV9Wc
· SocketIO , Pusher – WebSockets APIs
· REST API design – consulted on this for a trading client.
· FireBug – amazing debugging capabilities – a must know.
· WebStorm – a great IDE for webdev without the VS bloat
· JSLint / JSHint - code quality tools
· NodeJS – beginners guide http://amzn.to/UpViZR
· NodeJS baby steps & toddler steps - http://elegantcode.com/category/node-js/ - a great blog series
· JS RiverTrail – JavaScript GPGPU – see my blogpost here: http://geekswithblogs.net/JoshReuben/archive/2012/11/29/rivertrail---javascript-gppgu-data-parallelism.aspx
It was definitely a great year in terms of knowledge acquisition.
It is true that I need to consolidate – that's exactly what I am doing now !
Now, this may all seem freaky to your standard LOB dev tradesman drone, who micro-specializes in XAML & WCF.
I have indeed absorbed a lot of disparate information, and I definitely need to revise & get practical hands-on; however once something is conceptualized, it is yours to rapidly refresh on demand forever. Besides, I have made detailed summaries on various topics.
The whole is greater than the sum of the parts – a worthwhile goal in life is to be a renaissance man: http://en.wikipedia.org/wiki/Polymath
I am not just a jack-of-all-trades – I can quickly drill down & become an expert in many topics.
Maths & C++ have opened up many new worlds for me – which I can now dive into in 2013.
Anyone who thinks I have spread myself too thin is just under-estimating me – don't tell me what I cannot do !
Posted On Sunday, December 30, 2012 12:24 AM | Comments (1)
Tuesday, December 25, 2012
I recently read the Big Data Glossary - http://www.amazon.com/Big-Data-Glossary-Pete-Warden/dp/1449314597
Big Data is essentially a MapReduce stack for scatter-gather-aggregate scaleout of compute jobs.
The core tools are:
On top of these are various tools & extensions, as well as ports (e.g. HDInsight )
You also need to be aware of elastic cloud platforms to run on, and the various NoSQL DBs tend to be leveraged in this space as well.
Additionally, MapReduce is just an infrastructure pattern for distributed processing of algorithms – you will not get much usage out of it without knowledge of the appropriate algorithms to leverage on the nodes in your compute grid – the whole point of Big Data.
Posted On Tuesday, December 25, 2012 11:39 AM | Comments (0)
Sunday, December 9, 2012
Numerical Analysis – When, What, (but not how)
Once you understand the Math & know C++, Numerical Methods are basically blocks of iterative & conditional math code. I found the real trick was seeing the forest for the trees – knowing which method to use for which situation. Its pretty easy to get lost in the details – so I've tried to organize these methods in a way that I can quickly look this up.
I've included links to detailed explanations and to C++ code examples.
I've tried to classify Numerical methods in the following broad categories:
Enjoy – I did !
Solve sets of algebraic equations with x unknowns
The set is commonly in matrix form
C++: http://www.codekeep.net/snippets/623f1923-e03c-4636-8c92-c9dc7aa0d3c0.aspx
Produces solution of the equations & the coefficient matrix
Efficient, stable
2 steps:
· Forward Elimination – matrix decomposition: reduce set to triangular form (0s below the diagonal) or row echelon form. If degenerate, then there is no solution
· Backward Elimination –write the original matrix as the product of ints inverse matrix & its reduced row-echelon matrix à reduce set to row canonical form & use back-substitution to find the solution to the set
Elementary ops for matrix decomposition:
· Row multiplication
· Row switching
· Add multiples of rows to other rows
Use pivoting to ensure rows are ordered for achieving triangular form
C++: http://ganeshtiwaridotcomdotnp.blogspot.co.il/2009/12/c-c-code-lu-decomposition-for-solving.html
Represent the matrix as a product of lower & upper triangular matrices
A modified version of GJ Elimination
Advantage – can easily apply forward & backward elimination to solve triangular matrices
· Doolittle Method – sets the L matrix diagonal to unity
· Crout Method - sets the U matrix diagonal to unity
Note: both the L & U matrices share the same unity diagonal & can be stored compactly in the same matrix
C++: http://www.nr.com/forum/showthread.php?t=722
Transform the linear set of equations into a single equation & then use numerical integration (as integration formulas have Sums, it is implemented iteratively).
an optimization of Gauss-Jacobi: 1.5 times faster, requires 0.25 iterations to achieve the same tolerance
find roots of polynomials – there may be 0, 1 or n solutions for an n order polynomial
use iterative techniques
· used when there are no known analytical techniques
· Requires set functions to be continuous & differentiable
· Requires an initial seed value – choice is critical to convergence à conduct multiple runs with different starting points & then select best result
· Systematic - iterate until diminishing returns, tolerance or max iteration conditions are met
· bracketing techniques will always yield convergent solutions, non-bracketing methods may fail to converge
if a nonlinear function has opposite signs at 2 ends of a small interval x1 & x2, then there is likely to be a solution in their interval – solutions are detected by evaluating a function over interval steps, for a change in sign, adjusting the step size dynamically.
Limitations – can miss closely spaced solutions in large intervals, cannot detect degenerate (coinciding) solutions, limited to functions that cross the x-axis, gives false positives for singularities
C++: http://books.google.co.il/books?id=weYj75E_t6MC&pg=PA79&lpg=PA79&dq=fixed+point+method++c%2B%2B&source=bl&ots=LQ-5P_taoC&sig=lENUUIYBK53tZtTwNfHLy5PEWDk&hl=en&sa=X&ei=wezDUPW1J5DptQaMsIHQCw&redir_esc=y#v=onepage&q=fixed%20point%20method%20%20c%2B%2B&f=false
Algebraically rearrange a solution to isolate a variable then apply incremental method
C++: http://numericalcomputing.wordpress.com/category/algorithms/
Bracketed - Select an initial interval, keep bisecting it ad midpoint into sub-intervals and then apply incremental method on smaller & smaller intervals – zoom in
Adv: unaffected by function gradient à reliable
Disadv: slow convergence
C++: http://www.dreamincode.net/forums/topic/126100-bisection-and-false-position-methods/
Bracketed - Select an initial interval , & use the relative value of function at interval end points to select next sub-intervals (estimate how far between the end points the solution might be & subdivide based on this)
C++: http://www-users.cselabs.umn.edu/classes/Summer-2012/csci1113/index.php?page=./newt3
Also known as Newton's method
Convenient, efficient
Not bracketed – only a single initial guess is required to start iteration – requires an analytical expression for the first derivative of the function as input.
Evaluates the function & its derivative at each step.
Can be extended to the Newton MutiRoot method for solving multiple roots
Can be easily applied to an of n-coupled set of non-linear equations – conduct a Taylor Series expansion of a function, dropping terms of order n, rewrite as a Jacobian matrix of PDs & convert to simultaneous linear equations !!!
C++: http://forum.vcoderz.com/showthread.php?p=205230
Unlike N-R, can estimate first derivative from an initial interval (does not require root to be bracketed) instead of inputting it
Since derivative is approximated, may converge slower. Is fast in practice as it does not have to evaluate the derivative at each step.
Similar implementation to False Positive method
C++: http://books.google.co.il/books?id=cL1boM2uyQwC&pg=SA3-PA51&lpg=SA3-PA51&dq=Birge-Vieta+Method+c%2B%2B&source=bl&ots=QZmnDTK3rC&sig=BPNcHHbpR_DKVoZXrLi4nVXD-gg&hl=en&sa=X&ei=R-_DUK2iNIjzsgbE5ID4Dg&redir_esc=y#v=onepage&q=Birge-Vieta%20Method%20c%2B%2B&f=false
combines Horner's method of polynomial evaluation (transforming into lesser degree polynomials that are more computationally efficient to process) with Newton-Raphson to provide a computational speed-up
Construct new data points for as close as possible fit within range of a discrete set of known points (that were obtained via sampling, experimentation)
Use Taylor Series Expansion of a function f(x) around a specific value for x
C++: http://www.hamaluik.com/?p=289
Straight line between 2 points à concatenate interpolants between each pair of data points
C++: http://supercomputingblog.com/graphics/coding-bilinear-interpolation/2/
Extension of the linear function for interpolating functions of 2 variables – perform linear interpolation first in 1 direction, then in another.
Used in image processing – e.g. texture mapping filter. Uses 4 vertices to interpolate a value within a unit cell.
C++: http://www.codecogs.com/code/maths/approximation/interpolation/lagrange.php
For polynomials
Requires recomputation for all terms for each distinct x value – can only be applied for small number of nodes
Numerically unstable
C++: http://www.gamedev.net/topic/621445-barycentric-coordinates-c-code-check/
Rearrange the terms in the equation of the Legrange interpolation by defining weight functions that are independent of the interpolated value of x
C++: http://jee-appy.blogspot.co.il/2011/12/newton-divided-difference-interpolation.html
Hermite Divided Differences:
Interpolation polynomial approximation for a given set of data points in the NR form - divided differences are used to approximately calculate the various differences.
For a given set of 3 data points , fit a quadratic interpolant through the data
Bracketed functions allow Newton divided differences to be calculated recursively
Difference table
C++: https://www.marcusbannerman.co.uk/index.php/home/latestarticles/42-articles/96-cubic-spline-class.html
Spline is a piecewise polynomial
Provides smoothness – for interpolations with significantly varying data
Use weighted coefficients to bend the function to be smooth & its 1st & 2nd derivatives are continuous through the edge points in the interval
A generalization of interpolating whereby given data points may contain noise à the curve does not necessarily pass through all the points
C++: http://www.ccas.ru/mmes/educat/lab04k/02/least-squares.c
Residual – difference between observed value & expected value
Model function is often chosen as a linear combination of the specified functions
A) The model instance in which the sum of squared residuals has the least value
B) param values for which model best fits data
Linear correlation between independent variable and dependent variable
C++: http://www.oocities.org/david_swaim/cpp/linregc.htm
Special case of statistically exact extrapolation
Leverage least squares
Given a basis function, the sum of the residuals is determined and the corresponding gradient equation is expressed as a set of normal linear equations in matrix form that can be solved (e.g. using LU Decomposition)
Can be weighted - Drop the assumption that all errors have the same significance –-> confidence of accuracy is different for each data point. Fit the function closer to points with higher weights
Polynomial Fit - use a polynomial basis function
C++: http://www.codeproject.com/Articles/17860/A-Simple-Moving-Average-Algorithm
Used for smoothing (cancel fluctuations to highlight longer-term trends & cycles), time series data analysis, signal processing filters
Replace each data point with average of neighbors.
Can be simple (SMA), weighted (WMA), exponential (EMA). Lags behind latest data points – extra weight can be given to more recent data points. Weights can decrease arithmetically or exponentially according to distance from point.
Parameters: smoothing factor, period, weight basis
Given function with multiple variables, find Min (or max by minimizing –f(x))
Iterative approach
Efficient, but not necessarily reliable
Conditions: noisy data, constraints, non-linear models
Detection via sign of first derivative - Derivative of saddle points will be 0
Local minima
Similar method for finding a root for a non-linear equation
Start with an interval that contains a minimum
C++: http://www.codecogs.com/code/maths/optimization/golden.php
Bisect intervals according to golden ratio 0.618..
Achieves reduction by evaluating a single function instead of 2
C++: http://people.sc.fsu.edu/~jburkardt/cpp_src/brent/brent.cpp
Based on quadratic or parabolic interpolation – if the function is smooth & parabolic near to the minimum, then a parabola fitted through any 3 points should approximate the minima – fails when the 3 points are collinear , in which case the denominator is 0
C++: http://www.codeguru.com/cpp/article.php/c17505/Simplex-Optimization-Algorithm-and-Implemetation-in-C-Programming.htm
Find the global minima of any multi-variable function
Direct search – no derivatives required
At each step it maintains a non-degenerative simplex – a convex hull of n+1 vertices.
Obtains the minimum for a function with n variables by evaluating the function at n-1 points, iteratively replacing the point of worst result with the point of best result, shrinking the multidimensional simplex around the best point.
Point replacement involves expanding & contracting the simplex near the worst value point to determine a better replacement point
Oscillation can be avoided by choosing the 2nd worst result
Restart if it gets stuck
Parameters: contraction & expansion factors
C++: http://code.google.com/p/cppsimulatedannealing/
Analogy to heating & cooling metal to strengthen its structure
Stochastic method – apply random permutation search for global minima - Avoid entrapment in local minima via hill climbing
Heating schedule - Annealing schedule params: temperature, iterations at each temp, temperature delta
Cooling schedule – can be linear, step-wise or exponential
C++: http://www.amichel.com/de/doc/html/
More advanced stochastic methods analogous to biological processes: Genetic algorithms, evolution strategies
Parallel direct search method against multiple discrete or continuous variables
Initial population of variable vectors chosen randomly – if weighted difference vector of 2 vectors yields a lower objective function value then it replaces the comparison vector
Many params: #parents, #variables, step size, crossover constant etc
Convergence is slow – many more function evaluations than simulated annealing
2 approaches to finite difference methods:
· A) approximate function via polynomial interpolation then differentiate
· B) Taylor series approximation – additionally provides error estimate
C++: http://www.wpi.edu/Pubs/ETD/Available/etd-051807-164436/unrestricted/EAMPADU.pdf
Find differences between high order derivative values - Approximate differential equations by finite differences at evenly spaced data points
Based on forward & backward Taylor series expansion of f(x) about x plus or minus multiples of delta h.
Forward / backward difference - the sums of the series contains even derivatives and the difference of the series contains odd derivatives – coupled equations that can be solved.
Provide an approximation of the derivative within a O(h^2) accuracy
There is also central difference & extended central difference which has a O(h^4) accuracy
C++: http://mathscoding.blogspot.co.il/2012/02/introduction-richardson-extrapolation.html
A sequence acceleration method applied to finite differences
Fast convergence, high accuracy O(h^4)
Cannot apply Finite Difference method to discrete data points at uneven intervals – so need to approximate the derivative of f(x) using the derivative of the interpolant via 3 point Lagrange Interpolation
Note: the higher the order of the derivative, the lower the approximation precision
Estimate finite & infinite integrals of functions
More accurate procedure than numerical differentiation
Use when it is not possible to obtain an integral of a function analytically or when the function is not given, only the data points are
C++: http://www.siafoo.net/snippet/324
For equally spaced data points
Computationally easy – based on local interpolation of n rectangular strip areas that is piecewise fitted to a polynomial to get the sum total area
Evaluate the integrand at n+1 evenly spaced points – approximate definite integral by Sum
Weights are derived from Lagrange Basis polynomials
Leverage Trapezoidal Rule for default 2nd formulas, Simpson 1/3 Rule for substituting 3 point formulas, Simpson 3/8 Rule for 4 point formulas. For 4 point formulas use Bodes Rule. Higher orders obtain more accurate results
Trapezoidal Rule uses simple area, Simpsons Rule replaces the integrand f(x) with a quadratic polynomial p(x) that uses the same values as f(x) for its end points, but adds a midpoint
C++: http://code.google.com/p/romberg-integration/downloads/detail?name=romberg.cpp&can=2&q=
Combines trapezoidal rule with Richardson Extrapolation
Evaluates the integrand at equally spaced points
The integrand must have continuous derivatives
Each R(n,m) extrapolation uses a higher order integrand polynomial replacement rule (zeroth starts with trapezoidal) à a lower triangular matrix set of equation coefficients where the bottom right term has the most accurate approximation. The process continues until the difference between 2 successive diagonal terms becomes sufficiently small.
C++: http://www.alglib.net/integration/gaussianquadratures.php
Data points are chosen to yield best possible accuracy – requires fewer evaluations
Ability to handle singularities, functions that are difficult to evaluate
The integrand can include a weighting function determined by a set of orthogonal polynomials.
Points & weights are selected so that the integrand yields the exact integral if f(x) is a polynomial of degree <= 2n+1
Techniques (basically different weighting functions):
· Gauss-Legendre Integration w(x)=1
· Gauss-Laguerre Integration w(x)=e^-x
· Gauss-Hermite Integration w(x)=e^-x^2
· Gauss-Chebyshev Integration w(x)= 1 / Sqrt(1-x^2)
Use when high order differential equations cannot be solved analytically
Evaluated under boundary conditions
RK for systems – a high order differential equation can always be transformed into a coupled first order system of equations
C++: http://rosettacode.org/wiki/Euler_method
First order Runge–Kutta method.
Simple recursive method – given an initial value, calculate derivative deltas.
Unstable & not very accurate (O(h) error) – not used in practice
A first-order method - the local error (truncation error per step) is proportional to the square of the step size, and the global error (error at a given time) is proportional to the step size
In evolving solution between data points xn & xn+1, only evaluates derivatives at beginning of interval xn à asymmetric at boundaries
C++: http://www.dreamincode.net/code/snippet1441.htm
2nd & 4th order RK - Introduces parameterized midpoints for more symmetric solutions à accuracy at higher computational cost
Adaptive RK – RK-Fehlberg – estimate the truncation at each integration step & automatically adjust the step size to keep error within prescribed limits. At each step 2 approximations are compared – if in disagreement to a specific accuracy, the step size is reduced
Where solution of differential equations are located at 2 different values of the independent variable x à more difficult, because cannot just start at point of initial value – there may not be enough starting conditions available at the end points to produce a unique solution
An n-order equation will require n boundary conditions – need to determine the missing n-1 conditions which cause the given conditions at the other boundary to be satisfied
C++: http://ganeshtiwaridotcomdotnp.blogspot.co.il/2009/12/c-c-code-shooting-method-for-solving.html
Iteratively guess the missing values for one end & integrate, then inspect the discrepancy with the boundary values of the other end to adjust the estimate
Given the starting boundary values u1 & u2 which contain the root u, solve u given the false position method (solving the differential equation as an initial value problem via 4th order RK), then use u to solve the differential equations.
For linear & non-linear systems
Higher order derivatives require more computational steps – some combinations for boundary conditions may not work though
Improve the accuracy by increasing the number of mesh points
An eigenvalue can substitute a matrix when doing matrix multiplication à convert matrix multiplication into a polynomial EigenValue
For a given set of equations in matrix form, determine what are the solution eigenvalue & eigenvectors
Similar Matrices - have same eigenvalues. Use orthogonal similarity transforms to reduce a matrix to diagonal form from which eigenvalue(s) & eigenvectors can be computed iteratively
C++: http://people.sc.fsu.edu/~jburkardt/classes/acs2_2008/openmp/jacobi/jacobi.html
Robust but Computationally intense – use for small matrices < 10x10
For any given real symmetric matrix, generate the largest single eigenvalue & its eigenvectors
Simplest method – does not compute matrix decomposition à suitable for large, sparse matrices
Variation of power iteration method – generates the smallest eigenvalue from the inverse matrix
Variation of power iteration method
Variation of inverse iteration method
Use householder algorithm to reduce an NxN symmetric matrix to a tridiagonal real symmetric matrix vua N-2 orthogonal transforms
Outside of Numerical Methods there are lots of different types of algorithms that I've learned over the decades:
Sooner or later, I'll cover the above topics as well.
Posted On Sunday, December 9, 2012 5:28 AM | Comments (0)
Thursday, November 29, 2012
I am about to embark on a great journey – over the next 6 weeks I plan to read through C++ Numerical Recipes 3rd edition http://amzn.to/YtdpkS
I'll be reading this with an eye to C++ AMP, thinking about implementing the suitable subset (non-recursive, additive, commutative) to run on the GPU.
APIs supporting HPC, GPGPU or MapReduce are all useful – providing you have the ability to choose the correct algorithm to leverage on them.
I really think this is the most fascinating area of programming – a lot more exciting than LOB CRUD !!!
When you think about it , everything is a function – we categorize & we extrapolate.
As abstractions get higher & less leaky, sooner or later information systems programming will become a non-programmer task – you will be using WYSIWYG designers to build:
SharePoint / LightSwitch are not there yet, but every iteration gets closer.
For information workers, managed code is a race to the bottom.
As MS futures are a bit shaky right now, the provider agnostic nature & higher barriers of entry of both C++ & Numerical Analysis seem like a rational choice to me.
Its also fascinating – stepping outside the box.
This is not the first time I've delved into numerical analysis.
6 months ago I read Numerical methods with Applications, which can be found for free online: http://nm.mathforcollege.com/
2 years ago I learned the .NET Extreme Optimization library www.extremeoptimization.com – not bad
2.5 years ago I read Schaums Numerical Analysis book http://amzn.to/V5yuLI - not an easy read, as topics jump back & forth across chapters:
3 years ago I read Practical Numerical Methods with C# http://amzn.to/V5yCL9 (which is a toy learning language for this kind of stuff)
I also read through AI a Modern Approach 3rd edition END to END http://amzn.to/V5yQSp - this took me a few years but was the most rewarding experience.
I'll post progress updates – see you on the other side !
Posted On Thursday, November 29, 2012 3:21 PM | Comments (2)
Intel Labs JavaScript RiverTrail provides GPU accelerated SIMD data-parallelism in web applications via a familiar JavaScript programming paradigm. It extends JavaScript with simple deterministic data-parallel constructs that are translated at runtime into a low-level hardware abstraction layer. With its high-level JS API, programmers do not have to learn a new language or explicitly manage threads, orchestrate shared data synchronization or scheduling. It has been proposed as a draft specification to ECMA a (known as ECMA strawman).
RiverTrail runs in all popular browsers (except I.E. of course).
To get started, download a prebuilt version https://github.com/downloads/RiverTrail/RiverTrail/rivertrail-0.17.xpi , install Intel's OpenCL SDK http://www.intel.com/go/opencl and try out the interactive River Trail shell http://rivertrail.github.com/interactive
For a video overview, see http://www.youtube.com/watch?v=jueg6zB5XaM .
the ParallelArray type is the central component of this API & is a JS object that contains ordered collections of scalars – i.e. multidimensional uniform arrays. A shape property describes the dimensionality and size– e.g. a 2D RGBA image will have shape [height, width, 4]. ParallelArrays are immutable & fluent – they are manipulated by invoking methods on them which produce new ParallelArray objects. ParallelArray supports several constructors over arrays, functions & even the canvas.
// Create an empty Parallel Array
var pa = new ParallelArray();
// pa0 = <>
// Create a ParallelArray out of a nested JS array.
// Note that the inner arrays are also ParallelArrays
var pa = new ParallelArray([ [0,1], [2,3], [4,5] ]);
// pa1 = <<0,1>, <2,3>, <4.5>>
// Create a two-dimensional ParallelArray with shape [3, 2] using the comprehension constructor
var pa = new ParallelArray([3, 2], function(iv){return iv[0] * iv[1];});
// pa7 = <<0,0>, <0,1>, <0,2>>
// Create a ParallelArray from canvas. This creates a PA with shape [w, h, 4],
var pa = new ParallelArray(canvas);
// pa8 = CanvasPixelArray
ParallelArray exposes fluent API functions that take an elemental JS function for data manipulation: map, combine, scan, filter, and scatter that return a new ParallelArray. Other functions are scalar - reduce returns a scalar value & get returns the value located at a given index.
The onus is on the developer to ensure that the elemental function does not defeat data parallelization optimization (avoid global var manipulation, recursion).
For reduce & scan, order is not guaranteed - the onus is on the dev to provide an elemental function that is commutative and associative so that scan will be deterministic – E.g. Sum is associative, but Avg is not.
Applies a provided elemental function to each element of the source array and stores the result in the corresponding position in the result array. The map method is shape preserving & index free - can not inspect neighboring values.
var source = new ParallelArray([1,2,3,4,5]);
var plusOne = source.map(function inc(v) {
return v+1; }); //<2,3,4,5,6>
Combine is similar to map, except an index is provided. This allows elemental functions to access elements from the source array relative to the one at the current index position. While the map method operates on the outermost dimension only, combine, can choose how deep to traverse - it provides a depth argument to specify the number of dimensions it iterates over. The elemental function of combine accesses the source array & the current index within it - element is computed by calling the get method of the source ParallelArray object with index i as argument. It requires more code but is more expressive.
var plusOne = source.combine(function inc(i) { return this.get(i)+1; });
reduces the elements from an array to a single scalar result – e.g. Sum.
// Calculate the sum of the elements
var sum = source.reduce(function plus(a,b) { return a+b; });
Like reduce, but stores the intermediate results – return a ParallelArray whose ith elements is the results of using the elemental function to reduce the elements between 0 and I in the original ParallelArray.
// do a partial sum
var psum = source.scan(function plus(a,b) { return a+b; }); //<1, 3, 6, 10, 15>
a reordering function - specify for a certain source index where it should be stored in the result array.
An optional conflict function can prevent an exception if two source values are assigned the same position of the result:
var reorder = source.scatter([4,0,3,1,2]); // <2, 4, 5, 3, 1>
var reorder = source.scatter([4,0,3,1,2]);
// <2, 4, 5, 3, 1>
// if there is a conflict use the max. use 33 as a default value.
var reorder = source.scatter([4,0,3,4,2], 33, function max(a, b) {return a>b?a:b; }); //<2, 33, 5, 3, 4>
var reorder = source.scatter([4,0,3,4,2], 33, function max(a, b) {return a>b?a:b; });
//<2, 33, 5, 3, 4>
// filter out values that are not even
var even = source.filter(function even(iv) { return (this.get(iv) % 2) == 0; }); // <2,4>
used to collapse the outer dimensions of an array into a single dimension.
pa = new ParallelArray([ [1,2], [3,4] ]); // <<1,2>,<3,4>>
pa.flatten(); // <1,2,3,4>
used to restore the original shape of the array.
var pa = new ParallelArray([1,2,3,4]); // <1,2,3,4>
pa.partition(2); // <<1,2>,<3,4>>
return value found at the indices or undefined if no such value exists.
var pa = new ParallelArray([0,1,2,3,4], [10,11,12,13,14], [20,21,22,23,24])
pa.get([1,1]); // 11
pa.get([1]); // <10,11,12,13,14>
Posted On Thursday, November 29, 2012 9:02 AM | Comments (1)
Sunday, October 28, 2012
ASP.NET Web API is an ideal platform for building RESTful applications on the .NET Framework. While I may be more partial to NodeJS these days, there is no denying that WebAPI is a well engineered framework.
What follows is my investigation of how to leverage WebAPI to construct a RESTful frontend API.
· utilize HTTP Protocol - Usage of HTTP methods for CRUD, standard HTTP response codes, common HTTP headers and Mime Types
· Resources are mapped to URLs, actions are mapped to verbs and the rest goes in the headers.
· keep the API semantic, resource-centric – A RESTful, resource-oriented service exposes a URI for every piece of data the client might want to operate on. A REST-RPC Hybrid exposes a URI for every operation the client might perform: one URI to fetch a piece of data, a different URI to delete that same data. utilize Uri to specify CRUD op, version, language, output format:
· entity CRUD operations are matched to HTTP methods:
· Use Uris to represent a hierarchies - Resources in RESTful URLs are often chained
· Statelessness allows for idempotency – apply an op multiple times without changing the result. POST is non-idempotent, the rest are idempotent (if DELETE flags records instead of deleting them).
· Cache indication - Leverage HTTP headers to label cacheable content and indicate the permitted duration of cache
· PUT vs POST - The client uses PUT when it determines which URI (Id key) the new resource should have. The client uses POST when the server determines they key. PUT takes a second param – the id. POST creates a new resource. The server assigns the URI for the new object and returns this URI as part of the response message. Note: The PUT method replaces the entire entity. That is, the client is expected to send a complete representation of the updated product. If you want to support partial updates, the PATCH method is preferred
DELETE deletes a resource at a specified URI – typically takes an id param
· Leverage Common HTTP Response Codes in response headers
· Leverage uncommon HTTP Verbs to reduce payload sizes
· When using PUT, POST or PATCH, send the data as a document in the body of the request. Don't use query parameters to alter state.
· Utilize Headers for content negotiation, caching, authorization, throttling
o Content Negotiation – choose representation (e.g. JSON or XML and version), language & compression. Signal via RequestHeader.Accept & ResponseHeader.Content-Type
Accept: application/json;version=1.0
Accept-Language: en-US
Accept-Charset: UTF-8
Accept-Encoding: gzip
o Caching - ResponseHeader: Expires (absolute expiry time) or Cache-Control (relative expiry time)
o Authorization - basic HTTP authentication uses the RequestHeader.Authorization to specify a base64 encoded string "username:password". can be used in combination with SSL/TLS (HTTPS) and leverage OAuth2 3rd party token-claims authorization.
Authorization: Basic sQJlaTp5ZWFslylnaNZ=
o Rate Limiting - Not currently part of HTTP so specify non-standard headers prefixed with X- in the ResponseHeader.
X-RateLimit-Limit: 10000
X-RateLimit-Remaining: 9990
· HATEOAS Methodology - Hypermedia As The Engine Of Application State – leverage API as a state machine where resources are states and the transitions between states are links between resources and are included in their representation (hypermedia) – get API metadata signatures from the response Link header - in a truly REST based architecture any URL, except the initial URL, can be changed, even to other servers, without worrying about the client.
· error responses - Do not just send back a 200 OK with every response. Response should consist of HTTP error status code (JQuery has automated support for this), A human readable message , A Link to a meaningful state transition , & the original data payload that was problematic.
· the URIs will typically map to a server-side controller and a method name specified by the type of request method. Stuff all your calls into just four methods is not as crazy as it sounds.
· Scoping - Path variables look like you're traversing a hierarchy, and query variables look like you're passing arguments into an algorithm
· Mapping URIs to Controllers - have one controller for each resource is not a rule – can consolidate - route requests to the appropriate controller and action method
· Keep URls Consistent - Sometimes it's tempting to just shorten our URIs. not recommend this as this can cause confusion
· Join Naming – for m-m entity relations there may be multiple hierarchy traversal paths
· Routing – useful level of indirection for versioning, server backend mocking in development
ASPNET WebAPI implements a lot (but not all) RESTful API design considerations as part of its infrastructure and via its coding convention.
When developing an API there are basically three main steps:
1. Plan out your URIs
2. Setup return values and response codes for your URIs
3. Implement a framework for your API.
· Leverage Models MVC folder
· Repositories – support IoC for tests, abstraction
· Create DTO classes – a level of indirection decouples & allows swap out
· Self links can be generated using the UrlHelper
· Use IQueryable to support projections across the wire
· Models can support restful navigation properties – ICollection<T>
· async mechanism for long running ops - return a response with a ticket – the client can then poll or be pushed the final result later.
· Design for testability - Test using HttpClient , JQuery ( $.getJSON , $.each) , fiddler, browser debug. Leverage IDependencyResolver – IoC wrapper for mocking
· Easy debugging - IE F12 developer tools: Network tab, Request Headers tab
· HTTP request method is matched to the method name. (This rule applies only to GET, POST, PUT, and DELETE requests.)
· {id}, if present, is matched to a method parameter named id.
· Query parameters are matched to parameter names when possible
· Done in config via Routes.MapHttpRoute – similar to MVC routing
· Can alternatively:
· route table Uris can support placeholders (via curly braces{}) – these can support default values and constraints, and optional values
· The framework selects the first route in the route table that matches the URI.
· Response code: By default, the Web API framework sets the response status code to 200 (OK). But according to the HTTP/1.1 protocol, when a POST request results in the creation of a resource, the server should reply with status 201 (Created). Non Get methods should return HttpResponseMessage
· Location: When the server creates a resource, it should include the URI of the new resource in the Location header of the response.
public HttpResponseMessage PostProduct(Product item)
{ item = repository.Add(item);
var response = Request.CreateResponse<Product>(HttpStatusCode.Created, item);
string uri = Url.Link("DefaultApi", new { id = item.Id });
response.Headers.Location = new Uri(uri);
return response;
· Decorate Models / DTOs with System.ComponentModel.DataAnnotations properties RequiredAttribute, RangeAttribute.
· Check payloads using ModelState.IsValid
· Under posting – leave out values in JSON payload à JSON formatter assigns a default value. Use with RequiredAttribute
· Over-posting - if model has RO properties à use DTO instead of model
· Can hook into pipeline by deriving from ActionFilterAttribute & overriding OnActionExecuting
· Done in App_Start folder > WebApiConfig.cs – static Register method: HttpConfiguration param: The HttpConfiguration object contains the following members.
Enables dependency injection for controllers.
Action filters – e.g. exception filters.
Media-type formatters. by default contains JsonFormatter, XmlFormatter
Specifies whether the server should include error details, such as exception messages and stack traces, in HTTP response messages.
A function that performs final initialization of the HttpConfiguration.
HTTP message handlers - plug into pipeline
A collection of rules for binding parameters on controller actions.
A generic property bag.
The collection of routes.
The collection of services.
· Configure JsonFormatter for circular references to support links: PreserveReferencesHandling.Objects
· create a help page for a web API, by using the ApiExplorer class.
· The ApiExplorer class provides descriptive information about the APIs exposed by a web API as an ApiDescription collection
· create the help page as an MVC view
public ILookup<string, ApiDescription> GetApis() { return _explorer.ApiDescriptions.ToLookup( api => api.ActionDescriptor.ControllerDescriptor.ControllerName);
· provide documentation for your APIs by implementing the IDocumentationProvider interface. Documentation strings can come from any source that you like – e.g. extract XML comments or define custom attributes to apply to the controller
[ApiDoc("Gets a product by ID.")] [ApiParameterDoc("id", "The ID of the product.")] public HttpResponseMessage Get(int id)
· GlobalConfiguration.Configuration.Services – add the documentation Provider
· To hide an API from the ApiExplorer, add the ApiExplorerSettingsAttribute
· Plug into request / response pipeline – derive from DelegatingHandler and override theSendAsync method – e.g. for logging error codes, adding a custom response header
· Can be applied globally or to a specific route
· Throw HttpResponseException on method failures – specify HttpStatusCode enum value – examine this enum, as its values map well to typical op problems
· Exception filters – derive from ExceptionFilterAttribute & override OnException. Apply on Controller or action methods, or add to global HttpConfiguration.Filters collection
· HttpError object provides a consistent way to return error information in the HttpResponseException response body.
· For model validation, you can pass the model state to CreateErrorResponse, to include the validation errors in the response
public HttpResponseMessage PostProduct(Product item) { if (!ModelState.IsValid) { return Request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState);
· Cookie header in request and Set-Cookie headers in a response - Collection of CookieState objects
· Specify Expiry, max-age
resp.Headers.AddCookies(new CookieHeaderValue[] { cookie });
· Defaults to application/json
· Request Accept header and response Content-Type header
· determines how Web API serializes and deserializes the HTTP message body. There is built-in support for XML, JSON, and form-urlencoded data
· customizable formatters can be inserted into the pipeline
· POCO serialization is opt out via JsonIgnoreAttribute, or use DataMemberAttribute for optin
· JSON serializer leverages NewtonSoft Json.NET
· loosely structured JSON objects are serialzed as JObject which derives from Dynamic
· to handle circular references in json:
json.SerializerSettings.PreserveReferencesHandling = PreserveReferencesHandling.All à {"$ref":"1"}.
· To preserve object references in XML
· Content negotiation
o Web API uses the Accept and Accept-Charset headers. (At this time, there is no built-in support for Accept-Encoding or Accept-Language.)
· Controller methods can take JSON representations of DTOs as params – auto-deserialization
· Typical JQuery GET request:
function find() {
var id = $('#prodId').val();
$.getJSON("api/products/" + id,
function (data) {
var str = data.Name + ': $' + data.Price;
function (jqXHR, textStatus, err) {
$('#product').text('Error: ' + err);
· Typical GET response:
Server: ASP.NET Development Server/10.0.0.0
Date: Mon, 18 Jun 2012 04:30:33 GMT
X-AspNet-Version: 4.0.30319
Cache-Control: no-cache
Pragma: no-cache
Expires: -1
Content-Type: application/json; charset=utf-8
Content-Length: 175
Connection: Close
[{"Id":1,"Name":"TomatoSoup","Price":1.39,"ActualCost":0.99},{"Id":2,"Name":"Hammer", "Price":16.99,"ActualCost":10.00},{"Id":3,"Name":"Yo yo","Price":6.99,"ActualCost": 2.05}]
· Leverage Query Options $filter, $orderby, $top and $skip to shape the results of controller actions annotated with the [Queryable]attribute.
[Queryable] public IQueryable<Supplier> GetSuppliers()
· Query:
~/Suppliers?$filter=Name eq 'Microsoft'
· Applies the following selection filter on the server:
GetSuppliers().Where(s => s.Name == "Microsoft")
· Will pass the result to the formatter.
· true support for the OData format is still limited - no support for creates, updates, deletes, $metadata and code generation etc
· vnext: ability to configure how EditLinks, SelfLinks and Ids are generated
no dependency on ASPNET or IIS:
using (var server = new HttpSelfHostServer(config))
{ server.OpenAsync().Wait();
· tracability tools, metrics – e.g. send to nagios
· use your choice of tracing/logging library, whether that is ETW,NLog, log4net, or simply System.Diagnostics.Trace.
· To collect traces, implement the ITraceWriter interface
public class SimpleTracer : ITraceWriter { public void Trace(HttpRequestMessage request, string category, TraceLevel level, Action<TraceRecord> traceAction) { TraceRecord rec = new TraceRecord(request, category, level); traceAction(rec); WriteTrace(rec);
· register the service with config
· programmatically trace – has helper extension methods:
· Performance tracing - pipeline writes traces at the beginning and end of an operation - TraceRecord class includes aTimeStamp property, Kind property set to TraceKind.Begin / End
· Roles class methods: RoleExists, AddUserToRole
· WebSecurity class methods: UserExists, .CreateUserAndAccount
· Request.IsAuthenticated
· Leverage HTTP 401 (Unauthorized) response
· [AuthorizeAttribute(Roles="Administrator")] – can be applied to Controller or its action methods
· See section in WebApi document on "Claim-based-security for ASP.NET Web APIs using DotNetOpenAuth" – adapt this to STS.--> Web API Host exposes secured Web APIs which can only be accessed by presenting a valid token issued by the trusted issuer. http://zamd.net/2012/05/04/claim-based-security-for-asp-net-web-apis-using-dotnetopenauth/
· Use MVC membership provider infrastructure and add a DelegatingHandler child class to the WebAPI pipeline - http://stackoverflow.com/questions/11535075/asp-net-mvc-4-web-api-authentication-with-membership-provider - this will perform the login actions
· Then use AuthorizeAttribute on controllers and methods for role mapping- http://sixgun.wordpress.com/2012/02/29/asp-net-web-api-basic-authentication/
· Alternate option here is to rely on MVC App : http://forums.asp.net/t/1831767.aspx/1
Posted On Sunday, October 28, 2012 6:22 PM | Comments (6)
Copyright © JoshReuben
Design by Bartosz Brzezinski
Design by Phil Haack Based On A Design By Bartosz Brzezinski


text:
Is your resume in need of a little disruption?
Startups are all about
making things work better.
Our resume writing service is all about doing that for your CV.
StartUpHire is the place to find Sales jobs in and near Wayne. Review the list below of Sales Wayne jobs. These Sales jobs represent some of the most rewarding careers available. You can refine your job search for Sales jobs in Wayne by adding a job title, company name, or keyword to the search box above … or click the "Advanced Search" link for more options. Don't see the employment opportunity you're looking for? Check back soon for more Sales jobs in Wayne, or sign up for an email alert (link in upper left) to receive periodic updates on new Sales jobs in Wayne, PA.
About IntegriChain IntegriChain is a leading channel data management and analytics company focused on helping companies make better business decisions using their own channel data. We enable pharmaceutical manufacturers to improve sales performance and total pipeline measurement8/25/2014 Princeton, NJ Save This Job
Common information: We are looking for an experienced Java Solutions Architect ? very senior technical consultant who is a critical resource when scoping, designing, and ultimately delivering a complex technical solution; a technology expert well versed in full stack modern Java8/24/2014 Lawrenceville, NJ Save This Job
We are currently seeking a Digital Business Consultant for perm, full time opportunities to join our Philadelphia area team of professionals. Our ideal candidate will Act as the Digital Strategy and Experience Design Solution Practice lead with clients, prospects, and EPAM8/24/2014 Conshohocken, PA Save This Job
Description The Group Manager of Meetings and Travel will be responsible for overall planning, coordination, and successful execution of Globus meetings, events and travel. The person needs to have strong self-starting qualities to independently manage a team of meeting planners8/23/2014 Audubon, PA Save This Job
COMPANY PROFILE: InstaMed is a rapidly growing healthcare technology company that has established itself as a leader in the emerging market of healthcare payments. InstaMed?s solutions are delivered via its proprietary cloud-based platform and network of healthcare providers8/9/2014 Philadelphia, PA Save This Job
Category: Domestic Minimum Experience: 5 - 10 years Required Education: BS or MS Job Description Overview: This Director role will provide program management oversight and leadership for AGI?s execution of the JMS Program. Essential Duties include: Lead contract8/5/2014 Exton, PA Save This Job
In-Store Product Promoters Brad?s Raw Foods is looking for in-store product promoters. Your role would be to go into our retailer stores for 3-4 hour shifts to sample, inform and educate people about the products and encourage sales. This is a part-time, ongoing8/5/2014 Pipersville, PA Save This Job
Job Description Job TitleStaff Accountant Job ID822434 LocationExton, PA 19341 Other Location DescriptionPosition Summary: The primary responsibilities of the Staff Accountant will be the management of the invoicing process but will also include general accounting functions9/30/2014 Exton, PA Save This Job
We are looking for Partner Success Associate (PSA) to join our incredibly successful team. PSAs are responsible for the on-going success of our Service Provider partners, as well as general account management. Are you competitive, self-motivated, energetic, and have previous9/29/2014 Blue Bell, PA Save This Job
This position will involve supporting business operations at a biotechnology company, Integral Molecular. Primary responsibilities will involve supporting sales, marketing, and business development operations and working directly with senior management on product9/26/2014 Philadelphia, PA Save This Job
Description The Project Engineer will be responsible for all engineering functions of their product lines. This includes bringing a product from idea/concept through design, prototyping, development testing,design verification and validation, manufacturing, FDA approvals, product9/22/2014 Audubon, PA Save This Job
Education: Bachelor/master degree in Software or Electrical engineering or Physics Experience Level: > 2 Years (Exceptional fresh graduates are encouraged to apply) Salary Range: Depends on qualification We?re looking9/17/2014 Newtown, PA Save This Job
Education: Bachelor, Master, or Ph.D. degree in Physics or Electrical engineering Experience Level: > 2 Years (Exceptional fresh graduates are encouraged to apply) Salary Range: Depends on qualification We?re looking9/17/2014 Newtown, PA Save This Job
Location: Princeton, NJ NIKSUN is the recognized worldwide leader in making the Unknown Known, by using next generation technology that revolutionizes the way networks and services are secured, protected and managed. The company develops and deploys a complete range of9/16/2014 Princeton, NJ Save This Job
Job Description: Genoa, a QoL Healthcare Company is the leader in behavioral healthcare specialty pharmacy solutions. Serving more than 300,000 individuals with a mental illness across 34 states, we are a rapidly growing and successful organization with a strong reputation in9/15/2014 Lawrence Township, NJ Save This Job
More information about this job: Overview: We are a rapidly growing organization, with 60% year-over-year organic growth. We have received numerous industry accolades, including 33rd on Forbes' America's Most Promising Companies in 2014. We are extremely passionate about our9/10/2014 Philadelphia, PA Save This Job
mPortal is looking for an Philadelphia-based iOS Developer with experience in iPhone and iPad development. Reporting to mPortal?s Service Delivery Manager, the iOS Developer will work with other US developers, and its off-shore development center in Bangalore, India. This9/10/2014 Philadelphia, PA Save This Job
This position provides experienced technical input in the Electrical and Controls Engineering discipline for the design, implementation, and support of the products, devices, and services produced by SP Industries for the appropriate markets and industries. Responsibilities9/9/2014 Warminster, PA Save This Job
Reports to: Sr. Director, Information Technology Role: Manage user experience and functionality by designing new products and enhancing existing products through technically rigorous, strategically sound business analysis. Organize and track work efforts to project completion.9/3/2014 Horsham, PA Save This Job
A Communications and Marketing Specialist at Zonoff is responsible for developing and managing marketing communications. In this role, you will assist with all aspects of internal and external messaging, communications, events, and processes, through various channels:9/1/2014 Malvern, PA Save This Job

subset: commoncrawl


text:
Signs of a Skin Infection After a Tattoo or Body Piercing
Signs of a Skin Infection After a Tattoo or Body Piercing
A skin infection may be present if any of the following symptoms are present after having a tattoo or body piercing:
Infection may start at the tattoo or piercing site on the surface of the skin. The normal clear or clear-yellow fluid that drains from a body piercing site may change to creamy yellow, brown, or red or look or smell like pus.
Infection may also occur deep inside the wound, with few noticeable signs at the site. Pain and swelling may develop. The skin over a tattoo or around a body piercing may heal while an infection is present in the wound, causing a more serious infection, such as an abscess or cellulitis. Infection can also spread to involve the bones (osteomyelitis), the joints (septic arthritis), or the whole body (sepsis).
Certain diseases may increase your risk for a serious infection. People with diabetes, peripheral arterial disease, or an impaired immune system may require medical treatment at the first signs of infection.
You can decrease the risk of infection if you follow the home treatment steps for cleaning and caring for a wound. Prompt treatment of an infection can prevent more serious problems.
eMedicineHealth Medical Reference from Healthwise
This information does not replace the advice of a doctor. Healthwise disclaims any warranty or liability for your use of this information. Your use of this information means that you agree to the Terms of Use. How this information was developed to help you make better health decisions.
To learn more visit Healthwise.org
© 1995-2012 Healthwise, Incorporated. Healthwise, Healthwise for every health decision, and the Healthwise logo are trademarks of Healthwise, Incorporated.
home > topics a-z list > signs of a skin infection after a tattoo or body piercing healthwise article


text:
Duration: 8 minutes
Local news worth watching from across Northern Ireland, followed by national weather.
BBC © 2014 The BBC is not responsible for the content of external sites. Read more.
This page is best viewed in an up-to-date web browser with style sheets (CSS) enabled. While you will be able to view the content of this page in your current browser, you will not be able to get the full visual experience. Please consider upgrading your browser software or enabling style sheets (CSS) if you are able to do so.


text:
5 Easy Pantry Meals with Cauliflower
Ok, so cauliflower is really more of a fridge item than a pantry item. But the fact that a head of cauliflower will keep just fine in the crisper drawer for quite some time and be turned into a full meal at a moment's notice makes it a pantry staple in my book. Here are five easy recipes to fall back on.
I love how cauliflower takes on whatever flavors it's cooked with. This makes cauliflower equally at home in an Indian curry or an herb-flecked casserole. Even chopped up raw in a salad, it's crunchy texture and mild flavor is a compliment to all the other ingredients.
• Cauliflower and Chicken Sausage Casserole
• Edamame and Cauliflower Pasta Salad with Feta
• Potato and Cauliflower Curry
• Cauliflower, Fennel, and White Bean Winter Salad
• Farfalle with Cauliflower and Toasted Breadcrumbs
What are your favorite dishes with cauliflower?
Related: Slice it Thick: A New Way to Cook Cauliflower
(Images: Faith Durand, Emma Christensen, and Elizabeth Passarella)
10 Comments
We love linguine with cauliflower (with a secret ingredient - anchovy fish sauce).
I make Mark Bittman's cauliflower mac & cheese a lot.
The farfalle link does not work.
I make a jazzed-up roasted cauliflower with lemon, red pepper flakes and chopped fresh herbs that is so delicious, it's one of my favorite healthy comfort-foods (well, I do add a healthy sprinkle of Parmigiano-Reggiano)...
The link for the farfalle recipe is fixed now. Thanks!
I put pureed cauliflower in potato soup to give it a more veggies and less cream.
veganomicon's red lentil curry with cauliflower- this could be my new comfort food. i roasted the cauliflower before putting it in the curry. yyyyyyyyyuuuuuuuummmmmm
The original Moosewood cookbook has a great recipe -- Cauliflower Morenga!
Nigel Slater's luxury cauliflower cheese - yum!
Link to Mark Bittman's Cauliflower Mac and Cheese: http://bittman.blogs.nytimes.com/2011/07/08/creamy-cauliflower-mac/


text:
Personalized Diet Plans
Getting a personalized diet plan from expert dietitian is todays need. There are various changes which we face in terms of health, diet & nutrition and physical activity. Every individual has different requirements. Although same meal is prepared in the family, everyone has special requirements. One must know how to fulfil nutritional requirements with right diet, healthy food choices and lifestyle modification. Just for Hearts brings this Personalized Diet Plans service exclusively for our readers, followers and visitors. Get your personalized diet plans to manage blood sugar levels, treat heart health condition or to lose weight. Our experts will be there to guide you.
Get your diet plan after vising our locations in Pune, Mumbai, Bangalore and New Delhi; OR opt for online or telephonic plan. The result will be same. You need to select the mode of consultation. We are available on following location, on our toll free number or on live chat. Make use of every option to get started with your personalized diet plan now!
Check out our diet plans
What our Clients say
- Basic diet plan helped me to focus on regular exercise & improved diet to avoid diseases like diabetes, High cholesterol& Heart related-problems.
Yeleswarapv K.
- Your diet session is excellent & eye opener for me. Now I have realized taking 4-5 cigarettes in 15 days was like taking poison & killing myself. Good to hear again & Thanks for everything. –
Mrs. Manoj
- I came here assuming some good health result in my fitness part. That time I assumed, but now I am confirmed that I got good result.It is not the money but the health matters for you. If you are health conscious, then you should visit here once. I am glad to be a part of it.
Kunal P.


text:
The Kooks are a British rock band formed in Brighton, East Sussex, in 2004. The band consists of Luke Pritchard (vocals/guitar), Hugh Harris (lead guitar/synth), Alexis Nunez (drums), and Peter Denton (bass guitar). The lineup of the band remained constant until the departure of Rafferty in 2008. Dan Logan served as a temporary replacement, until Peter Denton joined the band permanently in October 2008. Early in 2010, Pritchard announced the departure of drummer Paul Garred, due to a nerve problem in his arm. Late in the year, Garred rejoined for studio sessions, however Chris Prendergast played drums when the band played live. In 2012, the band was accompanied on drums by Alexis Nunez (from Golden Silvers), who eventually joined the band full-time.
A self-described "pop" band, their music is primarily influenced by the 1960s British Invasion movement and post-punk revival of the new millennium. With songs described as "catchy as hell", The Kooks have experimented in several genres including rock, Britpop, pop, reggae, ska, and more recently, funk and hip-hop, being described once as a "more energetic Thrills or a looser Sam Roberts Band, maybe even a less severe Arctic Monkeys at times".


text:
Game Over
Over to you, Governor Romney. Rick Santorum has left the Republican presidential race, ending the most successful run by an improbable GOP candidate since publisher Steve Forbes' run in 1996. At the start of the presidential campaign, few in political circles would have predicted that a senator who had lost his last race by 17 points, who had no money, no pollster, and few endorsements, would win 11 contests.
Read More
Posted: Wed, 04/11/2012 - 10:43am


text:
2468 members
Join The Twilight Saga
here's the link (:
hi roe marie!
Welcome toThe Twilight Saga
Sign Upor Sign In
© 2014 Created by Hachette Book Group.
Report an Issue | Guidelines |
Report an Issue |
Terms of Service
Please check your browser settings or contact your system administrator.


text:
16 U.S. Code § 396a - Lease of lands to native Hawaiians, residence requirements; fishing
prev | next
(a) The Secretary of the Interior is authorized to lease, under such rules and regulations as he may deem proper, land ascertained by him to be suitable for home site purposes in the Kalapana extension as described in section 391b of this title, to native Hawaiians when such occupancy does not encroach on or prevent free access to any points of historic, scientific, or scenic interest or in any manner obstruct or interfere with protection and preservation of said area as a part of the Hawaii National Park: Provided, however, That occupants of homesites shall reside on the land not less than six months in any one year: And provided further, That fishing shall be permitted in said area only by native Hawaiian residents of said area or of adjacent villages and by visitors under their guidance.
Source(June 20, 1938, ch. 530, § 3,52 Stat. 784.)
Hawai'i Volcanoes National Park
Designation of portion of Hawaii National Park situated on island of Hawaii as Hawai'i Volcanoes National Park, effective Sept. 22, 1961, see section 391d of this title.
The table below lists the classification updates, since Jan. 3, 2012, for this section. Updates to a broader range of sections may be found at the update page for containing chapter, title, etc.
The most recent Classification Table update that we have noticed was Tuesday, August 13, 2013
An empty table indicates that we see no relevant changes listed in the classification tables. If you suspect that our system may be missing something, please double-check with the Office of the Law Revision Counsel.
|Description of Change
|Session Year
|Public Law
|Statutes at Large
LII has no control over and does not endorse any external Internet site that contains links to or references LII.


text:
Yeah yeah, another year, another me-adopting-the-Eastern-Orthodox-Church-New-Year.....which is 14th January 2013 (or 1st January 2013 on their Julian calendar). So Happy New Year to all my Serbian, Macedonian, Ukrainian, Georgian, Russian readers.....psst, are their any of you out there? Og course there are :)
Whilst I'm not prepared to join the Eastern Orthodox Church, I am willing to celebrate your New Year's Day with you if it means I can make my New Year's Resolutions today and not be seen a total slacker.
So here's my resolutions and word of the year absolutely promptly on time and definitely not 14 days late (though I will be reverting back to the Gregorian calendar tomorrow....hey, you're lucky, I seriously considered not starting my year proper until Chinese New Year, this year starting on 9th February):
Too often I grab the scrunchies and put my hair in a ponytail on getting out of bed and it stays like this until getting back into it that night. I hate hair getting in my face when I'm working.......and yet last year for most of my Sew Weekly photoshoots, I wore my hair down, or styled and I know I look better and less harsh like that. Two women I respect have told me how much prettier I look with my hair down, my youngest Melchett and Kitten Natividad....and you don't say no to Kitten.
This one was originally going to say STOP! and then quote Ferris Beuller's insightful mantra. I'm terrible for wanting to fill up every minute of the day.
I also thought it might be STOP & MAKE TIME (to learn new things that might improve what I do rather than just charging into projects, which I'm very prone to).
But I thought GET OUT! would not only make me laugh when I see it (I've got these resolutions framed and up in my Sewing Lair) and I could do with going out and about sometimes to find inspiration or just have a break from the constant doing.
I'm usually quite good at this one, I have it as a resolution each year and it's probably the only one I'm consistently faithful to until 31st December.
In the year when I turned 40 I gave myself a sort of bucket list of things to do before my birthday. The pic above is the queue to audition for the British version of Big Brother. I used to be more daring....I joined the queue and auditioned. I didn't get through. Buy me a drink sometime and ask me why I blew my chances haha....it probably led to me becoming a burlesque performer though.
I'm not going to set myself a huge list of 'impossibles' for 2013.....but I've found myself slipping into "oh I can't do that"s and life is too short not to do some things you daren't. I want to push myself a little further this year and when I hear those nagging voices in my head ("you're too old", "you're too fat", "you're too scared") I'd like to challenge them some times. I achieved a hell of lot more in 2012 than I ever imagined I could and I should capitalise on my improved confidence......and number one on that list is (sometime) this year driving on an American freeway for the first time (it's a long story....I'll tell you it soon).
And my word of the year: MAKE.
I'm going to make stuff this year:
- make time (yeah, that ties in with the GET OUT! resolution),
- make a difference (I want to do some crafting for good, perhaps make some blankets or quilts for Project Linus, or some fleece hats for Head Huggers, and perhaps find some other charities I could do something for).
- make things - this includes sewing, but the one thing I've worked out in the last few years is that making, even if it's decorating or building flat pack furniture, makes me happy.
- make my house a home - it's time to shake off the worry that we might get sent home any time, we might even be looking at starting the green card process this year so it's time to grab my mantra "life's too short" and actually Tempestify this house!
And of course, you can't talk about 'make' without one of my favourite pics in my Sewing Lair:
OK, move along now, time to get this New Year started ;)


text:
Ring us and we'll come and give you the very best driving lesson you can get. We'll teach you to drive like a quality second year 'P' plater while you're still on your 'L's. We've got brilliant driving instructors who do that.
Best West Driving School offers top quality driving lessons in every suburb of Perth, Rockingham and Mandurah.


text:
10 U.S. Code § 14515 - Discharge or retirement for age
Each reserve officer of the Army, Navy, Air Force, or Marine Corps who is in an active status or on an inactive-status list and who reaches the maximum age specified in section 14509, 14510, 14511, or 14512 of this title for the officer's grade or position shall (unless the officer is sooner separated or the officer's separation is deferred or the officer is continued in an active status under another provision of law) not later than the last day of the month in which the officer reaches that maximum age—
(1) be transferred to the Retired Reserve if the officer is qualified for such transfer and does not request (in accordance with regulations prescribed by the Secretary concerned) not to be transferred to the Retired Reserve; or
Source(Added Pub. L. 103–337, div. A, title XVI, § 1611,Oct. 5, 1994, 108 Stat. 2954; amended Pub. L. 104–106, div. A, title XV, § 1501(b)(31),Feb. 10, 1996, 110 Stat. 498; Pub. L. 107–107, div. A, title V, § 517(d),Dec. 28, 2001, 115 Stat. 1095.)
2001—Par. (1). Pub. L. 107–107, § 517(d)(1), substituted "if the officer is qualified for such transfer and does not request (in accordance with regulations prescribed by the Secretary concerned) not to be transferred to the Retired Reserve" for ", if the officer is qualified and applies for such transfer".
Par. (2). Pub. L. 107–107, § 517(d)(2), added par. (2) and struck out former par. (2) which read as follows: "if the officer is not qualified or does not apply for transfer to the Retired Reserve, be discharged from the officer's reserve appointment."
1996—Pub. L. 104–106substituted "inactive-status" for "inactive status" in introductory provisions.
Effective Date of 2001 Amendment
Amendment by Pub. L. 107–107effective on the first day of the first month that begins more than 180 days after Dec. 28, 2001, see section 517(g) ofPub. L. 107–107, set out as a note under section 10154 of this title.
Effective Date of 1996 Amendment
Amendment by Pub. L. 104–106effective as if included in the Reserve Officer Personnel Management Act, title XVI of Pub. L. 103–337, as enacted on Oct. 5, 1994, see section 1501(f)(3) ofPub. L. 104–106, set out as a note under section 113 of this title.
The table below lists the classification updates, since Jan. 3, 2012, for this section. Updates to a broader range of sections may be found at the update page for containing chapter, title, etc.
The most recent Classification Table update that we have noticed was Tuesday, August 13, 2013
An empty table indicates that we see no relevant changes listed in the classification tables. If you suspect that our system may be missing something, please double-check with the Office of the Law Revision Counsel.
|Description of Change
|Session Year
|Public Law
|Statutes at Large
LII has no control over and does not endorse any external Internet site that contains links to or references LII.


text:
Captain believes Everton are ready to hit top form again.
Phil Neville
Phil Neville has declared that now is the time for Everton to launch their final assault on Europe.
The Blues head to Norwich City on Saturday with a positive result required to keep pace with those sides at the top end of the Premier League table.
Neville believes that now the traditionally hectic Christmas and January periods are out of the way, the Blues will begin to hit top form once again.
"It's good to get back to the Premier League," the captain told evertontv."We need to start winning games. Now is the time I think we will start hitting form; if you look at all the teams in the league, no-one is flowing and playing the sort of stylish football they were playing earlier in the season.
"It happens every year. January and February are the months you just have to slug it out. You have played so many games in a short space of time that there is a lull after Christmas. Pitches are bad, the weather is freezing cold and players can be fatigued.
"Now when the weather gets better, you get a bit of blue sky and teams start hitting form again."
Currently occupying sixth place in the standings, Everton have serious designs on bringing European football back to Goodison Park next term.
"You have two types of team," said Neville, assessing the current state of the Premier League. "Teams chasing at the top and teams fighting for survival. We are chasing a European place and we have a massive carrot in front of us. We have 12 games left and we want to finish in Europe.
"I would say Norwich is one of the toughest away games. We went there last year and it was a tough game. In the game at Goodison before Christmas they got a deserved point.
"Chris Hughton has done a fabulous job. He goes about his business quietly but he has built a young, solid team. They have stabilised themselves in the league."
- Previous Article What The Papers Say - 22 February
- Next Article Pair Can Cope With Extra Attention


text:
Name: Emmett McCarty Cullen
-Monkey Man
-Emmy Bear
Relationship status: Single
Crushing: No
On: Dude what did i just say
Originally from: Tennessee
Eye colour: gold/dark brown/black
Height: 6'5″
Species: Vampire
Date of Birth: 1915
Date of change to vampire: 1935
My Story:
In 1935 while living in Gatlinburg, Tennessee, I went hunting for a bear, i got mauled by that bear, the injuries from the attack were so severe that i wouldn't live. I was found by Rosalie, an angel. She was hunting in the area at that time. She saved me, carried me over a hundred miles to Appalachia back to Carlisle. i don't remember much of my human life but i remember that day i left to hunt that bear.
© 2014 Created by Hachette Book Group.
Report an Issue | Guidelines | Report an Issue | Terms of Service


text:
What is OSR?
Open Source Religion (OSR) is the practice of mixing religious and non-religious beliefs in an individual, even across multiple religions.
Our community aims to share, learn from, and edit our beliefs to better ourselves. Join us to define and refine the practice of OSR together.
Loading feed
Posted by Ceen Foundation on April 21, 2014 at 9:12am
Posted by Christopher Stewart on September 16, 2013 at 11:08am
Posted by Christopher Stewart on September 2, 2013 at 8:46am
Posted by Christopher Stewart on August 19, 2013 at 8:41pm
|What is OSR about?
|Help develop OSR
Mapping all beliefs
It seems to me that many on RG struggle to explain what they know within themselves, but cannot satisfactorily express it to the understanding of others. Where does this innate knowledge come from?"Sometimes during solitude I hear truth spoken with clarity and freshness; uncolored and untranslated it speaks from within myself in a language original but inarticulate, heard only with the soul, and I realize I brought it with me, was never taught it nor can I efficiently teach it to another." …Read More
Started by David Bee in Open Source Religion. Last reply by Kernel John Aug 29.
Until recently the oldest, unchallenged evidence of human hunting came from a 400,000-year-old site in Germany the evidence came from marks left by spears on horse bones - horses were clearly being speared and their flesh eaten. but new Evidence from ancient butchery site in Tanzania shows early man used complex hunting techniques to ambush and kill antelopes, gazelles, wildebeest and other large animals at least two million years ago.- The discovery -- by anthropologist Professor Henry Bunn of…Read More
Started by Alexander in Open Source Religion. Last reply by Kernel John May 18.
Over the last decade, 2005 to 2014, since my retirement from FT, PT and most volunteer work, after an employment-and-student life of half a century, 1954 to 2004, I have often written about the Jews and Judaism with comparisons and contrasts to a people and a religion I have now been associated with for more than 60 years, the Baha'is and the Baha'i Faith. The following 27 pages and 12,000 words provide a series of items containing, as they do, some of these comparisons and contrasts, among…Read More
Tags: Baha
Started by RonPrice in Chaos Apr 30.
It is curious that so little scientific attention is given to exploration of Self. It may be that the Self (Human Consciousness) is too closely aligned with metaphysical/mystical concepts of Soul and Mind to get funding – separation of church and state and all that good stuff. In 1970s, Dr Benjamin Libet undertook neurological research that observed when the brain was directly stimulated with degrees of electric current, the stimulus…Read More
Tags: will, Soul, free, potential, consciousness
Started by Kernel John in Open Source Religion. Last reply by Kernel John Mar 30.
Language derives from seven basic sounds and their meanings.i = evente = thoughta = lifeo = thing of natureu = thing of manl = originalb = unityRead More
Started by Anisha Boxman in Open Source Religion. Last reply by Anisha Boxman Mar 22.
All of us who have been sealed into the body of Christ wants God to be pleased with the decisions that we make, but God has given us the freedom to make our own choices. God want us to apply scripture, where scripture can be applied, and where no scriptural principle can be applied, to make the choices that we desire and then take responsibility for choices we made. If we cannot find doctrine in Paul's epistles directly related to our situation and there are no scriptural principles we can find…Read More
Started by rob stone in Open Source Religion Mar 15.
When you pray and worship, do you have an image that runs through your mind? An image of God? An image of Jesus? An image of the Holy Spirit? If so, do these images come from a picture in a book, a movie, a painting, the Shroud of Turin... a podcast from "The Son of God" movie... wherever.... the point being, they are images. So, if you mentally project these images during prayer or worship are they graven? What mental images do you have, that are not graven, that you see when you pray?dbRead More
Started by db in Open Source Religion. Last reply by Kernel John Mar 14.
"Is Jesus a myth? Is Jesus just a copy of the pagan gods of other ancient religions?"Answer: There are a number of voices claiming that the accounts of Jesus as recorded in the New Testament are simply myths and were the result of the writers borrowing stories from pagan mythology, such as the stories of Osiris, Dionysus, Adonis, Attis, and Mithras. The claim is that these mythological figures are essentially the same story as what the New Testament ascribes to Jesus Christ of Nazareth. As Dan…Read More
Started by Jeff H in Archives. Last reply by Kernel John Mar 14.
JUST IMAGINE - from www.SpeakingTree.in Mar 09, 2014There's a hidden reality out there that is waiting to be experienced, write DEEPAK CHOPRA and MENAS KAFATOSThe question is: Is there such a thing as higher consciousness? We are using the term 'cosmic consciousness' to denote a state of awareness that knows itself completely, a state of inner silence that is in direct contact with…Read More
Started by Kernel John in Belief Modules Arena. Last reply by Kernel John Mar 12.
I've just received a polite request from a member of this forum to provide him with "any relevant recent scientific evidence of NDE other than mere patient hearsay". So I'll answer him here in equally polite terms, even knowing that his politeness is probably a mere tactic, ha ha.First, let's examine his words. He is asking for scientific evidence of subjective experiences – those that are dependend on the mind for its existence. Let's now take Khem's suggestion and ask: suppose there are 340…Read More
Tags: AWARE project, near death experiences, NDE
Started by The Wrath of God in Chaos. Last reply by Kernel John Mar 11.
Added by Alexander


text:
Talking Points:
Can't access to the Dow Jones FXCM US Dollar Index? Try the USD basket on Mirror Trader. **
US DOLLAR TECHNICAL ANALYSIS – Prices are still trading sideways in a choppy range below resistance at 10595, the 38.2% Fibonacci retracement. A push through initial support in the 10495-500 area, marked by the 38.2% Fib expansion and the March 19 low, targets the 50% level at 10470. Alternatively, a turn back above resistance exposes the 50% Fib retracement at 10626.
Daily Chart - Created Using FXCM Marketscope 2.0
** The Dow Jones FXCM US Dollar Index and the Mirror Trader USD basket are not the same product.
S&P 500 TECHNICAL ANALYSIS – Prices remain in consolidation mode above support is in the 1847.90-53.00 area, marked by the 23.6% Fibonacci expansion, the December 31 close, and the bottom of an emerging Triangle chart formation. A break downward targets the 38.2% level at 1831.00. Alternatively, a push above downward-sloping resistance at 1871.10 aims for the March 7 high at 1888.60.
Daily Chart - Created Using FXCM Marketscope 2.0
GOLD TECHNICAL ANALYSIS – Prices reversed downward as expected after putting in a Bearish Engulfing candlestick pattern. A break below the 23.6% Fibonacci expansion at 1319.01 has exposed the 38.2% level at 1273.88, with a further move below that eyeing the 50% Fib at 1237.40. Alternatively, a reversal back above 1319.01 aims for trend line support-turned-resistance now at 1352.35.
Daily Chart - Created Using FXCM Marketscope 2.0
CRUDE OIL TECHNICAL ANALYSIS – Prices are pushing higher as expected after putting in a bullish Morning Star candlestick pattern. A break above resistance at 100.83, the 23.6% Fibonacci expansion, has exposed the 38.2% level at 102.87. Pushing further above that aims for the 50% Fib at 104.52. Alternatively, a move back below 100.83 exposes the 14.6% expansion at 99.57.
Daily Chart - Created Using FXCM Marketscope 2.0
--- Written by Ilya Spivak, Currency Strategist for DailyFX.com
To receive Ilya's analysis directly via email, please SIGN UP HERE
Contact and follow Ilya on Twitter: @IlyaSpivak


text:
Many Taylor Swift fans have posted covers of her songs online, but we bet she never expected actor Samuel L. Jackson to take a crack at one of her tunes...with hilarious results.
During a visit to London's Capital FM radio, the star of Pulp Fiction , Django Unchained and Snakes on a Plane was asked by a listener to record a version of Taylor's hit "We Are Never Ever Getting Back Together" in order to send a clear message to her boyfriend that they were done for good. Jackson was game, reciting the lyrics to the song in his trademark angry, menacing manner.
"You go talk to your dumb-ass friends, talk to my friends, talk to me," growls Jackson. "But we are never , ever, ever getting back together, you lying, cheating piece of bleep ."
Instead of being offended, Taylor is delighted with Jackson's version. She tweeted a link to it , and added the words "Samuel L. Jackson. YES."
Copyright 2013 ABC News Radio