Father: Get out of my house!
Son: But this is my house, father.

Son: But this is my house, father.

— Traditional joke
A character angrily orders someone to leave the house, only to be reminded that the house they're in belongs to the other person. Alternately a character announces that he is leaving, and either before reaching the door or (more often) after leaving and coming back through the door says something to the effect of, "Wait a minute. This is my house." (Sometimes followed up by some variation on "You guys get out!")
Compare The Exit Is That Way. Unrelated to a certain jerky doctor.
Examples
open/close all folders
Anime and Manga
- In Azumanga Daioh, construction noise drives Yukari to Minamo's house. Once there, she immediately commandeers the bed and discovers an oddly-shaped fancy pillow.  Get Out!!
Comic Book
- In an issue of The Punisher Frank is investigating a pair of cops, and meets with his police contact Soap. Soap tells him in no uncertain terms that while he'll help him take down criminals, if he does anything to harm either cop he will do everything he can to bring Frank down. Soap tries to dramatically leave, but Frank calmly reminds him that they're meeting in his car.
- A light-hearted example in Matt Fraction's Hawkeye series. Clint's argument over the best Bruce in rock music gets him kicked out by his teenage protege. Kicked out of his own apartment. In the building he owns.
- Archie Comics: Archie and Moose are arguing after a card game. Moose picks Archie up, throws him out, and slams the door. Archie furiously pounds at the door.
Archie: Moose, you can't throw me out!Moose: Duh, give me one good reason why I can't!Archie: Because this is my house!Moose: (walking down the street, baffled) Duh, that is a good reason!
Film - Animated
- A variant in Lilo & Stitch:
Nani: GO TO YOUR ROOOOOM!Lilo: I'M ALREADY IN MY ROOM!
Film - Live-Action
- This happens in Salaam E Ishq. Young man and his fiance are having a fight, as he didn't show up to the engagement party (commitment phobic) and she's come by to return all of his gifts. He ends up storming out of the house in fury, and a moment later knocks on the door, as she looks on, knowing he'll have to come right back.
Um, sorry, this is my house.
- Keeping the Faith:
Anna: Well, you're gonna regret it even more when you realize that I'm walking out this door and I'm never coming back![She storms out. A moment's pause later, she storms back in]Anna: This is my house. You get out.
- In Titanic (1997): Rose tells Jack that she is leaving, and then turns back and says "I don't have to leave! This is my part of the ship. You leave!"
- In Adam's Rib, two arguing characters wind up in each other's apartment by mistake.
- In K-9 James Belushi tries to throw his girlfriend out of her own house.
- Happens with John Travolta in Look Who's Talking.
- A much more serious example: In Sling Blade, Doyle, being his usual mean self, is even more so when drunk.
- In The Tender Trap, Julie storms out after an argument with Charlie before remembering it was her apartment, walking back in and telling him to Get Out!.
- A variation at the end of Roxanne. When CD and Roxanne are having a big argument after she discovers he's the one who wrote the love letters, they end up on her porch:
Roxanne: "Get out! Just get out!"CD: "Wait a second, I am out! You get in!"

Live Action TV
- This happens during one of Ross and Rachel's (many) arguments on Friends.
Ross: What are you doing?Rachel: I'm storming out.Ross: Rach, this is your apartment.Rachel: Yeah, well, that's how mad I am!
- In The One With Five Steaks And An Eggplant the gang is fighting over an expensive concert, so Ross, Chandler and Monica decide to go without the rest of the group, and promptly leave the apartment... only for Monica to come back, noting that the concert isn't for another six hours.
- On Gilmore Girls, Rory is annoyed that every time she bumps into her ex-boyfriend who's in town, she's the one who hurried off awkwardly. After all, she announces, this is her town. The next time she bumps into said ex?
"I'm leaving first!"
- In an episode of Family Matters, Eddie dates the daughter of the owner of a chain of restaurants, a franchise of which he happens to work with. When he finds out, in Eddie's house, he immediately fires Eddie, and then has an argument with his daughter about her dating habits. Eddie tries to interject.
 What are you still doing here?!Eddie: This is my house. I live here.Owner: Oh. Right.
- Frequently played with on Stella, so much so that an entire episode is devoted to this single joke.
- An episode of M*A*S*H featured a variant of this involving Henry's office. After a heated conversation, Henry stormed angrily out of his office - leaving Hawkeye and Trapper there by themselves - before coming back in and saying, "What am I doing? This is my office! You guys get out!"
- Used in an episode of That '70s Show, when Red is talking to Leo, who has come over to the Foremans' house to explain Hyde's situation. When they finish talking, Leo lays out on the couch and tells Red to get out. Needless to say, Red didn't react kindly.
- Sort of used in an episode of Buffy the Vampire Slayer when Buffy and Spike are arguing. Buffy doesn't forget it's her house, but when Spike refuses to leave she angrily says she will. Then it turns out neither can leave because of a vengeance demon's curse.
- Grey's Anatomy: Meredith's house is very important to the series, and to her, since she's been living in it for over 30 years. Even after she sells it to Alex, she still turns up in the middle of the night and orders his girlfriend out of bed so she can talk something through with him.

- Happened a couple of times on The West Wing (with offices rather than houses, because of the workaholic cast of characters).
- Happened in episode of Monk. An actor hired to play Monk in a movie lost his mind and became convinced that he was Monk, leading to a scene where he asked Monk to leave, despite the fact that it was Monk's house. Monk complied.
- In one episode of NCIS, Abby, when visiting Ducky's lab, at one point tells Ducky and Gibbs to get out of her lab so she can process evidence, only to realize three seconds late that she's not in her lab.
Abby: All right, I need you all to get out so I can get to work.  This isn't my lab ... I'll go now.
- In the House episode "House Divided", Dr. Wilson leaves the wild bachelor party that House is throwing for Dr. Chase and attempts to walk home. He's too drunk to remember that the party is being held at his home.
- iCarly: When Carly and Sam have an argument over a boy in Carly's apartment, Carly gets fed up and walks out ... only to return and kick Sam out instead.
- Married... with Children: A three-part episode featured the Bundys (minus Buck) going to England. There, Al gets in a fight with a man named Igor and Kelly was heard telling Igor to get back to England.
- Star Trek: Enterprise. Trip and T'Pol discover they're Mindlink Mates when they suddenly appear in each other's daydream, despite being on different starships. T'Pol curtly asks Trip to go away. Trip responds, "This is my daydream. You go away."
- In the Top Gear Botswana special Jeremy Clarkson and Richard Hammond try to prank James may by leaving a cow's head in his tent, hoping it'll attract the wildlife. They then get pinned in said tent as a hippo waits outside. As they wonder if it's better to take a chance with the hippo or stay in the tent with the head, Richard Hammond realises, they're actually stuck with the cow's head in his tent.
- The Checkout: The "Opportunity Knocking" segment in Series 5, Ep. 12 deals with multi-level marketing schemes. At the end of the segment, after how these schemes really work has been explained, everyone gets up and leaves the product party, including the hostess:
Guest: But this is your house!
Hostess: You keep it!
Newspaper Comics
- Used in a classic Peanuts strip. Violet throws Charlie Brown out of the house, tossing his coat and hat out afterward, telling him she doesn't want him there anymore. He starts to leave, then develops a look of dawning comprehension, goes back to the door, and rings the doorbell. When she answers the door and snottily asks him what he wants, he says, "This is MY house!"
- Also a variation after Lucy breaks off her (non-existent and imaginary) relationship with Schroeder:
Lucy: Now that you and I are through, Schroeder, I'm returning all the gifts I was going to give you.
Schroeder: ... Thank you?
Lucy: That didn't even make sense! - A very early strip has a variant where Charlie Brown tries to prevent Snoopy from following him home, until Shermy points out that Snoopy also lives that way. (Yes, he didn't own Snoopy very early in the strip.)
- Also a variation after Lucy breaks off her (non-existent and imaginary) relationship with Schroeder:
Stand Up Comedy
- Jeff Foxworthy warns against doing this during an argument with your spouse, especially if you're not carrying your keys.
Foxworthy: They did a study — 85% of all homeless people are people who got pissed and walked out without their keys. You can't get back in.  Unlock the door." [knocks] "It's raining. Come on."
Visual Novels
- A scene in Katawa Shoujo has Rin get angry at Hisao and tell him to Get Out!...but Hisao points out they're in his dorm room, so she storms off. A different path has a similar argument occur in Rin's studio, so that excuse doesn't apply and Hisao leaves instead. Neither scene is Played for Laughs (the latter is her Bad End).
Web Animation
- In the 82nd episode of Bonus Stage, Joel and Phil get in a heated fight, ending with Joel demanding that Phil get out of his house. Cut to the door slamming in Joel's face and Joel remembering that Phil owns the house. "Oh, right."
- Inverted in an episode of I'm a Marvel... and I'm a DC; rather than leaving his own house in an argument...
Batman: What are you doing?
 I'm drowning my sorrows in alcohol. What does it look like I'm doing?
Batman: No, I mean what are you doing in my house? - Homestar Runner: In the Strong Bad Email "flashback", Homestar wonders if Strong Bad's house is his own. Strong Bad says that if he did live there, he'd have "fewer non-broken bones, and more crushed spirits".
Webcomics
- Sluggy Freelance: Riff literally kicks Torg out for close-enough-to-dating his ex-girlfriend later that night. Of course, Riff was briefly afflicted with Apartment Amnesia...
- An after-the-fact example in Questionable Content: After Meena and Dave broke up, neither moved out of their apartment. Meena tells her new date Steve that this was Dave's responsibility, even though she had moved in with him.
Dave: Wait, why was I supposed to move out? This is my apartment!
Meena: If one of us was going to move out, it'd have to be you. It's not right to leave a girl homeless on such short notice.
Web Original
- In one of several Establishing Character Moments in the first episode of Gayle, a book club discussion gets personal when Gayle's rival brings up the time she faked her own death to have an Edible Arrangement sent to her house.

