The original Jargon File was a collection of hacker jargon from technical cultures including the MIT AI Lab, the Stanford AI lab (SAIL), and others of the old ARPANET AI/LISP/PDP-10 communities including Bolt, Beranek and Newman (BBN), Carnegie-Mellon University (CMU), and Worcester Polytechnic Institute (WPI).
The Jargon File (hereafter referred to as ‘jargon-1’ or ‘the File’) was begun by Raphael Finkel at Stanford in 1975. From this time until the plug was finally pulled on the SAIL computer in 1991, the File was named AIWORD.RF[UP,DOC] there. Some terms in it date back considerably earlier (*frob* and some senses of *moby*, for instance, go back to the Tech Model Railroad Club at MIT and are believed to date at least back to the early 1960s). The revisions of jargon-1 were all unnumbered and may be collectively considered ‘Version 1’.
In 1976, Mark Crispin, having seen an announcement about the File on the SAIL computer, FTPed a copy of the File to MIT. He noticed that it was hardly restricted to ‘AI words’ and so stored the file on his directory as AI:MRC;SAIL JARGON.
The file was quickly renamed JARGON > (the ‘>’ caused versioning under ITS) as a flurry of enhancements were made by Mark Crispin and Guy L. Steele Jr. Unfortunately, amidst all this activity, nobody thought of correcting the term ‘jargon’ to ‘slang’ until the compendium had already become widely known as the Jargon File.
Raphael Finkel dropped out of active participation shortly thereafter and Don Woods became the SAIL contact for the File (which was subsequently kept in duplicate at SAIL and MIT, with periodic resynchronizations).
The File expanded by fits and starts until about 1983; Richard Stallman was prominent among the contributors, adding many MIT and ITS-related coinages.
In Spring 1981, a hacker named Charles Spurgeon got a large chunk of the File published in Stewart Brand’s CoEvolution Quarterly (issue 29, pages 26—35) with illustrations by Phil Wadler and Guy Steele (including a couple of the Crunchly cartoons). This appears to have been the File’s first paper publication.
A late version of jargon-1, expanded with commentary for the mass market, was edited by Guy Steele into a book published in 1983 as The Hacker’s Dictionary (Harper & Row CN 1082, ISBN 0-06-091082-8). The other jargon-1 editors (Raphael Finkel, Don Woods, and Mark Crispin) contributed to this revision, as did Richard M. Stallman and Geoff Goodfellow. This book (now out of print) is hereafter referred to as ‘Steele-1983’ and those six as the Steele-1983 coauthors.
Shortly after the publication of Steele-1983, the File effectively stopped growing and changing. Originally, this was due to a desire to freeze the file temporarily to facilitate the production of Steele-1983, but external conditions caused the ‘temporary’ freeze to become permanent.
The AI Lab culture had been hit hard in the late 1970s by funding cuts and the resulting administrative decision to use vendor-supported hardware and software instead of homebrew whenever possible. At MIT, most AI work had turned to dedicated LISP Machines. At the same time, the commercialization of AI technology lured some of the AI Lab’s best and brightest away to startups along the Route 128 strip in Massachusetts and out West in Silicon Valley. The startups built LISP machines for MIT; the central MIT-AI computer became a *TWENEX* system rather than a host for the AI hackers’ beloved *ITS*.
The Stanford AI Lab had effectively ceased to exist by 1980, although the SAIL computer continued as a Computer Science Department resource until 1991. Stanford became a major *TWENEX* site, at one point operating more than a dozen TOPS-20 systems; but by the mid-1980s most of the interesting software work was being done on the emerging BSD Unix standard.
In April 1983, the PDP-10-centered cultures that had nourished the File were dealt a death-blow by the cancellation of the Jupiter project at Digital Equipment Corporation. The File’s compilers, already dispersed, moved on to other things. Steele-1983 was partly a monument to what its authors thought was a dying tradition; no one involved realized at the time just how wide its influence was to be.
By the mid-1980s the File’s content was dated, but the legend that had grown up around it never quite died out. The book, and softcopies obtained off the ARPANET, circulated even in cultures far removed from MIT and Stanford; the content exerted a strong and continuing influence on hacker language and humor. Even as the advent of the microcomputer and other trends fueled a tremendous expansion of hackerdom, the File (and related materials such as the Some AI Koans in Appendix A) came to be seen as a sort of sacred epic, a hacker-culture Matter of Britain chronicling the heroic exploits of the Knights of the Lab. The pace of change in hackerdom at large accelerated tremendously — but the Jargon File, having passed from living document to icon, remained essentially untouched for seven years.
This revision contains nearly the entire text of a late version of jargon-1 (a few obsolete PDP-10-related entries were dropped after careful consultation with the editors of Steele-1983). It merges in about 80% of the Steele-1983 text, omitting some framing material and a very few entries introduced in Steele-1983 that are now also obsolete.
This new version casts a wider net than the old Jargon File; its aim is to cover not just AI or PDP-10 hacker culture but all the technical computing cultures wherein the true hacker-nature is manifested. More than half of the entries now derive from *Usenet* and represent jargon now current in the C and Unix communities, but special efforts have been made to collect jargon from other cultures including IBM PC programmers, Amiga fans, Mac enthusiasts, and even the IBM mainframe world.
Eric S. Raymond<EMAIL_ADDRESS>maintains the new File with assistance from Guy L. Steele Jr<EMAIL_ADDRESS>these are the persons primarily reflected in the File’s editorial ‘we’, though we take pleasure in acknowledging the special contribution of the other coauthors of Steele-1983. Please email all additions, corrections, and correspondence relating to the Jargon File to Eric.
(Warning: other email addresses and URLs appear in this file but are not guaranteed to be correct after date of publication. Don’t email us if an attempt to reach someone bounces — we have no magic way of checking addresses or looking up people. If a web reference goes stale, try a Google or Alta Vista search for relevant phrases.
Please try to review a recent copy of the on-line document before submitting entries; it is available on the Web. It will often contain new material not recorded in the latest paper snapshot that could save you some typing. It also includes some submission guidelines not reproduced here.
The 2.9.6 version became the main text of The New Hacker’s Dictionary, by Eric Raymond (ed.), MIT Press 1991, ISBN 0-262-68069-6.
The 3.0.0 version was published in August 1993 as the second edition of The New Hacker’s Dictionary, again from MIT Press (ISBN 0-262-18154-1).
The 4.0.0 version was published in September 1996 as the third edition of The New Hacker’s Dictionary from MIT Press (ISBN 0-262-68092-0).
The maintainers are committed to updating the on-line version of the Jargon File through and beyond paper publication, and will continue to make it available to archives and public-access sites as a trust of the hacker community.
Here is a chronology of major revisions:
| Version | Date | Lines | Words | Characters | Entries | Comments |
|---|---|---|---|---|---|---|
| 2.1.1 | Jun 12 1990 | 5485 | 42842 | 278958 | 790 | The Jargon File comes alive again after a seven-year hiatus. Reorganization and massive additions were by Eric S. Raymond, approved by Guy Steele. Many items of UNIX, C, USENET, and microcomputer-based jargon were added at that time. |
| 2.1.5 | Nov 28 1990 | 6028 | 46946 | 307510 | 866 | Changes and additions by ESR in response to numerous USENET submissions and comment from the First Edition co-authors. The Bibliography (Appendix C) was also appended. |
| 2.2.1 | Dec 15 1990 | 9394 | 75954 | 490501 | 1046 | Most of the contents of the 1983 paper edition edited by Guy Steele was merged in. Many more USENET submissions added, including the International Style and the material on Commonwealth Hackish. |
| 2.3.1 | Jan 03 1991 | 10728 | 85070 | 558261 | 1138 | The great format change — case is no longer smashed in lexicon keys and cross-references. A very few entries from jargon-1 which were basically straight techspeak were deleted; this enabled the rest of Appendix B (created in 2.1.1) to be merged back into main text and the appendix replaced with the Portrait of J. Random Hacker. More USENET submissions were added. |
| 2.4.1 | Jan 14 1991 | 12362 | 97819 | 642899 | 1239 | The Story of Mel and many more USENET submissions merged in. More material on hackish writing habits added. Numerous typo fixes. |
| 2.6.1 | Feb 12 1991 | 15011 | 118277 | 774942 | 1484 | Second great format change; no more <> around headwords or references. Merged in results of serious copy-editing passes by Guy Steele, Mark Brader. Still more entries added. |
| 2.7.1 | Mar 01 1991 | 16087 | 126885 | 831872 | 1533 | New section on slang/jargon/techspeak added. Results of Guy’s second edit pass merged in. |
| 2.8.1 | Mar 22 1991 | 17154 | 135647 | 888333 | 1602 | Material from the TMRC Dictionary and MRC’s editing pass merged in. |
| 2.9.6 | Aug 16 1991 | 18952 | 148629 | 975551 | 1702 | Corresponds to reproduction copy for book. |
| 2.9.8 | Jan 01 1992 | 19509 | 153108 | 1006023 | 1760 | First public release since the book, including over fifty new entries and numerous corrections/additions to old ones. Packaged with version 1.1 of vh(1) hypertext reader. |
| 2.9.9 | Apr 01 1992 | 20298 | 159651 | 1048909 | 1821 | Folded in XEROX PARC lexicon. |
| 2.9.10 | Jul 01 1992 | 21349 | 168330 | 1106991 | 1891 | lots of new historical material. |
| 2.9.11 | Jan 01 1993 | 21725 | 171169 | 1125880 | 1922 | Lots of new historical material. |
| 2.9.12 | May 10 1993 | 22238 | 175114 | 1152467 | 1946 | A few new entries & changes, marginal MUD/IRC slang and some borderline techspeak removed, all in preparation for 2nd Edition of TNHD. |
| 3.0.0 | Jul 27 1993 | 22548 | 177520 | 1169372 | 1961 | Manuscript freeze for 2nd edition of TNHD. |
| 3.1.0 | Oct 15 1994 | 23197 | 181001 | 1193818 | 1990 | Interim release to test WWW conversion. |
| 3.2.0 | Mar 15 1995 | 23822 | 185961 | 1226358 | 2031 | Spring 1995 update. |
| 3.3.0 | Jan 20 1996 | 24055 | 187957 | 1239604 | 2045 | Winter 1996 update. |
| 3.3.1 | Jan 25 1996 | 24147 | 188728 | 1244554 | 2050 | Copy-corrected improvement on 3.3.0 shipped to MIT Press as a step towards TNHD III. |
| 4.0.0 | Jul 25 1996 | 24801 | 193697 | 1281402 | 2067 | The actual TNHD III version after copy-edit |
| 4.1.0 | 8 Apr 1999 | 25777 | 206825 | 1359992 | 2217 | The Jargon File rides again after three years. |
| 4.2.0 | 31 Jan 2000 | 26598 | 214639 | 1412243 | 2267 | Fix processing of URLs. |
| 4.3.0 | 30 Apr 2001 | 27805 | 224978 | 1480215 | 2319 | Special edition in honor of the first implementation of RFC 1149. Also cleaned up a number of obsolete entries. |
| 4.4.0 | 10 May 2003 | 32004 | 230012 | 1707139 | 2290 | XML-Docbook format conversion. Serious pruning of old slang, nearly 100 entries failed the Google test and were removed. |
| 4.4.1 | 13 May 2003 | 37157 | 234687 | 1618716 | 2290 | XML-Docbook format fixes. |
| 4.4.2 | 22 May 2003 | 32629 | 227852 | 1555125 | 2290 | Fix filename collisions and other small problems. |
| 4.4.3 | 15 Jul 2003 | 37363 | 235135 | 1629667 | 2293 | Fix some stylesheet problems leading to missing links. |
| 4.4.4 | 14 Aug 2003 | 37392 | 235271 | 1630579 | 2295 | Corrected build machinery; we can make RPMS now. |
| 4.4.5 | 4 Oct 2003 | 37482 | 235858 | 1634767 | 2299 | Minor updates. Four new entries and a better original-bug picture. |
| 4.4.6 | 25 Oct 2003 | 37560 | 236406 | 1638454 | 2302 | Added glider illustration. Amended FUD entry pursuent to SCO’s attempt to abuse it. |
| 4.4.7 | 29 Dec 2003 | 37666 | 237206 | 1643609 | 2307 | Winter 2003 update. |
Version numbering: Version numbers should be read as major.minor.revision. Major version 1 is reserved for the ‘old’ (ITS) Jargon File, jargon-1. Major version 2 encompasses revisions by ESR (Eric S. Raymond) with assistance from GLS (Guy L. Steele, Jr.) leading up to and including the second paper edition. From now on, major version number N.00 will probably correspond to the Nth paper edition. Usually later versions will either completely supersede or incorporate earlier versions, so there is generally no point in keeping old versions around.
Our thanks to the coauthors of Steele-1983 for oversight and assistance, and to the hundreds of Usenetters (too many to name here) who contributed entries and encouragement. More thanks go to several of the old-timers on the Usenet group alt.folklore.computers, who contributed much useful commentary and many corrections and valuable historical perspective: Joseph M. Newcomer<EMAIL_ADDRESS>Bernie Cosell<EMAIL_ADDRESS>Earl Boebert<EMAIL_ADDRESS>and Joe Morris<EMAIL_ADDRESS>We were fortunate enough to have the aid of some accomplished linguists. David Stampe<EMAIL_ADDRESS>and Charles Hoequist<EMAIL_ADDRESS>contributed valuable criticism; Joe Keane<EMAIL_ADDRESS>helped us improve the pronunciation guides.
A few bits of this text quote previous works. We are indebted to Brian A. LaMacchia<EMAIL_ADDRESS>for obtaining permission for us to use material from the TMRC Dictionary; also, Don Libes<EMAIL_ADDRESS>contributed some appropriate material from his excellent book Life With UNIX. We thank Per Lindberg<EMAIL_ADDRESS>author of the remarkable Swedish-language ‘zine Hackerbladet, for bringing FOO! comics to our attention and smuggling one of the IBM hacker underground’s own baby jargon files out to us. Thanks also to Maarten Litmaath for generously allowing the inclusion of the ASCII pronunciation guide he formerly maintained. And our gratitude to Marc Weiser of XEROX PARC<EMAIL_ADDRESS>for securing us permission to quote from PARC’s own jargon lexicon and shipping us a copy.
It is a particular pleasure to acknowledge the major contributions of Mark Brader and Steve Summit<EMAIL_ADDRESS>to the File and Dictionary; they have read and reread many drafts, checked facts, caught typos, submitted an amazing number of thoughtful comments, and done yeoman service in catching typos and minor usage bobbles. Their rare combination of enthusiasm, persistence, wide-ranging technical knowledge, and precisionism in matters of language has been of invaluable help. Indeed, the sustained volume and quality of Mr. Brader’s input over a decade and several different editions has only allowed him to escape co-editor credit by the slimmest of margins.
Finally, George V. Reilly<EMAIL_ADDRESS>helped with TeX arcana and painstakingly proofread some 2.7 and 2.8 versions, and Eric Tiedemann<EMAIL_ADDRESS>contributed sage advice throughout on rhetoric, amphigory, and philosophunculism.


Scroll down to see more content loaded via a custom server script. This example needs to be run from a webserver with php!
Back to overview


This page is used to help evaluate the performance of various configurations of
for
loops and while
loops in order to determine which is the
most efficient.
First, we generate a set of elements using the buttons below. For reference, the
generated elements will appear in the textarea
. Once done, move to
Step 2 and start the testing process.
Once complete, the total time of execution (rounded up in milliseconds) will display
in the field.
Now that you've generated your elements, click on the type of loop to execute and view it's total running time (rounded up in milliseconds) in the field below.


Jonathan Odgis is a recent honors graduate of the SUNY New Paltz School of Science and Engineering where he earned a Bachelor of Science degree in Computer Science. Jonathan's technical proficiencies include front-end web development languages and frameworks such as HTML5, CSS, Javascript, AngularJS, and JQuery. He is also competent in C# Scripting with the Unity Scripting API. Jonathan is proficient in working with the Unity Game Engine.
Jonathan completed an internship with a Sr. Software Developer in developing, maintaining, and documenting a Java Framework called the HObservable Pattern. This framework extends the functionality and flexibility of the Observer Pattern in Java allowing observers to be children of each other. This allows for applications with many components to communicate with each other without being tightly coupled to two observables at the same time.
Jonathan also received a Certification in Digital Design and Fabrication (3D Printing) from SUNY New Paltz. He is knowledgeable in 3D Modeling Software such as Autodesk Maya and Rhino3D. He developed a Unity Game utilizing Serial Input Communication using an Arduino Uno chip. He is experienced in working in Google Cardboard SDK in Unity as well.
In his free time is Jonathan is developing a video game using the Unity Game Engine and is working towards publicizing it by year-end.


We met with Dr. Bass and his team at the Chicago campus.
We learned more about the Bio-Stamp sensor and also spoke to Mr. Ha-uk who fabricated the sensor
We also got some of the Java Code which was being used by the team to obtain heart rate values on an Android Phone
We spoke about the various parameters which can be detected by the sensor and also about how it measures those parameters
We ran the code on an Android Phone and connected the sensor on to Santhosh.
We saw the heart rate being graphed on the android device, but we noticed that the device was extremely sensitive
Even the slightest movement caused the heart rate values to spike
We tried to go over the code and understand how each function worked


Who's your caddie?
NBN follows Evans Scholars from the golf course to Northwestern's campus.
By Sylvia Goodman
After driving 45 minutes to the Westmoor Country Club in Brookfield, Wisconsin, Nathan Schimpf waited nervously on the podium. He stood before a crowd of about 60 Western Golf Association (WGA) directors, staff members, donors and supporters who read Schimpf's application aloud. After that, they launched into a series of questions on everything from his athletic career as a hockey player to his ability to overcome adversity. This lasted for 15 minutes. He was in the final stage of the application process to become an Evans Scholar.
“It felt like five seconds, and it’s extremely scary, but I got through it,” Schimpf says.
Schimpf and roughly 275 other students from around the country were picked to receive the Evans Scholarship during the 2017-18 school year. It includes free on-campus housing, a growing alumni network, social connections and, most notably, a full-ride scholarship to participating universities for four years. But the primary requirement is that all applicants for the Evans Scholarship must have worked for at least two years as a golf caddie.
That’s right – the people who carry the golf clubs for professional and amateur golfers alike. Apart from being excellent students with outstanding character and demonstrated financial need according to the FAFSA and CSS Profile, all Evans Scholars must have strong caddie records, meaning they caddied regularly and successfully without complaint from the golfers for whom they worked.
Though it seems oddly specific, the scholarship was started in 1928 by a caddie-turned-amateur golfer named Charles “Chick” Evans Jr. Evans himself had to drop out of Northwestern due to financial hardship during his first year, but he later became one of the greatest amateur golfers of his time, winning both the U.S. Open and the U.S. Amateur. To maintain his amateur status, Evans placed any winnings he garnered in a fund with the intent of awarding it to caddies with academic promise. Finally, in 1928 he convinced the WGA to oversee the fund, and the Evans Scholarship was born.
In 1930, Harold Fink and Jim McGinni became the first two recipients of the award, graduating from Northwestern University in 1934. In fact, through the late 1930s, all Evans Scholars went to Northwestern until the WGA began parceling out scholarships to students going to other schools as well. Now, the scholarship extends to over 25 universities across the country.
So far, there are specifically-designated Evans Scholarship Houses at 16 universities. Northwestern’s Scholarship House was the first, established in 1940. Living in the Scholarship House for all four undergraduate years is a mandatory part of receiving the Evans Scholarship, which was originally cause for hesitation for School of Communication sophomore Mackenzie Lim.
“My mom wanted me to apply for it, but at first I actually didn’t want to apply for it.  “But it’s definitely one of the best experiences. My Northwestern experience has been shaped totally by this.”
According to Schimpf, living together and seeing each other every day makes the Evans Scholars House a close-knit community. The faculty advisor for NU’s Evans Scholars, Martina Bode, attributed much of the Evans Scholar House atmosphere to the unique nature of the housing.
“I don't think you can find any other residence on the entire campus quite like it. It's really a family. It's a house where you have freshmen through seniors,” she says. “Staying in the house for four years really helps to build community.”
Northwestern’s Evans Scholar chapter also holds events throughout the year, many of which are golf-themed. Every year, they organize the Evans Scholars Open, their biggest philanthropic event, and raise money for different charities by setting up a mini golf course around the Scholarship House.
“A group of scholars put together each hole, and it’s really quite fun because it’s kind of a competition too,” Bode says.  I accidentally brought my doggies to the house. I wasn't looking, and they started drinking the water. It was just really fun.”
This year’s event was held on Nov. 11 and raised almost $2,000 for the Special Olympics of Illinois, according to Melina Scofield, the Northwestern Evans Scholar philanthropy co-chair. Scofield also says that this year’s event far exceeded their goal of $1,445, which was the amount raised from the 2017 ES Open.
One drawback of the scholarship, however, is that it does not provide food to its recipients. Instead of having to fend for themselves, students have the option to get “meal jobs” on or near campus. In a meal job, a scholar helps out in the kitchens of a Greek association, local restaurant or sometimes even a school dining hall in exchange for meals. Sam Maciejewski, the Evans Scholars Foundation Manager of Education and Caddie Academies, says that while meal jobs are traditionally available for Evans Scholars, they are not mandatory and are not officially operated by the program.
At Northwestern, many scholars work in sororities because their house is located in the sorority quad.
According to Amy Fuller, the WGA and Evans Scholars Foundation Vice President of Communications, the scholarship is definitely in “growth mode.” The Board of Governors set a goal several years ago that will soon reach fruition: a thousand scholars by 2020. Currently, there are 985 scholars at 18 universities across the country.
“We’re certainly on track to meet that goal,” Fuller says. “Not only are we increasing scholars, but we’re increasing the number of scholarship houses that we’re opening across the country. We’re expanding our program from coast-to-coast.”
Fuller says that the committee that reviews applicants receives more and more applications every year. According to Fuller, the effort to expand the scholarship is made in order to keep up with the need for an affordable education.
While the number of applicants is going up, Schimpf says that many of the high school students he has spoken with are unaware that caddieing for a few years in high school could lead to a major scholarship.
“I tell people all the time, ‘I basically go to school for free because I caddied in high school.’ And they’re like, ‘Ah, I wish I would’ve known that,’” Schimpf says. “I wish they would have known it too.”
First-year college students can also apply for the Evans Scholarship, but it is much less common and remains primarily reserved for graduating high schoolers. However, college-level applicants must still have caddied in high school.
Ultimately, the goal of the Evans Scholar program is to grant academic and career-oriented opportunities. Schimpf, now a sophomore at Northwestern, says that he owes a lot to the Evans Scholarship.
“There is no way that I would be able to go here if I didn’t have this scholarship, because I just wouldn’t be able to afford it,” he says.
Recipients at Northwestern emphasize that the scholarship reaches far beyond the four years of college to future internships and careers, available through the extensive alumni network of over 10,000 men and women.
“Everybody looks out for each other, and if anybody’s looking for a job or an internship, usually somebody knows somebody else and things usually just fall into place,” Bode says. “So it’s usually not just four years of school. It’s a life-long friendship.”


The Latest: Illness closes all schools in Colorado district
GRAND JUNCTION, Colo. (AP) - The Latest on a possible norovirus outbreak that has shuttered schools in western Colorado (all times local):
4:20 p.m.
All 46 schools in a western Colorado district have been closed for cleaning because of a possible norovirus outbreak among students and staff.
Colorado Public Radio reports six of the schools in Mesa County had closed as of Wednesday afternoon before the districtwide shutdown was announced. All the schools also will be closed Friday heading into the Thanksgiving break, which lasts the entire week of the holiday from Nov. 25 to Nov. 29.

Symptoms of norovirus include diarrhea and vomiting that lasts between 12 and 24 hours.
9:40 a.m.
Two more western Colorado schools have closed for cleaning because of an unknown infectious illness spreading among students and staff.
Colorado Public Radio reports there are now four schools in Mesa County that have closed since the sickness appeared last week.
School officials say Rocky Mountain Elementary School in Clifton would be closed Wednesday and Juniper Ridge Community School in Grand Junction would be closed the rest of the week.
Officials say Palisade High School closed last week and has since reopened, while Mount Garfield Middle School closed Monday and is expected to open Wednesday.
County health officials haven’t determined the illness and urged parents to keep their children at home if they appear sick.
Officials say the main symptom is vomiting lasting between 12 and 24 hours.
Information from: Colorado Public Radio, http://www.cpr.org/news
Sign up for Daily Newsletters
Copyright © 2019 The Washington Times, LLC.
Please read our comment policy before commenting.


The experience presented here took me by a complete shock. I’ve tried Salvia twice before – one of which included a very large amount of about 9-11 hits of dried Salvia leaves – and only now do I believe I can begin to grasp the strength and the amazing potential of a strong, well-panned Salvia trip.
This time I decided to try the 10x extract. I got a hold of about half a gram, mixed it with some tobacco and smoked about ¼ of the total amount. I tried to clear my mind from any thoughts, predictions or expectations. The affect came quickly – even before I finished smoking I began hearing the two friends who were with me at the time whispering something. I remember that at first it made sense to me, as though they were suggesting something or perhaps rushing me, but after a while I understood that no one was talking. Both of them just sat there with absolute silence. The words gradually scrambled into an illogical combination of 3 “word”, constantly repeating in my head; always at the same tone, the same pace.
After an amazingly intense burst of laughter, lasting about 30-45 seconds, I went to the next room and lay on a bed. The voices then continued, still whispering that disturbing, somewhat frightening hymn. Deep confusion. I came to the realization – or so I thought – that the voices were actually calling me, or perhaps talking to or about me. I tried to answer, but was unable to say anything but a weak mumble.
Still hearing the voices – now with lesser clarity and more with a feeling of “from the back of my head” – I then felt a sensation of a relaxing flotation, followed by a feeling of being “vacuumed” inside myself, into my own chest. I felt as though my entire body was inside my chest, which then changed and grew and expanded, giving me a strong visual image of space as seen when looking through a telescope into clear skies. I felt like I had no body, as if my mind, or more accurately – *I* – was one with the universe. I was completely unaware to the existence of “me”. An amazing euphoria filled me as I felt like I am everywhere, bigger than life, as if I am the universe itself.
I guess at that point I opened my eyes, because an image of the room I was in suddenly appeared in front of me – the bed I was on, lines of transparent beads (some of which were heart-shaped) that were used as a curtain, the walls, the ceiling, a blur view of the next room with both of my friends sitting on a couch in – and only then did my psychedelic journey, the overwhelming trip into a reality not of this world, really began.
Looking at the bed, I felt as though my body and soul became one with it. Slowly the boundary between the inanimate object and myself blurred. This experience didn’t have quite the godlike feeling as the one before; it was more like a stretch of reality to the point of absolute senselessness, testing every one of my senses and it’s ability to digest the new situation.
Not even beginning to comprehend the recent events, not even starting to understand what’s exactly happening, a “picture” of the curtain popped in front of me, only for a split of a second. I then felt myself tearing between the two objects, splitting, dividing between them and yet staying whole; I could actually feel myself in both places at the same time, as though the feeling of blending with a non-living object wasn’t bizarre enough for itself. This feeling I can only describe as the deepest confusion I can ever imagine, when one cannot see, hear, smell, speak – only feel (and obviously, not in the physical sense of the word). Now try to imagine this, and add to it the imaginary, dreamlike feeling of doing that separately in two different places.
Very quickly the experience of being split-up and divided between object happened again, over and over again, tearing me between numerous objects, sending my consciousness to 5, 10, 20 places at the same time… Like the paradox of freezing and burning, feeling completely obsessed and utterly calm, so I felt a hundred times more intensely – the chaos of emotions and sensations had over-flown my brain, overloaded me in a way I could not deal with. I felt like I was about to lose my mind. I rushed outside to get some fresh air, to a place with less stimulation.
This experience was the most amazing thing I had ever felt in my entire life. This I can say without a shred of doubt. The human mind can take only some and the line is very thin. I don’t know if I’ll touch something as strong as 10x extract in the near future, not because of fear from a similar experience, but because of a fear from a stronger, ever more intense one.
Experience Reports are the writings and opinions of the individual authors who submit them.
Some of the activities described are dangerous and/or illegal and none are recommended by Erowid.


Kinematics is known as the study of how things move and is the first branch of Mechanics. The foundation of Kinematics was laid out by famous astronoumer Galileo Galilei. His work was widely spread throughout Europe and his book "Two New Sciences" opened the way to treating physics mathematically. For instance, he derived the Kinematic Equations.
In Physics, it is crucial to show rather than to tell considering the complexity of some of its concepts. Which is why graphing the situation is a great solution.
The concepts of distance, displacement(position), speed, velocity, and acceleration can be graphed over a time x-axis.
Let's say Jade walks 4 metres east in 3 seconds then walks 3 metres to the west in 2 seconds at a constant velocity.
So the distance is: 4 metres + 3 metres = 7 metres
If Jade walked 4 metres east but then 3 metres west, she really only walked 1 metre east of her initial position; this is her displacement.
If Jade travelled for 5 seconds in total, then her speed would be 7m/5s = 1.4m/s
If Jade had a displacement of 1m[East], then her velocity would be 1m[East]/5s = 0.2m/s[East].
As shown in the graph, the acceleration is zero. Since Jade had travelled at a constant velocity, she wouldn't have any acceleration. If she did, then there would be a horizontal line at the magnitude of the acceleration.
If Jade was travelling in the same direction for the whole period, you can imagine that the magnitude of the distance and displacement travelled would be equal, thus speed and velocity as well. If an object changes direction, then the average speed and average velocity wouldn't be equal because the distance and displacement wouldn't be on which they depend on respectively.
Let's say Jade then walks 2m south for 2 seconds, which is 2D Motion. The distance and speed graphs will change but overall look relatively the same, but the displacement and velocity graphs will be different with the addition of a second graph to show the vertical motion.
To calculate the magnitude of displacement, you would need to use the Pythagorean Theorem if the triangle created is a right-triangle and the cosine law(which requires an angle that can be estimated) if it isn't. To calculate the direction, you would need to use the trigonometric ratios if it was a right-triangle and the sine law if it isn't.
With it, you could then graph it.
To go from a position-time graph to a velocity-time graph, we need to find the slope of the line. If the line is horizontal, that would mean that the object didn't move and therefore have a velocity of zero(horizontal line at zero). If the line is slanted, then the object did move and therefore there is velocity(horizontal line at the slope value on the v-t graph). If the line isn't linear, then we can use tangent lines to find the instantaneous velocity at particular moments in time to then be able to draw a line on the velocity-time graph(slanted line). This slope-like formula can also be seen on the average velocity formula itself: the displacement/position(y-value) over the time interval(x-value) equals the average velocity.
To go back from a velocity-time graph to a position-time graph, you would need to find the area that is under the line. This can be seen in the average velocity formula by isolating for displacement to get d=V*t which resembles the area of a rectangle formula. If the line is slanted, you would have to treat the area as a triangle and divide V*t by 2.
To go from a velocity-time graph to an acceleration-time graph, we would need to find the slope of the line on the velocity-time graph. If the line is completely horizontal, then that would mean the velocity is constant therefore the acceleration would be zero(horizontal line at zero on a-t graph). If the line is slanted, then the velocity would be changing over time therefore there would be acceleration(horizontal line at the acceleration value on the a-t graph). This slope-like formula can also be seen on the average acceleration formula itself: the velocity(y-value) over the time interval(x-value) equals the average acceleration.
Going from an acceleration-time graph to a velocity-time graph is the same process as from the velocity-time graph to position-time graph. It can be seen in the average acceleration formula after isolating for velocity to get V=A*t.
A positive or negative slope would mean the direction of the vector. A positive line would mean one way and a negative line would mean the opposite way.


version: 1.1.3
debug
Output the generated SQL without execute it.
debug()
Return: Medoo object with debug mode enabled
This feature will output the generated SQL query automatically without using echo or other function. Please keep removed it when you finish debugging. And check the following code will be executed normally if this query do not be executed.
$database->debug()->select("bccount", [ "user_name", "email" ], [ "user_id[<]" => 20 ]); // Will output: // SELECT "user_name","email" FROM "bccount" WHERE "user_id" < 20 // [Multiple situation] // Output nothing $database->insert("account", [ "user_name" => "foo", "email" =><EMAIL_ADDRESS>]); // Will output the generated query $post_id = $database->debug()->get("post", "post_id", ["user_name" => "foo"]); // Be careful, this query will be executed. $database->update("account", [ "level[+]" => 5, "post" => $post_id ], [ "user_name" => "foo" ]);


This is a simple website of the control condition.
If you click a button or checkbox this is recorded by LimeSurvey. Button2 will also enable the hidden "Next" button at the bottom of the screen.
Button1
Button2
Checkbox


Outcome-centered products that reduce churn, optimize pricing, and grow your subscription business end-to-end.
A daily dataset to keep you up to date on subscription market trends and what's happening in your vertical.
Learn moreAccurate, real-time reporting at your fingertips. Getting data has never been easier.
Learn moreSee how you stack up against comparable companies in similar stages.
Benchmark the health of your monetization and pricing strategy.
Audit where revenue leakage exists and where you can increase retention..
Starter
1 Website
5 GB Hosting
Limited Support
Premium
10 Website
15 GB Hosting
Premium Support
Enterprise
Unlimited Website
50 GB Hosting
Premium Support


Note: all statements except the following are counted:
for(int i = ...;...)
statement int i = ...
is not countedfor(int i = ...;...; i += 2)
statement i += 2
is not countedUse the field below to specify the maximum number of statements a lambda expression is allowed to have.
New in 2016.3


--- layout: post title: Making Sense of Lean Startup Strategies categories: - Articles tags: [] status: publish type: post published: true meta: {} author: --- A summary of new lean startup principles and how they relate to each other.


Nowaday, no more blood and sweat battles, but really battle for yourself to become a better style gentlemen.
We are not just delivering a message but
to build up a culture that everyman it’s a gentleman in there look, outside and inside.br
Give yourself a credit on dress good, earn the honour by putting effort on it.
We are leading a wave for new gentlemen
We are building a culture for all gentlemen
We are a group of gentlemen never style for less.


School of Electronic Engineering and Computer Science
Peking University
Major in Computer Science
Undergraduate
Email : huyy at pku.edu.cn
Address : Peking University, 5th Yiheyuan Road, Haidian District, Beijing, PRC


Strength Training (4 Sets Each Workout)
Reps Each Set: 12/10/8/6 (increasing by 5-10 lbs each set)
Next Week Reps: 6/8/10/12 (decreasing by 5-10 lbs each set)
Sunday: Rest
Monday: Chest/Triceps (4 chest workouts, 2 tricep workouts)
Tuesday: Back/Biceps (4 back workouts, 2 bicep workouts)
Wednesday: Shoulders/Legs (3 shoulder workouts, 3 leg workouts)
Thursday: Chest/Triceps (4 chest workouts, 2 tricep workouts)
Friday: Back/Biceps (4 back workouts, 2 bicep workouts)
Saturday: Shoulders/Legs (3 shoulder workouts, 3 leg workouts)


Hi there,
On the page http://openenergymonitor.org/emon/applications/solarpv the 3rd paragraph after the pictures that starts with "Select the current and voltage emontx firmware" there is a link called "main openenergymonitor guide" which leads to a page not found.
Any idea where it should lead ? I am trying to work out if I have set up my system incorrectly, and re-reading all of the setup instructions before I bother folks with stuff that might be user-error from not following the guides correctly!
Regards
Ian
Re: Broken Link on solar pv page
It should probably point here: http://openenergymonitor.org/emon/guide
or maybe here: https://github.com/openenergymonitor/documentation/blob/master/Applicati...
But what do you want to do? What system do you have?
Alternatively, you might want to browse through the offerings on GitHub (though if you don't know what you want, that might confuse you even further!).
Re: Broken Link on solar pv page
Been fixed, thanks.
Re: Broken Link on solar pv page
Robert, Glyn,
Thanks for fixing the link - I am still trying to work out if I missed a step for monitoring my house + PV, and so I am re-reading all of the documentation from initial setup, but it does jump about quite alot.
I bought the emonTXv3 with 2 CT's & AC adaptor, and the RFM69Pi to add to my Raspberry Pi, and although it all works, I have some issues, and I managed to completely miss that I needed to add the PV generation Input to the Grid Input to get house power! Either it's in the guides and I missed it, or the step was missing, and I was trying to work this out before wasting peoples time asking questions that are already documented.
Anyway, thanks for your time, and I'll work through the guides again, and will post separately if I am still stuck
Regards
Ian
Re: Broken Link on solar pv page
I rather doubt that particular point is mentioned anywhere - the problem is we're all so familiar with the concepts that it's "obvious" - so obvious that we're completely oblivious to the fact that somebody new to the game will get tripped up by it.
If it helps, you can think of the combination of one CT and the AC adapter as an electricity meter, so if you've got two sources of power into the house, you add the meter readings.
I'm guessing that you've put one CT on your main incomer, so that it measures nett power flow to and from the grid, and you've put the other on the PV infeed. Do those both measure positive power (a) when you're using power at night in the case of the grid CT, and (b) in daylight when you're generating in the case of the PV infeed CT? If yes, then your basic set-up is correct. Your grid CT will show negative (and hopefully equal in magnitude to the PV) if you're generating and consuming zero power in the house. And as you say. your house usage the the sum of the two.
 It's your inverter keeping itself awake.
Re: Broken Link on solar pv page
Hi Glyn,
Sorry to be a pain, but I just noticed that the link is only partially fixed - or more correctly it seems there are two links, and one is fixed.
On the page http://openenergymonitor.org/emon/applications/solarpv, it looks as though the text "main openenergymonitor" is all one link, but in fact the word "main" is a separate link to "openenergymonitor" and the link called "main" still points to the dead page. I guess you will want to fix this, as I am sure there will be plenty of new customers as the emonPi starts to take off.
Ian
Re: Broken Link on solar pv page
Done it.
Re: Broken Link on solar pv page
Thanks a lot
Re: Broken Link on solar pv page
Hi Glyn, I am also a new user with the open energy monitor system; although I have been using pvoutput.org, using various wattsclever monitors and pvbeancounter for a couple of years. The open energy monitor is a much more accurate system, and once I have it working as I want, I will drop the wattsclever.
I am using the system to monitor my power consumption, and my solar PV system (using a New Zealand EnaSolar inverter system).
I had a few challenges setting things up, but I have managed to work out most of it from the excellent documents on the website, and looking through the Forum posts.
With reference to the "Broken Link on solar pv page" that Ian was referring to earlier in this post; it may have been this link: "Solar PV Emoncms input setup" at http://openenergymonitor.org/emon/applications/solarpv/emoncms; this was a very useful document for me to setup for solar PV monitoring.
Although I am not sure what the tags are for, and how to set them up?
It took me a while to setup my emoncms account following the instructions on this page, but once I had it set, it worked really well, and allowed me to use the "Apps -> Solar PV" on my emoncms.org website account.
I found out about this on this following web page:
"Application specific dashboards: Solar PV" at http://openenergymonitor.org/emon/node/10190
I was wondering if it is possible to track the kWh units that are exported, as a feed; which is also shown on the "Apps -> Solar PV" screen, where I see the following details:
POWER NOW
SOLAR PV
House use: 18.1kWh
Solar generation: 5.5kWh
Supplied from solar: 2.8kWh (16%)
Supplied via grid: 15.3kWh (84%)
I am currently following the information on the web page: "Home Energy Monitor" at https://github.com/openenergymonitor/documentation/blob/master/Applicati...
A final question is that I was planning on Changing the EmonTx firmware by uploading the "emonTxV3 continuous kwhtotals noeeprom" sketch to my emonTX V3.4 as described on the above web page.
Will this "emonTxV3 continuous kwhtotals noeeprom" still work for monitoring a solar PV system?
I realise that I will no longer have voltage and rssi inputs, but I was hoping to use the kWh "higher accuracy", and have these logged by my Raspberry Pi, Emoncms V8 system.
Thanks for creating and maintaining these systems.
Regards, Adrian Smith
3 further copies of this post have been deleted. Please read "NEW USERS, PLEASE READ - Posts held for moderation" on the right. Moderator (RW)
Re: Broken Link on solar pv page
Hi Adrian, and thanks for providing that other link - I hadn't found that page, so I have been studying it, and updating my Input configuration. I agree with you that this could be where that broken link should have pointed to.
The screen images do look different to what I see in emoncms, so I guess they were taken from an older version of emoncms.
Ian


Mission Statement
"It is our duty at New Reality Studio's to make a half-assed or repackaged product for dated hardware, and pressure you into preordering our products, screw waiting for reviews BUY OUR PRODUCT before it's even been concieved, you should buy it the moment it becomes an idea! Zombie Consumerism is the Future, and the Future smells like cash money!"
T.M. Osborne CEO
Our CEO and Mastermind T.M. Osborne, or "Max" as he calls himself was once a Programmer trained at Fidgetech where he learned to harness his autism, so he could finally become Bill Gates, and make millions. Originally he had gone in with good intentions, and wanted to make the best possible CRPG's or Program Electronics that actually help people.
Max was trained to solder, among other things at an Organization called Community Workshop, where he learned about robots, electronics, 3D-Printing, and most importantly how to modify retro consoles for RGB, S-video, Overclocking, and Bypassing Region Locks.
One day however he was tempted by the dark side, and given the opportunity to achieve his dreams through any horrific means possible, he would soon overpowered by Malevolence, and it would consume him, and hurt everyone around him.
Not long after graduating he sold Fidgetech out to the CIA, FBI, ATF, IRS, and NRA for sweet bribe money used to start New Reality Digital.
If he was going to make it into the Video Game Industry he would have to become a Pathological Liar, and a modern Snake Oil Salesman, he ran on "ANYTHING for 60 Dollars!" as his motto.
History of Corruption
New Reality Digital Copywrong 2018, a subsidiary of Pure Evil Corporation.
Neither we or the Pure Evil Corporation take responsibility Seizures, Anneurisms, Hallucinations, or Demonic Posessions that occur while playing our games, go cry to someone else about it.


#include "config.h"
#include "safety.h"
#include "stdlib.h"
#include <stdio.h>
#include <string.h>
#include "expression.h"
#include "error.h"
#include "lisp_internals.h"
#include "streams.h"
#include "nativefunctions.h"
#include "memory.h"
Go to the source code of this file.
|
| struct Expression * | cons (struct Expression *env, struct Expression *expr) |
| | Creates a cons cell. More...
|
| |
| struct Expression * | intCar (struct Expression *env, struct Expression *args) |
| | Returnes the CAR of a Cons cell or NIL if something goes wrong Does not increase the ref counter! More...
|
| |
| struct Expression * | car (struct Expression *env, struct Expression *args) |
| | Returnes the CAR of a Cons cell or NIL if something goes wrong. More...
|
| |
| struct Expression * | intCdr (struct Expression *env, struct Expression *args) |
| | Returnes the CDR of a Cons cell or NIL if something goes wrong Does not increase the ref counter! More...
|
| |
| struct Expression * | cdr (struct Expression *env, struct Expression *args) |
| | Returnes the CDR of a Cons cell or NIL if something goes wrong. More...
|
| |
| struct Expression * | setCar (struct Expression *env, struct Expression *expr) |
| | Takes two arguments. More...
|
| |
| struct Expression * | setCdr (struct Expression *env, struct Expression *expr) |
| | Takes two arguments. More...
|
| |
| struct Cons * | intCons (struct Expression *env, struct Expression *car, struct Expression *cdr) |
| |
| #define ITERATE_LIST |
( |
|
env, |
|
|
|
list, |
|
|
|
runVar, |
|
|
|
code |
|
) |
| |
Value:{ \
struct Expression *next; \
runVar = list; \
} \
code; \
runVar = next; \
} \
}
struct Expression * intCdr(struct Expression *env, struct Expression *args)
Returnes the CDR of a Cons cell or NIL if something goes wrong Does not increase the ref counter! ...
Definition: cons.c:81
#define EXPR_OF_TYPE(x, y)
Checks whether a given expression is of a certain kind This macro takes any kind of the following con...
Definition: expression.h:157
#define ERR_UNEXPECTED_TYPE
Definition: error.h:78
#define NIL
The NIL atom.
Definition: expression.h:63
#define ERROR(e, m)
Definition: error.h:53
struct Expression * env
Definition: test-env.c:43
struct Expression * intCar(struct Expression *env, struct Expression *args)
Returnes the CAR of a Cons cell or NIL if something goes wrong Does not increase the ref counter! ...
Definition: cons.c:54
#define EXPR_CONS
Expression is an cons cell.
Definition: expression.h:262
Accessing cons cells.
Iterate over list of cons cells and execute code on every single car (eqv. of Common Lisp's "mapcar"). Iterates over the list, assigns first car to runVar, then executes "code", then assigns next car to runVar and goes on like this until the end of the list has been reached. "code" can use "runVar" to subsequently access every car.
- Parameters
-
| env | current environment |
| list | consed list |
| runVar | variable to use as iterator. Must be type "struct Expression *" |
| code | the code to map onto the list's entries |
| struct Expression* car |
( |
struct Expression * |
env, |
|
|
struct Expression * |
args |
|
) |
| |
Returnes the CAR of a Cons cell or NIL if something goes wrong.
- Parameters
-
- Returns
- the CAR of args or NIL
| struct Expression* cdr |
( |
struct Expression * |
env, |
|
|
struct Expression * |
args |
|
) |
| |
Returnes the CDR of a Cons cell or NIL if something goes wrong.
- Parameters
-
- Returns
- the CDR of args or NIL
| struct Expression* cons |
( |
struct Expression * |
env, |
|
|
struct Expression * |
expr |
|
) |
| |
Creates a cons cell.
- Parameters
-
| expr | list containing two elements: car and cdr of new cons cell |
- Returns
- a new expression resembling the cons cell
| struct Expression* intCar |
( |
struct Expression * |
env, |
|
|
struct Expression * |
args |
|
) |
| |
Returnes the CAR of a Cons cell or NIL if something goes wrong Does not increase the ref counter!
- Parameters
-
- Returns
- the CAR of args or NIL
| struct Expression* intCdr |
( |
struct Expression * |
env, |
|
|
struct Expression * |
args |
|
) |
| |
Returnes the CDR of a Cons cell or NIL if something goes wrong Does not increase the ref counter!
- Parameters
-
- Returns
- the CDR of args or NIL
| struct Cons* intCons |
( |
struct Expression * |
env, |
|
|
struct Expression * |
car, |
|
|
struct Expression * |
cdr |
|
) |
| |
| struct Expression* setCar |
( |
struct Expression * |
env, |
|
|
struct Expression * |
expr |
|
) |
| |
Takes two arguments.
Second argument needs to be a list with two elements. First element needs to be a cons cell. Second one can be of any kind. Tries to set the car of the first element to the second argument.
- Parameters
-
| env | Current environment |
| expr | list with two elements. |
| struct Expression* setCdr |
( |
struct Expression * |
env, |
|
|
struct Expression * |
expr |
|
) |
| |
Takes two arguments.
Second argument needs to be a list with two elements. First element needs to be a cons cell. Second one can be of any kind. Tries to set the cdr of the first element to the second argument.
- Parameters
-
| env | Current environment |
| expr | list with two elements. |


☰
MIDNIGHT
Coming Soon
REMINDER
Hi Guest! Login to continue
Login
Profile
My Orders
My Cart
Logout
Your Cart
Please Wait ! Loading Your Bag...
PRICE BREAKUP
Select products to checkout
Total
₹ 0
(Inclusive of all taxes)
Checkout
Add Extra Love For Your Loved Ones
×
We will notify you on the selected day
×
Select a Date
Type of Occasion
Enter a Email id
Notification Enabled Successfully


This entry will be about Arrays and Hashes in Ruby. I'll cover what these are, how to create new arrays and hashes, and some basic methods for each.
First off, what is are these things? Well, sometimes, you have to store some things in lists. In this case, an Array will store the list in an order, with a built-in numbered index (more on this in a second) which looks like this: [0,1,2,"three",4]
. A Hash will store things in a key: value pair. Like this: {"k1"=>"v1","k2"=>"v2"}
where k means key and v means value.
Arrays are basically like Hashes in that the value is the element you see, and the key is actually its index (position in the array). For example,
array = ["one", "two", "three"]
array[0] = "one"
Here, the index 0 is actually the first position. Important to note that the numbering indexes always starts with 0. Anyway, in this way, the "key" in an array is the index, and the "value" is the element at that index. A hash with the keys all numbered starting from 0 would return the same value if called. The point is, though, that hashes can be used to use a different key than just a numbered index.
Arrays
Creating Arrays
- Literal Constructor
array_name = []
- Can add any number of elements separated by commas.
array_name = Array.new
- Creates empty array.
array_name = Array.new(3)
creates an array with 3 "nil" elements.array_name = Array.new(3, "abc")
creates an array with three "abc" elements:["abc", "abc", "abc"]
array_name = Array.new(3){"abc"}
does the same thing.
- Array Method
- Converts what you've got into an array
- To check if these work, try
string.respond_to?(:to_ary)
orstring.respond_to?(:to_a)
.to_ary
(No strings!).to_a
(No strings!)Array(string)
yields[string]
Calling elements in an Array
array[i]
where i is an index (integer), gives the element at that index.array[i, n]
where i is an index and n is the number of elements to call. Ex:array = [3,4,5,6,7]
array[2,2]
=>5,6array[i, n] = a, b
will change the element at i with a, and the next element with b. n represents the number of elements to be changed.array.slice(a,b)
Returns element at index a. b is optional, it will return that number of elements starting with a..array.slice!(a,b)
Does the same as above, but changes the array to only include the elements returned.array.values_at(a, b, c...)
Gives the elements at the specified index a, b, c, etc.
Add and remove elements
array.unshift(0)
Will add 0 to beginning of array.array.push(0)
Will add 0 to the end of array. Can add more than one at a time.array <<0
Will add 0 to the end of array. Can NOT add more than one at a time.array.shift
Removes and prints 1st element.array.pop
Removes and prints last element.array.shift!
andarray.pop!
Performs action and permanently changes the array.
Combining Arrays
array1.concat(array2)
Adds elements of array2 to the end of array1 (destructive).array1 = array1 + array2
Adds elements of array1 and array2 into a new array (non-destructive).array1.replace(array2)
Replaces elements in array1 with elements of array2 (destructive).
Transform Array
array.flatten(n)
Removes n layers of nested arrays and puts their elements in the array. Without (n), it just removes all of the arrays nested, putting all of the elements in order.array.flatten!(n)
Does the same as above, but makes change permanent.array.reverse
andarray.reverse!
Reverses the positions of all elements in the array.array.join()
Combines elements into a string. The parameter could be(" ")
which will add a space between all of the elements.array * " "
Does the same as above.array.uniq
andarray.uniq!
Removes duplicated elements.array.compact
andarray.compact!
Removes nil elements.
Array Query
array.size
Gives number of elements.array.empty?
True if empty, false if not.array.include?(item)
True if item is there, false if not.array.count(item)
Gives number of times item is in the array.array.first(n)
Gives first n number of elements.array.last(n)
Gives last n number of elements.array.sample(n)
Gives n number of random elements.
Hashes
Creating Hashes
- Literal Constructor
h = {"k1"=>"v1", "k2"=>"v2", etc.}
- Can add any number of paired key/value pairs separated by commas.
h = Hash.new
- Creates empty hash.
h = Hash.new(3)
Sets default value at 3 for non-existant keysh.default(value)
Sets default value.h = Hash.new {|hash, key| hash[key]=0}
Makes it so if a nonexistant key is called, it will add that key to the hash with the default value of 0.
Hash.[]
Where [] includes an EVEN number elements, will order the pairs as key/value pairs, so 0=>1, 2=>3 and so on. Can also work with nested arrays.something.to_hash
Will turn that something, usually an array, into a hash. If the argument doesn't have to_hash as a method, fatal error occurs.
Adding to Hash
hash["new_key"] = "new_value"
Creates that key/value pair.hash.[]("new_key", "new_value")
Does the same, but the above is easier on the eyes, hence "syntactic sugar".hash.store("new_key", "new_value")
Does the same.- Keys must be unique or they'll be overwritten.
Calling in Hash
hash[key]
Gives the value to that key.hash.fetch(key)
Gives the value to that key.hash.values_at(key1, key2)
Gives value of each key in an array like this:[value1, value2]
Combining Hashes
h1.update(h2)
Adds h2's key/value pairs to h1. Overwrites duplicates.h3 = h1.merge(h2)
Creates new hash. Doesn't overwrite h1 if duplicated, but figures out which duplicate to keep.h1.merge!(h2)
Same as .update.
Select/Reject in Hashes
hash.select {|k,v| k > 1}
Will give you the k/v pairs where k is an integer greater than 1.hash.reject {|k,v| k > 1}
Does the opposite. Gives you the k/v pairs that DON'T have k > 1.hash.select!
andhash.reject!
will permanently change the hash with those parameters.
Transforming Hashes
hash.invert
Keys become values, values become keys. Duplicates will be overwritten.hash.clear
Empties the hash.hash.replace
Replaces the key in pair with the one provided.
Query in Hashes
hash.has_key(key)
True if key exists, False if not.hash.include?(key)
Same.hash.key?(key)
Same.hash.member?(key)
Same.hash.has_value(value)
True if value exists, False if not.hash.value?(value)
Same.hash.empty?
True if empty, False if not.hash.size
Gives number of pairs in hash.
Well, that's a lot! But hopefully will be helpful as a guide for myself and others in the future.


Auckland trains cancelled after truck hits rail overbridge
by RNZAuckland trains cancelled after truck hits rail overbridge
All Auckland trains on the Western line are currently cancelled or delayed after a truck hit a rail overbridge.
The truck hit the bridge on Titirangi Road between Margan Avenue and Great North Road just before 8.30am this morning.
Auckland Transport says trains cannot run over the bridge until it has been inspected.
It's encouraging commuters to take buses instead.
"A rail shuttle is currently operating between Swanson and Henderson and vice versa, so customers can connect to scheduled bus services at Henderson," Auckland Transport said on Twitter.