Templates
Base
The base html is copied from Tim Murtaugh’s html5reset.org, and is located in ‘templates/base.html’
Page blocks:
{% block meta_title %}{% endblock %}
: the meta title of page
{% block meta_description %}{% endblock %}
: the meta description of the page
{% block google_site_verification %}{% endblock %}
: the google webmaster verification code
Custom page templates
You can add you own set of page templates by using the CMS_PAGE_TEMPLATES settings.
CMS_PAGE_TEMPLATES = (
('cmsbase/page.html', 'Default page'), # By default and mandatory, if no templates supplied, the page will not save
('cmsbase/home.html', 'Home page'), # Optional project specific template
)
Access translations
In order to retrieve the right translated content depending on the current site language settings, you must call the translated
method to retrieve the translated value.
For example:
Tags
{% get_page_by_unique_identifier 'page-slug' as pagevar %}
: Add the page matching the unique page identifier in the current language as pagevar
in the template context. Returns the published version of the page.
links_for_page
populate the template context with a list of members related to a specific page.
{% links_for_page page as links %}
Eg:
{% links_for_page page as links %}
{% for link in links %}
{{link}}
{% endfor %}
{% home_page as home %}
: Return the original home page instance as home
in the template context if exist, otherwise return False
{% language_name LANGUAGE_CODE %}
: Get the language name from the language code
Filters
``: Truncates by number of character without splitting whole words, and add ‘…’ in the end if longer.


Stopwatch
00
:
00
:
00
.
0
Start
Reset
Lap times
Click the 'Lap' button while the stopwatch is running.
Lap times will be displayed here.


Interpreting class diagrams
Doxygen and GraphViz are used to generate this API documentation from the Xalan-C header files.
Xalan-C++ XSLT Processor Version 1.11 Copyright © 1999-2012 The Apache Software Foundation. All Rights Reserved.


Responsive Design with PBS
Geoff Bishop - Product Manager, PBS
Dave Ackerman - Designer/Front-End Developer, Modus Create
@gabishop - @dmackerman
Our Mobile Offering
3 Video Apps for iPhone & iPad (Kids + GA)
69M mobile streams per month
Thats 27% of hours total hours watched (and growing)
48% of streams (and growing)
Our Brands
Our Stack
The Problem
Underserving users on non-iOS platforms
We Need to be everywhere to satisfy our mission (PBS content to anyone with internet connection)
Saw Responsive Design as potential vehicle for solving
Project Goals
Be the first to offer ad-supported feature-length video on the mobile web browser
Serve that video as fast and reliably as Vimeo & Youtube
Organizational Challenges
Great App stack (Python/Django), but relatively immature APIs
Development all time-shifted
Designers not trained on CSS (yay mocks!)
The Plan
Convince Org we're just building a "Mobile Website"
Started with smartphone & tablet-only breakpoints
Sneak in a "Desktop" breakpoint (more on that later)
Train designers&developers as we go
So, how's it going?
And now here's Dave...
"Mobile First" Mindset @ PBS
Unfortunately for existing projects, mainly a pipedream.
Learn to love (and test on) your devices
even the shitty ones
source
Is responsive design right for me?
Much harder to make an existing project responsive.
Think about your content strategy.
A dedicated mobile website could be a better, more efficient solution.
Your website, or app, probably isn't as simple as this:
Design Challenges
Dynamic content, content wrapping, font scaling
On mobile, :hover
is no longer relevant.
HTML source order, content reflowing
Mobile browsers use whatever font they want
Navigation paradigms across platforms
Users don't do this:
VIDEO
Resizing the browser is not a user interaction!
"3 pillars" of responsive design.
Iterative Workflow
What worked well for us: (may not work well for you)
Have developers stub out HTML/CSS prototypes
TEST your prototypes across devices, find out where it breaks
Circle back with designers, reference the style guide, clean up visuals
TEST your prototypes across devices, find out where it breaks
PSDs are...
Slow to create
Static
Hard to quickly iterate on
Don't show web interactivity
There is too much interactivity and too many possible screen sizes to make flat design comps workable!
The Ideal Front-End Developer
Understands design principles
Knows when a breakpoint should be added. Adds it.
Circles back with the designer for design related questions.
Ok, so what do designers deliver to develoeprs?
A style guide!
You can make one of those with Pattern Primer !
Technology "Stack" & Tips
Building a website responsively builds on fluid width principles + breakpoints.
Leverage emerging JS/CSS strategies
Use SASS + Compass
Both invaluable tools for building modern, clean, cross-browser CSS
Convert pixel widths to percentages with SASS
$maxWidth: 1024px; // container width
.sidebar { percentage(300px/$maxWidth) } // 29.297%
Define your breakpoints as variables
$iPhonePortrait: 320px;
$iPhoneLandscape: 480px;
$Kindle: 600px;
$iPadPortrait: 768px;
$iPadLandscape: 1024px;
@media all and (min-width: $iPadPortrait) and (max-width: $iPadLandscape) {
// code I want to only apply on these 2 devices
}
Size elements with border-box
// import Compass CSS3 libraries
import 'compass/css3';
* { @include box-sizing(border-box); }
border-box
sizing allows us size element widths without worrying about padding.
.leftDiv { width: 30%; float: left; padding: 2em; }
.rightDiv { width: 70%; float: left; padding: 2em; }
Use the right meta viewport tag!
meta name="viewport" content="width=device-width"
Convert pixels to ems with SASS
// Default font size in pixels if not overridden.
$baseFontSize: 16;
// Convert PX units to EMs.
@function pem($pxval, $base: $baseFontSize) {
@return #{$pxval / $base}em;
}
.h2 { @include pem(12) } // 12/16 = .75em
Use Modernizr to deal with old, crappy phone browsers
Use Respond.js to polyfill media query support for sh*t browsers.
Use Response.js to perform code block swapping, load images based on screen width, and more.
<body data-responsejs='{
"create": [
{ "breakpoints": [0,320,481,641,961,1025,1281], "mode": "src", "prefix": "src" },
{ "breakpoints": [0,320,481,641,961,1025,1281], "mode": "markup", "prefix": "r" }
]}'
>
<img src="lo-fi.png" data-src481="medium.png" data-src1025="hi-fi.png" alt="example">
<data-r320="markup @ 320+" data-r961="markup @ 961+">
LIVE DEMO


General Guides ::: Headings ::: Body Text ::: Tables & Lists
Specific Pages ::: General Info ::: Getting Started ::: Buildings, Items, Materials & Pets
Headings take the form of primarily <h1> tags, but if for some reason you feel the need for subheadings in your page, <h2> tags are acceptable. You should avoid using <h3> and beyond, since they're not formatted for by the CSS and you honestly shouldn't have any reason to use them.
H1 headings are, by default, formatted to be centered on the page, bold, and are nice and big. H2 headings are left-aligned, and slightly smaller.
Notably, headings should almost always have an id, corresponding to an internal link in the page index up top.
If you want a more in-depth look at the basic header for files, open this document in a text-editor as opposed to a web browser. There's a blank one in comments at the bottom of this webpage.
Body text is, as always, one of the more complex parts of an HTML page. Not only for its content, which is of course important, but its formatting. Keeping in mind how HTML works will be important if you want to use certain characters, for example, < cannot be directly written into an HTML page. It has to be represented by <, and yes, I just had to write < to write that. You may want to avoid certain kinds of punctuation altogether with HTML.
Plaintext can be formatted in several ways with HTML, of course. Everything is in <p> tags, of course, but you can use <span> tags to select small sections of text to style via inline CSS, if you're daring, or, if you prefer to just edit in HTML, use any of the following tags.
<strong> ::: <em> ::: <s> ::: <sub> ::: <sup>
For the most part you probably won't need to use these all that much; just be aware that <strong> should always be used instead of <b>, and <em> should always be used instead of <i>. They do the same thing visually, but it's just good practice. Most of your formatting should be in the form of page layout, though.
| Tables are the worst | But sometimes |
|---|---|
| Like seriously the worst. | You just need them. |
| This is most certainly | Not one of those times. |
| If you do this I will slap you. |
As you can see above, tables can be abused. And people abuse them a lot. Don't do that. It's already hard enough to read HTML without someone making a monstrosity like that in the middle of the page.
Tables should not be used for page layout, you have <div> tags for that, use them if you need to. Table should be used to format tabular information, connecting one topic in the first column to several topics in the following columns. Tables should always have a header line with <th> tags, and they should be actual headers, not just description text. In terms of formatting, those of you reading the page just need to look below
| Tables | But only | This is |
|---|---|---|
| Are seriously the best. | If you're nice to them. | What a happy table looks like |
| Now isn't it nice with all that whitespace gone, HTML people? |
Lists are pretty simple, and you should know how to use them pretty well, honestly. You should really only need to use <ul>, or an unordered list, with <ui> for the unordered items in the list.
All of these should list their contents and provide basic descriptions of them. Buildings should have each workshop prepended by an image of the workshop, and race-specific pages should only include workshops that have race-specific reactions or that are wholly race-specific; multi-race buildings and reactions should not be described on race pages, and such should instead be placed in a dedicated multi-race page.


|
Sr. Design 2015
Solar Powered light
|
Go to the source code of this file.
Functions | |
| void | rtc_setup () |
| Real-time Clock/Calendar Module setup. More... | |
| unsigned | rtc_set (datetime *time) |
| Set the time on the RTCC. More... | |
| unsigned | rtc_get (datetime *time) |
gives the current time as a datetime structure. More... | |
| unsigned | alarm_set (alarmtime time) |
| Set the alarm date/time. More... | |
| unsigned | alarm_enable () |
| Enables the alarm. Make sure to setup the alarm first! More... | |
| unsigned | alarm_disable () |
| Disable the alarm. More... | |
| unsigned alarm_disable | ( | ) |
Disable the alarm.
Output: Returns false if the alarm was set before. If it was not, returns true.
Definition at line 177 of file rtc.c.
Referenced by alarm_set().
| unsigned alarm_enable | ( | ) |
| unsigned alarm_set | ( | alarmtime | time | ) |
Set the alarm date/time.
Input: an alarmtime
structure containing the time, date, repetitions (if applicable) and frequency Output: A single bit specifying success (false). If something is invalid, the function will return true.
Please see section 17 in the datasheet, particularly figure 17-5, for more detail.
| unsigned rtc_get | ( | datetime * | time | ) |
gives the current time as a datetime
structure.
Definition at line 40 of file rtc.c.
Referenced by daytime_move(), limit_test(), mem_append_log(), menu_seeTime(), and menu_setTime().
| unsigned rtc_set | ( | datetime * | time | ) |
Set the time on the RTCC.
Inputs: a datetime
structure containing the year, month, day, hour, minute, and second. Outputs: A single bit. Probably will never return failure. Detailed Description: Note: Will convert the numbers to BCD endcoding before returning them
Definition at line 20 of file rtc.c.
Referenced by menu_setTime().


First paragraph
DIV not
first point
second point
numberpoint
Strong allowed
,
i allowed w/o attr
,
a not


