text:
Q: Javascript Custom Function to import JSON formatted YQL query response into Google spreadsheet Novice Javascript programmer here, maybe bit off more than I can chew.  I am attempting to put JSON formatted data from a YQL query into a Google Drive spreadsheet using a custom function created in Javascript.  I am NOT, repeat NOT, populating a web page, just moving data to a spreadsheet.
Here is the JSON response (as copied from a test function writing it directly to a spreadsheet cell):

{"query":{"count":1,"created":"2013-08-29T20:56:58Z","lang":"en-US","results":{"optionsChain":{"expiration":"2013-12-21","symbol":"HYS","option":[{"symbol":"HYS131221C00103000","type":"C","strikePrice":"103","lastPrice":"3.00","change":"0","changeDir":null,"bid":"NaN","ask":"5","vol":"2","openInt":"2"},{"symbol":"HYS131221C00105000","type":"C","strikePrice":"105","lastPrice":"0.40","change":"0","changeDir":null,"bid":"NaN","ask":"5","vol":"10","openInt":"11"},{"symbol":"HYS131221C00106000","type":"C","strikePrice":"106","lastPrice":"0.05","change":"0","changeDir":null,"bid":"NaN","ask":"5","vol":"1","openInt":"120"},{"symbol":"HYS131221C00107000","type":"C","strikePrice":"107","lastPrice":"0.10","change":"0","changeDir":null,"bid":"NaN","ask":"0.2","vol":"40","openInt":"80"},{"symbol":"HYS131221P00100000","type":"P","strikePrice":"100","lastPrice":"0.70","change":"0","changeDir":null,"bid":"NaN","ask":"5","vol":"1","openInt":"1"},{"symbol":"HYS131221P00102000","type":"P","strikePrice":"102","lastPrice":"1.00","change":"0","changeDir":null,"bid":"NaN","ask":"5","vol":"15","openInt":"15"},{"symbol":"HYS131221P00103000","type":"P","strikePrice":"103","lastPrice":"1.55","change":"0","changeDir":null,"bid":"NaN","ask":"5","vol":"40","openInt":"50"},{"symbol":"HYS131221P00105000","type":"P","strikePrice":"105","lastPrice":"2.35","change":"0","changeDir":null,"bid":"0.3","ask":"5.2","vol":"15","openInt":"15"},{"symbol":"HYS131221P00107000","type":"P","strikePrice":"107","lastPrice":"6.50","change":"0","changeDir":null,"bid":"2.05","ask":"7","vol":"2","openInt":"20"}]}}}}

Now, if I simply assign the JSON formated object listed above to a variable (i.e. hard code it), I can see the name/value pairs, extract data, do iterations, etc etc.  But when I assign the response directly to a variable (i.e. receiving on the fly) I am unable to see or iterate on anything.  For example, receiving variable "o" can be seen and written to a spreadsheet cell, but it's first child - o["query"] - cannot be seen.  The function initiating the query is located inside of the function using it, so I don't think it is a timing issue.

A: Well, I am answering my own question with a solution I don't completely understand.  Here is the code that works (explanation and further question to follow):
function YQLquery() { // A YQL query returning JSONP with XJSON2CSV function embedded in the response
  var fetchstring1 = "http://query.yahooapis.com/v1/public/yql?"; // constructing YQL query in 4 parts
  var fetchstring2 = "q=SELECT%20*%20FROM%20yahoo.finance.options";
  var fetchstring3 = "%20WHERE%20symbol%3D'HYS'%20AND%20expiration%3D'2013-12'";
  var fetchstring4 = "&format=json&callback=XJSON2CSV&env=store%3A%2F%2Fdatatables.org%2Falltableswithkeys";
  var fetchstring = fetchstring1 + fetchstring2 + fetchstring3 + fetchstring4;
  return UrlFetchApp.fetch(fetchstring);
  /* This returns (truncated after first option array item, but you get the point):
  XJSON2CSV({"query":{"count":1,"created":"2013-09-13T21:39:35Z","lang":"en-US",
  "results":{"optionsChain":{"expiration":"2013-12-21","symbol":"HYS","option":
  [{"symbol":"HYS131221C00103000","type":"C","strikePrice":"103","lastPrice":
  "3.00","change":"0","changeDir":null,"bid":"1.65","ask":"2","vol":"NaN","openInt":"2"},{ etc etc*/
}//end of function YQLquery

function XJSON2CSV(YQLQueryResponse) { //converts the YQLquery JSONP response payload (i.e. JSON portion) to CSV string
    var vx = YQLQueryResponse;
    var JSONobj = vx["query"]["results"]["optionsChain"]["option"]; // obtain the option array within JSON
    var CSVLine = [];
    var i = 0;
    var j = "";
    for (var i in JSONobj) {
        CSVLine[i] = []; // gets the JSON array objects
        for (var j in JSONobj[i]){
            CSVLine[i].push(JSONobj[i][j]); // get the name/value pairs from each array object
        }; //end of inner loop
    }; //end of outer loop
   return CSVLine;
} //end of function XJSON2CSV()

function xxx() //test it
{
  return eval(YQLquery().toString());
}

Comments:
1) Contrary to what I assumed in the original question, timing WAS the issue.  So I resorted to using a callback function - XJSON2CSV, in this case; having YQL return an invocation of it (with the full JSON string payload as the argument) in the JSONP response.
2) All that worked well to a point - the returned XJSON2CSV invocation was an object and I needed a function.  After quite a bit of experimentation, I obtained a solution by converting it to a string and (against all advice to the contrary) "eval()-"ing it.
Question:  Is there a better way to do that last step (in function "xxx") that doesn't involve "eval()"?  Or, to ask it another way, why can't I just have function xxx "return QYLquery;"
Apologies to Andy for not responding til now.


More and more drivers are spending extended amounts of time behind the wheels of their vehicles for a variety of reasons. Many of these drivers are forced to drive when tired or fatigued, and as such, it can be easy for such operators to lose focus or even fall asleep behind their steering wheels. Such situations can obviously lead to serious accidents, but the good news is that the experts at the Ford Motor Company have come up with an effective antidote to this syndrome. This antidote is known as the Ford Co-Pilot360 system, and this specialized service combines many driver awareness tools to enable today's drivers to operate their vehicles with greater levels of safety than ever before. One feature of this system is the Lane Keeping Assist service.
The Ford Co-Pilot360 Lane Keeping system has at least three tiers of functionality. The first tier of functionality can give drivers various warnings if and when their vehicles begin to drift out of place. If drivers fail to respond to the first warning, the system moves to its second level of functionality which consists of manually steering vehicles back into place.
Yet another level of service keeps an eye on driver behavioral patterns and provides either audio or visual alarms if driver attention is deemed to be less than acceptable. These Ford Co-Pilot360 systems have the potential to prevent accidents and to even save lives.


text:
Search Digitised Items | Search Archives Main Catalogue | Archives Home
Search Digitised Items
View: Details List Lightbox
Catalogue Entries < Prev | Next >
Title: PACIFIC REGION HEPATITIS B CONTROL PROGRAM RECORDS
Reference Code: 2018.0078
Description: These records arise from Associate Professor Tilman Ruff's work as a physician and program leader on immunisation and maternal and child health projects in the Pacific region, in particular in relation to hepatitis B control.
The first part of the series (items 00001 to 00091) includes reference material (reports, journal articles, conference proceedings) relating to Australian and international research into hepatitis B and other vaccine preventable illness, in particular the delivery and evaluation of immunisation programs.
The second part (items 00092 to 00193) relates to Ruff's work as technical advisor and/or program leader on successive hepatitis B immunisation programs in Pacific island countries between 1995 and 2011. These programs included: Control of Hepatitis B Infection in Pacific Island Countries Project (UNICEF, AusAID and NZ Ministry of Foreign Affairs and Trade, 1995-2000); Strengthening the Expanded Programme on Immunization (EPI) in Pacific Island Countries (UNICEF, World Health Organisation and AusAID, 2001-2005); and the Pacific Immunisation Program Strengthening (PIPS) (World Health Organisation 2005-2011).
The third part of the series (items 00194-00208) includes further records from the above programs and also Ruff's later consultancy work for the World Health Organisation Western Pacific Region on the effective delivery of a birth dose of the hepatitis B vaccine.
The creator's arrangement of files has been maintained and original file/document titles have generally been retained (including alternative spellings of 'immunisation'/'immunization' and 'program'/'programme'), with abbreviations and acronyms expanded.
Size cm:

redpajama_set_name: RedPajamaCommonCrawl


text:
Govt, Hyphen still 'far apart' on green hydrogen pact
December 6, 2022 - Namibian Sun
Ogone Tlhage
National Planning Commission (NPC) director-general Obeth Kandjoze says government is still far from agreeing to the terms of a green hydrogen deal with German suitor Hyphen Hydrogen Energies.
Instead, the Hydrogen Commission - which he chairs - is working hard to ensure Namibia gets the best deal out of its resources.
He made the comments during an interview on The Agenda last week, providing an update on what was happening behind the scenes regarding the deal.
Government had not been 'duped' into agreeing to unfavourable terms, he said.
"I would like to believe by now if we were being outwitted, you would have seen the papers riddled with an agreement. That agreement is still pending; it has not been signed based on serious, complicated provisions, and the parties are still far apart," he said.
Hard at work
The commission meets every second Wednesday, he said, adding that it is crafting policy around green hydrogen. When done, this will be presented to Cabinet, he added.
"The argument that that we are being outwitted is a far cry from the truth. Every second Wednesday, we have a green hydrogen meeting where we have thorough briefings."
Kandjoze also denied allegations that Namibia weakened its laws to accommodate Hyphen.
"It is impossible for a sovereign state to forego its right to change the law," he said.
Government's efforts to negotiate a good deal was further evidenced by a decision not to announce whom it would select as its preferred bidder last month at the recently concluded United Nations Climate Change Conference (COP27), he said.
Delayed announcement
"COP27 was a date where we undertook as a government, we want to announce. We had to climb down from that because it could just not materialise," Kandjoze said.
There was still much to learn as the commission readies a document for Cabinet submission, he added.
"The subject matter itself, it is unknown. It is an emerging industry; there is care and consideration to be applied to exactly what goes in a 150-page document.
"We are still huddled in the negotiation corridors."


text:
Q: Keystroke-efficient way to create new columns in pandas Is there a more efficient way to create multiple new columns in a pandas dataframe df initialized to zero than:
for col in add_cols:
   df.loc[:, col] = 0

A: UPDATE: using @jeff's method, but doing it dynamically:
In [208]: add_cols = list('xyz')

In [209]: df.assign(**{i:0 for i in add_cols})
Out[209]:
   a  b  c  x  y  z
0  4  8  6  0  0  0
1  3  7  0  0  0  0
2  4  0  1  0  0  0
3  5  4  5  0  0  0
4  1  3  0  0  0  0

OLD answer:
Another method:
df[add_cols] = pd.DataFrame(0, index=df.index, columns=add_cols)

Demo:
In [343]: df = pd.DataFrame(np.random.randint(0, 10, (5,3)), columns=list('abc'))

In [344]: add_cols = list('xyz')

In [345]: add_cols
Out[345]: ['x', 'y', 'z']

In [346]: df
Out[346]:
   a  b  c
0  4  9  0
1  1  1  1
2  8  8  1
3  0  1  4
4  8  5  6

In [347]: df[add_cols] = pd.DataFrame(0, index=df.index, columns=add_cols)