- In The Review Must Go On, Doug Walker attempts to throw off The Nostalgia Critic's constant interference by clicking to different websites. He gets to a review by Todd in the Shadows in which the Nostalgia Critic crashes and this exchange occurs.

Western Animation
- Bob's Burgers: In "The Silence of the Louise", Louise visits the house of her Stalker Without a Crush Millie Frock, and is disturbed to find Millie's bedroom is an almost-exact replica of her own. Louise snaps at Millie to "get out of my room!", only for Millie to gleefully remind her that they're not in Louise's room.
- The second variety was used in an episode of The Weekenders, after Tino's friends came to his house to show him a slideshow of his faults.
- Variant in Futurama where the Grand Midwife says, "I will now take my leave. I live here, so I won't actually be going anywhere, but you don't have to talk to me anymore." She then stands completely stock still for the rest of the scene, without moving or interacting with the others.
- The Simpsons:
- Subverted in "The Cartridge Family", when Homer is kicked out of the NRA for Reckless Gun Usage at a meeting he's hosting in his house and he ends up sitting on the curb outside for the next four hours.
- In "Lisa Gets An 'A'", after Ralph Wiggum delivers Lisa's homework when she's sick, he asks if this is his house.
- During "In Marge We Trust", after learning why Homer's face is on a box of dish detergent from Japan:
Homer: Well, it was a good ride while it lasted. C'mon, kids. Let's go home.
Bart: We are home.
Homer: That was fast.- And from the same episode, when the family plus Reverend Lovejoy go to a gas station to try to find information on the missing Ned Flanders:
Homer: Thanks for swinging by the house, Reverend.
- And from the same episode, when the family plus Reverend Lovejoy go to a gas station to try to find information on the missing Ned Flanders:
- The episode "There's No Disgrace Like Home" had a variation on this trope. Homer believes (rightly) that the family is embarrassingly dysfunctional, and Marge believes they're no worse than any other family. To settle the argument, Homer takes the family to go spy on the neighbors. After nearly getting killed by a man with a shotgun, they peek into yet another house.
Bart: Whoa, look at this place. What a dump.
Homer: That's what you think. I just trampled this poor sap's flower bed.
Marge: Homer, this is OUR house.
Homer: D'oh! - In "Weekend At Burnsie's", when Homer is stoned from his medicinal marijuana: "WE HAVE A KITCHEN?!"
- Another variation had Moe telling Lisa to go home in "Lisa The Skeptic".
Moe: Go home, science girl!
Lisa: I am home.
Moe: Good, stay there. - Slight variation with Grampa in "Itchy And Scratchy: The Movie", after an incident with Bart broke his false teeth:
Grampa: [Mumbles incoherently while trying to straighten out his teeth]
Homer: If you don't start making sense we're gonna put you in a home.

Homer: Then we'll put you in the crooked home we saw on 60 Minutes!
Grampa: [contrite] I'll be good. - In "Rome-Old and Juli-Eh" in the Simpson home:
Grampa: My roof, my rules!
- "The Twisted World of Marge Simpson" features a unique variation of "Personality Amnesia". Homer begged Fat Tony for help saving Marge's floundering pretzel business, and when Tony comes to collect on the debt, Homer acts shocked and outraged that the Mafia only helped him because they expected something in return ("Oh, Fat Tony! I will say good day to you, sir!"). This actually succeeds in shaming the Mafioso into leaving, but the "Hey, wait a minute!" realization hits a few moments after the door closes.
- Played for Laughs like everything else in Animaniacs.
Yakko: If you don't want any cookies, then just leave.
Albert Einstein: I'm not going to leave. This is my house.
Yakko: All right then, you leave.
Albert Einstein: Fine! - Perhaps the strangest example of all from The X's when the family get into an argument with the house's A.I. computer
Mr. X: Get out of our house.
The House: I am your house! - King of the Hill: Luanne was putting a Communist party sign at her yard when someone told her to go home. She responds "okay" and simply entered the house.
- Goof Troop:
- In the second part of the pilot, Goofy and Pete have an argument during a party. Goofy then tells Max they're leaving, only to remember that the party was at their house, and instead kicks Pete and his family out.
- Near the end of the Christmas Episode, when everyone is taking shelter in a cave during a snowstorm, they encounter the bear they've been running into throughout the whole episode. Fed up, Peg tells the bear to go back where it came from, only for P.J to meekly tell her that they're in his cave.

- From The Powerpuff Girls episode "Sweet 'N Sour", the girls are being ostracized for targeting a trio of very cute animal criminals.
Man: Go home, Powerpuff Girls!Bubbles: We are home, doodoobrain!
- In the Sonic Boom episode "Buster", Sticks refuses to get rid of her new robot dog Buster, so her friends are ready to walk out on her, only for Tails to stop himself and say, "Wait ... this is my house."
- A variation from Harvey Beaks: trying to distract a shopkeeper, Harvey asks, "Do you come here often?" The shopkeeper replies that it's his shop.
- In the Star vs. the Forces of Evil episode "Hungry Larry", Mr. Diaz asks Janna and Star to go home, while Marco reminds him that Star lives with them.
- The Looney Tunes Show inversion gets taken a step further in DuckTales (2017): Scrooge McDuck had Castle McDuck rebuilt for his parents after he moved to Duckburg, so when his father tells him to go to his room, he replies with a baffled "I never lived here!"


Copyright © 2011 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C liability, trademark and document use rules apply.
This specification introduces and compares two client-side APIs for processing and synthesizing real-time audio streams in the browser.
This section describes the status of this document at the time of its publication. Other documents may supersede this document. A list of current W3C publications and the latest revision of this technical report can be found in the W3C technical reports index at http://www.w3.org/TR/.
This is the First Public Working Draft of the Audio Processing API specification. It has been produced by the W3C Audio Working Group, which is part of the W3C Rich Web Client Activity.
This publication references two proposals for advance audio API functionality: Google's Web Audio API specification and Mozilla's MediaStream Processing API specification.
Please send comments about this document to<EMAIL_ADDRESS>mailing list (public archive).
Publication as a Working Draft does not imply endorsement by the W3C Membership. This is a draft document and may be updated, replaced or obsoleted by other documents at any time. It is inappropriate to cite this document as other than work in progress.
This document was produced by a group operating under the 5 February 2004 W3C Patent Policy. W3C maintains a public list of any patent disclosures made in connection with the deliverables of the group; that page also includes instructions for disclosing a patent. An individual who has actual knowledge of a patent which the individual believes contains Essential Claim(s) must disclose the information in accordance with section 6 of the W3C Patent Policy.
This section is informative.
The HTML5 audio
and video
elements allow for the playback of prerecorded audio files. For many purposes, this functionality is not enough. The specifications described here extend the capabilities of the browser to add more advanced audio capabilities than are currently offered by these simple multimedia elements.
These APIs will support the features required by advanced interactive applications including the ability to process and synthesize audio streams directly in script. This API can be used for interactive applications, games, 3D environments, musical applications, educational applications, and for the purposes of accessibility. It includes the ability to synchronize, visualize, or enhance sound information when used in conjunction with graphics APIs. Sound synthesis can be used to enhance user interfaces, or produce music.
This section is informative.
The W3C Audio Working Group has produced two proposals for the Audio API: Google's Web Audio API specification and Mozilla's MediaStream Processing API specification.
Each specification covers many of the same use cases, but in some areas the specifications are complementary. The group is evaluating the technical merits of each specification, in terms of its ease of use, implementability, and satisfaction of use cases and requirements of the Audio and WebRTC Working Groups. The group welcomes feedback from interested Web developers and audio experts, as well as implementers of browsers and authoring tools, and hardware manufacturers.
Google's Web Audio API proposal describes a high-level JavaScript API for processing and synthesizing audio in web applications. The primary paradigm is of an audio routing graph, where a number of AudioNode objects are connected together to define the overall audio rendering. The actual processing will primarily take place in the underlying implementation (typically optimized Assembly / C / C++ code), but direct JavaScript processing and synthesis is also supported.
This API is designed to be used in conjunction with other APIs and elements on the web platform, notably: XMLHttpRequest (using the responseType and response attributes). For games and interactive applications, it is anticipated to be used with the canvas 2D and WebGL 3D graphics APIs.
To learn more, refer to the Web Audio API proposal.
Mozilla's MediaStream Processing API specifies a number of existing or proposed features for the Web platform deal with continuous real-time media:
To learn more, refer to the MediaStream Processing API proposal.
This section is informative.
This document is the work of the W3C Audio Working Group.
Members of the Working Group are (at the time of writing, and by alphabetical order):
Berkovitz, Joe (public Invited expert); Gregan, Matthew (Mozilla Foundation); Jägenstedt, Philip (Opera Software); Kalliokoski, Jussi (public Invited expert); Lowis, Chris (British Broadcasting Corporation); MacDonald, Alistair (W3C Invited Experts); Michel, Thierry (W3C/ERCIM); Raman, T.V. (Google, Inc.); Rogers, Chris (Google, Inc.); Schepers, Doug (W3C/MIT); Shires, Glen (Google, Inc.); Smith, Michael (W3C/Keio); and Thereaux, Olivier (British Broadcasting Corporation).
The co-chairs of the Working Group are Alistair MacDonald and Olivier Thereaux.
The people who have contributed to discussions on<EMAIL_ADDRESS>are also gratefully acknowledged.