Welcome to my site I'm a Developer and a life long learner. I've worked in manufacturing as a welder and a aircraft assembler. Before that I worked in construction as a sheetrock finisher.
I took a simple online introduction to web development and thought the code was a nice challenge and somthing I could constantly grow my knowledge base on. I'm a HTML, CSS, Bootstrap, JavaScript, JQuery, Angular JS and PHP developer.


Odyssey
Home
(current)
Calendar
Previous Matches
Tournament
Players
Forum
Login
Log Out
Overwatch Esports Scores & News
Odyssey Esports coverage of the latest Overwatch matches, teams, and player profiles.


Before Change
register = self.get_register_by_name(point_name)
if register.read_only:
raise IOError("Trying to write to a point configured read only: {}".format(point_name))
if register.register_type == "status":
raise RuntimeError("Status register does not support set_point")
try:
if register.register_type == "setting" or register.register_type == "hold":
register.set_state(value)
elif register.register_type in ["vacation", "programs"]:
After Change
:param value: Intended update value
:return: Updated state from remote API
refresh = kwargs.get("Refresh")
// Find the correct register by name, set its state, then fetch the new state based on the register"s type
register = self.get_register_by_name(point_name)
if register.read_only:
raise IOError("Trying to write to a point configured read only: {}".format(point_name))


status=published active_menu=jbpm title=jBPM Project type=project project_name=jBPM ~~~~~~
jBPM originates from BPM (Business Process Management) but it has evolved to enable users to pick their own path in business automation. It provides various capabilities that simplify and externalize business logic into reusable assets such as cases, processes, decision tables and more.
jBPM is the upstream project powering Red Hat Process Automation Manager. A business process allows you to model your business goals by describing the steps that need to be executed to achieve that goal and the order, using a flow chart. This greatly improves the visibility and agility of your business logic, results in higher-level and domain-specific representations that can be understood by business users and is easier to monitor.


Development Team
Gaurav Kumar
Gursimran Kaur Maken
Rohit Mewar
Sanchit Saxena
Shivachetan Patil
Siddarth Jain
Sumukh Chitrashekhar


Computer engineer with a focus on software engineering; writing highly maintainable, robust, and scalable code. Offering expertise in a range of programming languages, software development applications, and hardware tools. Having experience in both embedded and application development in safety-critical environments.
Senior Software Engineer • December 2020 - Present
Software Engineer • August 2018 - December 2020
Requirements Based Verification and Development
- Produce source code for safety-critical armored ground vehicle embedded systems.
- Perform functional system testing.
- Construct applications to interface with and configure embedded systems.
- Implement communication via the J1939 CAN, serial, and I2C protocols.
- Create implementation and safety documentation.
- Reviewed systems against the MIL-STD-882E and ISO 26262 safety standards.
Mentor
- Train team members and new hires in the automotive protocols and standards.
Software Engineer • May 2016 - August 2018
Requirements Based Verification and Development
- Worked on safety-critical embedded systems for commercial aircraft.
- Produced source code and verification tests.
- Made use of ARINC 429 and 629 for systems communication.
- Created both functional and unit tests.
- Performed embedded hardware debugging and testing.
- Reviewed team-members' work against requirements and design documentation.
- Experienced the full V-Model software life cycle and DO-178B safety standard.
- Trained in ITAR compliant information export control.
Testing Automation Tools Development
- Automated the hardware testing and analysis.
- Streamlined the testing process so most development was automated.
- Improved efficiency and reliability of the testing process.
Mentor
- Trained team members and new hires in the development and testing process.
- Created and maintained training documentation.
B.S. Degree in Computer Engineering • December 2015
Completed my major in Computer Engineering, with a focus on software engineering, I contributed to multiple school clubs. Doing so, I primarly worked towards gaining a greater understanding in robotics and AI, while always trying to ensure system safety was followed.
Programming Languages
- C, C++, ADA, Assembly, Python, Java, Fortran, Matlab, VHDL, SQL, Visual Basic
Development Tools
- Git, Lauterbach Trace32, Visual Studio, IBM Rational Synergy, IBM Rational DOORS
Development Processes
- Agile Scrum, Waterfall, V-Model
Office Tools
- Microsoft Word, Microsoft Excel, Microsoft PowerPoint, Microsoft Visio
Developed a mock-up amusement park ride which emphasized safety of multiple autonomous vehicles.
Safety, Automation, ClassImplemented genetic algorithms which controlled separate ant colonies, all of which would fight against other colonies for food in order to survive.
AI, ClubDesigned a simple processor based on the simplified 2-step instruction cycle. Two functions were created in software, one to simulate the fetch next instruction cycle and one to simulate the execute instruction cycle.
Architecture, Class


Remove
Create a Folder
App Store
Please select the app or widget you would like to add to your homescreen
Apps
(current)
Widgets
Search


Like all the great things on earth traveling teaches us by example. Here are some of the most precious lessons I’ve learned over the years of traveling.
Getting used to an entirely different culture can be challenging. While it’s also nice to learn about cultures online or from books, nothing comes close to experiencing cultural diversity in person. You learn to appreciate each and every single one of the differences while you become more culturally fluid.
The real voyage of discovery consists not in seeking new landscapes, but having new eyes.
Marcel Proust
Life doesn't allow us to execute every single plan perfectly. This especially seems to be the case when you travel. You plan it down to every minute with a big checklist; but when it comes to executing it, something always comes up and you’re left with your improvising skills. You learn to adapt as you go. Here’s how my travel checklist looks now:
Going to a new place can be quite terrifying. While change and uncertainty makes us scared, traveling teaches us how ridiculous it is to be afraid of something before it happens. The moment you face your fear and see there was nothing to be afraid of, is the moment you discover bliss.
Getting used to an entirely different culture can be challenging. While it’s also nice to learn about cultures online or from books, nothing comes close to experiencing cultural diversity in person. You learn to appreciate each and every single one of the differences while you become more culturally fluid.
Life doesn't allow us to execute every single plan perfectly. This especially seems to be the case when you travel. You plan it down to every minute with a big checklist; but when it comes to executing it, something always comes up and you’re left with your improvising skills. You learn to adapt as you go. Here’s how my travel checklist looks now:
Going to a new place can be quite terrifying. While change and uncertainty makes us scared, traveling teaches us how ridiculous it is to be afraid of something before it happens. The moment you face your fear and see there was nothing to be afraid of, is the moment you discover bliss.
for more informtion ckeditor launch