In [348]: df
Out[348]:
   a  b  c  x  y  z
0  4  9  0  0  0  0
1  1  1  1  0  0  0
2  8  8  1  0  0  0
3  0  1  4  0  0  0
4  8  5  6  0  0  0

A: In [13]: df = pd.DataFrame(np.random.randint(0, 10, (5,3)), columns=list('abc'))

In [14]: df
Out[14]:
   a  b  c
0  7  2  3
1  7  0  7
2  5  1  5
3  9  1  4
4  2  1  4

In [15]: df.assign(x=0, y=0, z=0)
Out[15]:
   a  b  c  x  y  z
0  7  2  3  0  0  0
1  7  0  7  0  0  0
2  5  1  5  0  0  0
3  9  1  4  0  0  0
4  2  1  4  0  0  0

A: Here is a hack:
[df.insert(0, col, 0) for col in add_cols]

A: You can treat a DataFrame with a dict-like syntax:
for col in add_cols:
    df[col] = 0

redpajama_set_name: RedPajamaStackExchange


Remember how cool Kubernetes seemed when you first started using it? A simple, easy API for scalable compute in any cloud: just a Deployment and a Service and you're done! But as you use it more, you learn that this isn't really enough. A production system needs requests and limits, liveness checks, HPAs, PDBs, PSPs, etc.
The same is true for Istio, which can solve a lot of the problems with microservices out of the box, but isn't magic. When you get beyond playing with bookinfo, more configuration is needed to get the most out of it.


text:
Tag Archive: Autonomous Sensory Meridian Response
The BBC dabbles in slow radio
The BBC is getting into "slow radio." What is slow radio? According to Rosie Spinks, Quartz, The BBC's Radio 3 programming "will invite listeners to relax to the sounds of Irish cows being herded up a mountain and leaves crunching on walks through the country." Alan Davey, Radio 3 Controller, says the programming with provide the audience with "a chance for quiet mindfulness." Spinks notes that the programming sounds a lot like autonomous sensory meridian response, or ASMR, which is "the subjective experience of 'low-grade euphoria' characterized by 'a combination of positive feelings and a distinct static-like tingling sensation on the skin.'" Or sounds that make you feel good.
According to Spinks, the slow radio programs will feature a range of sounds "from the animal murmurings of a zoo at dusk to one of the UK's largest collections of clocks," and "[o]n Christmas Eve, listeners can look forward to hearing a three-hour walk through the Black Forest in southwest Germany."
Radio 3 already has a few offerings for you to enjoy via iPlayer radio, but, sadly, it's not yet available in the U.S.
GMB September 13, 2018 SoundASMR, Autonomous Sensory Meridian Response, Slow radio, The BBC 0 Read more >
Need something to distract you from a noisy co-worker?
This ASMR of vegetables defrosting may make you shudder with delight. Ok. So, what exactly is an ASMR? According to knowyourmeme.com, an ASMR, or Autonomous Sensory Meridian Response, is:
[A] term used to describe a sensory experience characterized by a pleasant tingling sensation in the head and scalp, which can be triggered by sounds like whispering or brushing, and visual stimulus like painting or drawing. On YouTube, the phenomenon inspired the creation of "whisperer" videos, in which people attempt to trigger the viewer's ASMR by speaking in a soft voice and making various sounds with inanimate objects.
Personally, we thought the ASMR would make an excellent white noise loop. Enjoy!
GMB January 27, 2017 SoundASMR, Autonomous Sensory Meridian Response, defrosting, frozen fruit, frozen vegetables, noisy co-worker, thawing, white noise, YouTube 0 Read more >


The reason you are here is because you are looking for the Ernest Hemingway's For ___ the Bell Tolls crossword clue answers and solutions which was last seen today August 17 2018, at the popular Daily Themed Crossword puzzle.
Already found the solution for Ernest Hemingway's For ___ the Bell Tolls? Click here to go back to the main post and find other answers Daily Themed Crossword August 17 2018 Answers.


One of my long-term client projects involves frequent data migrations (as opposed to the classical schema migrations one typically runs).
Up until recently I've been creating standalone rake tasks to perform the data migrations and executing them manually when deploying to Staging and Production.
Of course, the dangerous word in the above paragraph is 'manually'.
This isn't too much of an issue for Staging as I'm coming fresh from developing the rake task and it at the forefront of my mind. No, the real danger is that by the time Staging gets shunted over to Production I'll invariably forget to run the data migration, regardless of however lurid the colour I mark the task with in a Trello label.
Enter the 'after_party' gem by Steve Mitchell.
With this fantastic gem I still get to write the migrations as tried and tested rake tasks, but these tasks are registered in a 'task_records' table, similar to schema migrations when executed, so they are only launched once.
The only issue I've had is integrating it with Capistrano 3. For those with similar struggles below is how my config/deploy.rb file is setup.


Dine in style. Available in various sizes and finish options, these dining tables are waiting to find the perfect zone in your home. All your furniture is convenient and super functional to adapt to any home or office setting. Get yourself a comfortable dining experience with your family and guests. When quality and style comes together you know you've made the right choice.


text:
<?php defined('SYSPATH') or die('No direct script access.');

	// Adapted from http://faker.rubyforge.org/
	// Wordlist from http://www.1728.com/buzzword.htm
	return array(
		array(
			"Adaptive", "Advanced", "Ameliorated", "Assimilated", "Automated",
			"Balanced", "Business-focused", "Centralized", "Cloned",
			"Compatible", "Configurable", "Cross-group", "Cross-platform",
			"Customer-focused", "Customizable", "Decentralized", "De-engineered",
			"Devolved", "Digitized", "Distributed", "Diverse",
			"Down-sized", "Enhanced", "Enterprise-wide", "Ergonomic",
			"Exclusive", "Expanded", "Extended", "Face to face", "Focused",
			"Front-line", "Fully-configurable", "Function-based",
			"Fundamental", "Future-proofed", "Grass-roots", "Horizontal",
			"Implemented", "Innovative", "Integrated", "Intuitive", "Inverse",
			"Managed", "Mandatory", "Monitored", "Multi-channelled", "Multi-lateral",
			"Multi-layered", "Multi-tiered", "Networked", "Object-based",
			"Open-architected", "Open-source", "Operative", "Optimized", "Optional",
			"Organic", "Organized", "Persevering", "Persistent", "Phased",
			"Polarised", "Pre-emptive", "Proactive", "Profit-focused", "Profound",
			"Programmable", "Progressive", "Public-key", "Quality-focused", "Reactive",
			"Realigned", "Re-contextualized", "Re-engineered", "Reduced",
			"Reverse-engineered", "Right-sized", "Robust", "Seamless", "Secured",
			"Self-enabling", "Sharable", "Stand-alone", "Streamlined", "Switchable",
			"Synchronised", "Synergistic", "Synergized", "Team-oriented", "Total",
			"Triple-buffered", "Universal", "Up-sized", "Upgradable", "User-centric",
			"User-friendly", "Versatile", "Virtual", "Visionary", "Vision-oriented"
		),
		array(
			"24 hour", "24/7", "3rd generation", "4th generation", "5th generation",
			"6th generation", "actuating", "analyzing", "assymetric", "asynchronous",
			"attitude-oriented", "background", "bandwidth-monitored", "bi-directional",
			"bifurcated", "bottom-line", "clear-thinking", "client-driven",
			"client-server", "coherent", "cohesive", "composite", "context-sensitive",
			"contextually-based", "content-based", "dedicated", "demand-driven",
			"didactic", "directional", "discrete", "disintermediate", "dynamic",
			"eco-centric", "empowering", "encompassing", "even-keeled", "executive",
			"explicit", "exuding", "fault-tolerant", "foreground", "fresh-thinking",
			"full-range", "global", "grid-enabled", "heuristic", "high-level",
			"holistic", "homogeneous", "human-resource", "hybrid", "impactful",
			"incremental", "intangible", "interactive", "intermediate", "leading edge",
			"local", "logistical", "maximized", "methodical", "mission-critical",
			"mobile", "modular", "motivating", "multimedia", "multi-state",
			"multi-tasking", "national", "needs-based", "neutral", "next generation",
			"non-volatile", "object-oriented", "optimal", "optimizing", "radical",
			"real-time", "reciprocal", "regional", "responsive", "scalable", "secondary",
			"solution-oriented", "stable", "static", "systematic", "systemic",
			"system-worthy", "tangible", "tertiary", "transitional", "uniform",
			"upward-trending", "user-facing", "value-added", "web-enabled",
			"well-modulated", "zero administration", "zero defect", "zero tolerance"
		),
		array(
			"ability", "access", "adapter", "algorithm", "alliance", "analyzer",
			"application", "approach", "architecture", "archive",
			"artificial intelligence", "array", "attitude", "benchmark",
			"budgetary management", "capability", "capacity", "challenge", "circuit",
			"collaboration", "complexity", "concept", "conglomeration", "contingency",
			"core", "customer loyalty", "database", "data-warehouse", "definition",
			"emulation", "encoding", "encryption", "extranet", "firmware", "flexibility",
			"focus group", "forecast", "frame", "framework", "function", "functionalities",
			"Graphic Interface", "groupware", "Graphical User Interface", "hardware",
			"help-desk", "hierarchy", "hub", "implementation", "info-mediaries",
			"infrastructure", "initiative", "installation", "instruction set", "interface",
			"internet solution", "intranet", "knowledge user", "knowledge base",
			"local area network", "leverage", "matrices", "matrix", "methodology",
			"middleware", "migration", "model", "moderator", "monitoring", "moratorium",
			"neural-net", "open architecture", "open system", "orchestration", "paradigm",
			"parallelism", "policy", "portal", "pricing structure", "process improvement",
			"product", "productivity", "project", "projection", "protocol", "secured line",
			"service-desk", "software", "solution", "standardization", "strategy",
			"structure", "success", "superstructure", "support", "synergy", "system engine",
			"task-force", "throughput", "time-frame", "toolset", "utilisation", "website",
			"workforce"
		)
	);

redpajama_set_name: RedPajamaGithub


With a far sighted vision, a keen perception of the market trends, and a strong commitment to customer satisfaction, we are engaged in offering quality assured Sleeve Collet. This range is widely demanded in industries for picking small and tiny materials. This range is manufactured using optimum grade raw material and sophisticated technology in synchronization with international standards. Keeping in mind the diverse requirements of our clients, we provide this range in various sizes and specifications at affordable prices.
We have been ranked as the most dependable and leading firm all over the nation and actively emerged in providing a wide array of Sleeve Collet. The collet offered by us is designed using premium grade raw material and progressive technology in tandem to universally verified standards. In addition to this, our offered collet is highly appreciated by our clients for its striking features such as smooth edges & durability.
Our company has relentlessly pursued excellence in its endeavor by providing premium quality Sleeve Collet. The offered range is thoroughly tested against various quality parameters and is widely demanded in various industries. Provided collet is manufactured using optimum quality raw material and latest technology at our ultramodern manufacturing unit. In order to meet the international quality standard, we provide the entire range in various specifications at nominal price.
By keeping in mind varied specifications of our respected clients spread all over the country, we are providing an excellent range of Sleeve Collet. We provide this collet in various customized options as per the requirements of our esteemed clients. This collet is manufactured using optimum quality raw material and latest technology in compliance with international standard and norms. In order to ensure the quality and durability of this collet, our experts test it against various parameters. Apart from this, clients can avail this collet from us at industry leading prices.