{{uNm}} {{#showAdded}}added this track{{/showAdded}} {{#pl}} to {{name}} {{/pl}} {{#repost}} via {{uNm}} {{/repost}}
{{{html}}}
Tip: You can mention people with "@"


An application can include a local page with inline web content. In the example below, a Bing Maps control is embedded in a local page. This page must be loaded in the web context (ms-appx-web://) in order to reference remote scripts.
The Bing API requires a AppID key to identify the application. To use this sample without warnings in the map, you will need to get a key from the Bing Developer Center. Then paste the key into the text box below.


Beto O'Rourke drops out of 2020 presidential race
by Joseph SimonsonBeto O'Rourke has ended his bid for the 2020 Democratic presidential nomination.
The former Texas congressman made the announcement on Friday in a series of tweets, saying, "I am announcing that my service to the country will not be as a candidate or as the nominee."
Despite several campaign resets and an impressive fundraising haul of $6.1 million in the first 24 hours following announcing his White House run, the former Texas congressman failed to capture the excitement that surrounded his 2018 Senate race.
While that effort to unseat Republican Sen. Ted Cruz failed, O'Rourke, 46, became a media darling and set the record for receiving the most votes by a Democrat in state history.
O'Rourke's narrow loss to Cruz set the tone for his presidential campaign, where he argued that he could compete in states traditionally held by Republicans. Yet O'Rourke failed to gain significant momentum and consistently polled with 1%-2% in primary polls.
During his presidential campaign, O'Rourke ruled out another Senate run. From 2013 to 2019, O'Rourke served as a congressman for Texas's 16th Congressional District.
[ Previous coverage: Beto O'Rourke fundraising drops more than 60% in second quarter]


What is thedjangoclub ?
This site contains tutorials and solutions to most common competitive programming questions and also web development using Django.
Every day new post about a problem will be updated.Solutions are given as python snippets.
Why thedjangoclub ?
You want to learn something and you want to do something with your life .
why python?
- Python is the most powerful programming language of 21st century.
- Using python you can develop all applications like
- web applications using Django,Flask,and Pyramid
- mobile applications using kivy
- Desktop applications using tkinter
- extensively used in data analysis, machine learning ,deep learning and also in cyber security
{% for post in paginator.posts %}
-
{{ post.date | date: '%B %d, %Y' }}
{% if post.category %}
{{ post.category }}
{% endif %}
{% if post.description %}{{ post.description }}{% else %}{{ post.excerpt | strip_html }}{% endif %}
{% endfor %}


MyMovieDB
Home
My Profile
Favourites
Logout
Log in
Sign up
Log in
×
Email address
Password
Sign up
×
First Name:
Last Name:
Email address
Password:
Confirm password:


25 Aug 2014 | | read this first, bootstrap, css
You can use all the available components of TwitterBootstrap. Here are some of them.
Continue Reading →


Allows distance based spatial clustering of georeferenced data by implementing the City Clustering Algorithm - CCA. Multiple versions allow clustering for matrix, raster and single coordinates on a plain (euclidean distance) or on a sphere (great-circle or orthodromic distance).
| Version: | 1.0.0 |
| Depends: | raster, R (≥ 2.14) |
| Suggests: | testthat |
| Published: | 2016-05-10 |
| Author: | Steffen Kriewald, Till Fluschnik, Dominik Reusser, Diego Rybski |
| Maintainer: | Steffen Kriewald <kriewald at pik-potsdam.de> |
| License: | GPL-2 | GPL-3 [expanded from: GPL] |
| NeedsCompilation: | yes |
| CRAN checks: | osc results |
| Reference manual: | osc.pdf |
| Vignettes: |
Using the City Clustering Algorithm |
| Package source: | osc_1.0.0.tar.gz |
| Windows binaries: | r-devel: osc_1.0.0.zip, r-release: osc_1.0.0.zip, r-oldrel: osc_1.0.0.zip |
| OS X binaries: | r-release: osc_1.0.0.tgz, r-oldrel: osc_1.0.0.tgz |
Please use the canonical form https://CRAN.R-project.org/package=osc to link to this page.


Hot-keys on this page
n s m x c change column sorting
| Module | statements | missing | excluded | coverage |
|---|---|---|---|---|
| Total | 134 | 24 | 0 | 82% |
| ariana\__init__.py | 0 | 0 | 0 | 100% |
| ariana\settings.py | 18 | 0 | 0 | 100% |
| ariana\urls.py | 3 | 0 | 0 | 100% |
| ariana\wsgi.py | 4 | 4 | 0 | 0% |
| frontend\__init__.py | 0 | 0 | 0 | 100% |
| frontend\admin.py | 1 | 0 | 0 | 100% |
| frontend\apps.py | 3 | 3 | 0 | 0% |
| frontend\migrations\__init__.py | 0 | 0 | 0 | 100% |
| frontend\models.py | 1 | 0 | 0 | 100% |
| frontend\tests.py | 1 | 0 | 0 | 100% |
| frontend\urls.py | 3 | 0 | 0 | 100% |
| frontend\views.py | 3 | 1 | 0 | 67% |
| manage.py | 9 | 2 | 0 | 78% |
| quest\__init__.py | 0 | 0 | 0 | 100% |
| quest\admin.py | 1 | 0 | 0 | 100% |
| quest\apps.py | 3 | 3 | 0 | 0% |
| quest\migrations\0001_initial.py | 6 | 0 | 0 | 100% |
| quest\migrations\0002_auto_20181122_1941.py | 5 | 0 | 0 | 100% |
| quest\migrations\__init__.py | 0 | 0 | 0 | 100% |
| quest\models.py | 18 | 2 | 0 | 89% |
| quest\serializers.py | 10 | 0 | 0 | 100% |
| quest\tests.py | 14 | 0 | 0 | 100% |
| quest\urls.py | 3 | 0 | 0 | 100% |
| quest\views.py | 28 | 9 | 0 | 68% |
No items found using the specified filter.


About me
I am a freelancer and I like to dabble more or less of everything related to web, but above all, I am interested in UX, and Web Technologies.
I have worked in IT companies with job role: project manager, systems integrator, analyst, developer, user interface designer and speaker/trainer in workshop organized by Ministry of Justice (Italy)..
When I'm not buried in the stuffs to do, you can find me writing on my blog or chatting on Twitter. If you like, you can drop me a line
UI/UX Design
Web Development
Project Manager
Hobbies
Technology
Music
Movies
Photos
Travel
Books
Skills
Technical Skills
Language Skills
Knowledge
Qualities
Experience
Freelancer
Visual / UI Designer
Jobe role: User Interface Deisgner, Web Developer.
ISI – Verona - Italy
Visual / UI Designer - Speaker / Trainer
Jobe role: User Interface Designer, Software Analyst, Speaker/Trainer in workshop organized by Ministry of Justice (Italy)
Gruppo ABACO - Verona - Italy
Project Manager
Jobe role: Project Manager, Systems Integrator, Software Analyst, Software Developer, User Interface Designer, Speaker/Trainer in workshop organized by Ministry of Justice (Italy).
Olivetti Information Services S.p.A – Rome - Italy
Project Manager
Jobe role: Project Manager, Systems Integrator, Software Analyst, Software Developer, User Interface Designer, Speaker/Trainer in workshop organized by Ministry of Justice (Italy).
ARS Informatica – Rome – Italy
Project Manager / Trainer
Jobe role: Software Analyst, Software Developer, Trainer in workshop organized by Ministry of Justice (Italy).
Ethicon S.p.A. (a Johnson & Johnson company) – Pomezia – Italy
Software Development Manager
Jobe role: Project Manager, Systems Integrator, Software Development Manager.
NICA Sistemi – Rome – Italy
Visual / UI Designer
Jobe role: Systems Integrator, Software Analyst, Software Developer.
Education
University Degree
Università La Sapienza - Rome - Italy
Lingue e Letterature Moderne.
Diploma
Control Data - Athens - Greece
Software Design and Development.
Diplomas
ISO 9001 - DNV Knowledge Institute
2003 - Quality Management Systems ISO 9001:2000.
2005 - CERTIFICAZIONE BS 7799.
Attendance at Training Courses
Europe
Systems Architectures - Analysis and Design Software - Software Development - Quality Management Systems - Project Management.
Get in Touch
Shoot a message!
There were some problems with your form submission!
Thanks for your message! I will get back to you ASAP!


Anthony Sparks
Craig Norkus
Kenny Vanartsdaylen
Marie Chavez
Gidget Mclovin
Alvin Schmitt
Richard Hampton
Type into the text box and press enter or press the button to add tasks to your list. Click the task to highlight it green which shows you have done the task. Click the "X" to remove the item from your list.
Hello Shawn, type in your daily notes here


Meet Scrapy
An open source and collaborative framework for extracting the data you need from websites. In a fast, simple, yet extensible way.
Sample Code:
pip install scrapy cat > myspider.py <<EOFEOF scrapy runspider myspider.pyimport scrapy class BlogSpider(scrapy.Spider): name = 'blogspider' start_urls = ['http://blog.scrapinghub.com'] def parse(self, response): for url in response.css('ul li a::attr("href")').re(r'.*/\d\d\d\d/\d\d/$'): yield scrapy.Request(response.urljoin(url), self.parse_titles) def parse_titles(self, response): for post_title in response.css('div.entries > ul > li a::text').extract(): yield {'title': post_title}
Build your own webcrawlers
Fast and powerful
write the rules to extract the data and let Scrapy do the rest
Easily extensible
extensible by design, plug new functionality easily without having to touch the core
Portable, Python
written in Python and runs on Linux, Windows, Mac and BSD
Healthy community:
- - 10k stars, 2.8k forks and 900 watchers on GitHub
- - 2.2k followers on Twitter
- - 4.1k questions on StackOverflow
- - 2.5k members on mailing list
Want to know more?
Scrapy at a glance
Wondering what Scrapy can do?
Meet the companies using Scrapy


I am a coder and front-end Web Developer.
I started learning to code when I was 18 years old. Over time, I have gained a wealth of experience solving problems and developing good solutions.
I am an intermediate in C++.
I am an intermediate in HTML/CSS.
I am a begineer in Python.


Let's Rock!
About
- For everything there is a season. The darkest hour is just before the dawn. All things come to he who waits."
- It’s difficult to ignore the truth in such timeless adages, wisdom that often bears repeating, especially for those in the midst of that “season,” “dark hour,” or “time of waiting.” Such is the case with GRAMMY Award nominated, female-fronted rock act Fireflight, whose preceding 2010 album, For Those Who Wait, left listeners patiently anticipating the band’s next move.
Fireflight, too, awaited its new direction. The group’s third studio project laid bare its vulnerability, with songs echoing a cry for divine comfort, guidance, and understanding. As the title suggests, members Dawn Michele (lead vocals), Justin Cox (guitar, keys, vocals), Wendy Drennen (bass, vocals), Glenn Drennen (guitar), and Adam McMillion (drums) were in a holding pattern, a season of uncertainty, trusting God to make known His plan and purpose.
“At that time, we had been through a lot of hurt and disappointment,” says Dawn. “Although we knew that God was shaping our character through life’s unexpected twists and turns, we didn’t know how or where to go from there.”
It was in the waiting; however, when God seemed silent, that He began stirring a call to action, one that would serve as the heart of Fireflight’s fourth record, NOW.


@* * Copyright 2023 HM Revenue & Customs * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. *@ @import controllers.testOnlyDoNotUseInAppConf.routes._ @import controllers.testOnlyDoNotUseInAppConf.FourOrFiveMLD @import views.html.components.{ErrorSummary, ConfirmationPanel, InputRadio, InputYesNo, InputTextArea, SubmitButton} @this( main_template: MainTemplate, errorSummary: ErrorSummary, confirmationPanel: ConfirmationPanel, inputRadio: InputRadio, inputYesNo: InputYesNo, inputTextarea: InputTextArea, formHelper: FormWithCSRF, submitButton: SubmitButton ) @(form: Form[_])(implicit request: Request[_], messages: Messages, flash: Flash) @main_template( title = s"${errorPrefix(form)} Trust Wizard" ) { @formHelper(action = TestWizardController.onSubmit, Symbol("autoComplete") -> "off") { @errorSummary(form.errors, FourOrFiveMLD.options.toSeq)


SOLVED
Select City
San Francisco
Los Angeles
Las Vegas
New York
Miami
Boston
Chicago
Austin
Dallas
Houston
Philadelphia
Phoenix
Seattle
Other


Tickets Helper
Ayudar
Home
(current)
Features
Pricing
Dropdown link
Action
Another action
Something else here


The following text contains the nodeset of the given Reference before it is canonicalized. There exist four different styles to indicate how a given node is treated.
<!-- XPath="self::Parent or (parent::Parent and not(self::Child)) or self::GrandChild or parent::GrandChild" --> <!-- Result C14N:--> <!-- Annotation C14N: 1. Parent inherts xml:lang and xml:space since it is an orphan node. 2. Parent has explicitly declared attributes xml:foo and xml:fool. 3. GrandChild inherts xml:foo from its Child ancestor. 4. GrandChild inherits xml:fool from its Parent ancestor. 5. GrandChild inherits xml:lang from its Child ancestor. 6. GrandChild has explicitly declared attribute xml:space. --> <!-- Result EC14N: --> <!-- Annotation EC14N: 1. Only those attributes in the xml namespace are rendered, which are explicitely declared in the attribute axis of an element. --> <GrandParent xmlns="" xml:lang="en" xml:space="default"> <Parent xmlns="" xml:foo="bar" xml:fool="barbar"> <Child xmlns="" xml:foo="barbarossa" xml:lang="ge"> <GrandChild xmlns="" xml:space="preserve"></GrandChild> </Child> </Parent> </GrandParent>


This application demonstrates the use of AVPlay plugin as video player
The application downloads video content from http://playready.directtaps.net
- it will not work if this domain is not accessible
You can change the source for video content by modifying contents of config
variable in main.js
file


Travelling
be the one to stand out in the crowed
Dike AcAlister January 16,2016
This is Photoshop's version now we's of Lorem Ipsum. Proin gravida nibh vel velit auctor aliquet. Aenean sollicitudin, lorem quis bibendum auctor, nisi eiilit consequat ipsum, nec sagittis sem nibh id elit.  Morbi accumsans ipsum velit. Nam nec tellus a odio tincidunt auctor a ornare odio. Sed non mauris vitae erat consequat auctor eu in elit. Class aptent taciti have a great is the best sociosqu ad litora torquent per conubia nostra.
Exercitation photo booths stumptowns totes bag Banksy, elit small batch bit kale chips proident chillwave have a great work deep haves laborum.
Proins gravida nibh vel velit auctor aliquet. Aenean sollicitudin, lorem quis bibendum auctor, nisi elit consequat ipsum, nec sagitgitis sem nibh id elit.  Morbi accumsan ipsum velit. Nam nec terzllus a odio tincidunt auctor a ornare odio. Sed non mauris vitae erat consequat auctor eu in elit. Class aptent taciti Duis aute irure dolor in reprehenderit in voluptate velit. Qui officia deserunt mollit anim id est labosasirum. Corrupti quosalores et quas molestias excepturi sint occaecati. Facere possimus, omnis voluptas assumenda have esOmnis dolor repellendus. Ut aut reiciendis voluptatibus maiores alias consequatur aut perferendis.Et harum quidem the odio dignissimos ducimus qui blanditiis praesentium voluptatum deleniti atque.sociosqu ad litora torquent per conubia nostra.
What a crowded bazaar! There were large crowds of people at the shops. There were motor cars, rickshaws, scooters and taxies. The has buses, too, were plying up and own the bazaar. We kept to the foot-path. Soon we were at the Fountain. There we is th saw the Gurdwara Sis Ganj with its golden dome. A large number of devotees were going in or coming out.
We moved on. There were shops dealing in all sorts of goods. There were the cloth merchants, chemists, jewellers, confectioners1, tobaccoonists, leather goods merchants, wine merchants, gramophone dealers, radio shops and shops dealing in general merchandise. The show cases exhibited the goods in style to great idea gave a so much tempt us.


steempy is a CLI tool from steem-python, in order to prevent confusion, I renamed my python library to beem. A beam maschine is a special steam engine which utilizes a metal beam. Therefore, beem is a good name for a python library for Steem.
beem is a python library for Steem and uses python-graphenelib from @xeroc. python-graphenelib has a dependency to pcrytodome, which is incompatible to the old and un-maintained pycryto which is used by steem-python. Therefore,
pip install beem will break some functions of steem-python, as pycryto is replaced by pycrytodome.
beem is compatible to python 3.5 and upwards. At the moments, all unit tests passed for python 3.5 and 3.6 for linux, OSX and windows. As soon as python-graphenelib is compatible to python 2.7, I will add compatiblity for python 2.7.
You cannot install beem and steem on the same maschine!
I commited a PR to python-steem: https://github.com/steemit/steem-python/pull/146 in order to fix this.
New links for the project
- https://github.com/holgern/beem
- http://beem.readthedocs.io/en/latest/
- https://pypi.python.org/pypi/beem
You can install beem on an Android mobile using Termux. You can learn here how to setup termux.
1 | pkg install clang openssl-dev python python-dev |
New Features
- Coverage could improved to 73%!
- Improved Doku
- Missing features added
- More unit tests
- Library renamed to beem
Added missing transaction objects and more unit tests
- https://github.com/holgern/beem/commit/761a3a607201bd7fa87ae76bebe9427e6f2a9cda
- ExchangeRate, Beneficiary, Beneficiaries, CommentOptionExtensions, Transfer_to_vesting, Withdraw_vesting, Account_witness_vote, Comment, Custom_json, Comment_options, Feed_publish, Convert, Set_withdraw_vesting_route, Limit_order_cancel, Delegate_vesting_shares, Limit_order_create, Transfer_from_savings, Cancel_transfer_from_savings, Claim_reward_balance, Transfer_to_savings added
- Unit tests added
Added missing functions and objects
- https://github.com/holgern/beem/commit/47cf2b4ceeeef87532722d8197400ded7e59fc16
account:
- reputation added
- history improved and fixed
block:
- ops and ops_statistics added
blockchain:
- function-names improved
- ops_statistics added
blockchainobject
- json export added
Comment class added
Discussion class added
steem:
- follow and account by key api added and fixed
storage:
- more nodes added
utils
- Helpfunctions added
vote
- blockchainobject
- refresh fixed
wallet
- purgeWallet added
Witness
- printAsTable function added
- WitnessesVotedByAccount added
- WitnessesRankedByVote added
- WitnessesByIds added
- LookupWitnesses added
Steemnoderpc
- register_apis fixed
test_wallet
- unit tests added
test_utils
- unittests added
Rename library from steempy to beem
- https://github.com/holgern/beem/commit/f166f7fc857c0270f4a684d655a9386c65e49274
Improve doc and upstream fixes from python-bitshares included
Did you try my new library yet? Please give me feedback!
Posted on Utopian.io - Rewarding Open Source Contributors
This page is synchronized from the post: ‘Update for beem (former steempy) - the new python library for steem’


Texture paint to canvas. To set the per-material. More...
Classes | |
| class | PaintSet |
Public Member Functions | |
| bool | PaintUVDirect (Brush brush, Vector2 uv, Func< PaintSet, bool > materialSelector=null) |
| Paint processing that UV coordinates to the specified. More... | |
| bool | PaintNearestTriangleSurface (Brush brush, Vector3 worldPos, Func< PaintSet, bool > materialSelector=null, Camera renderCamera=null) |
| Paint of points close to the given world-space position on the Mesh surface. More... | |
| bool | Paint (Brush brush, Vector3 worldPos, Func< PaintSet, bool > materialSelector=null, Camera renderCamera=null) |
| Paint processing that use world-space surface position. More... | |
| bool | Paint (Brush brush, RaycastHit hitInfo, Func< PaintSet, bool > materialSelector=null) |
| Paint processing that use raycast hit data. Must MeshCollider is set to the canvas. More... | |
| bool | EraseUVDirect (Brush brush, Vector2 uv, Func< PaintSet, bool > materialSelector=null) |
| Erase processing that UV coordinates to the specified. More... | |
| bool | EraseNearestTriangleSurface (Brush brush, Vector3 worldPos, Func< PaintSet, bool > materialSelector=null, Camera renderCamera=null) |
| Erase of points close to the given world-space position on the Mesh surface. More... | |
| bool | Erase (Brush brush, Vector3 worldPos, Func< PaintSet, bool > materialSelector=null, Camera renderCamera=null) |
| Erase processing that use world-space surface position. More... | |
| bool | Erase (Brush brush, RaycastHit hitInfo, Func< PaintSet, bool > materialSelector=null) |
| Erase processing that use raycast hit data. Must MeshCollider is set to the canvas. More... | |
| void | ResetPaint () |
| To reset the paint. More... | |
| Texture | GetMainTexture (string materialName) |
| To get the original main texture. More... | |
| RenderTexture | GetPaintMainTexture (string materialName) |
| To get the main texture in paint. More... | |
| void | SetPaintMainTexture (string materialName, RenderTexture newTexture) |
| Set paint texture. More... | |
| Texture | GetNormalTexture (string materialName) |
| To get the original normal map. More... | |
| RenderTexture | GetPaintNormalTexture (string materialName) |
| To get the paint in normal map. More... | |
| void | SetPaintNormalTexture (string materialName, RenderTexture newTexture) |
| Set paint texture. More... | |
| Texture | GetHeightTexture (string materialName) |
| To get the original height map. More... | |
| RenderTexture | GetPaintHeightTexture (string materialName) |
| To get the paint in height map. More... | |
| void | SetPaintHeightTexture (string materialName, RenderTexture newTexture) |
| Set paint texture. More... | |
Properties | |
| List< PaintSet > | PaintDatas [get, set] |
| Access data used for painting. More... | |
| MeshOperator | MeshOperator [get] |
Events | |
| Action< InkCanvas > | OnCanvasAttached |
| Called by InkCanvas attached game object. More... | |
| Action< InkCanvas > | OnInitializedStart |
| Called by InkCanvas initialization start times. More... | |
| Action< InkCanvas > | OnInitializedAfter |
| Called by InkCanvas initialization completion times. More... | |
| Action< InkCanvas, Brush > | OnPaintStart |
| Called at paint start. More... | |
| Action< InkCanvas > | OnPaintEnd |
| Called at paint end. More... | |
Texture paint to canvas. To set the per-material.
| bool Es.InkPainter.InkCanvas.Erase | ( | Brush | brush, |
| Vector3 | worldPos, | ||
| Func< PaintSet, bool > | materialSelector = null , |
||
| Camera | renderCamera = null |
||
| ) |
Erase processing that use world-space surface position.
| brush | Brush data. |
| worldPos | Point on object surface (world-space). |
| renderCamera | Camera to use to render the object. |
| bool Es.InkPainter.InkCanvas.Erase | ( | Brush | brush, |
| RaycastHit | hitInfo, | ||
| Func< PaintSet, bool > | materialSelector = null |
||
| ) |
Erase processing that use raycast hit data. Must MeshCollider is set to the canvas.
| brush | Brush data. |
| hitInfo | Raycast hit info. |
| bool Es.InkPainter.InkCanvas.EraseNearestTriangleSurface | ( | Brush | brush, |
| Vector3 | worldPos, | ||
| Func< PaintSet, bool > | materialSelector = null , |
||
| Camera | renderCamera = null |
||
| ) |
Erase of points close to the given world-space position on the Mesh surface.
| brush | Brush data. |
| worldPos | Approximate point. |
| renderCamera | Camera to use to render the object. |
| bool Es.InkPainter.InkCanvas.EraseUVDirect | ( | Brush | brush, |
| Vector2 | uv, | ||
| Func< PaintSet, bool > | materialSelector = null |
||
| ) |
Erase processing that UV coordinates to the specified.
| brush | Brush data. |
| uv | UV coordinates for the hit location. |
| Texture Es.InkPainter.InkCanvas.GetHeightTexture | ( | string | materialName | ) |
To get the original height map.
| materialName | Material name. |
| Texture Es.InkPainter.InkCanvas.GetMainTexture | ( | string | materialName | ) |
To get the original main texture.
| materialName | Material name. |
| Texture Es.InkPainter.InkCanvas.GetNormalTexture | ( | string | materialName | ) |
To get the original normal map.
| materialName | Material name. |
| RenderTexture Es.InkPainter.InkCanvas.GetPaintHeightTexture | ( | string | materialName | ) |
To get the paint in height map.
| materialName | Material name. |
| RenderTexture Es.InkPainter.InkCanvas.GetPaintMainTexture | ( | string | materialName | ) |
To get the main texture in paint.
| materialName | Material name. |
| RenderTexture Es.InkPainter.InkCanvas.GetPaintNormalTexture | ( | string | materialName | ) |
To get the paint in normal map.
| materialName | Material name. |
| bool Es.InkPainter.InkCanvas.Paint | ( | Brush | brush, |
| Vector3 | worldPos, | ||
| Func< PaintSet, bool > | materialSelector = null , |
||
| Camera | renderCamera = null |
||
| ) |
Paint processing that use world-space surface position.
| brush | Brush data. |
| worldPos | Point on object surface (world-space). |
| renderCamera | Camera to use to render the object. |
| bool Es.InkPainter.InkCanvas.Paint | ( | Brush | brush, |
| RaycastHit | hitInfo, | ||
| Func< PaintSet, bool > | materialSelector = null |
||
| ) |
Paint processing that use raycast hit data. Must MeshCollider is set to the canvas.
| brush | Brush data. |
| hitInfo | Raycast hit info. |
| bool Es.InkPainter.InkCanvas.PaintNearestTriangleSurface | ( | Brush | brush, |
| Vector3 | worldPos, | ||
| Func< PaintSet, bool > | materialSelector = null , |
||
| Camera | renderCamera = null |
||
| ) |
Paint of points close to the given world-space position on the Mesh surface.
| brush | Brush data. |
| worldPos | Approximate point. |
| renderCamera | Camera to use to render the object. |
| bool Es.InkPainter.InkCanvas.PaintUVDirect | ( | Brush | brush, |
| Vector2 | uv, | ||
| Func< PaintSet, bool > | materialSelector = null |
||
| ) |
Paint processing that UV coordinates to the specified.
| brush | Brush data. |
| uv | UV coordinates for the hit location. |
| void Es.InkPainter.InkCanvas.ResetPaint | ( | ) |
To reset the paint.
| void Es.InkPainter.InkCanvas.SetPaintHeightTexture | ( | string | materialName, |
| RenderTexture | newTexture | ||
| ) |
Set paint texture.
| materialName | Material name. |
| newTexture | New rendertexture. |
| void Es.InkPainter.InkCanvas.SetPaintMainTexture | ( | string | materialName, |
| RenderTexture | newTexture | ||
| ) |
Set paint texture.
| materialName | Material name. |
| newTexture | New rendertexture. |
| void Es.InkPainter.InkCanvas.SetPaintNormalTexture | ( | string | materialName, |
| RenderTexture | newTexture | ||
| ) |
Set paint texture.
| materialName | Material name. |
| newTexture | New rendertexture. |
|
getset |
Access data used for painting.
| Action<InkCanvas> Es.InkPainter.InkCanvas.OnCanvasAttached |
Called by InkCanvas attached game object.
| Action<InkCanvas> Es.InkPainter.InkCanvas.OnInitializedAfter |
Called by InkCanvas initialization completion times.
| Action<InkCanvas> Es.InkPainter.InkCanvas.OnInitializedStart |
Called by InkCanvas initialization start times.
| Action<InkCanvas> Es.InkPainter.InkCanvas.OnPaintEnd |
Called at paint end.


Only one RouteRule should be present without a condition
Evaluation of RouteRules proceeds from top to bottom, the first match is executed.


{% include 'slide-01-welcome.html' %}
{% include 'slide-02-background.html' %}
{# include 'slide-03-marc-io.html' }
{% include 'slide-04-marc2rdf.html' %}
{% include 'slide-05-marc2json-ld.html' %}
{% include 'slide-06-rdf2marc.html' %}
{% include 'slide-07-json-ld2marc.html' %}
#}


|
Return to Transcripts main page
CNN Transcripts for January 21, 2020
Note: This page is continually updated as new transcripts become available. If you cannot find a specific segment, check back later.
ANDERSON COOPER 360 DEGREES
AT THIS HOUR
CNN 10
CNN LIVE EVENT/SPECIAL
House Managers, Trump Legal Team Debate Trial Rules; Significant Change to McConnell's Proposed Rules. Aired 1:30-2p ET
Live Coverage of House Impeachment Managers' Press Conference; Pros and Cons of Mitch McConnell's Senate Rules; Recent Polling Shows Majority of Americans Favor Including New Evidence in Senate Trial. Aired 10:30-11a ET
The Impeachment Trial of Donald J. Trump; Sen. McConnell Revises Trial Rules; House and Trump Legal Team Debate. Aired 2-2:30p ET
The Impeachment Trial of Donald J. Trump; Mitch McConnell Agrees to Impeachment Trial Rules Changes; Interview With Sen. Jeff Merkley (D-OR). Aired 3-3:30p ET
The Impeachment Trial of Donald Trump; House Managers and Trump Team Debate Trial Rules. Aired 3:30-4p ET
Impeachment Trial Kicks Off With Fierce Battle Over Rules. Aired 4-4:30p ET
Democratic Leaders Respond to Rules Change at Press Conference. Aired 11-11:30a ET
The Impeachment Trial of Donald J. Trump. Aired 4:30-5p ET
Senators Expected To Clash Over Impeachment Trial Rules; CNN Reports, White House, Senate GOP Working To Limit Possible Bolton Testimony; Adam Schiff, House Manager Speakers Before The Senate Trial Begins; Interview With Sen. Mazie Hirono (D-HI). Aired 10-10:30a ET
Schumer: McConnell Wants to Cover Up for Trump; Democrats Push for Witnesses & Documents During Senate Trial; Democrats Demand Pat Cipollone Hand Over Firsthand Information; Constitutional Law Professor, Laurence Tribe, Discusses Impeachment, Democrats' Demands for Witnesses & Documents; Former Congressman & House Manager in Clinton Impeachment, Chris Cannon, Discusses His Warning to Democrats. Aired 11:30a-12p ET
GOP's Mitch McConnell Looks To Impose Speedy Senate Trial; Senators Expected To Clash Over Impeachment Trial Rules; CNN: White House, Senate GOP Working To Keep John Bolton From Testifying Publicly; Soon: Impeachment Trial Kicks Off With Fierce Battle Over Rules; Senators, Trump Lawyers Begin Arriving For Impeachment Trial. Aired 12-12:30p ET
Senate Debates Impeachment Trial Rules. Aired 1-1:30p ET
Impeachment Trial Of President Trump In U.S. Senate; McConnell Revises Proposed Rule, House Record "Will Be" Entered Into Evidence Instead Of "May Be" Entered. Aired 2:30-3p ET
Schumer Proposes Amendment To Subpoena State Department Docs Related To Impeachment; GOP's Collins "Likely" To Support Witnesses In Senate Trial; House Managers, Trump Legal Team Debate Rules. Aired 5- 6p ET
The Impeachment Trial Of Donald J. Trump; Senate Voting On Tabling Amendment To Subpoena State Department Documents. Aired 6-7p ET
Impeachment Trial Kicks Off With Fierce Battle Over Rules; Trump's Impeachment Trial To Begin With Senate Clashes. Aired 12:30-1p ET
CNN NEWSROOM
CNN RIGHT NOW
CNN TONIGHT
CNN'S AMANPOUR
CONNECT THE WORLD
CUOMO PRIME TIME
EARLY START
ERIN BURNETT OUTFRONT
FIRST MOVE WITH JULIA CHATTERLEY
HALA GORANI TONIGHT
INSIDE POLITICS
NEW DAY
QUEST MEANS BUSINESS
THE BRIEF WITH BIANCA NOBILO
THE LEAD WITH JAKE TAPPER
THE SITUATION ROOM
|


A customizable story about how Keystoke can help your business endeavors.
Begin your journey
This web application was designed as a 'Choose Your Own Adventure' to help you understand more about Keystoke and when you could need their services.


-
This report presents the results of source code quality analysis based on network theory.
-
Quality metrics used in this analysis are described below.
-
Overall code quality is determined by a grade shown in the final section of the report.
-
All information is obtained from static code analysis. Some values may change during runtime.
-
Note that this method heuristic and experimental!


←
Home
About
RSS
Brian Schrader
"Readability matters because you don't scale" #pycon2016
"Software is made out of people...and their time."
Everyone in the room has Slack, Twitter, and Github open.
recovering git branches... YES!
Git: Fear of losing work is a barrier to learning/experimentation #pycon2016
so many good talks all at the same time...
All examples in Python3. #asitshouldbe #pycon2016
btw if you don't care about programming or Python, then you might want to mute #pycon2016 for the next few days.
First session of the day: File descriptors, UNIX sockets and other POSIX wizardry. #pycon2016
PyCon so far has been 5% technology and 95% inclusivity, community, diversity, and education. #pycon2016
It's time for PyCon: Day 1!
Free food!
Badged. http://bit.ly/1Z7sLb3
Portland Lyft driver makes a Portlandia reference and neither of the dudes from San Diego got it. #auspiciousstart
I'm in Portland!
Got some time to wait in the terminal. Time for some Revolutions Podcast! https://overcast.fm/ BFNrRhjmI
My activity graph makes cat ears. http://bit.ly/20Q8R4S
Thank you to whoever unplugged the 12-port, communal charging strip so they could plug in their iPad directly. We didn't need those.
SAN➡PDX✈
🐍 Prepping for PyCon! 🐍
←
Newer Posts
Older Posts
→


Studio Faustini
This is a Assemble Generator template using inuit. It includes a large callout called a jumbotron and three supporting pieces of content. Use it as a starting point to create something more unique.
This is a Assemble Generator template using inuit. It includes a large callout called a jumbotron and three supporting pieces of content. Use it as a starting point to create something more unique.


--- layout: archive title: "Teaching" permalink: /teaching/ author_profile: true ---
I worked as a Teaching Assistant (TA) for the Natural Language Processing (NLP) course offered by Dr. Manish Shrivastava in Monsoon 2018, with responsibilities that included evaluating assignments, grading examinations and conducting tutorials, for a class of nearly 150+ undergraduate and graduate students.
I worked as a Teaching Assistant (TA) for the Science - 1 course offered by Dr. Marimuthu Krishnan in Monsoon 2017, with responsibilities that included evaluating assignments, grading examinations and conducting tutorials, for a class of nearly 200 undergraduate students.


FitnessEquipmentState
public enum FitnessEquipmentState : Int
Fitness Eqiupment State
-
Reserved
Declaration
Swift
case reserved = 0
-
Asleep
Declaration
Swift
case asleep = 1
-
Ready
Declaration
Swift
case ready = 2
-
In Use
Declaration
Swift
case inUse = 3
-
Puased - Finished
Declaration
Swift
case paused = 4
-
State String Value
Declaration
Swift
public var stringValue: String { get }
-
Checks if the State is allowed to Transition
Note
This is the offical state, but you may need to allow all transitions since you may not start receiving data from the asleep or ready stateDeclaration
Swift
public func canTransition(state: FitnessEquipmentState) -> Bool
Parameters
state
State to Transition to
Return Value
Transition allowed


{{ define "main" }}
The page was not found, whoops... if you think this is a bug, help me out by reporting it on github. TAKE ME HOME!


Analysis of Algorithms is a mathematical area of Computer Science in which we analyze the resources (mostly time, but sometimes space) used by algorithms to solve problems. An algorithm is a precise procedure for solving a problem, written in any notation that humans understand (and thus can carry-out the algorithm): if we write an algorithm as code in some programming language, then a computer can execute it too.
The main tool that we use to analyze algorithms is big-O notation: it means "growth on the order of". We use big-O notation to characterize the performance of an algorithm by placing it in a complexity class (most often based on its WORST-CASE behavior -but sometimes on its AVERAGE-CASE behavior) when solving a problem of size N: we will learn how to characterize the size of problem, which is most often as simple as N is the number of values in a list/set/dictionary. Once we know the complexity class of an algorithm, we have a good handle on understanding its actual performance (within certain limits). Thus, in AA we don't necessarily compute the exact resources needed, but typically an approximate bound on the resources, based on the problem size.
[top]
Here is a simple Python function for computing the maximum of a list (or returning None if there are no values in the list).
def maximum(alist): answer = None if alist == [] else alist[0] for i in range(1,len(alist)): if alist[i] > answer answer = alist[i] return answer
Often, the problem size is the number of values processed: e.g., the number of values in a list or in a file. But we can use other metrics as well: it can be the count of number of digits in an integer value, when looking at the complexity of multiplication based on the size of the numbers. Thus, there is no single measure of size that fits all problems: instead, for each problem we try to choose a measure that makes sense and is natural for that problem.
Python translates functions like maximum into a sequence of instructions that the computer executes (the subject of one of the last lectures). To solve a problem, the computer always executes an integer number of instructions. For simplicity, we will assume that all instructions take the same amount of time to execute. So to compute the amount of time it takes to solve a problem is equivalent to computing how many instructions the computer must execute to solve it (which we can divide by the number of instructions/second the machine executes to compute the time taken).
Again, we typically look at the worst case behavior of algorithms. For maximum the worst case occurs if the list is in increasing order. In this case, each new value examined in the list will be bigger than the previous maximum, so the if statement's condition will always be True, which always requires updating answer. If any value was lower, it wouldn't have to update answer and thus take fewer instructions/less time to execute.
It turns out that for a list of N values, the computer executes 14N + 9 instructions in the worst case for this function. You need to know more CS than you do at this time to determine this formula, but you will get there by ICS 51 (and I expect to cover the basics during the last week of the quarter, when I cover Python Machine Code).
A simple way to think about this formula is that there are 14 computer instructions that are executed each time Python exceutes the body of the for loop and 9 instructions that are executed only once: they deal with starting and terminating the loop and the entire function. We can say I(N) = 14N + 9 for the worst case of the maximum function, where I(N) is the number of instructions the computer executes when solving a problem on a list with N values.
I would like to argue now that if simplify this function to just I(N) = 14N we have lost some information, but not much. Specifically, as N gets bigger (i.e., we are dealing with very big problems - the kinds computers are used to solve), 14N and 14N+9 are relatively close. Let's look at the result of this function vs. the original as N gets for values of N increasing by a factor of 10.
N | 14N + 9 | 14N | error: (14N+9 - 14N)/(14N+9) as a % of N ---------+------------+------------+--------------------------- 1 | 23 | 14 | 61% or 39% accurate 10 | 149 | 140 | 6% 94% accurate 100 | 1409 | 1400 | .6% 99.4% accurate 1000 | 14009 | 14000 | .06% 99.94% accurate ... 1,000,000 | 14,000,009 | 14,000,000 | .00006% 99.99994% accurate ...
Each line shows the % error of computing 14N when the true answer is 14N + 9. So by the time we are processing a list of 1,000 values, using the formula 14N instead of 14N+9 is 99.94% accurate. For computers solving real problems, a list of 1,000 values is small: a list of millions is more normal. For 1,000,000 values 14N is off by just 9 parts in 14 million. So the 9 doesn't affect the formula much.
Analysis of Algorithms really should be referred to as ASYMPTOTIC Analysis of Algorithms, as it is mostly concerned with the performance of algorithms as the problem size gets very big (N -> infinity). We see here that as N->Infinity 14N is a better and better approximation to 14N+9: dropping the extra 9 becomes less and less important.
A simple function for sorting is the following. This is much simpler than the real sort method in Python (and the simplicity results in the function taking much more time, but it is a good starting point for understanding sorting now). If you are interested in how this function accomplishes sorting, hand simulate it working on a list of 5-10 values (try increasing values, decreasing values, values in random order): basically each execution of the outer loops mutates the list so that the next value in the list is in the correct position.
def sort(alist): for base in range(len(alist)): for check in range(base+1,len(alist)): if alist[base] > alist[check]: alist[base], alist[check] = alist[check],alist[base] return None # list is mutated
It turns out that for a list of N values, the computer executes 8N**2 + 12N + 6 instructions in the worst case for this function. The outer loop executes N times (N is len(alist)) and inner loop on average executes N/2 times, so the if statement in the inner loop is executed a quadratic number of times. We can say I(N) = 8N**2 + 12N + 6 for the worst case of the sort function, where I(N) is again the number of instructions the computer executes. Or to be more specific we would write Isort(N) = 8N**2 + 12N + 6.
I would like to argue in the same way that if simplify this function to just I(N) = 8N**2, we have not lost much information. Let's look at the result of this this function vs. the original as N gets bigger and bigger
N | 8N**2+12N+6| 8N**2 | error: (12N+6)/(8N**2+12N+6) as a % of N ---------+------------+-------------+--------------------------- 1 | 26 | 8 | 70% or 30% accurate 10 | 926 | 800 | 14% 86% accruate 100 | 81,206 | 80,000 | 1.5% 98.5% accurate 1000 | 8,012,006 | 8,000,000 | .15% 99.85% accurate
So by the time we are processing a list of 1,000 values, using the formula 8N**2 instead of 8N**2 + 12N + 6 is 99.85% accurate. For 1,000,000 values (10**6), 8N**2 is 8*10^12 while 8N**2 + 12N + 6 is 8*10^12 +12*10^6 + 6; the simpler formula is is 99.999985% accurate.
CONCLUSION (though not proven): If the real formula I(N) is a sum of a bunch of terms, we can drop any term that doesn't grow as quickly as the most quickly growing term. In computing the maximum, the linear term 14N grows more quickly than the next term, the constant 9, which doesn't grow at all (as N grows) so we drop the 9 term. In sorting, the quadratic term 8N**2 grows more quickly than the next two terms, the linear term 12N and the constant 6, so we drop the 12N and 6 terms.
In fact note that we can prove that the Limit as N-> of 12N/8N**2 = 3/(2N) -> 0, which means we can discard the 12N term as growing more slowly thatn the 8N**2 term.
The result is a simple function that is still an accurate approximation of the number of computer instructions executed for lists of various large sizes.
We now will explain a rationale for dropping the constant in front of N and N**2, and classifying these algorithms as O(N) growing at a linear rate and O(N**2) growing at a quadratic rate. Again O means "grows on the order of", so O(N) means grows on the order of N and O(N**2) means grows on the order of N**2.
Since we are trying to come up with a "science" of algorithms, we don't want our results to depend on technology, so we are also going to drop the constant in front of the biggest term as well. For the reason explained above (relating to instructions generated by Python and the speed of the machine), this number is based solely on technology.

Imaximum(2N) 14(2N) -------------- ~ -------- ~ 2 Imaximum(N) 14 N
The ratio is a simple number (no matter how many instructions are in the loop, since the constant 14 appears as a multiplicative factor in both the numerator and denominator, and cancels itself out). So, we know for this code, if we double the size of the list, we double the number of instructions that maximum executes to solve the problem, and thus double the amount of time (for whatever the speed of the computer is).
Thus, the constant 14 is irrelevant when asking this "doubling" question.
Likewise, for sorting we can write
Isort(2N) 8(2N)**2 ----------- ~ ---------- ~ 4 Isort(N) 8 N\*\*2
Again, the ratio is is a simple number, with the constant (no matter what it is, disappearing). So, we know for this code that if we double the size of the list, we increase by a factor of 4 the number of instructions that are executed, and thus increase by a factor of 4 the amount of time (for whatever the speed of the computer is).
Thus, the constant 8 is irrelevant when asking this "doubling" question.
Note if we didn't simplify, we'd have
I(2N) 8(2N)**2 + 12(2N) + 6 32N**2 + 24N + 6 ------- = ----------------------- = ----------------------- I(N) 8N**2 + 12N + 6 8N**2 + 12N + 6 which doesn't simplify easiy; although, as N->inifinty, this ratio gets closer and closer to 4 (and is very close even for small-sized problems).
As with air-resistance and friction in physics, typically ignoring the contribution of these negligible factors (for big, slow-moving objects) allows us to quickly solve an approximately correct problem.
Using big-O notation, we say that the complexity class of the code to find the maximum is O(N). The big-O means "grows on the order of" N, which means a linear growth (double the input size, double the time). For the sorting code, its complexity class is O(N**2), which means grows on the order of N**2, which means a quadratic growth rate (double the input size, quadruple the time).
IMPORTANT: A Quick way to compute the complexity class of an algorithm
To analyze a Python function's code and compute its complexity class, we approximate the number of times the most frequently executed statement is executed, dropping all the lower (more slowly growing) terms and dropping the constant in front of the most frequently executed statement (the fastest growing term). We will show how to do this much more rigorously in the next lecture.
The maximum code executes the if statement N times, so it is O(N). The sorting code executes the if statement N(N-1)/2 times (we will justify this number below), which is N**2/2 - N/2, so dropping the lower term and the constant 1/2, yields a complexity class of O(N**2)
[top]
Primarily from this definition we know that if two algorithms, a and b, both solve some problem, and a is in a lower complexity class than b, then for all BIG ENOUGH N, Ta(N) < Tb(N): here Ta(N) means the Time it takes for algorithm a to solve the problem. Note that nothing here is said about small N; which algorithms uses fewer resources on small problems depends on the actual constants we dropped (and even on the terms that we dropped), so complexity classes have little to say for small problem sizes.
For example, if algorithm a is O(N) with a constant of 100, and algorithm b is O(N**2) with a constant of 1, then for values of N in the range [1,100],
Tb(N) = 1N**2 <= 100N = Ta(N)
but for all values bigger than 100,
Ta(N) = 100N <= 1N**2 = Tb(N)
As a second example, if algorithm a is O(N) with a constant of 1, and algorithm b is O(N**2) with a constant of 10, then for all values of N
Ta(N) = 1N <= 10N**2 = Tb(N)
So in some cases a lower complexity class can be worse for small N, and in some cases it can be better. We need to go beyond complexity classes to find out. But it is guaranteed that FOR ALL SIZES BEYOND SOME VALUE OF N, the algorithm in the lower complexity will run faster.
Again, we use the term "asymptotic" analysis of algoritms to indicate that we are mostly concerned with the time taken by the code when N gets very large (going towards infinity). In both cases, because of their complexity classes, algorithm a will be better.
What about the constants? Are they likely to be very different in practice? It is often the case that the constants of different algorithms are close. (They are often just the number of instructions in the main loop of the code). So the complexity classes are a good indication of faster vs slower algorithms for all but the smallest problem sizes.
Although all possible mathematical functions might represent complexity classes (and many strange ones do), we will mostly restrict our attention to the following complexity classes. Note that complexity classes can interchangably represent computing time, the # of machine operations executed, and such more nebulous terms as "effort" or "work" or "resources".
As we saw before, a fundamental question about any algorithm is, "What is the time needed to solve a problem twice as big". We will call this the SIGNATURE of the complexity class (knowing this value empirically often allows us to know the complexity class as well).
Class | Algorithm Example | Signature --------+-----------------------------------------------+---------------------- O(1) | pass argument->parameters/copying a reference | T(2N) = T(N) O(LogN) | binary searching of a sorted list | T(2N) = c + T(N) O(N) | linear searching a list (the in operator) | T(2N) = 2T(N) O(NLogN)| Fast sorting | T(2N) = cN + 2T(N)
Fast algorithms come before here; NLogN grows a bit more slowly than linearly (because logarithms grow so slowly compared to N) and nowhere near as fast as O(N**2)
O(N**2) | Slow sorting; scanning N times list of size N | T(2N) = 4T(N) O(N**3) | Slow matrix multiplication | T(2N) = 8T(N) O(N**m) | for some fixed m: 4, 5, ... | T(2N) = 2**mT(N)
Tractable algorithms come before here; their work is polynomial in N. In the complexity calss below N is in an exponent.
O(2**N) | Finding boolean values that satisfy a formula | T(2N)=2**N T(N)
For example, for an O(N**2) algorithm, doubling the size of the problem quadruples the time required: T(2N) ~ c(2N)**2 = c4N**2 = 4cN**2 = 4T(N).
Note that in Computer Science, logarithms are mostly taken to base 2. (Remember that algorithms and logarithms are very different terms). All logarithms are implicitly to base 2 (e.g., Log N = Log2 N). You should memorize and be able to use the following facts to approximate logarithms without a calculator.
Log 1000 ~ 10 Actually, 2**10 = 1,024, 2**10 is approximatley 1,000 with < a 3% error.
Log a**b = b Log a, or more usefully, Log 1000**N = N Log 1000; so ... Log 1,000,000 = 20 : 1,000,000 = 1,0002; Log 10002 = 2Log 1000 Log 1,000,000,000 = 30 : 1,000,000,000 = 1,0003; Log 10003 = 3Log 1000
So note that Log is a very slowly growing function. When we increase from Log 1,000 to Log 1,000,000,000 (the argument grows by a factor of 1 million) the result only grows by from 10 to 30 (by a factor or 3).
In fact, we can compute these logarithms on any calculator that computes Log in any base. For example,
Log (base b) X = Log (base a) X / Log (base a) b
So, Log (base b) X is just a constant (1/Log (base a) b) times Log (base a) X, so logarithms to any base are really all the same complexity class (regardless of the base) because they differ only by a multiplicative constant (which we ignore in complexity classes). For example,
Log(base 10) X = Log(base 2) X / Log(base 2) 10 ~ .3 Log(base 2) X
IMPORTANT: Determining the Complexity Class Empirically - from a Signature
If we can demonstrate that doubling the size of the input approximately quadruples the time of an algorithm, then the algorithm is O(N**2). We can use the signatures shown above for other complexity classes as well. Thus, even if we cannot mathematically analyze the complexity class of an algorithm based on inspecting its code (something we will highlight in the next lecture), if we can measure it running on various sized problems (doubling the size over and over again), we can use the signature information to approximate its complexity class. In this approach we don't have to understand (even look at) the code.
[top]
We can use knowledge of the complexity class of an algorithm to predict its actually running time on a computer as a function of N easily. For example, if we know the complexity class of algorithm a is O(N**2), then we know that Ta(N) ~ cN**2 for some constant c. The constant c represents the "technology" used: the language, interpreter, machine speed, etc.; the N**2 (from O(N**2)) represents the "science/math" part: the complexity class. Now, given this information, we can time the algorithm for some large value N. Let's say for N = 10,000 (which is actually a pretty small N these days) we find that Ta(10,000) is 4 seconds.
First, if I asked you to estimate Ta(20,000) you'd immediately know it is about 16 seconds (doubling the input of an O(N**2) algorithm approximately increases the running time by a factor of 4). Second, if we solve for c we have
Ta(N) ~ cN**2, substituting 10,000 for N and 4 for Ta(N) we have Ta(10,000) = 4 ~ c 10,000**2 (from the formula), so solving for the the technology constant c ~ 4x10**-8.
So, by measuring the run-time of this code, we can calculate the constant "c", which involves all the technology (language, interpreter, computer speed, etc). Roughly, we can think of c as being the amount of time it takes to do one loop (# of instructions per loop/speed of executing instructions) where the algorithm requires N**2 iterations through the loops to do all its work.
Therefore, Ta(N) ~ 4x10**(-8) x N**2. So, if asked to estimate the time to process 1,000,000 (10**6) values (100 times more than 10,000), we'd have
Ta(10**6) ~ 4x10**(-8) x (10**6)**2 Ta(10**6) ~ 4x10**(-8) x 10**12 Ta(10**6) ~ 4x10**4, or about 40,000 seconds (about 1/2 a day)
Notice that solving a problem 100 times as big take 10,000 (which is 100**2) times as long, which is based on the signature for an O(N**2) algorithm when we increase the problem size by a factor of 10. If we go back to our sorting example,
I(100N) 8(100N)**2 ------- ~ ------------- ~ 10,000 I(N) 8 N\*\*2
In fact, while we often anaylze code to determine its complexity class, if we don't have the code (or find it too complicated to analyze) we can double the input sizes a few times and see whether we can "fit the resulting times" to any of the standard signatures to estimate the complexity class of the algorithm. We should do this for some N that is as large as reasonble (taking some number of seconds to solve on the computer).
Note for an O(2**N) algorithms, if we double the size of the problem from 100 to 200 values the amount of time needed goes up by a factor of 2**100, which is ~ 1.3x10**30. Notice that adding one more value to process doubles the time: this "exponential" time is the inverse function of logarithmic time, in terms of its growth rate: it grows incredibly quickly while logarithms grow incredible slowly.
[top]
Note too that it is important to be able to analyze the following code. Notice that the upper bound of the inner loop (i) is changed by the outer loop.
for i in range(N): for j in range(i): body
How many times does the "body" of the loop get executed? When the outer loop index i is 0, "body" gets executed 0 times; when the outer loop index i is 1, "body" gets executed 1 time; when the outer loop index i is 2, "body" gets executed 2 times; .... when the outer loop index i is N-1 (as big as i gets), "body" gets executed N-1 times. So, in totality, "body" gets executed 0 + 1 + 2 + 3 + ... + N-1 times, or dropping the 0, just 1 + 2 + 3 + ... + N-1 times. Is there a simpler way to write this sum?
There is a simple, general closed form solution of adding up consecutive integers. Here is the proof that 1 + 2 + 3 + ... + N =N*(N+1)/2. This is a direct proof, but this relationship can also be proved by induction.
Let
S = 1 + 2 + 3 + ... + N-1 + N.
Since the order of the numbers makes no difference in the sum, we also have
S = N + N-1 + ... + 3 + 2 + 1.
If we add the left and right side (column by column) we have
S = 1 + 2 + ... + N-1 + N S = N + N-1 + ... + 2 + 1
2S = (N+1) + (N+1) + ... + (N+1) + (N+1)
That is, each pair in the column sums to N+1, and there are N pairs to sum. Since there are N pairs, each summing to N+1, the right hand side can be simplified to just N*(N+1). so
2S = N*(N+1), therefore S = N(N+1)/2 = N**2/2 + N/2
Thus, S is O(N**2): with a constant of 1/2 and a term of N/2 that is dropped (because its order is lower than that N**2). Note that either N or N+1 is an even number, so dividing their product by 2 is always a integer as it must be for the sum of integers: 6*7/2 = 21.
So, looking back at the example of the code above, the total number of times the body gets executed is 0 + 1 + 2 + ... + N-1 which is the same as 1 + 2 + ... + N-1 so plugging N-1 in for N we have (N-1)(N-1+1)/2 = N**2/2 - N/2 which is still O(N**2) for the same reason.
We can apply this formula for putting N values at the end of a linked list that is initially empty (and has no cache reference to the last node). To put in the 1st value requires skipping 0 nodes; to put in the 2nd value requires skipping 1 nodes; to put in the 3rd value requires skipping 2 nodes; ... to put in the Nth value requires skipping N-1 nodes. So the number of nodes skipped is 0 + 1 + ... + N-1, which by the formula is (N-1)N/2: so building a linked list in this way is in the O(N**2) complexity class.
Fast Searching and Sorting:
There are obvious algorithms for searching a list in complexity O(N) and sorting a list in complexity O(N**2). But, there are surprisingly faster algorithms for these tasks: searching a list can be O(Log N) if the list is sorted (binary search); and sorting values in a list can be in O(N Log N).
In lecture, I will briefly discuss the binary searching algorithm, for searching a sorted list: its complexity class is O(Log N). In fact the constant is 1, which means that when searching a list of 1,000,000 values, we must access the list at most about 20 times to either (a) find the index of the value in the list or (b) determine the value is not in the list. This is potentially 50,000 times faster than a loop checking one index after another (which we must do if the list is not sorted)! On large problems, algorithms in a lower complexity class typically execute much faster. Also note that when increasing the size of the list by 1,000 (to 1 billion values) the maximum number of accesses goes from 20 to 30.
You should know that Python's sorting method on lists is O(N Log N), but we will not discuss the algorithm. As with binary searching, we will discuss the details in ICS-46.
Note that we CANNOT perform binary searching efficiently on linked lists, because we cannot quickly find the middle of a linked list (for lists we just compute the middle index and access the list there). In fact, we have seen another self-referential data structure, trees, that can be used to perform efficient searches.
Sorting is one of the most common tasks performed on computers. There are hundreds of different sorting algorithms that have been invented and studied. Many small and easy to write sorting algorithms are in the O(N**2) complexity class (see the sorting code above, for example). Complicated but efficient algorithms are often in the O(N Log N) complexity class. We will study sorting in more detail in ICS-46, including a few of these efficient algorithms.
For now, memorize that fast (binary) searching is in the O(Log N) complexity class and fast sorting algorithms are in the O(N Log N) complexity class. If you are ever asked to analyze the complexity class of a task that requires sorting data as part of the task, assume the sorting function/method is in the O(N Log N) complexity class.
Closing:
To close for now, finding an algorithm to solve a problem in a lower complexity class is a big accomplishment; a more minor accomplishment might be decreasing the constant for an algorithm in the same complexity class (certainly useful, but often based more on technology than science). By knowing the complexity class of an algorithm we know a lot about the performance of the algorithm (especially if we measure the time it takes to solve certain sized problems: using this information we can accurately predict the time to solve other size problems). Finally, We can also reverse the process, and use a few measurements, doubling the size of the problem each time, to approximate the complexity class of an algorithm.
[top] of many of the operations in Python, so we can better directly analyze Python code that use these operations to determine its complexity class. The second lecture includes code for easily timing Python functions, including dicussion of hashing that will reveal why dicts and sets behave the way they do in Python.
[top]
A PC in the 1980s executed 10**6 operations per second; a PC today executes 1,000 times faster 10**9 operations per second. Assume a slow sorting method takes exactly N**2 operations to sort a list of length N; assume a fast sorting method takes exactly 5 N Log N operations to sort a list of length N. When sorting a small amount of data, the fast machine runinng the slow algorithm (call this configuration 1) is better; when sorting a large amount of data the slow machine running the fast algorithm is better (call this configuration 2). For approxmiately what size array does the transition occur: for smaller arrays configuration 1 is faster, but for larger arrays configuration 2 is better.
Suppose an algorithm is O(N Log N) and it takes .003 seconds to run on a computer for a problem of size 1000. Determine the function Ta(N) and compute how long it would take to run on a problem of size 1 million. Hint: us the simple approximation shown in this lecture for logarithms.
Suppose that we time a function f by doubling the size of its input and we get the following data
N | Time to compute f(n) -------+---------------------- 1,000 | .32 2,000 | 1.31 4,000 | 5.12 8,000 | 20.5
What complexity class has a signature that matches this data?


--- layout: page title: Curiculum Vitae permalink: /curiculum_vitae/ ---
orders start from latest experience
Web Developer & Consultant
May 2014 - Current
I handles web development projects and consulting on digital activation needs on wide range of clients. I mainly consult on first website for small to medium businesses.
Co-Founder
April 2014 - Current
Nobilis Couture was a concept of online tailored clothing, I help with day to day operations, management, and technology integration.
Junior Executive
May 2013 - December 2014
I am expected to continue this business, therefore I learned management skills, communication skills, business etiquette and day to day operation in heavy equipment spare parts procurement. This is a family business.
Creative Designer
October 2012 - April 2013
My responsibilities include front end design for clients, and internal branding, presentation, digital activation design, I also communicate with clients about their needs. I was mentored to be a junior Front end developer.
Graduate: November 2017
Degree: Masters
Major: Interaction Design
Graduated: July 2012
Degree: Bachelors with Honours
Major: Creative Multimedia
High School
Class of 2009
Junior High School 2007
Primary School 2004
Web Developer & Consultant
February 2015 - Current
ISJ is a journal publishing organisation for Indonesian student, they have a platform revamp in the meantime and looking forward for a brand new platform. All members are scattered through the globe, all volunteers are working remotely. Therefore I am familiar with long distance meeting and training, different time-zone project planning.
Director of Photography, Camera Person, Member
August 2009 - August 2012
Teh'O Ais is a part of Merah Putih Club, an Indonesian student organisation in Limkokwing Cyberjaya. Teh'O Ais is a film production and club where we make short movies for fun, competition and Merah Putih Club needs.