Written by: Michael Curtis
Transcribed by: Eric Aasen
[Scene: Central Perk, Joey, Chandler, Monica, and Phoebe are there. Joey is holding a deck of cards out to Chandler.]
Joey: Okay, pick a card.
Chandler: Okay. (He picks the 9 of Spades)
Joey: All right now, memorize it. (Pause) You got it?
Chandler: Oh yes.
Joey: (holding up the Queen of Clubs) Is that your card? (He winks and smiles.)
Chandler: (pause) Yes.
(Joey laughs then realizes the trick didn't work when Chandler hands him his card back.)
Carol: (entering with Ben and Ross) Hey guys!
Ross: Hi!
Chandler: Hi there!
Ben: Hi!!
Carol: Guess what? Ben is going to be in a TV commercial!
Phoebe: What are you talking about?!
Ross: (sets Ben down) Well, it's not for sure but umm, we met this guy in the park who thought Ben was really cute--y'know, which he is--so umm anyhoo, he uh, he gave us his card and told us to bring him down for this commercial he's auditioning.
Joey: (reading the card) Whoa! This guy is like the biggest commercial casting director in town! (Ross gasps) Ben takes one lousy walk in the park and gets an audition!! (Ross and Carol stare at him, then Joey realizes what he just said.) I mean, way to go Ben! (Gives Ben the thumbs up, which Ben returns.) Man! I've been in that park a million times and no one offered me an audition.
Ross: I know, it's crazy! We were just pushing Ben on the swings
Joey: I'm always on the swings! What am I doing wrong?!
Chandler: That.
Opening Credits
[Scene: Monica and Rachel's, everyone is eating breakfast, Ross is heading for the bathroom.]
Rachel: (entering from her room) Okay, gotta go! Wish me luck!
Joey: Luck!

Rachel: Uh well, y'know what? I don't think if I feel comfortable stealing on my very first day
Chandler: Unwilling to steal from work, interesting.
Monica: Besides, if anybody's gonna get free stuff, it's gonna be me.
Rachel: Okay guys, way to wish me luck!
All: Good luck! Go get 'em! (Rachel exits.)
Phoebe: Okay, let's discuss Rachel's birthday. I say we throw a surprise party this weekend.
Joey: Whoa-whoa, but her birthday isn't like for another month.
Phoebe: Yeah but if we throw her a party on her birthday, then it's not a surprise.
Monica: I think it's a great idea. Yeah, we could have a dinner party and just invite her close friends.
Joey: Ross!! We're having a surprise party for Rachel!!
Ross: (from the bathroom) Okay!!
Joey: Done.
Phoebe: Okay, great so do you want to do it together?
Monica: I would love to do it together!
(Joey starts to giggle.)
Joey: They're gonna do it together.
Chandler: Dude! That's my girlfriend!
Joey: What, so I gotta shut it down now?
Ross: All right, I gotta take off. I'm picking up Ben then we're off to the big audition.
Monica: It's gonna be weird to watch some actor pretending to be Ben's dad.
Ross: Yeah.
Chandler: Weirder than watching his two moms make out? (Monica nods in agreement.)
Joey: Whoa-whoa dad? There's a dad in the commercial?
Ross: Yeah the dad and Ben eat soup and pretend to enjoy it.
Joey: Whoa, hey, maybe I'll go down there with ya and see if I can get an audition to play the dad. I mean who better to play Ben's father than his godfather.
Ross: You're not his godfather.
Joey: What?! Are you kidding?!
Ross: (Pause) Of course I am! (Joey is relieved) Okay, let's go godfather.
Joey: All right!
(As they walk out he motions to Chandler that he is still Ben's godfather.)
[Scene: Ben's audition, Carol, Ross, and Ben along with about 10 more families are in a waiting room as Joey enters happily.]
Joey: Hey! I'm in, they're gonna let me audition!
Ross: Really? That's great!
Joey: I know! I know! It turns out that one of the casting ladies has actually seen me in a play, so I steered clear of her
Carol: (noticing a kid who has picked up a copy of Variety to read) Hey, that kid looks familiar.
Joey: Oh yeah, yeah! He's done tons of commercials. I've seen him in like Sugar Smacks, Playstation, and that one for the phone company. In fact he was so good in that one, he actually convinced me to switch phone companies. Chandler was mad .
Ross: Yeah well, he's not gonna get this one. Ben is way cuter than that kid. I mean look at him, look at you, (Starts to whine like a baby and Joey just glares at him.)
Joey: That's great. Listen, wouldn't it be great though if I got to play Ben's dad?
Ross: Joey, you look nothing like Ben.
Joey: I look more like him than you do! (He winks at Carol.)
Carol: Y'know, I don't really know you well enough for you to do that.
[Scene: Rachel's new job, she's in her new boss's office (Kim's) and with the other assistant (Nancy). Together they're deciding what clothes to buy or something, who knows, let's all watch/read to find out.]
Kim: So it's down to these two, Nancy I know you like this one and I think I agree. Rachel, what do you think?
Rachel: Well umm, that one is pretty but uh, I just, I just love this fabric (On the other one.) Sorry.
Kim: Oh don't be sorry, that's part of your job here to give your opinions and then I take credit for them--I'm kidding.
Nancy: She is kidding, but don't ever disagree with her again. Okay, now I'm kidding!
Rachel: (laughing nervously) Oh, what a fun office.
Kim: I don't know which one, but I do know I need a cigarette. So what do you say we take a break, we go outside, and we'll figure this out when we come back?
(They all get up to leave.)
Kim: (at the door) Rachel? Do you smoke?
Rachel: Oh no, my dad's a doctor and he would always tell me just horror stories (stops and tries to change directions) about ghosts and goblins who totally supported the princess's right to smoke.
[Scene: Monica and Rachel's, Rachel is telling Chandler and Monica about her day.]
Rachel: and then they came back from smoking and they had made all of the decisions without me!
Monica: That doesn't seem fair.
Rachel: I know! It's like I'm being punished for not having this disgusting, poisoning habit!
Chandler: Yeah, it is the best.
Rachel: I mean what if this keeps happening?   Me or Smokey Smokerson?
Monica: Rachel, you can go down there, you don't have to smoke. Just say you wanna get some fresh air.
Rachel: Yeah, I can do that.
Chandler: Yeah, or you can do the easy thing and smoke.
Phoebe: (entering) Hey!
Monica: Hey!

Rachel: I would love to!
Phoebe: Oh good!
Chandler: Yeah, I wanna go to babe.
Phoebe: Oh good.
(They all start out.)
 (She slams the door on them.) Okay, let's talk about the party! I have so many ideas! (Holds up a cocktail napkin.)
Monica: Yeah, me too! (Runs and grabs her 3-ring binder of ideas.)
Phoebe: Oh, look at that.
Monica: All right, that's a little sketch of the cake, umm some sample menus, umm y'know what I thought we would start out with Tuscan style finger food, and for music, here's an alphabetized list of all my CDs! I've highlighted the ones that would go really good with the food.
Phoebe: What happened to the intimate dinner party?
Monica: Oh, we're not doing that. Okay
Phoebe: So wow, it looks like you took care of everything. Thanks a lot, co-host.
Monica: What?! I didn't take care of everything, there's-there's plenty of things for you to do!
Phoebe: Like what?
Monica: (Thinks) Cups.
Phoebe: Cups? You're giving me cups?
Monica: And ice!
Phoebe: Cups and ice? Ooh, I get to be in charge of cups and ice? (Thinks of something) All right. Fine, okay, I will be in charge of cups and ice!
Monica: Wait a minute, I can get ice at the restaurant
Phoebe: I got it! Mine!
Ross: (entering, downtrodden) Hi.
Monica: Hey! How'd the audition go?!
Ross: Not so good.
Monica: Wait a minute, are you doing Joey's (sadly) "Audition didn't go so well. (Happily) Yeah it did?"
Ross: (Pause) Yeah I am! Yeah, Ben got a second audition!
Joey: (also downtrodden) Yeah, I had to teach Ross my bit because I actually didn't get a callback.
Monica: You got a callback too didn't you?
Joey: (Happily) Yeah I did!
[Scene: The smoker's balcony, Rachel is out to join Kim and Nancy.]
Kim: Hey Rachel, what are you doing out here?
Rachel: Oh well, it's kinda lonely up there, so I just thought I would come out here and get some fresh air.
Kim: Nancy and I were talking about the fall collection.
Rachel: Oh great!
Kim: So anyway we really (Someone exhales and Rachel turns and coughs.) Honey, we're just smoking all over you.
Nancy: Oh, sorry!
Rachel: Oh that's okay.
Kim: No-no-no, we'll move you just stay right there. (They walk away.)
Nancy: So anyway I sent the designs over to Ralph and he's very excited about the line.
Kim: Oh that's great! You are the best!
(Rachel gets fed up and heads over to another smoker.)
Rachel: Excuse me, can I, can I bum one of those? (He holds up his pack.) Y'know what, actually (She takes the one he's smoking and heads over to where Nancy and Kim are standing and laughing.) Okay, okay, okay, what's so funny over here?
Nancy: I thought you didn't smoke.
Rachel: Oh, I thought you guys meant marijuana cigarettes, y'know? Y'know what I mean, like dubbies? And I actually, I thought to myself, "Wow, those guys are crazy!" But no, I actually smoke the regular ones all, all the time.
Kim: We get high.
Rachel: Oh, me too.
Kim: I'm kidding.
Rachel: (Laughs) Oh, me too.
[Scene: Ben and Joey's (Isn't that an ice cream??) callback.]
Ross: Oh God, this is so nerve wracking! How-how do you do this?
Joey: Well, unfortunately, I don't get many callbacks so
Carol: Is it a good sign that they asked us to hang around after the audition?
Joey: Who knows?
The Casting Director: (entering) Okay uh, we have narrowed it down to Raymond, Ben, Kyle, and Joey. The rest of you, thank you very much.
Ross: Yes!! I knew it!! (To the people who didn't make it.) Bye-bye! So long! Later!
Joey: Oh this is great! I might actually get to play Ben's dad!
Ross: Yeah!
The Casting Director: Actually, that can't happen. Yeah because you all have such different looks, we're putting you with Raymond and Kyle with Ben. So it'll be either you two (Points to Joey and Raymond) or you two. (Points to Kyle and Ben.) (Exits.)
Joey: Man, this is gonna be kinda weird.
Ross: Yeah, it is.
Kyle: Yeah. It's gonna be weird.
Ross: No, we-we're gonna be like best friends, that's why it's gonna be weird.
Kyle: Oh, oh, I thought we were just talking.
Commercial Break
[Scene: Chandler and Joey's, Ross and Chandler are talking.]
Phoebe: (entering, carrying two garbage bags) Hey!
Ross and Chandler: Hi!
Phoebe: Is it okay if I leave this stuff here 'til Rachel's birthday party?
Chandler: Ah sure. What's in 'em?
Phoebe: Umm, cups.
Chandler: Oh good, because uh we got Rachel 800 gallons of water.
Ross: Seriously that's a lot of cups.
Phoebe: Yeah well, that's 'cause Monica put me in charge of cups and ice, and Monica is gonna rue the day that she put me in charge of cups and ice.
Chandler: Y'know I rued the day once didn't get a whole lot else done.
Phoebe: Okay, time to bring up the rest of the cups. (She goes and opens the door to Joey.) Oh, hi Joey!
Joey: Hey Pheebs! (To the guys) Hey!
Ross: Hey!
Joey: Ross good, I'm uh glad you're here. I wanna talk to you about something.
Ross: What's up?
Joey: Well, I've been thinking about this whole commercial thing, y'know me going up against Ben, the two of us competing, and that can't lead to anything good. So, I think I'm just gonna step aside. I'm gonna tell them that I won't audition.
Ross: Wow, uh, Joey that's-that's great. Thanks man.
Joey: That's it? You're-you're gonna let me do this?! This-this is my career we're talking about here!
Ross: Well, you just
Joey: I just said that so you wouldn't let Ben do it! Look Ross, if anyone should step aside it should be Ben!
Ross: What?!
Joey: What? Chandler! Tell 'em!
Chandler: (shocked) Well I mean, let me get the door first. (Goes and opens the door.) Oh, hi! No one. (Exits.)
Ross: Why should Ben step aside? It was his audition in the first place! You-you just tagged along! You're like the uh, tag-a-long dad.
Joey: At least I care about his feelings!
Ross: What?!
Joey: Do you know how hard this is gonna be on him when he doesnt get it?
Ross: And why wouldn't he get it?
Joey: Oh, come on! Have you seen what my kid can do?! Huh?! I mean he dials phones! He-he-he eats tortilla chips! He-he plays soccer with the cartoon tiger!

Joey: You just give him a spoon baby!
Ross: Oh yeah? I guess we'll just see!
Joey: Yeah! Because this commercial belongs to me and Mitch!
Ross: You're kid's name is Raymond!
Joey: Yeah?! So's yours!
[Scene: Central Perk, Chandler and Monica are there as Rachel enters.]
Monica: (To Rachel) How did work go?
Rachel: Oh it was great! It was great! I went down there just like you said, y'know? And we talked business. Kim totally took my opinions.
Monica: You stink!
Rachel: Thanks!
Monica: No, I'm-I'm serious!
Rachel: Well-well that's 'cause I went down there and they were all smoking. This is actually the smell of success.
Chandler: Okay, there's something different though--Oh my God! You smoked!
Rachel: I did not!
Chandler: Yes you did! You look happy and sick; you smoked!
Rachel: All right, fine! But I had too! I had to do it for my career!
Chandler: I wish I had smoked for my career
Monica: That's so gross!
Rachel: No well, no it's not that bad, y'know? I mean yeah, my tongue feels a little fuzzy and these fingers sort of smell, I actually feel like I can throw up.
Chandler: Okay, but you gotta push past this because it is about to get so good!
Monica: Chandler!  I'm not kidding. (She's not; she stands and walks away. Chandler moves closer.)
Chandler: I think you smell great!
Kim: So, we're decided, no on plaid, yes on pink?
Nancy: Absolutely!
Rachel: I am so on board! (She throws away her recently lit cigarette.)
Kim: Rachel didn't you just light that?
Rachel: Yeah, I did, but y'know what? I am really, really trying to cut back, y'know? (Laughs) Good luck, Rach.
Nancy: I've actually been thinking about quitting lately.

Nancy: Tell me about it!
Rachel: Well then let's just quit! We'll just quit! Let's all quit!
Kim: It does sound appealing.
Nancy: Oh, I never could do it.
Rachel: Oh but you could. You can. Absolutely! We can help each other out! We can get--what are those--those patches! We could be like the Patch Sisters!
Kim: Oh y'know, we really should quit. Okay, let's quit!
Rachel: Yes! Great! Give me those cigs! Give it! Give it! (She grabs their cigarettes and lighters and throws them in the trash.)
Kim: My late husband gave me that lighter. (Rachel laughs.) I'm not kidding.
Rachel: Okay then! (She starts rummaging through the trash to find Kim's lighter.)
[Scene: Joey and Ben's audition, Joey is rehearsing his lines, uh correction, Joey is rehearsing his line.]
Joey: Hmmm, soup! (Tries again.) Hmm soup! (Tries again, with a little caveman thrown in.) Hmm, soup!
Carol: Joey, Ross is gonna be here any second, would you mind watching Ben for me while I use the ladies' room?
Joey: Oh yeah, no problem.
Carol: Thanks. (Exits.)
Joey: (goes over to Ben) Hi Ben!  I gotta tell ya, it's no picnic. There's tons of rejection. No stability. One day you're Dr. Drake Remoray, the next day you're eating ketchup right out of the bottle.
Ross: (entering, angrily) Joey!
Joey: (angrily) Ross!
Ross: (angrily) Ben! (Pause.) (Happily.) I mean, Ben! Ben!
The Casting Director: (entering) Okay, Raymond, Joey you're up.
(Raymond and Joey go in the office.)
Joey: Hi!
The Casting Director: Okay, uh well, let's try one. Whenever you guys are ready. (Some dude puts down a couple bowls of soup in front of them.)
Joey: Uh-oh.
The Casting Director: Is there a problem?
Joey: Well this is noodle soup and uh, I've been working with tomato. But that's okay, no problem. No problem. Hmm, noodle soup.
The Casting Director: Y'know, that's-that's fine, but the line is, "Hmm, soup."
Joey: Oh, what did I say?
The Casting Director: Hmm, noodle soup.
Joey: How's that different? (She looks at him until he gets it.) Oh! Yeah!
The Casting Director: All right, let's try one.
(Raymond and Joey both eat a spoonful and Joey turns to Raymond and says )
Joey: Hmm, noodle soup.
The Casting Director: Okay. Let's do it again.
Joey: Okay.
(They do it again.)
Joey: Hmm, soup. (Pause.) I mean, noodle soup. I mean soup!
Raymond: COME ON!!!!
The Casting Director: Y'know what? We need to move on.
Joey: No! No! I-I can do it one more time! See? Look! (Eats another spoonful) Hmm, noodle soup. Damnit! (Storms out.)
[Scene: The smoker's balcony, Kim and Nancy are cheating and are caught by Rachel.]
Rachel: Hey! Hey-hey-hey!!
Kim: Uh-oh, busted!
Rachel: Come on you guys! What are doing?! I thought we were the patch sisters!
Kim: Yeah. That didn't work out.
Nancy: Rachel we tried to quit, but it was too hard!
Rachel: Well y'know if you, if you started smoking again you could've at least told me! Come on, give me one of those! What are we talking about?
Kim: No. No! You're doing great!  That's why we didn't tell you and we're not gonna drag you down with us.
Rachel: Oh wait, no-no-no! Drag me down. Drag-drag me down.
Kim: Forget it Rachel! We're both so proud of how well you're doing.  In fact, if I catch you with a cigarette, you're fired.   Go on!
Rachel: Okay. (Starts to walk away.)
Kim: (to Nancy) So, okay! So you'll come with me on the Paris trip.
Rachel: (hearing that) Oh man!
[Scene: Monica and Rachel's, Rachel's surprise party. The apartment is festooned with cups. There are cups everywhere! Cup centerpiece, cup garland, etc., etc]
Phoebe: (To Chandler) Check it out! Cup hat! (Points to her hat.) Cup banner! Cup chandelier! And the thing that started it all, the cup! (Holds up one.)
Chandler: Great job with the cups, Pheebs!

(Chandler starts to follow her into the kitchen.)
Phoebe: (following him) And did you notice the ice? (Gestures to 3 huge buckets of ice on the table.) Look! We have it all! We have crushed! Cubed! And dry! Watch! (Pours some water onto the dry ice, causing it to evaporate/smoke.) Ahhh! Mystical!
Chandler: Awesome!
Monica: Chandler! Everyone--no one's eating my Tuscan finger food 'cause they're all filling up on Phoebe's snow cones!
Chandler: There are snow cones! (Monica glares at him.) Snow cones! Yuck!
Monica: Y'know go! Go! Right there! (Points)
Chandler: Thank you! Thank you! (Runs to the snow cone machine.)
(Rachel enters.)
Phoebe: (noticing her) Oh, look! Look! Look!
All: Surprise!!
Rachel: What?! What?! My birthday's not for another month!
Monica: That's the surprise!
Rachel: Oh my God! You guys this is so great! I mean it's so unexpected! I mean Chandler's birthday is even before mine!
(Everyone stops and looks at Chandler, who's nodding.)
All: Surprise!
Rachel: Wow! This is great! Look at all these cups! This is so weird.
Phoebe: I was in charge of cups.
Rachel: Oh, okay, not so weird.
[Cut to another part of the room, Ross is going to talk to Joey.]
Ross: Hey!
Joey: Hey.
Ross: Listen man, uh, I'm sorry the audition didn't go so well.
Joey: Yeah right! (Gets up for a refill to his snow cone.)
Ross: No really, I-I am! I feel bad!
Joey: Yeah? Well look Ross, you don't have to. Okay?  I mean what kind of an actor can't even say, "Hmm, noodle soup." (Nods his head in disgust.)
Ross: Yeah y'know what?
Joey: What you do mean?
Ross: I think, sub-consciously
Joey: Wait-whoa-whoa, you lost me.
Ross: (pause) I think on some level, you-you sabotaged your own audition so that Ben would get the part.
Joey: Well, you're way sounds a lot better than mine. (Thinks about it.) Yeah. Yeah! It's not that I'm a bad actor
Ross: No!
Joey: No, it's just ah, I care so damn much about little Ben that uh, it was more important to see him succeed.
Ross: There you go. Thank you!
Joey: Thank you! So, did-did he get it?
Ross: No.
Joey: Eh, what are you gonna do?

Chandler: (to Kim and Nancy) Oh, hi! Excuse me, is uh Rachel Green here? I was supposed to meet her for lunch.
Kim: Oh, she doesn't come down here any more. You can find her up on ten.
Chandler: Okay, great.
(Kim exhales and Chandler stares at it longingly.)
Kim: (to Nancy) So we talked about the (Chandler sneaks closer to her cigarette) whole presentation yesterday at lunch (Closer) and he wondered if one person would be enough (Closer) to get a take on the trip (Still closer) and I said, "Yeah, absolutely!" (She's interrupted by Chandler who has reached his goal and takes a drag from her cancer stick.)
Chandler: I'll catch you guys later. (Exits.)
End


1 | 2 | 3 |
4 | 5 | 6 |
7 | 8 | 9 |
0 |
|
|
|||
|
|
|||
|
|
|
Get Rich |
Die Broke |
| Starting Balance |
Year End Deposits |
Year End Earnings |
Paid For Taxes |
Paid For Retirement |
|---|
Experiment With The Two Demo Example Plans
TapClick the menu icon at top left to show the side-bar menu for choices of demo example plans.
You can change the demo plan's data entry values to experment. When you leave a demo plan, the original demo data entry values are restored.
The User Interface
Swipe the data window up and down to scroll.
Drag the charts left and right to pan, or select one of the pagination dots to show that chart.
A Note About The Charts
Chart bars are not drawn to scale, but are sized logarithmically proportional to their value. The actual values are shown in the accompanying data table. To see which chart bar corresponds to a particular year in the data table, just tapclick that year in the table and the corresponding chart bar will pulse.
Slide the chart page's rate sliders to interactively change the charts to show the effect of rate changes. These rate changes are temporary, used only for these interactive tests, and are not permanently saved in your plan's data.
Privacy Of Your Data
This program respects your privacy. The information that you enter here is kept in your own device only. It is not disclosed to any other person or organization. This program saves your information locally for use the next time you use this program.
If you have any concern with others using your device, you can use the side-bar menu to select the Clear Data option. This will remove all the data you entered for your plan. Data for the demo plans are not effected.
Another option is to use the side-bar menu and select Set PIN. You can then enter a 4 digit PIN to block access to this program without first entering the PIN. Once you have entered your PIN you have access to this program with your data. Then you can change your PIN anytime by selecting the Set PIN menu choice. If you select the Set PIN menu choice and then exit the program without entering digits, you clear the PIN requirement. If you clear your data, your PIN requirement is cleared also.
Comments
Please send comments, suggestions, and bug reports using the side-bar's Comment menu choice.
Green Demo Charts
TapClick a demo chart image to enlarge it. Then grab and drag the top bar to move it.
This section explains the actual charts you will see if you use the green demo with its default values and go to see the Interactive Money Charts. The demo shows the couple's planning as it was prepared in 2013 to project out for a life span of 99 years. The projection uses assumptions and account values entered at that time.
This is a live demo. You can experiment and change the values to see the resulting charts. The values are reset to their initial values when you exit the demo.
Chart bars are not drawn to scale, but are sized logarithmically proportional to their value. This allows you to see trends in each category without the large account values overwhelming the small ones graphically. The actual values are shown in the accompanying table. Actual values can also be seen if you touch and hold on a bar segment, as shown below.
The pop up shown only works with a mouse pointer (sorry). But when you tap any year in the data table, the corresponding chart bar will pulse to show you its location. When you rest your cursor over a bar segment, the year, and value will show in a pop-up. The same data for the year (2044) is shown in the table on the right side.
The year 2023 is the first year of retirement. Money is now drawn from accounts to finance the retirement living expenses. The details of the money drawn from each account are shown on the other charts.
These sliders let you experiment by changing the assumed value for earnings, inflation, and taxes. The program will recalculate your finances with the new value and show the result in the chart and table. These experimental changes do not update the values entered in the data entry page. You can reset your charts by going back the the start page, then tappingclicking the charts button again.
The dots here are pagination indicators for the calculated charts. They show which chart of the group is currently shown. You can swipe your finger on the charts to slide them left or right. You can also tapclick any dot to move directly to that chart.
This is an interesting chart showing an effect of a large IRA. A large IRA can happen, for example, as the result of a rollover from a past employer's beneficial profit sharing plan.
Retirement payouts start with first person's retirement in year 2023. The first person to retire stops depositing into the taxable account. The second person's savings are still deposited into the taxable account until that person also retires.
The second person retires in year 2034 and stops depositing into the taxable account.
The second person reaches 70 1/2 years old in year 2038 and must take Required Minimum Distributions from IRA. That IRA is large and the distribution is more than is needed for retirement living expenses, so the excess amount is deposited into the taxable account. No money needs to be withdrawn from the taxable account.
The large IRA has been reduced by year 2057 so that the required distribution is not enough to cover the retirement living expenses. The money needed to make up the balance of the retirement living expenses is again taken from the taxable account. The money needed is not taken from the IRA, but is kept in the IRA where it earns tax deferred profits to maximize your earning efficiency. No more deposits are made into the taxable account.
You retire in year 2023 and stop making deposits into your IRA.
You reach age 70 1/2 in year 2028 and start taking Required Minimum Distributions from your IRA. These are used to contribute to the needed retirement living expenses.

Your spouse retires in year 2034 and stops making deposits into her IRA.
Your spouse reaches age 70 1/2 in year 2038 and starts taking Required Minimum Distributions from the IRA. The distribution is more than enough to cover the balance of funds needed for retirement living expenses, so the excess (shown in grey) is deposited in the taxable account.
The IRA account balance has been reduced so that the RMD from the account is not large enough to cover the balance of funds needed for retirement living expenses, so the taxable account begins to provide funds again.

The taxable account runs out of money in 2065, so in years 2065, 2066, and 2067, your spouse's IRA solely supplements the pension and social security payments to cover the balance of funds needed for retirement living expenses. The IRA is depleted the year your spouse dies in 2067.
Your spouse's pension plan payments are not indexed, and so continue to deliver fixed payments for life.
Your social security payments are indexed for inflation, and continue to deliver adjusted payments for life.
Your spouse's social security payments are indexed for inflation, and continue to deliver adjusted payments for life.
Red Demo Charts
TapClick a demo chart image to enlarge it. Then grab and drag the top bar to move it.
This section explains the actual charts you will see if you use the red demo with its default values and go to see the Interactive Money Charts. The demo shows the couples' planning as it was prepared in 2013 to project out for a life span of 99 years. The projection uses assumptions and account values entered at that time.
This is a live demo. You can experiment and change the values to see the resulting charts. The values are reset to their initial values when you exit the demo.
Chart bars are not drawn to scale, but are sized logarithmically proportional to their value. This allows you to see trends in each category without the large account values overwhelming the small ones graphically. The actual values are shown in the accompanying table. Actual values can also be seen if you touch and hold on a bar segment, as shown below.
The pop up shown only works with a mouse pointer (sorry). But when you tap any year in the data table, the corresponding chart bar will pulse to show you its location. When you rest your cursor over a bar segment, the year, and value will show in a pop-up. The same data for the year (2044) is shown in the table on the right side.
The year 2034 is the last one with a beginning balance in any asset account. Retirement funding now is from pensions and social security payments.
These sliders let you experiment by changing the assumed value for earnings, inflation, and taxes. The program will recalculate your finances with the new value and show the result in the chart and table. These experimental changes do not update the values entered in the data entry page. You can reset your charts by going back the the start page, then tappingclicking the charts button again.
The dots here are pagination indicators for the calculated charts. They show which chart of the group is currently shown. You can swipe your finger on the charts to slide them left or right. You can also tapclick any dot to move directly to that chart.
The taxable asset accounts run out of money in 2028. During the years from 2013 both IRA accounts have had Minimum Required Distributions withdrawn, and pension and social security payments were received. Those were not enough to fund the total retirement living expenses, so money was withdrawn out of the taxable accounts to make up the balance. Now withdrawals from the IRA accounts will have to increase to fund the entire amount needed for retirement living expenses.
During the three years starting in 2029 your IRA had more than the Minimum Required Distributions withdrawn to help fund the total retirement living expenses. Your IRA accounts run out of money in 2031. Now withdrawals from your spouse's IRA accounts will increase to make up the balance to fund the entire amount needed for retirement living expenses.
For the years 2032 and 2033 your spouse's IRA had more than the Minimum Required Distributions withdrawn to make up the balance to fund the total retirement living expenses. This IRA account ran out of money in 2034, and the total of receipts from pension and social security payments are all that remain to fund retirement living expenses. This is less than you have specified, but at year 2034 you are 94 and your spouse is 92. This projection is so far into the future as to be meaningless, except to show how important it is that you keep revising this plan yearly to keep your financial status current to ensure having enough money at this age.
Your spouse's pension plan payments are not indexed, and so continue to deliver fixed payments for life.
Your social security payments are indexed for inflation, and continue to deliver adjusted payments for life.
Your spouse's social security payments are indexed for inflation, and continue to deliver adjusted payments for life.


The TomBio ID Framework is a project originating from the Field Studies Council's Tomorrow's Biodiversity project. It started life as an investigation into new ways of presenting multi-access keys on computers as aids to biological identification.
Multi-access keys (also known as lateral keys) are a way of using an underlying taxonomic (morphological) knowledge-base as an aid to identification of biological specimens. There is normally a very clear separation between the representation of knowledge (i.e the knowledge-base) and the tools (software) that use and present that knowledge as a key.
As the project progressed, it became clear that a taxonomic knowledge-base can be used as an aid to identification in lots of ways - not just as the engine of a multi-access key. I started to think about representing and visualising knowledge-bases in many different ways in order to explore the potential of transferring the knowledge contained within them to the people that use them.
The essence of this project is to create a technical environment - including a software framework - in which imaginative ideas for visualising and using taxonomic knowledge-bases for identification can be realised.
There are many ways to engage with this project. All of the source code developed for it is publicly available as an open source project https://github.com/burkmarr/tombiovis.
We have published a number of visualisations in conjunction with several taxonomic knowledge-bases on our website (frequently in partnership with other parties providing the knowledge-bases). We very much hope that these, in themselves, will be useful resources to people identifying the taxa we have covered.
As well as working on new knowledge-bases, we are thinking of new ways to visualise and use those knowledge-bases all the time and we will add several more visualisations to the framework before the end of this project - enriching the way in which knowledge-bases connected to the framework can be visualised.
You can develop new visualisations, including multi-access keys, without doing any programming at all by developing your own knowledge-bases using an Excel spreadsheet template that will be published with the open source software on GitHub.
Choose whatever taxonomic group interests you and populate the spreadsheet with the morphological character states describing the taxa in that group. Then you can take the existing visualisation tools developed for the Tom.bio ID Visualisations project (and the new ones to be developed in the future) and use them the visualise your new knowledge-base - either on your own website on as a stand-alone implementation on one or more computers.
If you have, or are developing, a taxonomic knowledge-base that you believe would benefit from some collaboration with us, then please contact Rich Burkmar to talk about the possibilities.
In many cases we will be happy to guide you on the production/format of the knowledge-base and host the visualisations on our Tom.bio website.
One of the main reasons that we are planning to publish the source code behind the Tom.bio Visualisations project on GitHub - a well established hub for co-operative open source software development - is to provide the opportunity for collaborative working with other Javascript programmers eager to explore the potential of these kinds of tools. GitHub will provide the environment and tools required to facilitate this kind of collaborative coding.
Because the Tom.bio Visualisations project is truly open source, anyone is welcome to take copies of the code and do with it as they wish, including developing their own proprietary products if they so desire.
These visualisation tools are built using standard web technologies supported by all modern browsers. No plugins are required. The programming language is Javascript. Two Javascript libraries, in particular, help to provide the look and feel of this visualisation:
The current visualisations available within the framework have been optimised for large format web-browsers, e.g. those that run on laptops. It will be possible to develop new visualisations that are optimised for all sorts of different devices including smartphones and this is a goal of development during 2018.


Soft AP
Warning: The WiFi daughter card is required in order for Soft AP to operate correctly. Please ensure it is attached before continuing.
SoftAP Demo with the following default configuration
SSID: TexasInstruments_001
IP: <IP_ADDRESS>
Security: Open
Channel: 6


Differential expression of LE genes in PCs with TMPRSS2-ERG fusion. Analyses were performed using the Sueltman dataset in R2: Genomics Analysis and Visualization Platform. Expressions were presented as log2-transformed data. Statistical analyses were performed by the R2 Platform using one-way ANOVA. ** p < 0.01; *** p < 0.001.


Market Data
Eurex Clearing members are provided with access to Transparency Enabler files to allow for replication of the margin methodologies. An essential part of the OpenGamma implementation is the ability to load and interpret these files.
We distinguish between three categories of files: OTC, ETD and cross-margining. A category of files is only required if the calculation involves it, either because there are OTC or ETD trades in the portfolio, or because cross-margining is enabled.
OTC Requirements
The following Eurex files are required to calculate margin:
202
- Risk Factor Report210
- Interest Rate Curves Report220
- Liquidity Tables221
- Initial Margin Configuration Set
The format and content of these files is described in Eurex OTC Clear Risk Methodology Description.
Index fixings and holiday calendars are also required but are not provided by Eurex. For more details, see Fixings and Holidays.
ETD Requirements
The following Eurex files are required to calculate margin:
forexcrt
- FX Rates Configurationliqufact
- Liquidity Factor Configurationmrktcapa
- Market Capacity Configurationmrktrisk
- Risk Measure Aggregation Configurationriskmeas
- Risk Measure Configurationstlprice
- Settlement Pricestheoinst
- Theoretical Prices and Instrument Configuration
The format and content of these files is described in Eurex Clearing Prisma – User Guide: Methodology Description.
Cross-Margining Requirements
fimmprio
- FI & MM Priority Filemtrlparm
- Materiality Parameter Filematrbkt
- Maturity Bucket File
The format and content of these files is described in Eurex Clearing Prisma – User Guide: Cross Margining.


Current Plan and Wireframe for Blog
July 27, 2014
Here are some changes I would eventually like to make, not represented by the wireframe for the main page:
- Make tabs change background color on hover
- Morale Boosts tab: make block layout with images that link to different sites
- Assignments tab: list "Blog Posts" and "Other Assignments" separately
- Clean code and re-organize with semantic elements


Toggle navigation
Ben Collins
Home
Cover
Modal
Images
Dropdown
Action
Another action
Something else here
Nav header
Separated link
One more separated link
Fixed top
Left off-canvas
Main content
Right off-canvas


Weather Dashboard
Search for a city:
Submit
City:
Temperature:
Humidity:
Wind Speed:
Date:
Temp: -
C
Humidity:
Description:
Date:
Temp: -
C
Humidity:
Description:
Date:
Temp: -
C
Humidity:
Description:
Date:
Temp: -
C
Humidity:
Description:
Date:
Temp: -
C
Humidity:
Description:


Instructions
Each turn, a player repeatedly rolls a die until either a 1 is rolled or the player decides to "hold":
- If the player rolls a 1, they score nothing and it becomes the next player's turn.
- If the player rolls any other number, it is added to their turn total and the player's turn continues.
- If a player chooses to "hold", their turn total is added to their score, and it becomes the next player's turn.
PS
One player can play multiple times in a row or choose to take turns after each round
Have fun


{% insert styles %} {% insert scripts %}
{{demographics.name|display_name}} is a {% if demographics.dob %}{{demographics.dob|age}} year old{% endif %} {% if demographics.race %}{{demographics.race}}{% endif %} {% if demographics.marital_status %}{{demographics.marital_status|lower}} {% endif %} {{demographics.gender|lower}}{% if demographics.gender == "Other" %}/non-binary{% endif %} {% if demographics.religion or demographics.language %}who {% if demographics.religion %}is {{demographics.religion}}{% if demographics.language %} and {% endif %}{% endif %}{% if demographics.language %}speaks {{demographics.language|isolanguage|title}}{% endif %}{% endif %}. {{demographics.gender|gender_pronoun|title}} {% if demographics.gender == "Other" %} have {{gender_pronoun}} {% else %} has {% endif %} {{allergies|max_severity}} allergies. In the past year, {{demographics.gender|gender_pronoun}} {% if encounters|since_days(365)|strict_length == 0 %} did not have medical encounters {% else %} had medical encounters {% endif %} and {% if demographics.gender == "Other" %} have {{gender_pronoun}} {% else %} has {% endif %} {% if medications|since_days(365)|strict_length == 0 %} not had any medications prescribed. {% else %} been prescribed medications. {% endif %}
{{allergy.severity}}
{% endif %} {% if allergy.reaction.name %}Causes {{allergy.reaction.name|lower}}
{% endif %}No known allergies
{% endfor %}No known medications
{% endfor %}No known immunizations
{% endfor %}No known past encounters
{% endfor %}Reticulating splines...


5
The Day of the Lord
1 Now concerning the times and the seasons, brothers, you have no need to have anything written to you.
2 For you yourselves are fully aware that the day of the Lord will come like a thief in the night.
3 While people are saying, “There is peace and security,” then sudden destruction will come upon them as labor pains come upon a pregnant woman, and they will not escape.
4 But you are not in darkness, brothers, for that day to surprise you like a thief.
5 For you are all children of light, children of the day. We are not of the night or of the darkness.
6 So then let us not sleep, as others do, but let us keep awake and be sober.
7 For those who sleep, sleep at night, and those who get drunk, are drunk at night.
8 But since we belong to the day, let us be sober, having put on the breastplate of faith and love, and for a helmet the hope of salvation.
9 For God has not destined us for wrath, but to obtain salvation through our Lord Jesus Christ,
10 who died for us so that whether we are awake or asleep we might live with him.
11 Therefore encourage one another and build one another up, just as you are doing.
Final Instructions and Benediction
12 We ask you, brothers, to respect those who labor among you and are over you in the Lord and admonish you,
13 and to esteem them very highly in love because of their work. Be at peace among yourselves.
14 And we urge you, brothers, admonish the idle, encourage the fainthearted, help the weak, be patient with them all.
15 See that no one repays anyone evil for evil, but always seek to do good to one another and to everyone.
16 Rejoice always,
17 pray without ceasing,
18 give thanks in all circumstances; for this is the will of God in Christ Jesus for you.
19 Do not quench the Spirit.
20 Do not despise prophecies,
21 but test everything; hold fast what is good.
22 Abstain from every form of evil.
23 Now may the God of peace himself sanctify you completely, and may your whole spirit and soul and body be kept blameless at the coming of our Lord Jesus Christ.
24 He who calls you is faithful; he will surely do it.
25 Brothers, pray for us.
26 Greet all the brothers with a holy kiss.
27 I put you under oath before the Lord to have this letter read to all the brothers.
28 The grace of our Lord Jesus Christ be with you.


Module: ActiveRecord::Sanitization::ClassMethods
| Defined in: |
Instance Method Summary collapse
-
#expand_hash_conditions_for_aggregates(attrs)
protected
Accepts a hash of SQL conditions and replaces those attributes that correspond to a
#composed_of
[Aggregations::ClassMethods#composed_of] relationship with their expanded aggregate attribute values. - #quote_bound_value(value, c = connection) protected
-
#quote_value(object)
Alias for #sanitize.
- #raise_if_bind_arity_mismatch(statement, expected, provided) protected
- #replace_bind_variable(value, c = connection) protected
- #replace_bind_variables(statement, values) protected
- #replace_named_bind_variables(statement, bind_vars) protected
-
#sanitize(object)
(also: #quote_value)
Used to sanitize objects before they're used in an SQL SELECT statement.
-
#sanitize_conditions(condition)
protected
Alias for #sanitize_sql.
-
#sanitize_sql(condition)
(also: #sanitize_conditions)
protected
Alias for #sanitize_sql_for_conditions.
-
#sanitize_sql_array(ary)
protected
Accepts an array of conditions.
-
#sanitize_sql_for_assignment(assignments, default_table_name = self.table_name)
protected
Accepts an array, hash, or string of SQL conditions and sanitizes them into a valid SQL fragment for a SET clause.
-
#sanitize_sql_for_conditions(condition)
(also: #sanitize_sql)
protected
Accepts an array or string of SQL conditions and sanitizes them into a valid SQL fragment for a WHERE clause.
-
#sanitize_sql_for_order(condition)
protected
Accepts an array, or string of SQL conditions and sanitizes them into a valid SQL fragment for an ORDER clause.
-
#sanitize_sql_hash_for_assignment(attrs, table)
protected
Sanitizes a hash of attribute/value pairs into SQL conditions for a SET clause.
-
#sanitize_sql_like(string, escape_character = "\\")
protected
Sanitizes a
string
so that it is safe to use within an SQL LIKE statement.
Instance Method Details
#expand_hash_conditions_for_aggregates(attrs) (protected)
Accepts a hash of SQL conditions and replaces those attributes that
correspond to a #composed_of
[Aggregations::ClassMethods#composed_of]
relationship with their expanded aggregate attribute values.
Given:
class Person < ActiveRecord::Base
composed_of :address, class_name: "Address",
mapping: [%w(address_street street), %w(address_city city)]
end
Then:
{ address: Address.new("813 abc st.", "chicago") }
# => { address_street: "813 abc st.", address_city: "chicago" }
95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112
# File 'activerecord/lib/active_record/sanitization.rb', line 95
def (attrs) = {} attrs.each do |attr, value| if aggregation = reflect_on_aggregation(attr.to_sym) mapping = aggregation.mapping mapping.each do |field_attr, aggregate_attr| if mapping.size == 1 && !value.respond_to?(aggregate_attr) [field_attr] = value else [field_attr] = value.send(aggregate_attr) end end else [attr] = value end end end
#quote_bound_value(value, c = connection) (protected)
[ GitHub ]198 199 200 201 202 203 204 205 206 207 208
# File 'activerecord/lib/active_record/sanitization.rb', line 198
def quote_bound_value(value, c = connection) # :nodoc: if value.respond_to?(:map) && !value.acts_like?(:string) if value.respond_to?(:empty?) && value.empty? c.quote(nil) else value.map { |v| c.quote(v) }.join(",") end else c.quote(value) end end
#quote_value(object)
Alias for #sanitize.
13
# File 'activerecord/lib/active_record/sanitization.rb', line 13
alias_method :quote_value, :sanitize
#raise_if_bind_arity_mismatch(statement, expected, provided) (protected)
[ GitHub ]210 211 212 213 214
# File 'activerecord/lib/active_record/sanitization.rb', line 210
def raise_if_bind_arity_mismatch(statement, expected, provided) # :nodoc: unless expected == provided raise PreparedStatementInvalid, "wrong number of bind variables (#{provided} for #{expected}) in: #{statement}" end end
#replace_bind_variable(value, c = connection) (protected)
[ GitHub ]178 179 180 181 182 183 184
# File 'activerecord/lib/active_record/sanitization.rb', line 178
def replace_bind_variable(value, c = connection) # :nodoc: if ActiveRecord::Relation === value value.to_sql else quote_bound_value(value, c) end end
#replace_bind_variables(statement, values) (protected)
[ GitHub ]169 170 171 172 173 174 175 176
# File 'activerecord/lib/active_record/sanitization.rb', line 169
def replace_bind_variables(statement, values) # :nodoc: raise_if_bind_arity_mismatch(statement, statement.count("?"), values.size) bound = values.dup c = connection statement.gsub(/\?/) do replace_bind_variable(bound.shift, c) end end
#replace_named_bind_variables(statement, bind_vars) (protected)
[ GitHub ]186 187 188 189 190 191 192 193 194 195 196
# File 'activerecord/lib/active_record/sanitization.rb', line 186
def replace_named_bind_variables(statement, bind_vars) # :nodoc: statement.gsub(/(:?):([a-zA-Z]\w*)/) do |match| if $1 == ":" # skip postgresql casts match # return the whole match elsif bind_vars.include?(match = $2.to_sym) replace_bind_variable(bind_vars[match]) else raise PreparedStatementInvalid, "missing value for :#{match} in #{statement}" end end end
#sanitize(object) Also known as: quote_value
Used to sanitize objects before they're used in an SQL SELECT statement. Delegates to ActiveRecord::Sanitization::ClassMethods.connectionconnection.quote[ConnectionAdapters::Quoting#quote].
10 11 12
# File 'activerecord/lib/active_record/sanitization.rb', line 10
def sanitize(object) # :nodoc: connection.quote(object) end
#sanitize_conditions(condition) (protected)
Alias for #sanitize_sql.
40
# File 'activerecord/lib/active_record/sanitization.rb', line 40
alias_method :sanitize_conditions, :sanitize_sql
#sanitize_sql(condition) (protected) Also known as: sanitize_conditions
Alias for #sanitize_sql_for_conditions.
39
# File 'activerecord/lib/active_record/sanitization.rb', line 39
alias_method :sanitize_sql, :sanitize_sql_for_conditions
#sanitize_sql_array(ary) (protected)
Accepts an array of conditions. The array has each value sanitized and interpolated into the SQL statement.
sanitize_sql_array(["name=? and group_id=?", "foo'bar", 4])
# => "name='foo''bar' and group_id=4"
sanitize_sql_array(["name=:name and group_id=:group_id", name: "foo'bar", group_id: 4])
# => "name='foo''bar' and group_id=4"
sanitize_sql_array(["name='%s' and group_id='%s'", "foo'bar", 4])
# => "name='foo''bar' and group_id='4'"
156 157 158 159 160 161 162 163 164 165 166 167
# File 'activerecord/lib/active_record/sanitization.rb', line 156
def sanitize_sql_array(ary) statement, *values = ary if values.first.is_a?(Hash) && /:\w+/.match?(statement) replace_named_bind_variables(statement, values.first) elsif statement.include?("?") replace_bind_variables(statement, values) elsif statement.blank? statement else statement % values.collect { |value| connection.quote_string(value.to_s) } end end
#sanitize_sql_for_assignment(assignments, default_table_name = self.table_name) (protected)
Accepts an array, hash, or string of SQL conditions and sanitizes them into a valid SQL fragment for a SET clause.
sanitize_sql_for_assignment(["name=? and group_id=?", nil, 4])
# => "name=NULL and group_id=4"
sanitize_sql_for_assignment(["name=:name and group_id=:group_id", name: nil, group_id: 4])
# => "name=NULL and group_id=4"
Post.send(:sanitize_sql_for_assignment, { name: nil, group_id: 4 })
# => "`posts`.`name` = NULL, `posts`.`group_id` = 4"
sanitize_sql_for_assignment("name=NULL and group_id='4'")
# => "name=NULL and group_id='4'"
56 57 58 59 60 61 62
# File 'activerecord/lib/active_record/sanitization.rb', line 56
def sanitize_sql_for_assignment(assignments, default_table_name = self.table_name) case assignments when Array; sanitize_sql_array(assignments) when Hash; sanitize_sql_hash_for_assignment(assignments, default_table_name) else assignments end end
#sanitize_sql_for_conditions(condition) (protected) Also known as: sanitize_sql
Accepts an array or string of SQL conditions and sanitizes them into a valid SQL fragment for a WHERE clause.
sanitize_sql_for_conditions(["name=? and group_id=?", "foo'bar", 4])
# => "name='foo''bar' and group_id=4"
sanitize_sql_for_conditions(["name=:name and group_id=:group_id", name: "foo'bar", group_id: 4])
# => "name='foo''bar' and group_id='4'"
sanitize_sql_for_conditions(["name='%s' and group_id='%s'", "foo'bar", 4])
# => "name='foo''bar' and group_id='4'"
sanitize_sql_for_conditions("name='foo''bar' and group_id='4'")
# => "name='foo''bar' and group_id='4'"
31 32 33 34 35 36 37 38
# File 'activerecord/lib/active_record/sanitization.rb', line 31
def sanitize_sql_for_conditions(condition) return nil if condition.blank? case condition when Array; sanitize_sql_array(condition) else condition end end
#sanitize_sql_for_order(condition) (protected)
Accepts an array, or string of SQL conditions and sanitizes them into a valid SQL fragment for an ORDER clause.
sanitize_sql_for_order(["field(id, ?)", [1,3,2]])
# => "field(id, 1,3,2)"
sanitize_sql_for_order("id ASC")
# => "id ASC"
72 73 74 75 76 77 78
# File 'activerecord/lib/active_record/sanitization.rb', line 72
def sanitize_sql_for_order(condition) if condition.is_a?(Array) && condition.first.to_s.include?("?") sanitize_sql_array(condition) else condition end end
#sanitize_sql_hash_for_assignment(attrs, table) (protected)
Sanitizes a hash of attribute/value pairs into SQL conditions for a SET clause.
sanitize_sql_hash_for_assignment({ status: nil, group_id: 1 }, "posts")
# => "`posts`.`status` = NULL, `posts`.`group_id` = 1"
118 119 120 121 122 123 124
# File 'activerecord/lib/active_record/sanitization.rb', line 118
def sanitize_sql_hash_for_assignment(attrs, table) c = connection attrs.map do |attr, value| value = type_for_attribute(attr.to_s).serialize(value) "#{c.quote_table_name_for_assignment(table, attr)} = #{c.quote(value)}" end.join(", ") end
#sanitize_sql_like(string, escape_character = "\\") (protected)
Sanitizes a string
so that it is safe to use within an SQL
LIKE statement. This method uses escape_character
to escape
all occurrences of “", ”_“ and ”%“.
sanitize_sql_like("100%")
# => "100\\%"
sanitize_sql_like("snake_cased_string")
# => "snake\\_cased\\_string"
sanitize_sql_like("100%", "!")
# => "100!%"
sanitize_sql_like("snake_cased_string", "!")
# => "snake!_cased!_string"
140 141 142 143
# File 'activerecord/lib/active_record/sanitization.rb', line 140
def sanitize_sql_like(string, escape_character = "\\") pattern = Regexp.union(escape_character, "%", "_") string.gsub(pattern) { |x| [escape_character, x].join } end


Finastra hires Lisa Fiondella as chief data officer
by Sharon KimathiFinastra has hired Lisa Fiondella as chief data officer to lead data strategy, including how data is collected through the FusionFabric.cloud platform and various cloud-based solutions, can be best utilised.
She will be responsible for developing a data product roadmap and manage the process of bringing new data products to market.
“Access to high quality data and advanced analytics are essential to financial institutions, providing insight into customer profitability, channel preferences and overall financial needs” says Fiondella. “I am excited to tap into this resource to create new solutions and identify new opportunities for our clients.”
“Data is an underused asset and a key source of competitive advantage,” says Eli Rosner, chief product and technology officer, Finastra. “Under Lisa’s guidance, we will be able identify new and exciting ways to leverage data to benefit our customers.”
Lisa brings with her an extensive background spanning data, analytics, financial services, product management, product development, marketing, sales and operations.
She most recently served as vice president of analytic products for Experian, where she was responsible for developing analytic products harnessing vast data assets and advanced analytics, including machine learning and AI.


§342J-34.5 Standards for persons who deal with fuel. The director may establish, by rule, standards applicable to persons who generate, transport, treat, store, dispose of, process, re-refine, burn (including burning for purposes of energy recovery), recycle, distribute, market, or otherwise handle any:
(1) Fuel from any hazardous waste; or
(2) Fuel from any hazardous waste and any other material; or
(3) Fuel which otherwise contains any hazardous waste. [L 1991, c 259, pt of §1; am L 1996, c 82, §4]


Added images to about page.
WordPress can easily upload images but hard to get interesting lay out on the page.
I’m struggling trying to figure out how to insert image from gallery. Solved: need show image first.
Editing on iPhone: must use HTML mode.
Comments Off
I plan to transition my current personal web site to a dynamic one, using some of the popular CMS/PHP frameworks, such as:
- WordPress
- Apostrophe/Symphony
- Drupal
Installed wordpress for by blog. Install top few themes and a few that caught my eye:
- /pixel/
- /ahimsa/
- /atahualpa/
- /classic/
- /default/
- /dfblog/
- /index.php
- /indy10/
- /inove/
- /lightword/
Trying out theme atahualpa first. It’s got tons of options. Which maybe why blog appears sluggish sometimes. I choose theme atahuala because it has categories and pages on the left wont push down the login, which is on the right.


public static enum IExternalProxy.SynchronizationStatus extends java.lang.Enum<IExternalProxy.SynchronizationStatus>
NOTE: the enum literals must be spelled the same as the the literals for the SyncStatus enumeration in the model. The order doesn't matter, however.
| Enum Constant and Description |
|---|
CONFLICT
During either incoming or outgoing synchronization, it was discovered
that both the external object and the Jazz item have been modified since
they were last synchronized, and those changes are not auto-mergeable.
|
CYCLE
Too many outgoing/incoming cycles have occurred.
|
INCOMING_ERROR
The last attempt to create or modify a Jazz object has failed for
for some reason.
|
OK
The last known state of the external object has been synchronized
with the last known state of a Jazz item.
|
OUTGOING_ERROR
The last attempt to create or modify an external object has failed
for some reason.
|
PENDING
An operation is known to be pending for the proxy - an incoming or
outgoing replication or synchronization operation is expected to occur.
|
UNINITIALIZED
Indicates that no external state has yet been received,
and that it is not pending.
|
| Modifier and Type | Method and Description |
|---|---|
static IExternalProxy.SynchronizationStatus |
valueOf(java.lang.String name)
Returns the enum constant of this type with the specified name.
|
static IExternalProxy.SynchronizationStatus[] |
values()
Returns an array containing the constants of this enum type, in
the order they are declared.
|
public static final IExternalProxy.SynchronizationStatus UNINITIALIZED
public static final IExternalProxy.SynchronizationStatus OK
#getExternalStateHandle()
and #getLastSyncedStateId()
methods will return valid values, and no error has occurred.public static final IExternalProxy.SynchronizationStatus PENDING
public static final IExternalProxy.SynchronizationStatus OUTGOING_ERROR
IExternalProxy.getLastErrorString()
method will return
any error information that was collected.public static final IExternalProxy.SynchronizationStatus INCOMING_ERROR
IExternalProxy.getLastErrorString()
method will return
any error information that was collected.public static final IExternalProxy.SynchronizationStatus CONFLICT
public static final IExternalProxy.SynchronizationStatus CYCLE
public static IExternalProxy.SynchronizationStatus[] values()
for (IExternalProxy.SynchronizationStatus c : IExternalProxy.SynchronizationStatus.values()) System.out.println(c);
public static IExternalProxy.SynchronizationStatus valueOf(java.lang.String name)
name
- the name of the enum constant to be returned.java.lang.IllegalArgumentException
- if this enum type has no constant with the specified namejava.lang.NullPointerException
- if the argument is null


Class PublishResultModel
This class represents a Publishing Request.
Inheritance
Inherited Members
Namespace: Vasont.Inspire.Models.Plugins
Assembly: Vasont.Inspire.Models.dll
Syntax
[Obsolete("Use local DTOs in your solution.", false)]
public class PublishResultModel
Properties
| Improve this Doc View SourcePublishConfigName
Gets or sets the publish configuration name.
Declaration
public string PublishConfigName { get; set; }
Property Value
| Type | Description |
|---|---|
| System.String |
PublishInitiated
Gets or sets a value indicating whether the publish process was successfully initiated.
Declaration
public bool PublishInitiated { get; set; }
Property Value
| Type | Description |
|---|---|
| System.Boolean |
PublishInitiateErrors
Gets or sets a value containing errors that occurred when attempting to initiate publishing.
Declaration
public string PublishInitiateErrors { get; set; }
Property Value
| Type | Description |
|---|---|
| System.String |
PublishProfileId
Gets or sets the optional identity of the publish profile associated with the result.
Declaration
public long PublishProfileId { get; set; }
Property Value
| Type | Description |
|---|---|
| System.Int64 |
ResultFilePath
Gets or sets a value containing the full path of the published file.
Declaration
public string ResultFilePath { get; set; }
Property Value
| Type | Description |
|---|---|
| System.String |
RootComponentId
Gets or sets the identity of the identity of the root component to be published.
Declaration
public long RootComponentId { get; set; }
Property Value
| Type | Description |
|---|---|
| System.Int64 |
RootComponentName
Gets or sets the root component name value.
Declaration
public string RootComponentName { get; set; }
Property Value
| Type | Description |
|---|---|
| System.String |
RootFileName
Gets or sets the root file name value.
Declaration
public string RootFileName { get; set; }
Property Value
| Type | Description |
|---|---|
| System.String |
Type
Gets or sets the publish type.
Declaration
public PublishType Type { get; set; }
Property Value
| Type | Description |
|---|---|
| PublishType |
UserEmail
Gets or sets the email address of the user who requested the publish.
Declaration
public string UserEmail { get; set; }
Property Value
| Type | Description |
|---|---|
| System.String |
WarningMessages
Gets or sets a list of strings containing any warning messages for the published file.
Declaration
public List<string> WarningMessages { get; set; }
Property Value
| Type | Description |
|---|---|
| System.Collections.Generic.List<System.String> |


{% extends "elearning_academy/logged_in.html" %} {% block title %}{{MY_SITE_NAME}}{% endblock %} {% block cssLinks %} {% endblock %} {% block body %}
The state of technical education in India is rather poor. In many universities, courses are taught by just graduated students, who themselves have not experienced quality teaching. Some courses are often not even taught due to shortage of faculty. Students often have to study on their own. This has wide-spread ramifications.  The companies that hire them have to provide their own training which can be a significant overhead (both in terms of time and money). The students that go on for Masters are often ill-equipped to carry out research and by the time training ends, they are ready to graduate. So, not much research is output.
The goal of this endeavour is to provide quality education to all, unlike so far where only a select few who have been fortunate enough to crack the highly competitive entrance exams could access. The hope is that this effort of ours will empower students, who equipped with quality technical education will go on to do impactful things for our society.


Stateful Singleton - Counter
Stateful singletons are long-running (potentially eternal) orchestrator functions which store state and can be invoked and queried by other functions in your application. Stateful singletons are similar in spirit to the Actor model in distributed computing.
While not a proper "actor" implementation, orchestrator functions have many of the same runtime characteristics (stateful, reliable, single-threaded, location transparent, globally addressable, etc.) that make real actor implementations especially useful, but without the need for a separate framework. The below example is a simple counter singleton object which supports increment and decrement operations and updates its internal state accordingly.
Before you begin
If you haven't done so already, make sure to read the overview before jumping into samples. It will really help ensure everything you read below makes sense.
All samples are combined into a single function app package. To get started with the samples, follow the setup steps below that are relevant for your development environment:
For Visual Studio Development (Windows Only)
- Download the VSDFSampleApp.zip package, unzip the contents, and open in Visual Studio 2017 (version 15.3).
- Install and run the Azure Storage Emulator. Alternatively, you can update the
local.appsettings.json
file with real Azure Storage connection strings. - The sample can now be run locally via F5. It can also be published directly to Azure and run in the cloud.
For Azure Portal Development
- Create a new function app at https://functions.azure.com/signin.
- Follow the installation instructions to configure Durable Functions.
- Download the DFSampleApp.zip package.
- Unzip the sample package file into
D:\home\site\wwwroot
using Kudu or FTP.
The code snippets and binding references below are specific to the portal experience, but have a direct mapping to the equivalent Visual Studio development experience.
This article will specifically walk through the following function in the sample app:
- E3_Counter
Note
This walkthrough assumes you have already gone through the Hello Sequence sample walkthrough. If you haven't done so already, it is recommended to first go through that walkthrough before starting this one.
Scenario overview
The counter scenario is very simple to understand, but surprisingly difficult to implement using regular stateless functions. One of the main challenges you have is managing concurrency. Operations like increment and decrement need to be atomic or else there could be race conditions that cause operations to overwrite each other.
Using a single VM to host the counter data is one option, but this is expensive and managing reliability can be a challenge since a single VM could be periodically rebooted. You could alternatively use a distributed platform with synchronization tools like blob leases to help manage concurrency, but this introduces a great deal of complexity.
Durable Functions makes this kind of scenario trivial to implement because orchestration instances are affinitized to a single VM and orchestrator function execution is always single-threaded. Not only that, but they are long-running, stateful, and can react to external events. The sample code below will demonstrate how to implement such a counter as a long-running orchestrator function.
The counter orchestration
Here is the code which implements the orchestrator function:
// Copyright (c) .NET Foundation. All rights reserved.
// Licensed under the MIT License. See License.txt in the project root for license information.
using System.Threading.Tasks;
using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Host;
namespace VSSample
{
public static class Counter
{
[FunctionName("E3_Counter")]
public static async Task<int> Run(
[OrchestrationTrigger] DurableOrchestrationContext counterContext,
TraceWriter log)
{
int counterState = counterContext.GetInput<int>();
log.Info($"Current counter state is {counterState}. Waiting for next operation.");
string operation = await counterContext.WaitForExternalEvent<string>("operation");
log.Info($"Received '{operation}' operation.");
operation = operation?.ToLowerInvariant();
if (operation == "incr")
{
counterState++;
}
else if (operation == "decr")
{
counterState--;
}
if (operation != "end")
{
counterContext.ContinueAsNew(counterState);
}
return counterState;
}
}
}
This orchestrator function essentially does the following:
- Listens for an external event named operation using WaitForExternalEvent.
- Increments or decrements the
counterState
local variable depending on the operation requested. - Restarts the orchestrator using the ContinueAsNew method, setting the latest value of
counterState
as the new input. - Continues running forever or until an end message is received.
This is an example of an eternal orchestration - i.e. one that potentially never ends. It responds to messages sent to it using the RaiseEventAsync method, which can be called by any non-orchestrator function.
One unique characteristic of this orchestrator function is that it effectively has no history: the ContinueAsNew method will reset the history after each processed event. This is the preferred way to implement an orchestrator which has an arbitrary lifetime. Using a while
loop could cause the orchestrator function's history to grow unbounded, resulting in unnecessarily high memory usage.
Note
The ContinueAsNew method has other interesting use-cases besides just eternal orchestrations. See the Eternal Orchestrations topic guide for more information.
Running the sample
Using the HTTP-triggered functions included in the sample, you can start the orchestration using the below HTTP POST request. We don't include any content in this request, which allows counterState
to start at zero (the default value for int
).
POST http://{host}/orchestrators/E3_Counter HTTP/1.1
Content-Length: 0
HTTP/1.1 202 Accepted
Content-Length: 719
Content-Type: application/json; charset=utf-8
Location: http://{host}/admin/extensions/DurableTaskExtension/instances/bcf6fb5067b046fbb021b52ba7deae5a?taskHub=DurableFunctionsHub&connection=Storage&code={systemKey}
{"id":"bcf6fb5067b046fbb021b52ba7deae5a","statusQueryGetUri":"http://{host}/admin/extensions/DurableTaskExtension/instances/bcf6fb5067b046fbb021b52ba7deae5a?taskHub=DurableFunctionsHub&connection=Storage&code={systemKey}","sendEventPostUri":"http://{host}/admin/extensions/DurableTaskExtension/instances/bcf6fb5067b046fbb021b52ba7deae5a/raiseEvent/{eventName}?taskHub=DurableFunctionsHub&connection=Storage&code={systemKey}","terminatePostUri":"http://{host}/admin/extensions/DurableTaskExtension/instances/bcf6fb5067b046fbb021b52ba7deae5a/terminate?reason={text}&taskHub=DurableFunctionsHub&connection=Storage&code={systemKey}"}
The E3_Counter instance starts and then immediately waits for an event to be sent to it using RaiseEventAsync or using the sendEventUrl HTTP POST webhook referenced in the 202 response above. Valid eventName
values include incr, decr, and end.
POST http://{host}/admin/extensions/DurableTaskExtension/instances/bcf6fb5067b046fbb021b52ba7deae5a/raiseEvent/operation?taskHub=DurableFunctionsHub&connection=Storage&code={systemKey} HTTP/1.1
Content-Type: application/json
Content-Length: 6
"incr"
You can see the results of the "incr" operation by looking at the function logs in the Azure Functions portal.
2017-06-29T18:54:53.998 Function started (Id=34e34a61-38b3-4eac-b6e2-98b85e32eec8)
2017-06-29T18:54:53.998 Current counter state is 0. Waiting for next operation.
2017-06-29T18:58:01.458 Function started (Id=b45d6c2f-39f3-42a2-b904-7761b2614232)
2017-06-29T18:58:01.458 Current counter state is 0. Waiting for next operation.
2017-06-29T18:58:01.458 Received 'incr' operation.
2017-06-29T18:58:01.458 Function completed (Success, Id=b45d6c2f-39f3-42a2-b904-7761b2614232, Duration=8ms)
2017-06-29T18:58:11.518 Function started (Id=e1f38cb2-546a-404d-ab22-1ac8f81a93d9)
2017-06-29T18:58:11.518 Current counter state is 1. Waiting for next operation.
Similarly, if you check the orchestrator status, you should see the input
field has been set to the updated value (1).
GET http://{host}/admin/extensions/DurableTaskExtension/instances/bcf6fb5067b046fbb021b52ba7deae5a?taskHub=DurableFunctionsHub&connection=Storage&code={systemKey} HTTP/1.1
HTTP/1.1 202 Accepted
Content-Length: 129
Content-Type: application/json; charset=utf-8
Location: http://{host}/admin/extensions/DurableTaskExtension/instances/bcf6fb5067b046fbb021b52ba7deae5a?taskHub=DurableFunctionsHub&connection=Storage&code={systemKey}
{"runtimeStatus":"Running","input":1,"output":null,"createdTime":"2017-06-29T18:58:01Z","lastUpdatedTime":"2017-06-29T18:58:11Z"}
You can continue sending new operations to this instance and observe its state gets updated accordingly. If you wish to kill the instance, you can do so by sending an end operation.
Warning
At the time of writing, there are known race conditions when calling ContinueAsNew while concurrently processing messages, such external events or termination requests. For the latest information on these race conditions, see this GitHub issue.
Wrapping up
At this point, you should have a better understanding of some of the advanced capabilities of Durable Functions, notably WaitForExternalEvent and ContinueAsNew. These tools should enable you to write various flavors of "stateful singletons" like counters, aggregators, etc.


Visitors
65% lower growth
Orders
Product-wise sales
Revenue
Weekly Sales
Followers
Just Updated
Pending orders
Shipped orders
Returned orders
Cancelled orders
Cancelled orders
Note: Order details get updated every 10 minutes
| Country | Sales | |
|---|---|---|
|
|
USA | 2.920 |
|
|
India | 8.265 |
|
|
Indonesia | 787 |
|
|
United Kingdom | 690 |
|
|
Romania | 600 |
|
|
Brasil | 550 |
| Order No | Product Name | Purchased On | Shipping Status | Payment Method | Payment Status | |||
|---|---|---|---|---|---|---|---|---|
| 034 | Iphone 7 | 12 May 2017 | Dispatched | Credit card | View Order | Cancel | ||
| 035 | Galaxy S8 | 15 May 2017 | Dispatched | Internet banking | View Order | Cancel | ||
| 036 | Amazon Echo | 17 May 2017 | Dispatched | Credit card | View Order | Cancel | ||
| 037 | Google Pixel | 17 May 2017 | Dispatched | Cash on delivery | View Order | Cancel | ||
| 038 | Mac Mini | 19 May 2017 | Dispatched | Debit card | View Order | Cancel |


WTF is UTF-8?
31 Aug 2014UTF-8 is a compromise character encoding that can be as compact as ASCII (if the file is just plain English text) but can also contain any unicode characters (with some increase in file size). UTF stands for Unicode Transformation Format. http://www.fileformat.info/info/unicode/utf8.htm
Why do we need to specify a character encoding?
Here is an interesting video where Tom Scott from Computerphile talks about unicode and HOW we can fit almost all of the worlds written symbols into a single character encoding:
you can check out computerphile's youtube channel here:
https://www.youtube.com/channel/UC9-y-6csu5WGm29I7JiwpnA
It's a great show, I watch it all the time 😋.
Nerdy stuff
For those interested, the smiley face above is a unicode symbol with
the utf-8 binary representation 11110000:10011111:10011000:10001011
See for yourself!
Lets calculate the unicode decimal codepoint for this character just as Tom does in the video:
[11110]000:[10]011111:[10]011000:[10]001011
We can see the binary code is divided into 4 sections of 8 bits each. That is 4 bytes (1 byte = 8 bits).
Strip away the bits in box-quotes [ ]:
- [11110] which are telling us that this character is represented by 4 bytes. (the number of ones).
- [10] which means "Please include me in the character!"
Now we are left with:
000:011111:011000:001011
- which in Decimal numbers is 128523.
Wait look! Thats exactly our dear smiley character! (checkout the HTML column..)
Now look.

 We can type 😋 to display the smiley.

OR we can copy paste the symbol itself: 😋

Bonus: we can also type the
Hexademic representation of 128523 to get the smiley
face: 😋