text:
Location: Bureau County IL
Biography of David Winfield Mulvane, Hon.
Hon. David Winfield Mulvane. For years one of the prominent characters of Kansas who have helped to influence and direct national life has been David W. Mulvane of Topeka. In his home state Mr. Mulvane is best known as a lawyer and his power in republican politics has not been exercised through office but through his chieftainship in the party itself. For many years he has been identified with the state organization, and also with the national party organization, and was one of the national party committee for a dozen years. He was born in Princeton, Illinois, January 4, 1863,
Biography of Frank E. Bodley
Frank E. Bodley. The men upon whose shoulders rest the responsibility for prosperity and advancement along every line of commercial and industrial activity are the captains of industry and finance who are in command of the armies which are fighting to preserve the nation's standing among the countries of the earth, as well as against those foes to established currency and methods of transacting business. Without them and their sound, conservative policies, the country would be at the mercy of every irresponsible, unscrupulous speculator or visionary idealist. As is but natural, the financiers of the country's great cities are the
Biography of Walter George Gibbons
Walter George Gibbons, vice president and cashier of the Chestnut-Gibbons Grocery Company, a wholesale concern, doing business in Muskogee, has since 1908 been in charge of this establishment. The business was founded here in 1902 and since Mr. Gibbons took charge material advance has been made in the trade connections of the firm. This results from his close study of every phase of the business, his persistency of purpose and his thorough application. Mr. Gibbons was born in Tiskilwa, Illinois, October 1, 1868, and is a son of George and Mary (Cook) Gibbons, the former a harness manufacturer, devoting his
Biography of Thomas J. White
Thomas J. White, a lawyer of high standing in both Kansas City, Kansas, and Kansas City, Missouri, had been a resident of Kansas forty-eight years. He had his experience as an early homesteader, was in railway service for a number of years, and gained a very thorough knowledge of public men and national politics in his relationship as confidential clerk to Senator Ingalls. He had been a lawyer for nearly thirty-five years. Mr. White was born at Whitstable, a town on the seacoast in County Kent, England, January 27, 1842. He was the second in a family of seven children
Biography of Jasper Newton Wilkinson
Jasper Newton Wilkinson of Muskogee is widely known as a most enthusiastic Rotarian and as an untiring worker in the interests of boys. In the latter connection he is state councilor of the Order of DeMolay for Boys and is doing a work of far-reaching importance. In the business world, too, he has made a creditable name and place for himself as a lumber dealer in Illinois and as a banker in Oklahoma. He was born in Vinton County, Ohio, a son of Jackson and Mary (Morrison) Wilkinson, both of southern descent. In 1874 he was graduated from the Illinois
Biography of Otis T. Dyer
No historical work claiming to he a true record of the growth and prosperity of Riverside for the decade of years preceding 1890, and claiming to record the establishment of many enterprises, industries and incorporations that have been the leading factor in placing her in the ranks of the leading cities and colonies of Southern California, could be considered as anything but glaringly incomplete without a more than passing mention of the gentleman whose name heads this sketch. His association and connection with Riverside's leading enterprises form an interesting chapter in the annals of the city and county. Mr. Dyer's
Biography of Volney P. Mooney
Volney P. Mooney, now probate judge of Butler County, had resided in this section of Kansas more than forty-eight years and had been successively teacher, merchant, lawyer and public official. The people of Butler County know him and trust him as completely as any other citizen. His father, the late Rev. Isaac Mooney, was one of the notable men in this section of Kansas. He was the founder of a town and community, and throughout his life held that community up to his own high ideals. It is not easy to lose sight of the tremendous influence either for good
Biography of Charles McHugh
Among those prominent in business, social and club life in the City of Rock Island, is Charles McHugh, a man who through persistent industry and commercial acumen has wrought for himself a successful career. His parents were Thomas Edwin and Ellen (House) McHugh. His mother was born in Syracuse, New York; his father was a native of Inniskillin, Ireland, but removed to this country, where the subject of this sketch was born September 3, 1863, at Syracuse, New York. Four years later his parents came west and located at Tiskilwa, in this State, where his mother is still living. Here
Biography of Stephen Henry Velie
The City of Moline owes its prominence throughout the United States, and in fact, throughout the entire civilized world, chiefly to its manufactories. And to Stephen Henry Velie, deceased, who, during his life, was conspicuously identified with several of that city's leading manufacturing establishments, Moline is greatly indebted for the preeminence she now maintains in industrial enterprise. Mr. Velie was born April 21, 1830, near Hyde Park, Dutchess County, New York, his boyhood, until he arrived at the age of fifteen years, being spent upon his father's farm in that county. During this period he attended the public schools of
Biography of William Frederick Rapp
William Frederick Rapp, who came to Harvey County nearly forty years ago, had been a pioneer in many things, was one of the first merchants at Hesston, and had been identified with the growth and development of that town from the time it started. Among other interests Mr. Rapp is now president of the Hesston State Bank. Mr. Rapp was a practical farmer when he came to Kansas, and had acquired his early experience in one of the richest and most fertile farming sections of Illinois. He was born in Lee County, Illinois, May 17, 1852. His grandfather, Frederick William
« Previous Page1 Page2 Page3 Next »


text:
Forging strong partnerships
with exceptional leaders in
key growth sectors.
Cane Investment Partners is a private investment firm dedicated to investing in people, ideas and opportunities. In addition to providing capital funding, we commit the organizational strength of our combined experiences, financial acumen and operational expertise to fuel the success of the companies we partner with. Our approach stems from our entrepreneurial roots and a belief that companies and the people who run them are best served when capital funding is paired with strategic insight and vested counsel. At Cane, we look for passionate, motivated leaders who have a track record to build upon, a business with promise and a desire to take the company to a new level. We invest expansion capital in a broad range of sectors, including energy, healthcare, specialty finance, real estate, and service sector companies. We employ a fundamental, disciplined approach that is driven by a hands-on, in-depth investment process. Our strategy is to diversify into mid- and long-term investments, focusing on companies that will benefit from greater technological and financial sophistication.
When it comes to creating value for our clients, joint venture partners, and sponsors, we believe that today's economic climate demands an experienced fiduciary partner who possesses not only investment knowledge and operational expertise but well-honed insights and exceptional instincts as well. This deeply held philosophy served as the basis of our founders' earlier successes—and has guided Cane Investment Partners since our founding.
We focus on many different areas where we see value, including healthcare, specialty finance, energy, real estate, and service sector companies. We bring a broad base of experience and know-how to bear in this effort, both on the quantitative and qualitative sides of the equation. We rigorously analyze a company—the upside and the downside—from every angle with the goal of building a stronger, more robust and valuable company over the long term.
Where we believe we stand apart, however, is on the qualitative side. It takes a special team—and a special kind of experience—to identify new talent, to assess the acumen of a management team, to recognize whether a company has the vision and motivation to transition to the next phase of growth. Cane Investment Partners is that team.
Cane Investment Partners
3450 W. Oakton St.
Phone: (847) 745-7200
Email: info@caneip.com
Cane IP Copyright © 2023


text:
Insights by Stanford Business › What an Economist Is Learning by Driving for Uber
What an Economist Is Learning by Driving for Uber
In studying the gig economy, Paul Oyer opts for a hands-on-the-wheel approach.
February 16, 2018|by Steve Hawk
When it came to researching the gig economy, driving for Uber made it "easy to get embedded in the market as you analyze it," Paul Oyer says. | Winni Wintermeyer
Over the past few years, Stanford Graduate School of Business professor Paul Oyer has explored the growing gig economy from many perspectives. He's analyzed hourly and annual income differences between freelancers and full-time employees. He's researched (and consulted for) Upwork, the world's largest freelance website. He's nosed around Uber's database. And last year, to better understand how the ride-sharing platform works, he became one of the company's certified drivers.
We recently sat down with Oyer. Our main goal was to learn more about the many cultural shifts being caused by the exploding gig economy, but we also wondered what a tenured professor of economics learned by driving people around for money.
Why exactly did you decide to become an Uber driver?
I'm a labor economist and I often study specific groups in the labor market. For instance, I once wrote a paper about the careers of economists. In that case, I fully understood the institutional context. Then I started researching and doing some consulting for Upwork. I considered looking for work using Upwork's platform, just to get a sense of how it operates — the institutional context — but I don't really have any skills to sell as a freelancer.
There's not a lot of demand for labor economists on Upwork.
Exactly. But with Uber, the barriers to entry to becoming a driver, and thus a worker in the gig economy, are so low that if you want to study it from an academic perspective, you can just go try it out. It's easy to get embedded in the market as you analyze it. By the way, this is all work I'm doing with [Stanford GSB assistant professor] Rebecca Diamond, as well as with people at Uber, who have given us access to a lot of their data. Rebecca and I got interested in this because we wanted to learn more about the value of flexibility in the gig economy. The gig economy has many advantages and disadvantages, but the big advantage is flexibility. You work when you want to work. In particular, we wanted to run experiments that will give us a sense of how women value that flexibility relative to men.
What have you found?
We're still in the early stages, but one thing we found is that Uber's male drivers earn about 7% more than their female drivers. Now, as a labor economist, I'm always interested in differences between male and female pay, especially when discrimination is involved. But with Uber, the algorithm that assigns drivers to riders is gender-blind. Men and women are treated the same.
Our operating hypothesis was that differences in the value of flexibility would be key here. We figured that any difference in pay by gender would be explained by the fact that Uber's male drivers are more likely to go out late at night or when the surge rate is up [drivers earn more per ride when demand surges], whereas female drivers are more likely to drive on weekdays, when their kids are in school. More men are chasing the money and more women are sort of fitting it into their schedule.
Did that explain why male Uber drivers make more than female drivers?
That flexibility difference turned out to be a small part of the picture. Two other factors were more important. First, male Uber drivers drive more hours per week and are more likely to stay on the platform. That pays off financially because it turns out there's a pretty sizable learning curve. A typical male Uber driver is more experienced and, as a result, he makes more money. The other factor is a gender difference that holds in the population at large — men drive faster than women. Driving an Uber faster increases pay.
As an economist, what did you learn driving for Uber?
I started driving because I wanted to understand what other kinds of experiments we could run. It's been very useful. For example, that learning-by-doing advantage is partially due to drivers getting better at accepting or canceling rides strategically. In my early days as a driver, I really didn't know what I was doing. I wasn't strategic. But it's something you can pick up over time.
I also learned that while the gig economy is nice in the sense that you can be very flexible, it also puts a lot of pressure on you. You're constantly thinking, "Do I want to go out and drive? If I don't go out and drive, I'm not going to make any money." The same is true of almost any gig job — you're a mini entrepreneur. Nobody's paying you if you aren't actually working. You've got to get out and do it.
You've mentioned that instability is one of the primary disadvantages of freelancing, but you make a distinction between instability and risk. Can you explain that?
As a gig economy worker, you have to develop the ability to handle fluctuations, which means managing your workload in a way that you don't have to if somebody else is your boss. It also means managing your cash flow in a way that you don't have to if your paycheck looks the same every two weeks. So, there's some instability in all of that but not a ton of risk.
A person's work is about more than just a paycheck. There's a cultural and social benefit to it. People make close friends and even meet significant others at work. The gig economy is not a good fit for a lot of people for that very reason.
Paul Oyer
Today, if you're a software programmer on Upwork, you can stay very busy. The economy's doing really well. Almost any programmer who wants a full-time job can have one. As we're speaking, the Nasdaq is hovering around 7,000. But if the Nasdaq crashes back down to 3,000 sometime soon and businesses start closing, a lot of programmers will be looking for work. That means that almost everybody on Upwork will lose some work. By comparison, if a company closes or has layoffs, some people will lose their jobs entirely, which is a much bigger disruption. People who might lose their full-time jobs in a down economy are at even greater risk than gig workers who might lose some, but not all, of their income.
Also, it's interesting to note that people who choose to work in the gig economy make less on a per-year basis, but only because they're working fewer hours. My best estimates are that they make 6% less per year, but about 15% more per hour. If you're working in the gig economy by choice, you can charge a premium per hour.
You've also done some research into the way that the gig economy redistributes wealth. How does that work?
I think we can say pretty clearly that platforms like Upwork and other freelancing sites that operate across boundaries are making a small contribution toward lowering overall global inequality. People who are talented and happen to live in the Ukraine or the Philippines or India can do work for American companies that would otherwise cost those companies a lot more if they hired Americans to do it. Not many jobs can be outsourced that way, but some can. For those jobs, we're taking money from a relatively rich place and moving it to a less rich place. And when that money gets spent in, say, the Philippines, it's not just good for the gig worker, but also for the other Filipinos.
The same is true here in the U.S., although to a lesser degree. The average buyer, or employer, on Upwork is from a zip code where the income is 36% higher than the national average, while the average seller, or freelancer, is from a zip code where the income is only 14% higher than the national average. You're taking people who live in middle-class areas and you're allowing them to do work for people who live in upper-class areas.
It seems like one of the potential cultural downsides to the growing gig economy is that it reduces the social safety net.
It's hard to isolate that from the overall bifurcation of society into the haves and the have-nots. Inequality in the U.S. is dramatic and problematic right now. Over the last 50 years, the average income of men without a college education has literally dropped, adjusting for inflation. It isn't that it's gone up slowly — it's actually less than it was 50 years ago. On the other hand, for the average person with a professional degree, income has doubled or more in that same time.
That's a big problem, and I don't think the gig economy itself is making that worse. Being a low-skilled worker today is really difficult, whether you're working in a traditional job or working gigs. In fact, an argument could be made that the gig economy is kind of an alternative safety net itself, because when you lose your job, you can keep your head above water by getting work on Upwork or TaskRabbit or Wonolo or Shiftgig.
What about the fact that so many people depend on their employers for health insurance and retirement benefits?
As the gig economy grows, there will have to be some public policy reactions to it. We're going to have to make it easier for people to get those benefits on their own, especially when it comes to health insurance. That means adopting public policies that encourage the portability of benefits — as we've already done pretty successfully with retirement plans. But overall, in the United States, the safety net is pretty weak, and the growth of the gig economy is not going to make it any better. Figuring out how to handle healthcare for gig workers is a huge concern but it's actually small in the scheme of the overall healthcare policy challenges we face in the U.S. right now.
For a lot of people, there's a kinship aspect to going to work at a company every day. They see their co-workers as a second family. But that goes away when you freelance, which can be kind of lonely.
Yeah. That's a great point. A person's work is about more than just a paycheck. There's a cultural and social benefit to it. People make close friends and even meet significant others at work. The gig economy is not a good fit for a lot of people for that very reason. Many people place a high value on the flexibility of the gig economy but many others place a huge value on the structure of a traditional job.
A lot has been written about how much businesses can save by using freelancers. When shouldn't an employer dip into the gig economy?
Being a successful business is all about differentiation, while the gig economy is all about commoditizing the labor pool. You don't want to mix those two things up. If your business is successful, it's because you have a competitive advantage — you're doing something that's hard for other companies to replicate. You should not be hiring workers through the gig economy for any job that's key to creating or maintaining your competitive advantage.
Getting back to your stint as an Uber driver — did you learn anything surprising?
For one thing, you see a side of yourself you might not have known was there. I committed at the beginning that I was going to donate all of my earnings to charity, because I was already being paid by Stanford and was doing the Uber driving as part of my research. Even so, there would be days where I'd do all this driving and I'd look at the app and I'd be like, "That's all I made?!"
Is that because of the way the platform is gamified?
I don't know that I would say it's overly gamified — Uber gives driver lots of information so they can make appropriate choices. But it did bring out my naturally competitive side. I'm inordinately proud of my high rating from passengers — although that might have been because I was driving an Audi. There were some other nice surprises along the way, such as the fact that the vast majority of passengers turn out to be nice and interesting. I never had a bad experience with a passenger.
Did you tell any of them what you were really doing?
Never. No.
Did you ever have to fib?
I never lied. But it's possible that I didn't always provide a full answer to every question.
Economics, Career & Success
http://stanford.io/2obmgct
Is Workplace Equality the Economy's Hidden Engine?
In 1960, 94% of doctors and lawyers were white men. Today that number has fallen to 60%, and the economy has benefited dramatically because of it.
Uncertainty Drags Down Global Growth
Tariffs and trade policy uncertainty have had a chilling impact on business, a Stanford scholar says.
How Markets Can Change to Ease Economic Inequality
Experts weigh in on economic, education, and financial gaps at a recent Stanford GSB conference.
@pauloyer
Rebecca Diamond
Associate Professor, Economics
Paul Oyer: Just How Important Is Previous Experience in the Job Hunt?
Larger, more prestigious firms are more likely to take a chance on you.
The Gender Earnings Gap in the Gig Economy: Evidence from over a Million Rideshare Drivers
Cody Cook, Rebecca Diamond, Jonathan Hall, John A. List, Paul Oyer


text:
import hashlib
import base64
import os
import re
import hmac

import version
from util import print_error, InvalidPassword

import ecdsa
import pyaes

# Vertcoin network constants
TESTNET = False
NOLNET = False
ADDRTYPE_P2PKH = 71
ADDRTYPE_P2SH = 05
ADDRTYPE_P2SH_ALT = 63
ADDRTYPE_P2WPKH = 128
ADDRTYPE_SECRET = 128
XPRV_HEADER = 0x0488ade4
XPUB_HEADER = 0x0488b21e
#XPRV_HEADER_ALT = 0x019d9cfe
#XPUB_HEADER_ALT = 0x019da462
HEADERS_URL = "https://vtconline.org/blockchain_headers"
GENESIS = "4d96a915f49d40b1e5c2844d1ee2dccb90013a990ccea12c492d22110489f0c4"

'''
def set_testnet():
    #ADDRTYPE_P2SH_ALT
    global ADDRTYPE_P2PKH, ADDRTYPE_P2SH, ADDRTYPE_P2WPKH
    #XPRV_HEADER_ALT, XPUB_HEADER_ALT
    global XPRV_HEADER, XPUB_HEADER
    global TESTNET, HEADERS_URL
    global GENESIS
    TESTNET = True
    ADDRTYPE_P2PKH = 111
    ADDRTYPE_P2SH = 58
    ADDRTYPE_P2SH_ALT = 196
    ADDRTYPE_P2WPKH = 3
    XPRV_HEADER = 0x04358394
    XPUB_HEADER = 0x043587cf
    XPRV_HEADER_ALT = 0x0436ef7d
    XPUB_HEADER_ALT = 0x0436f6e1
    HEADERS_URL = "https://electrum-ltc.org/testnet_headers"
    GENESIS = "4966625a4b2851d9fdee139e56211a0d88575f59ed816ff5e6a63deb4e3e29a0"
'''

def set_nolnet():
    global ADDRTYPE_P2PKH, ADDRTYPE_P2SH, ADDRTYPE_P2WPKH
    global XPRV_HEADER, XPUB_HEADER
    global NOLNET, HEADERS_URL
    global GENESIS
    TESTNET = True
    ADDRTYPE_P2PKH = 0
    ADDRTYPE_P2SH = 5
    ADDRTYPE_P2WPKH = 6
    XPRV_HEADER = 0x0488ade4
    XPUB_HEADER = 0x0488b21e
    HEADERS_URL = "https://headers.electrum.org/nolnet_headers"
    GENESIS = "663c88be18d07c45f87f910b93a1a71ed9ef1946cad50eb6a6f3af4c424625c6"

################################## transactions

DUST_SOFT_LIMIT = 100000
MIN_RELAY_TX_FEE = 100000
FEE_STEP = 100000
MAX_FEE_RATE = 1000000
FEE_TARGETS = [25, 10, 5, 2]

COINBASE_MATURITY = 100
COIN = 100000000

# supported types of transction outputs
TYPE_ADDRESS = 0
TYPE_PUBKEY  = 1
TYPE_SCRIPT  = 2

# AES encryption
try:
    from Cryptodome.Cipher import AES
except:
    AES = None

def aes_encrypt_with_iv(key, iv, data):
    if AES:
        padlen = 16 - (len(data) % 16)
        if padlen == 0:
            padlen = 16
        data += chr(padlen) * padlen
        e = AES.new(key, AES.MODE_CBC, iv).encrypt(data)
        return e
    else:
        aes_cbc = pyaes.AESModeOfOperationCBC(key, iv=iv)
        aes = pyaes.Encrypter(aes_cbc)
        e = aes.feed(data) + aes.feed()  # empty aes.feed() appends pkcs padding
        return e

def aes_decrypt_with_iv(key, iv, data):
    if AES:
        cipher = AES.new(key, AES.MODE_CBC, iv)
        data = cipher.decrypt(data)
        padlen = ord(data[-1])
        for i in data[-padlen:]:
            if ord(i) != padlen:
                raise InvalidPassword()
        return data[0:-padlen]
    else:
        aes_cbc = pyaes.AESModeOfOperationCBC(key, iv=iv)
        aes = pyaes.Decrypter(aes_cbc)
        s = aes.feed(data) + aes.feed()  # empty aes.feed() strips pkcs padding
        return s

def EncodeAES(secret, s):
    iv = bytes(os.urandom(16))
    ct = aes_encrypt_with_iv(secret, iv, s)
    e = iv + ct
    return base64.b64encode(e)

def DecodeAES(secret, e):
    e = bytes(base64.b64decode(e))
    iv, e = e[:16], e[16:]
    s = aes_decrypt_with_iv(secret, iv, e)
    return s

def pw_encode(s, password):
    if password:
        secret = Hash(password)
        return EncodeAES(secret, s.encode("utf8"))
    else:
        return s

def pw_decode(s, password):
    if password is not None:
        secret = Hash(password)
        try:
            d = DecodeAES(secret, s).decode("utf8")
        except Exception:
            raise InvalidPassword()
        return d
    else:
        return s

def rev_hex(s):
    return s.decode('hex')[::-1].encode('hex')

def int_to_hex(i, length=1):
    s = hex(i)[2:].rstrip('L')
    s = "0"*(2*length - len(s)) + s
    return rev_hex(s)

def var_int(i):
    # https://en.bitcoin.it/wiki/Protocol_specification#Variable_length_integer
    if i<0xfd:
        return int_to_hex(i)
    elif i<=0xffff:
        return "fd"+int_to_hex(i,2)
    elif i<=0xffffffff:
        return "fe"+int_to_hex(i,4)
    else:
        return "ff"+int_to_hex(i,8)

def op_push(i):
    if i<0x4c:
        return int_to_hex(i)
    elif i<0xff:
        return '4c' + int_to_hex(i)
    elif i<0xffff:
        return '4d' + int_to_hex(i,2)
    else:
        return '4e' + int_to_hex(i,4)

def sha256(x):
    return hashlib.sha256(x).digest()

def Hash(x):
    if type(x) is unicode: x=x.encode('utf-8')
    return sha256(sha256(x))

hash_encode = lambda x: x[::-1].encode('hex')
hash_decode = lambda x: x.decode('hex')[::-1]
hmac_sha_512 = lambda x,y: hmac.new(x, y, hashlib.sha512).digest()

def is_new_seed(x, prefix=version.SEED_PREFIX):
    import mnemonic
    x = mnemonic.normalize_text(x)
    s = hmac_sha_512("Seed version", x.encode('utf8')).encode('hex')
    return s.startswith(prefix)

def is_old_seed(seed):
    import old_mnemonic
    words = seed.strip().split()
    try:
        old_mnemonic.mn_decode(words)
        uses_electrum_words = True
    except Exception:
        uses_electrum_words = False
    try:
        seed.decode('hex')
        is_hex = (len(seed) == 32 or len(seed) == 64)
    except Exception:
        is_hex = False
    return is_hex or (uses_electrum_words and (len(words) == 12 or len(words) == 24))

def seed_type(x):
    if is_old_seed(x):
        return 'old'
    elif is_new_seed(x):
        return 'standard'
    elif TESTNET and is_new_seed(x, version.SEED_PREFIX_SW):
        return 'segwit'
    elif is_new_seed(x, version.SEED_PREFIX_2FA):
        return '2fa'
    return ''

is_seed = lambda x: bool(seed_type(x))

# pywallet openssl private key implementation

def i2o_ECPublicKey(pubkey, compressed=False):
    # public keys are 65 bytes long (520 bits)
    # 0x04 + 32-byte X-coordinate + 32-byte Y-coordinate
    # 0x00 = point at infinity, 0x02 and 0x03 = compressed, 0x04 = uncompressed
    # compressed keys: <sign> <x> where <sign> is 0x02 if y is even and 0x03 if y is odd
    if compressed:
        if pubkey.point.y() & 1:
            key = '03' + '%064x' % pubkey.point.x()
        else:
            key = '02' + '%064x' % pubkey.point.x()
    else:
        key = '04' + \
              '%064x' % pubkey.point.x() + \
              '%064x' % pubkey.point.y()

    return key.decode('hex')

# end pywallet openssl private key implementation

############ functions from pywallet #####################

def hash_160(public_key):
    if 'ANDROID_DATA' in os.environ:
        from Crypto.Hash import RIPEMD
        md = RIPEMD.new()
    else:
        md = hashlib.new('ripemd')
    md.update(sha256(public_key))
    return md.digest()

def hash_160_to_bc_address(h160, addrtype, witness_program_version=1):
    s = chr(addrtype)
    if addrtype == ADDRTYPE_P2WPKH:
        s += chr(witness_program_version) + chr(0)
    s += h160
    return base_encode(s+Hash(s)[0:4], base=58)

def bc_address_to_hash_160(addr):
    bytes = base_decode(addr, 25, base=58)
    return ord(bytes[0]), bytes[1:21]

def hash160_to_p2pkh(h160):
    return hash_160_to_bc_address(h160, ADDRTYPE_P2PKH)

def hash160_to_p2sh(h160):
    return hash_160_to_bc_address(h160, ADDRTYPE_P2SH)

def public_key_to_p2pkh(public_key):
    return hash160_to_p2pkh(hash_160(public_key))

def public_key_to_p2wpkh(public_key):
    return hash160_to_bc_address(hash_160(public_key), ADDRTYPE_P2WPKH)

__b58chars = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'
assert len(__b58chars) == 58

__b43chars = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ$*+-./:'
assert len(__b43chars) == 43

def base_encode(v, base):
    """ encode v, which is a string of bytes, to base58."""
    if base == 58:
        chars = __b58chars
    elif base == 43:
        chars = __b43chars
    long_value = 0L
    for (i, c) in enumerate(v[::-1]):
        long_value += (256**i) * ord(c)
    result = ''
    while long_value >= base:
        div, mod = divmod(long_value, base)
        result = chars[mod] + result
        long_value = div
    result = chars[long_value] + result
    # Bitcoin does a little leading-zero-compression:
    # leading 0-bytes in the input become leading-1s
    nPad = 0
    for c in v:
        if c == '\0': nPad += 1
        else: break
    return (chars[0]*nPad) + result

def base_decode(v, length, base):
    """ decode v into a string of len bytes."""
    if base == 58:
        chars = __b58chars
    elif base == 43:
        chars = __b43chars
    long_value = 0L
    for (i, c) in enumerate(v[::-1]):
        long_value += chars.find(c) * (base**i)
    result = ''
    while long_value >= 256:
        div, mod = divmod(long_value, 256)
        result = chr(mod) + result
        long_value = div
    result = chr(long_value) + result
    nPad = 0
    for c in v:
        if c == chars[0]: nPad += 1
        else: break
    result = chr(0)*nPad + result
    if length is not None and len(result) != length:
        return None
    return result

def EncodeBase58Check(vchIn):
    hash = Hash(vchIn)
    return base_encode(vchIn + hash[0:4], base=58)

def DecodeBase58Check(psz):
    vchRet = base_decode(psz, None, base=58)
    key = vchRet[0:-4]
    csum = vchRet[-4:]
    hash = Hash(key)
    cs32 = hash[0:4]
    if cs32 != csum:
        return None
    else:
        return key

def PrivKeyToSecret(privkey):
    return privkey[9:9+32]

def SecretToASecret(secret, compressed=False):
    addrtype = ADDRTYPE_P2PKH
    vchIn = chr(ADDRTYPE_SECRET&255) + secret
    if compressed: vchIn += '\01'
    return EncodeBase58Check(vchIn)

def ASecretToSecret(key):
    addrtype = ADDRTYPE_P2PKH
    vch = DecodeBase58Check(key)
    if vch and ( vch[0] == chr((addrtype+128)&255) or vch[0] == chr(ADDRTYPE_SECRET&255) ):
        return vch[1:]
    elif is_minikey(key):
        return minikey_to_private_key(key)
    else:
        return False

def regenerate_key(sec):
    b = ASecretToSecret(sec)
    if not b:
        return False
    b = b[0:32]
    return EC_KEY(b)

def GetPubKey(pubkey, compressed=False):
    return i2o_ECPublicKey(pubkey, compressed)

def GetSecret(pkey):
    return ('%064x' % pkey.secret).decode('hex')

def is_compressed(sec):
    b = ASecretToSecret(sec)
    return len(b) == 33

def public_key_from_private_key(sec):
    # rebuild public key from private key, compressed or uncompressed
    pkey = regenerate_key(sec)
    assert pkey
    compressed = is_compressed(sec)
    public_key = GetPubKey(pkey.pubkey, compressed)
    return public_key.encode('hex')

def address_from_private_key(sec):
    public_key = public_key_from_private_key(sec)
    address = public_key_to_p2pkh(public_key.decode('hex'))
    return address

def is_valid(addr):
    return is_address(addr)

def is_address(addr):
    try:
        addrtype, h = bc_address_to_hash_160(addr)
    except Exception:
        return False
    if addrtype not in [ADDRTYPE_P2PKH, ADDRTYPE_P2SH]:
        return False
    return addr == hash_160_to_bc_address(h, addrtype)

def is_p2pkh(addr):
    if is_address(addr):
        addrtype, h = bc_address_to_hash_160(addr)
        return addrtype == ADDRTYPE_P2PKH

def is_p2sh(addr):
    if is_address(addr):
        addrtype, h = bc_address_to_hash_160(addr)
        return addrtype in [ADDRTYPE_P2SH]

def is_private_key(key):
    try:
        k = ASecretToSecret(key)
        return k is not False
    except:
        return False

########### end pywallet functions #######################

def is_minikey(text):
    # Minikeys are typically 22 or 30 characters, but this routine
    # permits any length of 20 or more provided the minikey is valid.
    # A valid minikey must begin with an 'S', be in base58, and when
    # suffixed with '?' have its SHA256 hash begin with a zero byte.
    # They are widely used in Casascius physical bitoins.
    return (len(text) >= 20 and text[0] == 'S'
            and all(c in __b58chars for c in text)
            and ord(sha256(text + '?')[0]) == 0)

def minikey_to_private_key(text):
    return sha256(text)

from ecdsa.ecdsa import curve_secp256k1, generator_secp256k1
from ecdsa.curves import SECP256k1
from ecdsa.ellipticcurve import Point
from ecdsa.util import string_to_number, number_to_string

def msg_magic(message):
    varint = var_int(len(message))
    encoded_varint = "".join([chr(int(varint[i:i+2], 16)) for i in xrange(0, len(varint), 2)])
    return "\x19Vertcoin Signed Message:\n" + encoded_varint + message

def verify_message(address, sig, message):
    try:
        h = Hash(msg_magic(message))
        public_key, compressed = pubkey_from_signature(sig, h)
        # check public key using the address
        pubkey = point_to_ser(public_key.pubkey.point, compressed)
        addr = public_key_to_p2pkh(pubkey)
        if address != addr:
            raise Exception("Bad signature")
        # check message
        public_key.verify_digest(sig[1:], h, sigdecode = ecdsa.util.sigdecode_string)
        return True
    except Exception as e:
        print_error("Verification error: {0}".format(e))
        return False

def encrypt_message(message, pubkey):
    return EC_KEY.encrypt_message(message, pubkey.decode('hex'))

def chunks(l, n):
    return [l[i:i+n] for i in xrange(0, len(l), n)]

def ECC_YfromX(x,curved=curve_secp256k1, odd=True):
    _p = curved.p()
    _a = curved.a()
    _b = curved.b()
    for offset in range(128):
        Mx = x + offset
        My2 = pow(Mx, 3, _p) + _a * pow(Mx, 2, _p) + _b % _p
        My = pow(My2, (_p+1)/4, _p )

        if curved.contains_point(Mx,My):
            if odd == bool(My&1):
                return [My,offset]
            return [_p-My,offset]
    raise Exception('ECC_YfromX: No Y found')

def negative_point(P):
    return Point( P.curve(), P.x(), -P.y(), P.order() )

def point_to_ser(P, comp=True ):
    if comp:
        return ( ('%02x'%(2+(P.y()&1)))+('%064x'%P.x()) ).decode('hex')
    return ( '04'+('%064x'%P.x())+('%064x'%P.y()) ).decode('hex')

def ser_to_point(Aser):
    curve = curve_secp256k1
    generator = generator_secp256k1
    _r  = generator.order()
    assert Aser[0] in ['\x02','\x03','\x04']
    if Aser[0] == '\x04':
        return Point( curve, string_to_number(Aser[1:33]), string_to_number(Aser[33:]), _r )
    Mx = string_to_number(Aser[1:])
    return Point( curve, Mx, ECC_YfromX(Mx, curve, Aser[0]=='\x03')[0], _r )

class MyVerifyingKey(ecdsa.VerifyingKey):
    @classmethod
    def from_signature(klass, sig, recid, h, curve):
        """ See http://www.secg.org/download/aid-780/sec1-v2.pdf, chapter 4.1.6 """
        from ecdsa import util, numbertheory
        import msqr
        curveFp = curve.curve
        G = curve.generator
        order = G.order()
        # extract r,s from signature
        r, s = util.sigdecode_string(sig, order)
        # 1.1
        x = r + (recid/2) * order
        # 1.3
        alpha = ( x * x * x  + curveFp.a() * x + curveFp.b() ) % curveFp.p()
        beta = msqr.modular_sqrt(alpha, curveFp.p())
        y = beta if (beta - recid) % 2 == 0 else curveFp.p() - beta
        # 1.4 the constructor checks that nR is at infinity
        R = Point(curveFp, x, y, order)
        # 1.5 compute e from message:
        e = string_to_number(h)
        minus_e = -e % order
        # 1.6 compute Q = r^-1 (sR - eG)
        inv_r = numbertheory.inverse_mod(r,order)
        Q = inv_r * ( s * R + minus_e * G )
        return klass.from_public_point( Q, curve )

def pubkey_from_signature(sig, h):
    if len(sig) != 65:
        raise Exception("Wrong encoding")
    nV = ord(sig[0])
    if nV < 27 or nV >= 35:
        raise Exception("Bad encoding")
    if nV >= 31:
        compressed = True
        nV -= 4
    else:
        compressed = False
    recid = nV - 27
    return MyVerifyingKey.from_signature(sig[1:], recid, h, curve = SECP256k1), compressed

class MySigningKey(ecdsa.SigningKey):
    """Enforce low S values in signatures"""

    def sign_number(self, number, entropy=None, k=None):
        curve = SECP256k1
        G = curve.generator
        order = G.order()
        r, s = ecdsa.SigningKey.sign_number(self, number, entropy, k)
        if s > order/2:
            s = order - s
        return r, s

class EC_KEY(object):

    def __init__( self, k ):
        secret = string_to_number(k)
        self.pubkey = ecdsa.ecdsa.Public_key( generator_secp256k1, generator_secp256k1 * secret )
        self.privkey = ecdsa.ecdsa.Private_key( self.pubkey, secret )
        self.secret = secret

    def get_public_key(self, compressed=True):
        return point_to_ser(self.pubkey.point, compressed).encode('hex')

    def sign(self, msg_hash):
        private_key = MySigningKey.from_secret_exponent(self.secret, curve = SECP256k1)
        public_key = private_key.get_verifying_key()
        signature = private_key.sign_digest_deterministic(msg_hash, hashfunc=hashlib.sha256, sigencode = ecdsa.util.sigencode_string)
        assert public_key.verify_digest(signature, msg_hash, sigdecode = ecdsa.util.sigdecode_string)
        return signature

    def sign_message(self, message, is_compressed):
        signature = self.sign(Hash(msg_magic(message)))
        for i in range(4):
            sig = chr(27 + i + (4 if is_compressed else 0)) + signature
            try:
                self.verify_message(sig, message)
                return sig
            except Exception:
                continue
        else:
            raise Exception("error: cannot sign message")

    def verify_message(self, sig, message):
        h = Hash(msg_magic(message))
        public_key, compressed = pubkey_from_signature(sig, h)
        # check public key
        if point_to_ser(public_key.pubkey.point, compressed) != point_to_ser(self.pubkey.point, compressed):
            raise Exception("Bad signature")
        # check message
        public_key.verify_digest(sig[1:], h, sigdecode = ecdsa.util.sigdecode_string)

    # ECIES encryption/decryption methods; AES-128-CBC with PKCS7 is used as the cipher; hmac-sha256 is used as the mac

    @classmethod
    def encrypt_message(self, message, pubkey):

        pk = ser_to_point(pubkey)
        if not ecdsa.ecdsa.point_is_valid(generator_secp256k1, pk.x(), pk.y()):
            raise Exception('invalid pubkey')

        ephemeral_exponent = number_to_string(ecdsa.util.randrange(pow(2,256)), generator_secp256k1.order())
        ephemeral = EC_KEY(ephemeral_exponent)
        ecdh_key = point_to_ser(pk * ephemeral.privkey.secret_multiplier)
        key = hashlib.sha512(ecdh_key).digest()
        iv, key_e, key_m = key[0:16], key[16:32], key[32:]
        ciphertext = aes_encrypt_with_iv(key_e, iv, message)
        ephemeral_pubkey = ephemeral.get_public_key(compressed=True).decode('hex')
        encrypted = 'BIE1' + ephemeral_pubkey + ciphertext
        mac = hmac.new(key_m, encrypted, hashlib.sha256).digest()

        return base64.b64encode(encrypted + mac)

    def decrypt_message(self, encrypted):
        encrypted = base64.b64decode(encrypted)
        if len(encrypted) < 85:
            raise Exception('invalid ciphertext: length')
        magic = encrypted[:4]
        ephemeral_pubkey = encrypted[4:37]
        ciphertext = encrypted[37:-32]
        mac = encrypted[-32:]
        if magic != 'BIE1':
            raise Exception('invalid ciphertext: invalid magic bytes')
        try:
            ephemeral_pubkey = ser_to_point(ephemeral_pubkey)
        except AssertionError, e:
            raise Exception('invalid ciphertext: invalid ephemeral pubkey')
        if not ecdsa.ecdsa.point_is_valid(generator_secp256k1, ephemeral_pubkey.x(), ephemeral_pubkey.y()):
            raise Exception('invalid ciphertext: invalid ephemeral pubkey')
        ecdh_key = point_to_ser(ephemeral_pubkey * self.privkey.secret_multiplier)
        key = hashlib.sha512(ecdh_key).digest()
        iv, key_e, key_m = key[0:16], key[16:32], key[32:]
        if mac != hmac.new(key_m, encrypted[:-32], hashlib.sha256).digest():
            raise InvalidPassword()
        return aes_decrypt_with_iv(key_e, iv, ciphertext)

###################################### BIP32 ##############################

random_seed = lambda n: "%032x"%ecdsa.util.randrange( pow(2,n) )
BIP32_PRIME = 0x80000000

def get_pubkeys_from_secret(secret):
    # public key
    private_key = ecdsa.SigningKey.from_string( secret, curve = SECP256k1 )
    public_key = private_key.get_verifying_key()
    K = public_key.to_string()
    K_compressed = GetPubKey(public_key.pubkey,True)
    return K, K_compressed

# Child private key derivation function (from master private key)
# k = master private key (32 bytes)
# c = master chain code (extra entropy for key derivation) (32 bytes)
# n = the index of the key we want to derive. (only 32 bits will be used)
# If n is negative (i.e. the 32nd bit is set), the resulting private key's
#  corresponding public key can NOT be determined without the master private key.
# However, if n is positive, the resulting private key's corresponding
#  public key can be determined without the master private key.
def CKD_priv(k, c, n):
    is_prime = n & BIP32_PRIME
    return _CKD_priv(k, c, rev_hex(int_to_hex(n,4)).decode('hex'), is_prime)

def _CKD_priv(k, c, s, is_prime):
    order = generator_secp256k1.order()
    keypair = EC_KEY(k)
    cK = GetPubKey(keypair.pubkey,True)
    data = chr(0) + k + s if is_prime else cK + s
    I = hmac.new(c, data, hashlib.sha512).digest()
    k_n = number_to_string( (string_to_number(I[0:32]) + string_to_number(k)) % order , order )
    c_n = I[32:]
    return k_n, c_n

# Child public key derivation function (from public key only)
# K = master public key
# c = master chain code
# n = index of key we want to derive
# This function allows us to find the nth public key, as long as n is
#  non-negative. If n is negative, we need the master private key to find it.
def CKD_pub(cK, c, n):
    if n & BIP32_PRIME: raise
    return _CKD_pub(cK, c, rev_hex(int_to_hex(n,4)).decode('hex'))

# helper function, callable with arbitrary string
def _CKD_pub(cK, c, s):
    order = generator_secp256k1.order()
    I = hmac.new(c, cK + s, hashlib.sha512).digest()
    curve = SECP256k1
    pubkey_point = string_to_number(I[0:32])*curve.generator + ser_to_point(cK)
    public_key = ecdsa.VerifyingKey.from_public_point( pubkey_point, curve = SECP256k1 )
    c_n = I[32:]
    cK_n = GetPubKey(public_key.pubkey,True)
    return cK_n, c_n

def xprv_header(xtype):
    return ("%08x"%(XPRV_HEADER + xtype)).decode('hex')

def xpub_header(xtype):
    return ("%08x"%(XPUB_HEADER + xtype)).decode('hex')

def serialize_xprv(xtype, c, k, depth=0, fingerprint=chr(0)*4, child_number=chr(0)*4):
    xprv = xprv_header(xtype) + chr(depth) + fingerprint + child_number + c + chr(0) + k
    return EncodeBase58Check(xprv)

def serialize_xpub(xtype, c, cK, depth=0, fingerprint=chr(0)*4, child_number=chr(0)*4):
    xpub = xpub_header(xtype) + chr(depth) + fingerprint + child_number + c + cK
    return EncodeBase58Check(xpub)

def deserialize_xkey(xkey, prv):
    xkey = DecodeBase58Check(xkey)
    if len(xkey) != 78:
        raise BaseException('Invalid length')
    depth = ord(xkey[4])
    fingerprint = xkey[5:9]
    child_number = xkey[9:13]
    c = xkey[13:13+32]
    header = XPRV_HEADER if prv else XPUB_HEADER
    xtype = int('0x' + xkey[0:4].encode('hex'), 16) - header
    if xtype not in ([0, 1] if TESTNET else [0]):
        raise BaseException('Invalid header')
    n = 33 if prv else 32
    K_or_k = xkey[13+n:]
    return xtype, depth, fingerprint, child_number, c, K_or_k

def deserialize_xpub(xkey):
    return deserialize_xkey(xkey, False)

def deserialize_xprv(xkey):
    return deserialize_xkey(xkey, True)

def is_xpub(text):
    try:
        deserialize_xpub(text)
        return True
    except:
        return False

def is_xprv(text):
    try:
        deserialize_xprv(text)
        return True
    except:
        return False

def xpub_from_xprv(xprv):
    xtype, depth, fingerprint, child_number, c, k = deserialize_xprv(xprv)
    K, cK = get_pubkeys_from_secret(k)
    return serialize_xpub(xtype, c, cK, depth, fingerprint, child_number)

def bip32_root(seed, xtype):
    I = hmac.new("Bitcoin seed", seed, hashlib.sha512).digest()
    master_k = I[0:32]
    master_c = I[32:]
    K, cK = get_pubkeys_from_secret(master_k)
    xprv = serialize_xprv(xtype, master_c, master_k)
    xpub = serialize_xpub(xtype, master_c, cK)
    return xprv, xpub

def xpub_from_pubkey(xtype, cK):
    assert cK[0] in ['\x02','\x03']
    return serialize_xpub(xtype, chr(0)*32, cK)

def bip32_derivation(s):
    assert s.startswith('m/')
    s = s[2:]
    for n in s.split('/'):
        if n == '': continue
        i = int(n[:-1]) + BIP32_PRIME if n[-1] == "'" else int(n)
        yield i

def is_bip32_derivation(x):
    try:
        [ i for i in bip32_derivation(x)]
        return True
    except :
        return False

def bip32_private_derivation(xprv, branch, sequence):
    assert sequence.startswith(branch)
    if branch == sequence:
        return xprv, xpub_from_xprv(xprv)
    xtype, depth, fingerprint, child_number, c, k = deserialize_xprv(xprv)
    sequence = sequence[len(branch):]
    for n in sequence.split('/'):
        if n == '': continue
        i = int(n[:-1]) + BIP32_PRIME if n[-1] == "'" else int(n)
        parent_k = k
        k, c = CKD_priv(k, c, i)
        depth += 1
    _, parent_cK = get_pubkeys_from_secret(parent_k)
    fingerprint = hash_160(parent_cK)[0:4]
    child_number = ("%08X"%i).decode('hex')
    K, cK = get_pubkeys_from_secret(k)
    xpub = serialize_xpub(xtype, c, cK, depth, fingerprint, child_number)
    xprv = serialize_xprv(xtype, c, k, depth, fingerprint, child_number)
    return xprv, xpub

def bip32_public_derivation(xpub, branch, sequence):
    xtype, depth, fingerprint, child_number, c, cK = deserialize_xpub(xpub)
    assert sequence.startswith(branch)
    sequence = sequence[len(branch):]
    for n in sequence.split('/'):
        if n == '': continue
        i = int(n)
        parent_cK = cK
        cK, c = CKD_pub(cK, c, i)
        depth += 1
    fingerprint = hash_160(parent_cK)[0:4]
    child_number = ("%08X"%i).decode('hex')
    return serialize_xpub(xtype, c, cK, depth, fingerprint, child_number)

def bip32_private_key(sequence, k, chain):
    for i in sequence:
        k, chain = CKD_priv(k, chain, i)
    return SecretToASecret(k, True)

def xkeys_from_seed(seed, passphrase, derivation):
    from mnemonic import Mnemonic
    xprv, xpub = bip32_root(Mnemonic.mnemonic_to_seed(seed, passphrase), 0)
    xprv, xpub = bip32_private_derivation(xprv, "m/", derivation)
    return xprv, xpub


tucked-in-pajamas \(´▽`)/ : My life in picture form.
My life in picture form.
Expression, NOT IMPRESSION! #DahilNakakamiss... ang Bora. hahahaha!
This was taken by a random waiter in La Carmela de Boracay last January of this year. With me are my two awesome former officemates, Zhie who's now in Dubai herding camels and Joan who's just been promoted and still the Cargo Planner that she is! Hahaha We love sarcasm in our perky world and that's the very reason why I miss these girls along with my other lunch mates in the 17th.
About the caption, that's who we are in real life! We live for our own satisfaction and not your sugar coated type of girls! Who says Bora is something to prepare your body for when actually it's really cold especially while walking along the seashore at night!!! HAHAHAHA! I love how outgoing and comfortable we are in our best clothes on the cold sands of Boracay~ Welcome 2013!
This picture was when we're in HK Disneyland at the momentum of the Space Shuttle 3D ride. That's me beside my Ate Yen with her mouth open shocked screen cap and fun loving father, Papi who doesn't seem afraid rather relaxed at the back.
Our Papi tends to challenge us to try and speak our minds whenever possible. He taught me that Alphabet should not be sang or else you'll end up memorizing it without much thought or sincerity (oh!) and so he will give me that stern look whenever I do some singing. Hahahaha!
And for that reason, whenever we had our family dinner or scheduled meeting we always exercise that open conversation. My sister is now on her first year in Law School and though I know she's quite afraid with the toxic case studies, she'll make it for sure! My brother who's not in the picture is also quite of a debater and some smooth talker. So whenever I feel the pressure or fear, I just keep in mind the teachings of my parents and the art of letting go if I happened to deliver with just half of what I really can. Just do it anyways!
You know I'm a Fan Fiction noble prize winner right?!? Hahaha! This was taken while we're on a raft on our way to Tarzan's tree house in HK Disneyland. And to feed the loneliness, I deliberately posed a pitiful look while my backgrounds were in action. The couple on the left caught kissing. Opposite them is the girl who's making the first move to her boy, look at what she's grabbing!!!
Going steamy huh?! Aigoo! Yeobo pallyi! Let's show them PDA 2.0! Puahahah!
nASA man: Will you marry me?
Ako: Enebe! Saka na pag may dumaan na shooting star!
And so I wasn't that alone after all! There were couple of thrills in this life we called, romance. Wooooohhhh!!! Goosebumps on the rise!
I used to play Futsal as a sport during my college days in Ateneo. And that was the product of playing well! Yay! It happened on our last game for a runner up place during our intramurals and though I felt the pain for having my joints dislocated it was more of the prestige than the pain it caused me. Buahahhaha!
The caffeine intake is now about to subside so a swift change must occur at this rate.
And that ends my thoughts about my existence and alienation on this Flashback Friday.
Good night my dear Aliens!!!


Competition can be healthy. Even if you haven't reached the top of your game, you'll have fun testing your powers against those of fellow enthusiasts. After entering a few contests, you will start winning prizes. Word will spread of your talent. You might even be making money on the side by fulfilling orders for paintings, stories or designs. When you encounter the occasional criticism, stay calm. Are these remarks fair or malicious? When they're justified, use them to improve your performance.


CONWAY, N.H. (CBS/AP) – A Maine woman whose car and infant daughter were abandoned in a New Hampshire parking lot appears to be the victim of a crime, police said Sunday.
Local and state police are investigating leads and preparing evidence for analysis after 20-year-old Krista Dittmeyer's car was found with its engine running and hazard lights flashing in the Cranmore Mountain ski area parking lot in Conway, said Lt. Chris Perley. But there is nothing to indicate that Dittmeyer left behind her car and child, who was found in the car, by choice.
Police got a call at 6:30 a.m. Saturday from someone who spotted the car. The baby is in good condition and has been turned over to family members.
Police said Dittmeyer, who lives and works in Portland and has ties to Bridgton, Maine, last talked to family members at about 8 p.m. Friday by phone.
Family friend Kathy Pratt said the incident is uncharacteristic of Dittmeyer, who she described as a caring, responsible mother.
Her mom said that Dittmeyer frequently visits her family and friends in Conway.
WBZ-TV's Alana Gomez contributed to this report.
I hope the mother is found save I will be praying for her.
Most mothers would never leave their child abandoned, never mind in a running car. I'm glad the baby is okay, and I pray they find the mother one way or another. I think not knowing is more painful then anything. I pray for the family.
A beautiful young woman missing and nobody knows what happened. What a terrible tragedy for her family. We all hope that things work out for all concerned.
This is a terrible thing to hear. When a mother goes missing and a child is left behind. I dont know how people can be so cruel. One thing though for those who watch Criminals Minds: Suspect Behavior. A couple of episodes ago they ran with this same senario (mothers kindnapped in new hampshire). I hope they find the mom safe and she is reunited with her baby but this just disturbs me in all kinds of ways.
It certainly does not appear to be a simple robbery or abduction, but rather a so-called "crime of passion". Have the New Hampshire authorities questioned the father of Krista Dittmeyer's baby and any current (or past) boyfriends she may have had in either Maine or New Hampshire? Since both Maine and New Hampshire seem involved in this case, it would seem reasonable for New Hampshire authorities to seek help from the FBI in investigating this case. WBZ's Dan Rea might be able to help by running a short (1/2-hour) segment to solicit ideas from the WBZ listening community.


ter 48 résultats ont été trouvés.
Armes aériennes US Air Force..
TERA (The Exiled Realm of..
TER racks and Mk.82 Snakeye bombs..
TER & MER racks and Mk.82 Snakeye..
TER racks for USAAF combat..
RN Helicopter Base A single 1:144..
SLASH - 4x4 OBA - 1 / 10..
SUMMIT - 4x4 - 1/10 BRUSHED -..
E-REVO - 4x4 - 1/16 VXL BRUSHLESS..
NITRO SLASH 4 X 2 - 1/10 NITRO..


text:
Culture is Ultimately About Ideas, Which Is Why Re...
The Good News About Global Poverty
Right-Wing Movements Are About Nationalism, Not Ec...
Culture is Ultimately About Ideas, Which Is Why Religion Can Produce Culture in a Way that "Race" Cannot
The good news is that global poverty at the very bottom has been cut in half in the past generation.
The surprising news is that most people think global poverty is as bad as ever, and maybe getting worse.
Sure, there are still hundreds of millions desperately poor. But there are now billions of people who are not.
In the 1970s the world changed from mostly very poor, to mostly not very poor.
And the even better news: desperate poverty keeps declining.
Right-Wing Movements Are About Nationalism, Not Economics
There are right-wing movements all over the world. Some are in more market-oriented societies, some in strong welfare states, some in state-authoritarian economies. Their economic policies, likewise, range from populist social provision to you're-on-your-own-Jack austerity.
What they have in common is ethnic nationalism.
The Trump vote was driven more by white racial resentment than by economic dislocation.
I believe other studies will find similar things about the rise of right-wing populism in other countries, as well.


Thanks. After some experiments it certainly looks as if the rendering considers equation of time.
And you make it work nicely for your renderings. But for me it would only be confusing if I could shift the sun at random, so I am happy it is 'complicated' to 'cheat'.
Anyone coming across this thread and reading about the sky texture alignment, should also know that SH3D 6 (beta 7) introduces X offset for the sky texture so it can be rotated.
Your contributions here are boosting the value of this thread.
even if the image transforms well, it somehow gets so blurred that it is totally useless.
It's your fear of high resolution that is blurring your vision!
My sky images are 15000px x 3750 px. I normally go at least twice that size when editing, and then rescale to 15000 x 3750 px ( or sometimes as low as 6000 x 1500 px if there are no gradients present).
The jpg-compression algorithm can be tricked by adding a layover of noise, so that even at the lowest (10%) jpg-quality a 15000 x 3750 image will render an acceptable sky at FoV 30.
A 15000 x 3750 low-res jpg @ 10% can weigh as little as 200kb, and still render ok.
For sky images, resolution (size) and quality goes hand in hand.
That could very well be, actually. As you know I work with scaled down images for templates and tests even if I am not quite as cheap with my more private projects.
Still, there is something strange. I can transform the image quite well in the Gimp. But when I try to use .svg so a linked image can distort automatically, I get problems. Cannot remember how intimate you are with .svg, but here is the latest attempt using .svg + css3 to test 'automatic' 3d distort in the template (viewBox="0 0 360 94" ). In Firefox, the rectangle and image distorts, but is too blurred.
But I'm quite intimate with Photoshop, and I know for a fact that scaled down images will produce crappy outputs.
We have talked about this before.
A 1024 px image at maximum jpg-quality will not produce an acceptable sky image, whereas the same image at 6000 px, compressed so much that it's weighing the same (both weighing 150 kb), will produce a far better ( almost a tolerable) sky rendering.
Size matters (resolution – not filesize), not only for the sky, but for ALL textures, and the higher the resolution – the more compression can be applied – ergo: The filesize is less important than the resolution.
I prefer sky images @ 15000 x 3700 px, and they normally weigh between 800 kb and 2.1 Mb.
The larger sky image takes four seconds longer to render.
Picking a tool is a matter of choice. My preference is Gimp for the raster images, which I link into an .svg file for post editing with a text editor or Inkscape. Doubtless, this could be done with the Gimp alone, or Photoshop, with just as good results. The only reason for the .svg detour, is that items easily can be placed, moved, scaled accurately on the canvas by using numeric co-ordinates. And then each item, a hill, a cloud, can be adjusted individually with the Gimp (or whatever) to acceptable resolution, hue etc. etc. But that is just a personal preference.
Yes we have. And, of course, I agree with what you say. Just did a test using the .svg template (which I will post) exporting to .png. at: 7200×1880, 3600×940 and 1800×470. With 6.0 beta and limited access to memory, 7200×1880 maxed out. 1800×470 rendered quickly. The latter is acceptable for planning purposes, but even I would consider using higher resolutions for a nice render. Which is to say, I agree with what you say even if I probably have a lower threshold for crappy.
Yes, that's the problem with the web-start-version.
The only reason for the .svg detour, is that items easily can be placed, moved, scaled accurately on the canvas by using numeric co-ordinates. And then each item, a hill, a cloud, can be adjusted individually with the Gimp (or whatever) to acceptable resolution, hue etc. etc.
Sounds a lot like what I do in Photoshop. I don't think I have fully understood how the .svg numeric coordinates work differently than a Photoshop ( or Gimp) template.
Not much to understand, I think. Approach is the same, I just like the more readable and transferable .svg format for constructing a multi-element background. No idea about Photoshop co-ordinates, but in the example below, sun is placed at x="90" y="60", which on a 360×90 canvas (viewBox) converts to degrees.
sun.png, clouds.png and mountain.png must be downloaded and placed in same directory as minitest.svg for this to work.
A mountain is probably not a good example but embedding can be a convenient way to save simple raster elements inside a still small .svg file. But whether you wish to embed or not, using .svg as a 'container' or list of links, means you can exploit the best qualities all formats, combining .png, .jpg and .svg for different elements. .png for transparency / indexed colours, .jpg for smaller 'photographic' files and so on. Preferably of higher quality than the ones used in this example.
The template I actually use is more elaborate with a grid, some embedded images and gradients. Gradients and blurs can be useful for many things, such as blending skyline with ground colour/texture in SH3D or lighting up parts of the sky. But point is for the file to be simple, readable and compatible so SH3D skyline can be edited with a couple of keystrokes with as many image elements as you like in whatever quality: cityscapes, forests, planes, satellites and so on*, at higher quality. But it is also possible to make the template as advanced as you wish: The sun path is an approximation of equinox sun passage on horizon to be moved/transformed for other seasons, transformed upside down so the path reflects actual degrees above horizon. Something I would not know how to do accurately with the Gimp.
Clearly, all editing is quicker with a familiar interface. So no reason not to stay with whatever works. In addition to my liking for open, human readable formats, I suppose this is also a sales pitch for editing xml in general. For instance, I hardly use furniture libraries when it is possible to add cutouts, door/window and lightsource properties directly in Home.xml.
Forgot to post the file with (low-res) mountains, clouds, sun etc. embedded. Easier to edit. Yes, yes, say nothing, the elements will need higher resolution for nice rendering. But you get my drift. A high-res credo is sensible, here is an example of the opposite: how low is it possible to go.
minitest_embed.svg < 50 KB, initial resolution 1200×300 px, but can scale to anything when importing to Gimp/Photoshop or changing width height in the .svg.
SH3D does not import the .svg directly so the image needs to be converted to .png/.jpg before use.


text:
Online Highways Home > Nevada > Reno
Best Western Continental Lodge
Search Reno Nevada
103 rooms, all rooms with coffeemakers, free movies, refrigerators, cable TV, combo and shower baths. There are rooms with balconies or patios and beautiful landscaped gardens.
Dining: A restaurant nearby and cocktails. Senior Discount; reservation deposit; no pets and all major credit cards gladly accepted.
A member of Best Western.
Location: 1885 S Viginia St, Reno Nevada 89502 Telephone 775-329-1001
Other Bed and Breakfasts and Country Inns nearby:
(Reno) Atlantis Casino Resort-Reno
(Reno) Best Western Continental Lodge
(Reno) Best Western Daniel's Motor Lodge
(Carson City) Best Western Trailside Inn
(Reno) Circus Circus Hotel-Reno
(Reno) Clarion Hotel Casino
01/18 Coming to The Reno area
Arden Fair Sacramento CA March30-April18 Open the doors to Arden Fair and step inside. Here you'll find contemporary fashions, jewelry, accessories and brand name merchandise at over 165 specialty stores, plus Nordstrom's, Macy's, Sears, and JC Penney. Arden Fair also has a number of terrific restaurants, everything from fast food to fine dining. And it's completely enclosed, so it's always a comfortable 70 degrees inside no matter what it's like outside.
California Exposition & State Fair Sacramento CA June12-28 The Cal Expo is the site of the California State Fair. All year Satellite Wagering, Waterworld USA, Paradise Island Fun Center and an RV Park are just a few of the features of the Cal Expo.The first State Fair was held in 1854 in San Francisco at the old Music Hall. The fair offered premiums (prizes) for its competitions and included such agricultural exhibits such as 2-inch-long peanuts, 72-pound beets and a 10-pound carrot that was longer than 3 feet. Horseracing was part of that first fair and has continued to be a part of the fair ever since.
The Rio Vista Bass Derby Festival Rio Vista CA October11-13 Rio Vista is proud to host the oldest fishing derby on the West Coast. The festival is a three-day derby for bass, catfish and sturgeon. The festival also boasts music, food and fun for fishermen and non-fishing children and adults as well. The events include a carnival, live music and dancing, classic car show, a pancake breakfast, parade and BBQ. A large fireworks display is also featured on Saturday night.


text:
<?php
#require('stringutils.php'); # application has this!

function testGetNchars() {
    assert("getNchars(5, 's') == 'sssss'");
}
?>


text:
Broncos' Brandon Marshall Receives Shocking Racist, Hate-Filled Letter
This is the second known racial incident aimed at an NFL player this week
By Paula Rogo	· December 10, 2016 October 26, 2020
Denver Broncos linebacker Brandon Marshall took to Instagram Friday to share a hate-filled letter he received two weeks ago that called him vile names and threatened his life.
The hatred by some against people of color is one of the reasons we are where we're at in the world today, and they wonder why we feel the way we do and take the stances that we take. I received this letter at work.
A photo posted by Brandon Marshall (@bmarshh54) on Dec 9, 2016 at 9:54am PST
"The hatred by some against people of color is one of the reasons we are where we're at in the world today and they wonder why we feel the way we do and take the stances that we take," Marshall wrote on Instagram along with a photo of the letter, adding that he received the letter at work.
Marshall joined 49ers quarterback Colin Kaepernick's protest movement of kneeling during the national anthem.
The letter calls Marshall "worthless" and suggests he "go back to Africa" before delivering a clear threat: "Your time is coming, watch out n—–!!"
The letter was sent with a return address of Mrs. Jackson's sixth-grade class at Martin Luther King Middle School, and "We love you, Mr. Marshall" was written on the envelope, ESPN reports. Marshall believes it was a cover to make sure he received the letter.
Subscribe to our daily newsletter for the latest in hair, beauty, style and celebrity news
The NFL is investigating the letter after it was turned over to the league by Broncos team officials, Denver's KUSA reported.
The letter is the second racial incident aimed at an NFL player this week. New York Giants fullback Nikita Whitlock reported a break-in on Tuesday during which burglars drew a swastika and "KKK," as well as the word "Trump," on walls inside his home, the Huffington Post reported.


text:
Home / John Coltrane / Blue Train (180 Gram Vinyl)
Blue Train (180 Gram Vinyl)
John Coltrane (ts), Lee Morgan (tp), Curtis Fuller (tb), Kenny Drew (p), Paul Chambers (b), Philly Joe jones (d)
Format: LP / 12" / 33rpm / HI FI
Catalogue Reference: 1577 (BLP-81577)
Country of Pressing: Europe
Comments: 2019 Reissue
Sealed New Copy
Cover Grade: MINT
Vinyl Grade: MINT
Side One
1. Blue Train (John Coltrane) 10:43
2. Moment's Notice (John Coltrane) 9:10
Side Two
1. Locomotion (John Coltrane) 7:14
2. I'm Old Fashioned (Kern-Mercer) 7:58
3. Lazy Bird (John Coltrane) 7:00
Reissue of the original Blue Note 12-inch release (1577)
John Coltrane (tenor sax), Lee Morgan (trumpet), Curtis Fuller (trombone), Kenny Drew (piano), Paul Chambers (bass), Philly Joe jones (drums).
Recorded at Van gelder Studios, Hackensack, NJ, September 15, 1957
Sound engineer: Rudy Van Gelder
Photography: Francis Wolff
Design: Reid Miles
Original back liner-notes: Robert Levin
Sessions originally produced by Alfred Lion
"Although never formally signed, an oral agreement between John Coltrane and Blue Note Records founder Alfred Lion was indeed honored on Blue Train -- Coltrane's only collection of sides as a principal artist for the venerable label. The disc is packed solid with sonic evidence of Coltrane's innate leadership abilities. He not only addresses the tunes at hand, but also simultaneously reinvents himself as a multifaceted interpreter of both hard bop as well as sensitive balladry -- touching upon all forms in between. The personnel on Blue Train is arguably as impressive as what they're playing. Joining Coltrane (tenor sax) are Lee Morgan (trumpet), Curtis Fuller (trombone), Kenny Drew (piano), Paul Chambers (bass), and Philly Joe Jones (drums). The triple horn arrangements incorporate an additional sonic density that remains a trademark unique to both this band and album. Of particular note is Fuller's even-toned trombone, which bops throughout the title track as well as the frenetic "Moments Notice." Other solos include Paul Chambers' subtly understated riffs on "Blue Train" as well as the high energy and impact from contributions by Lee Morgan and Kenny Drew during "Locomotion." The track likewise features some brief but vital contributions from Philly Joe Jones -- whose efforts throughout the record stand among his personal best. Of the five sides that comprise the original Blue Train, the Jerome Kern/Johnny Mercer ballad "I'm Old Fashioned" is the only standard; in terms of unadulterated sentiment, this version is arguably untouchable. Fuller's rich tones and Drew's tastefully executed solos cleanly wrap around Jones' steadily languid rhythms. Without reservation, Blue Train can easily be considered in and among the most important and influential entries not only of John Coltrane's career, but of the entire genre of jazz music as well."
Lindsay Planer -All Music Guide
Boss of the Soul-Stream Trombone (Audiophile 180gr. Hq Vinyl)
Coltrane's Sound (Vinyl)
Coltrane (Audiophile 180gr. Hq Vinyl)
Tough Piano Trio (Audiophile 180gr. HQ Vinyl)
The Rumproller (Vinyl)
BST 84199
Live at Newport (Vinyl)
New Thing At Newport (Vinyl)
John Coltrane & Archie Shepp
And The Modern Jazz Giants (Vinyl)
PRLP 7150
The Turnaround (Vinyl)
Hank Mobley
The Opener (Vinyl)
Coltrane Jazz (Vinyl)
Candy (Vinyl)
BLP 1590
Traneing In (Vinyl)
John Coltrane · A Love Supreme (Digifile)
Dal Sasso-Belmondo Big Band
JPCD 814001


Manual lymph drainage is a gentle and effective form of massage that has been refined since its inception nearly a century ago. Sandstone Therapeutic Massage therapists use specific hands-on techniques that encourage lymph flow from swollen areas and restore proper functioning.
In certain cases lymphatic drainage therapy may not be a suitable treatment. Sandstone Therapeutic Massage licensed practitioners conduct detailed assessments and provide massage therapy treatment plans designed to address the specific needs of our Novi clientele. Contact us to learn more about how Lymphatic drainage treatments can help you.


With An Easy-To-Use Slide-Lock Seal And Additional Ziploc®-Style Closure, The E-Merse Dry Wallet protects Your smaller Valuables From Sand And Water. A Tough Polyurethane Body Has a Built-In Window For Better Visual Access.
The E-Merse Dry Wallet Is Submersible To 10 Feet For Maximum Protection. A Breakaway Lanyard lets You Wear The Case Comfortably And safely Around Your Neck.
Internal dimensions Are 5" X 3.75".