Time to reflect on junk products
April 25, 2016
After reading “Have you tried Junkfood.app” by Dustin Senos, I had similar thoughts on the subject that I wanted to share. Are we connecting or disconnecting the world with the new technology? Is it just a transformation of the way we communicate and what sort of transformation is it? Is it for better or for worse? Finally, why is it happening this way such that we end up with so many junk products.
Let’s look at the bigger picture and think about origins of junk food and junk tech. While junk-products bring some value in return, they compromise on quality. In the case of junk food the price is our long term health and environmental sustainability. However with junk tech, the price is often our time, privacy, security and control. Lately, we see creators shamelessly build addictive products that hook people like a fish in the sea. However, do we really want products that have such low quality? Or are we forced to accept them with no better option in sight? Why do companies continue to make such harmful products?
We can not solve our problems with the same level of thinking that created them. — Albert Einstein
These questions and problems don’t stem from the way humans prefer to communicate but in the modern economic system. This system promotes the production of harmful and addictive foods as well as low quality, attention seeking, manipulative digital products. If there is anything to blame, it’s the endless pursuit for more profit while often disregarding human benefit. This also has ethical and legal implications. Think about how many laws were broken in pursuit of the bottom line and to circumvent laws by bribes. Many corporations such as McDonalds and Walmart are a great example of this and are often sued. Unfortunately, most junk products can’t abruptly be replaced, as many people depend on them. Is it really the future we want to live in?
The Best Is yet to Come
If we change the broken system, we should be able to improve product quality and discourage the creation of junk. By removing the profit incentive, we’ll create a new system that values quality above everything else.
Is blaming the monetary system a real solution? The Venus Project presents an alternative vision of a sustainable new civilization unlike any social system experiment ever done. On top of removing monetary barriers, the project aims to solve unemployment, violent crime, and poverty. It also discusses automation of labor, over-population and a decline in stability of the Earth’s ecosystems. For this to happen it implies a straightforward redesign of our culture and social structure. Of course the project might not be the perfect solution but it’s definitely better than what we have now and its ideas are worth considering. You can learn more about it in the book “The Best That Money Can’t Buy”, by Jacque Fresco.
Earth is abundant with plentiful resources. Our practice of rationing resources through monetary control is no longer relevant and is counter-productive to our survival. — Jacque Fresco
I’m not saying that we can’t create high-value and sustainable products in the current system, but it’s certainly harder to do so. I think we as engineers, designers and makers should understand and consider a more ethical approach when it comes to building products. We can start with extending our human rights to our digital rights all while protecting our future. Perhaps with time we can regulate some of the current products while building better alternatives. At this point, I believe that we’ve tried to build far too many junk products and should stop and reflect before we make another one.
I invite you to think, discuss and share solutions to build a better future.


Blond Bombshell Hannah Palmer Is Drop-Dead Gorgeous In Floral Dress With Plunging Neckline
November 23, 2019
Blond Bombshell Hannah Palmer Is Drop-Dead Gorgeous In Floral Dress With Plunging Neckline
Hannah Palmer gave her one million Instagram followers something to get excited about on Saturday when she uploaded a photo in which she looked drop-dead gorgeous in floral dress with a plunging neckline.
The photo captured Hannah sitting in a room on a carpeted floor with a mustard colored wall behind her. The angle showed her from the knees up. She sat on one hip with both of her legs extended to the side while leaning slightly forward on both of her hands. The pose put her cleavage and hourglass figure on display. The picture also accentuated the beauty’s toned thighs and smooth skin.
Hannah’s outfit looked like the perfect summer dress, as it was sleeveless and appeared to made out of lightweight fabric. It was impossible to tell just how long the dress was because she was sitting down. However, it appeared to have some kind of slit either on the side or in the front and a ruffle along the bottom of the bustline. The blond bombshell looked feminine and sexy as she sat with the dress pulled up to the top of her thighs.
Hannah’s makeup was flawless and included dark brows, thick lashes and a pink gloss on her full lips. Her hair was parted on the side and fell down in loose curls over her shoulders. Her blue eyes popped as she gave the camera a sultry look.
Hannah kept the caption short, simply mentioning that the dress came from fashion brand Revolve.
Her followers gushed over how pretty she looked.
“Just absolutely gorgeous and perfect. So beautiful and sexy,” one admirer wrote.
“So stunning. Beautiful is an understatement,” commented a second follower.
Loading...
“You are always a bright ray of sunlight on a cold and rainy day!!!” said a third fan.
“You would make my dreams come true…” joked a fourth admirer.
Hannah seems to leave many of her followers breathless. Over the past several months, her Instagram following has grown to one million, and it is likely to continue growing if she continues to share sexy photos.
The beauty seems to know what her fans like to see — which seems to be plenty of skin. From skimpy bathing suits to slinky dresses, Hannah doesn’t seem to mind showing of her figure. She recently thrilled her fans when she wore a tiny yellow, polka dot bikini. Whatever she wears, her fans can always count on her looking fabulous.


Sunny Leone, Rannvijay Can't Hold Their Excitement as They See Pizza Infront of Her, Former Looks Hot on Sets of Sliptsvilla
Sunny Leone, Rannvijay Are All Watery-mouth Seeing Pizzas in front of them - See Pics.
Bollywood actor and Splitsvilla 12 host Sunny Leone often shares pictures from the sets of the reality show and her quirky antics. Earlier today, she took to Instagram to flaunt her mid-riff abs in a trendy blue crop with ‘Bad Crew’ written on it teamed up with blue jeggings. However, it’s not her look that took our attention, it’s the way she looks at the numerous Pizzas kept in front of her on the table. Well, it will also make you go watery-mouth.
She has completed her look with sunglasses, braided hair, subtle makeup, a dash of lipstick and a pair of earrings. In the photo, even Rannvijay laughs his heart out looking at Sunny’s expressions.
Sharing the post, she wrote, “It wouldn’t be proper without pizza Outfit: @thedapperlady_ Sunglasses: @bellofox Styled by @hitendrakapopara Styling Asst @shiks_gupta25 & @sameerkatariya92 HMU @tomasmoucka @jeetihairtstylist. (sic)”
Take a look at the photos here:
Earlier, she has shared her pictures with her husband Daniel Weber as they go out on a date in Dubai and it was the mushiest picture of this weekend. Sunny Leone is in Dubai and wore a hot black and white dress. She completed her look with black high heels, subtle makeup, kohl in eyes, hot pink lip shade and kept her hair natural. While Daniel Weber is all suited up in black and looks hot as well.
Meanwhile, on the work front, Sunny will be next seen in comedy-horror film KokaKola. Her recent viral pictures from the sets of the film looked eerie as she opted for a ghost avatar and still managed to look sexy in a black tank top and shimmery tights. She will also be making her south cinema debut with Veeramadevi.
For breaking news and live news updates, like us on Facebook or follow us on Twitter and Instagram. Read more on Buzz Latest News on India.com.
Story Timeline
- 23 Nov 2019 Sunny Leone- Daniel Weber Give Couple Goals as They go on a Date
- 22 Nov 2019 Bollywood Hottie Sunny Leone Oozes Oomph in Sexy Black Monokini as She Strikes a Sultry Pose With Bikini Model...
- 21 Nov 2019 Sunny Leone Looks Smoking Hot as She Takes Grape Bath in a Tub on The Sets of Her Film - Watch Video
Comments - Join the Discussion


fun deleteDirectory(path: String): Unit
delete a complete directory
Parameters : the path of the directory to be deleted


Picture interception
-------------------- ### 图片格式说明 - 格式装换支持[jpg|gif|webp|png] ``` http://<IP_ADDRESS>:1010/image/img1.jpg_.webp ``` ``` location ~* ^(.+\.(jpg|jpeg|gif|png))_\.(jpg|jpeg|gif|png|webp)$ { ... rewrite_by_lua_file $document_root/format.lua; } ``` - 图片质量装换[jpg|gif|webp|png] ``` http://<IP_ADDRESS>:1010/image/img1.jpg_q90.webp ``` ``` location ~* ^(.+\.(jpg|jpeg|gif|png))_c(\d+)x(\d+)\.(jpg|jpeg|gif|png|webp)$ { ... rewrite_by_lua_file $document_root/quality.lua; } ``` - 图片缩放 ``` 1: ''填充后保证等比缩图 2: _ 等比缩图 3: ! 非等比缩图，按给定的参数缩图(缺点：长宽比会变化) 4: ^ 裁剪后保证等比缩图 (缺点：裁剪了图片的一部分) 5: > 只缩小不放大 6: $ 限制宽度，只缩小不放大(比如网页版图片用于手机版时) ``` ```<EMAIL_ADDRESS><EMAIL_ADDRESS>``` ``` location ~* ^(.+\.(jpg|jpeg|gif|png))_(\d+)@(\d+)x(\d+)\.(jpg|jpeg|gif|png|webp)$ { rewrite_by_lua_file $document_root/thumb.lua; } location ~* ^(.+\.(jpg|jpeg|gif|png))_(\d+)@(\d+)x(\d+)q(\d+)\.(jpg|jpeg|gif|png|webp)$ { rewrite_by_lua_file $document_root/thumb.lua; } ``` - 截图功能 ``` http://<IP_ADDRESS>:1010/image/img1.jpg_t100x100.jpg http://<IP_ADDRESS>:1010/image/img1.jpg_t100x100q90.jpg ``` ``` location ~* ^(.+\.(jpg|jpeg|gif|png))_t(\d+)x(\d+)\.(jpg|jpeg|gif|png|webp)$ rewrite_by_lua_file $document_root/tclip.lua; } location ~* ^(.+\.(jpg|jpeg|gif|png))_t(\d+)x(\d+)q(\d+)\.(jpg|jpeg|gif|png|webp)$ { rewrite_by_lua_file $document_root/tclip.lua; } ``` - 代理图片 ``` http://<IP_ADDRESS>:1010/(代理地址URI)_c100x100.jpg ``` ``` location ~* ^(.+\.(jpg|jpeg|gif|png))_c(\d+)x(\d+)\.(jpg|jpeg|gif|png|webp)$ { rewrite_by_lua_file $document_root/curl.lua; } location ~* ^(.+\.(jpg|jpeg|gif|png))_c(\d+)x(\d+)q(\d+)\.(jpg|jpeg|gif|png|webp)$ { rewrite_by_lua_file $document_root/curl.lua; } ``` - 固定格式 ``` http://<IP_ADDRESS>:1010/image/img1.jpg_f100x100.jpg ``` ``` location ~* ^(.+\.(jpg|jpeg|gif|png))_f(\d+)x(\d+)\.(jpg|jpeg|gif|png|webp)$ { rewrite_by_lua_file $document_root/thumb_fixed.lua; } location ~* ^(.+\.(jpg|jpeg|gif|png))_f(\d+)x(\d+)q(\d+)\.(jpg|jpeg|gif|png|webp)$ { rewrite_by_lua_file $document_root/thumb_fixed.lua; } ```


Steelers bench Mason Rudolph for Devlin Hodges after brutal start
by Justin TaschMason Rudolph’s whirlwind week-and-a-half ended up with him on the bench.
Ten days after being involved in a big Steelers-Browns brawl during which Myles Garrett took his helmet off and hit him with it, Rudolph was benched by Mike Tomlin early in the second quarter, with undrafted free agent Devlin Hodges taking over at quarterback.
The Steelers trailed the winless Bengals 7-3 at halftime, and after a three-and-out to begin the second half, Tomlin decided a change was necessary. Rudolph was 8-for-16 with 85 yards and an interception when he was yanked.
Hodges came in and promptly threw a 79-yard touchdown to James Washington to give Pittsburgh a 10-7 lead.
Rudolph has been starting for the Steelers since Ben Roethlisberger went down in Week 2 with a season-ending elbow injury. Rudolph was fined $50,000 for unsportsmanlike conduct after the brawl.


|
Deuersprech-Kompilierer
Der originale Deuersprech-Kompilierer
|
Öffentliche Methoden | |
| lalr_item (production prod, int pos, terminal_set look) throws internal_error | |
| lalr_item (production prod, terminal_set look) throws internal_error | |
| lalr_item (production prod) throws internal_error | |
| terminal_set | lookahead () |
| Stack | propagate_items () |
| void | add_propagate (lalr_item prop_to) |
| void | propagate_lookaheads (terminal_set incoming) throws internal_error |
| lalr_item | shift () throws internal_error |
| terminal_set | calc_lookahead (terminal_set lookahead_after) throws internal_error |
| boolean | lookahead_visible () throws internal_error |
| boolean | equals (lalr_item other) |
| boolean | equals (Object other) |
| int | hashCode () |
| String | toString () |
| production | the_production () |
| int | dot_pos () |
| boolean | dot_at_end () |
| symbol | symbol_after_dot () |
| non_terminal | dot_before_nt () |
| lr_item_core | shift_core () throws internal_error |
| boolean | core_equals (lr_item_core other) |
| boolean | equals (lr_item_core other) |
| int | core_hashCode () |
| String | to_simple_string () throws internal_error |
Geschützte Attribute | |
| terminal_set | _lookahead |
| Stack | _propagate_items |
| boolean | needs_propagation |
| production | _the_production |
| int | _dot_pos |
| int | _core_hash_cache |
| symbol | _symbol_after_dot = null |
This class represents an LALR item. Each LALR item consists of a production, a "dot" at a position within that production, and a set of lookahead symbols (terminal). (The first two of these parts are provide by the super class). An item is designed to represent a configuration that the parser may be in. For example, an item of the form:
[A ::= B * C d E , {a,b,c}]
indicates that the parser is in the middle of parsing the production
A ::= B C d E
that B has already been parsed, and that we will expect to see a lookahead of either a, b, or c once the complete RHS of this production has been found.
Items may initially be missing some items from their lookahead sets.
Links are maintained from each item to the set of items that would need to be updated if symbols are added to its lookahead set. During "lookahead propagation", we add symbols to various lookahead sets and propagate these changes across these dependency links as needed.
|
inline |
Full constructor.
| prod | the production for the item. |
| pos | the position of the "dot" within the production. |
| look | the set of lookahead symbols. |
|
inline |
Constructor with default position (dot at start).
| prod | the production for the item. |
| look | the set of lookahead symbols. |
|
inline |
Constructor with default position and empty lookahead set.
| prod | the production for the item. |
|
inline |
Add a new item to the set of items we propagate to.
|
inline |
Calculate lookahead representing symbols that could appear after the symbol that the dot is currently in front of. Note: this routine must not be invoked before first sets and nullability has been calculated for all non terminals.
|
inlineinherited |
Equality comparison for the core only. This is separate out because we need separate access in a super class.
|
inlineinherited |
Hash code for the core (separated so we keep non overridden version).
|
inlineinherited |
Is the dot at the end of the production?
|
inlineinherited |
Determine if we have a dot before a non terminal, and if so which one (return null or the non terminal).
|
inlineinherited |
The position of the "dot" – this indicates the part of the production that the marker is before, so 0 indicates a dot at the beginning of the RHS.
|
inline |
Equality comparison – here we only require the cores to be equal since we need to do sets of items based only on core equality (ignoring lookahead sets).
|
inlineinherited |
Equality comparison.
|
inline |
Generic equality comparison.
Erneute Implementation von java_cup.lr_item_core.
|
inline |
Return a hash code – here we only hash the core since we only test core matching in LALR items.
Erneute Implementation von java_cup.lr_item_core.
|
inline |
The lookahead symbols of the item.
|
inline |
Determine if everything from the symbol one beyond the dot all the way to the end of the right hand side is nullable. This would indicate that the lookahead of this item must be included in the lookaheads of all items produced as a closure of this item. Note: this routine should not be invoked until after first sets and nullability have been calculated for all non terminals.
|
inline |
Links to items that the lookahead needs to be propagated to
|
inline |
Propagate incoming lookaheads through this item to others need to be changed. @params incoming symbols to potentially be added to lookahead of this item.
|
inline |
Produce the new lalr_item that results from shifting the dot one position to the right.
|
inlineinherited |
Produce a new lr_item_core that results from shifting the dot one position to the right.
|
inlineinherited |
Return the symbol after the dot. If there is no symbol after the dot we return null.
|
inlineinherited |
The production for the item.
|
inlineinherited |
Convert to a string (separated out from toString() so we can call it from subclass that overrides toString()).
|
inline |
Convert to string.
Erneute Implementation von java_cup.lr_item_core.
|
protectedinherited |
Cache of the hash code.
|
protectedinherited |
The position of the "dot" – this indicates the part of the production that the marker is before, so 0 indicates a dot at the beginning of the RHS.
|
protected |
The lookahead symbols of the item.
|
protected |
Links to items that the lookahead needs to be propagated to.
|
protectedinherited |
Cache of symbol after the dot.
|
protectedinherited |
The production for the item.
|
protected |
Flag to indicate that this item needs to propagate its lookahead (whether it has changed or not).


Gateway
BOT
30-Nov-19 03:14 PM
[dscrd-hush] <BigLez> I drove a holden barina in australia, a pontiac solstice for a min here until my dad snatched it since he was the registree, and now this chevy aveo which is my first manual, and my first proper car. Like, that I own
[dscrd-hush] <Captain> Volvo's are so boring but indestructible
[dscrd-hush] <BigLez> I prefer this to the solstice, 2 seater convertable is p much unusable for me
[dscrd-hush] <Captain> nice, man I wish petrol was as cheap in the Netherlands as here in Australia
[dscrd-hush] <BigLez> how much per litre
[dscrd-hush] <Captain> we pay 2.85AUD per liter!
[dscrd-hush] <BigLez> jesus christ
[dscrd-hush] <heguli97> not with a big v8 they're not and even the 2.4 turbos are superfun on the snow, just wish there would be rear wheel drive models
(edited)
[dscrd-hush] <heguli97> 1.55 €/L here
[dscrd-hush] <BigLez> in america its a dollar a litre
[dscrd-hush] <Privatoshi> We drive so much more
[dscrd-hush] <Captain> yeah but still wouldn't drive a volvo
[dscrd-hush] <Privatoshi> We have to drive so much more lol
[dscrd-hush] <BigLez> and my car gets about 13kml
[dscrd-hush] <heguli97> we have 2 lol
[dscrd-hush] <BigLez> I can't imagine a manual in a city. first. first. first. first. first
[dscrd-hush] <Privatoshi> My first car got 45mpg
[dscrd-hush] <Captain> That doesn;t mean that petrol has to be expensive lol
[dscrd-hush] <BigLez> I get 30mpg customary mode
[dscrd-hush] <Captain> You just get used to it.  Alcohol addiciton is really fucked up
[dscrd-hush] <dukeleto> what about cryptocoins?
[dscrd-hush] <dukeleto> anybody ever work on those?
[dscrd-hush] <BigLez> too late, started and stopped multiple times. just the game man
[dscrd-hush] <BigLez> these camel collectors packs are epic
[dscrd-hush] <Privatoshi> Can we move this to #off_topic
[dscrd-hush] <Captain> yeah maybe better
[dscrd-hush] <Privatoshi> It's cool, just keep #general for crypto discussion
GitHub Gist: instantly share code, notes, and snippets.
[dscrd-hush] <Privatoshi> Hahaha that's cool
[dscrd-hush] <dukeleto> ___====-_ _-====___
_--~~~#####// ' ` \\#####~~~--_
-~##########// ( ) \\##########~-_
-############// |\^^/| \\############-
_~############// (O||O) \\############~_
~#############(( \\// ))#############~
-###############\\ (oo) //###############-
-#################\\ / `' \ //#################-
-###################\\/ () \//###################-
_#/|##########/\######( (()) )######/\##########|\#_
|/ |#/\#/\#/\/ \#/\##| \()/ |##/\#/ \/\#/\#/\#| \|
` |/ V V ` V )|| |()| ||( V ' V /\ \| '
` ` ` ` / | |()| | \ ' '<||> '
( | |()| | )\ /|/
__\ |__|()|__| /__\______/|/
(vvv(vvvv)(vvvv)vvv)______|/
[dscrd-hush] <Captain> noice
[dscrd-hush] <dukeleto> darn, discord messed it up a bit
[dscrd-hush] <Captain> looks good!
[dscrd-hush] <Captain> Doesn't look good xD
[dscrd-hush] <dukeleto> let's not try to paste any more ascii art here, discord will abuse it
[dscrd-hush] <dukeleto> We are getting super close to being on Google Play
[dscrd-hush] <dukeleto> been working on it for days
[dscrd-hush] <dukeleto> gosh, Google has so many hoops to jump thru
[dscrd-hush] <Captain> pff, so annoying haha
[dscrd-hush] <dukeleto> so I wan't y'all to know, many wheels are turning
[dscrd-hush] <dukeleto> it's hard to see from the outside, but they are
[dscrd-hush] <dukeleto> soon we should be in the Play store, if i can jump thru all the hoops and get them screenshots they want
[dscrd-hush] <dukeleto> currently screenshots are blocking us from being on Google Play
[dscrd-hush] <Captain> so that's the only thing left to get on google play?
[dscrd-hush] <dukeleto> it's the main blocker from getting our first release on Play
[dscrd-hush] <dukeleto> there are many things to do, but that is blocking us from our initial listing
[dscrd-hush] <Captain> can't you exclude tablet support to get it on google play?
[dscrd-hush] <Captain> if not that's quite weard


A class that simplifies touch event handling. More...
Public Member Functions | |
| EventHandler () | |
| A constructor. More... | |
| void | enableGesture (GestureType gesture) |
| The function enables a single gesture in the EventHandler. More... | |
| void | disableGesture (GestureType gesture) |
| The function disables a single gesture in the EventHandler. More... | |
| bool | userExit () |
| Function returns true if the user has pushed back button on his phone. More... | |
| Vector2 | readTapPoint () |
| This function is deprecated. More... | |
| Event | readEvent () |
| The function handles implemented and enabled gestures and places the gesture data in the dataVector variable which can be retrieved using the getDataVector() function. More... | |
Protected Attributes | |
| List< GestureType > | enabledGestures |
| List of enabled gestures. | |
A class that simplifies touch event handling.
Part of the utility partition.
Still in development...
|
inline |
A constructor.
Simply initializes class variables.
|
inline |
The function disables a single gesture in the EventHandler.
| gesture | the GestureType of the gesture you wish to disable |
|
inline |
The function enables a single gesture in the EventHandler.
Remember to enable all gestures you want to use.
| gesture | the GestureType of the gesture you wish to enable |
|
inline |
The function handles implemented and enabled gestures and places the gesture data in the dataVector variable which can be retrieved using the getDataVector() function.
Currently the following gestures are implemented: Tap, HorizontalDrag, Hold, VerticalDrag.
OUTDATED!
|
inline |
This function is deprecated.
Please use the readEventType() function instead. Returns the vector to the tapped point. Vector is a zero vector if there was no touch event.
|
inline |
Function returns true if the user has pushed back button on his phone.
| true | if user pressed the back button |


Engagement Solutions: Customer Journey
Credit Card Fraud Verification - An Omni-Channel Process
Customers
Transactions
First Name:
Last Name:
Email:
Phone:
Preference:
Email
SMS
Both
Date:
Merchant:
Amount:


This example uses the orignal JavaScript invocation method and will round all 4 corners of the example DIV applying a 20 pixel radius while preserving a 3 pixel white border. The DIV has fluid height and width.
This example uses the orignal JavaScript invocation method and will round all 4 corners of the example DIV applying a 20 pixel radius while preserving the background image. The DIV has fixed height and width.
This example uses the orignal JavaScript invocation method and will round all 4 corners of the example DIV applying a 15 pixel radius while preserving the background image and a 5 pixel black border. The DIV has fixed height and width.
This example is the same as example 1 but uses the new CSS invocation method. The example uses native border-radius support if available in the browser, otherwise uses curvyCorners. Until all the modern browsers support CSS3 syntax, you must enter all three border-radius CSS rules as shown in the example.
This shows a number of examples using the CSS invocation method, including fluid-width rounded tabs and the dynamic redrawing available as from beta 2.0.1.
This example uses the new CSS invocation method and will round all 4 corners of the example DIV applying a 20 pixel radius while preserving left and right 3px white border and top and bottom 3px green border. The DIV has fluid height and width.
Thanks to Simó Albert, curvyCorners can now handle corners of different non-zero radii at top and bottom while preserving an image background. This example gives a comprehensive illustration.


Python Finland is the local user group in Finland and Scandinavia area. Python Finland has about hundred active members. Our organization was founded in 2011 in order to promote Python knowledge, usage and education in Finland. Our main activity is the annual PyCon Finland event which gathers together Python activists for learning, networking and sprinting. PyCon Finland is a part of the international PyCon conference program.
We are contacting you as your organization is using and promoting Python technology and therefore you might be interested in sponsoring the PyCon Finland event. The two day event will take place in Espoo 22. - 23.10.2012. The first day of the event is for presentations and the second day is reserved for sprinting of Python related topics. In the evening of the first day there will be a dinner event for the participants.
To make it possible for everyone to participate in the event we would like to keep the ticket price as low as possible. In this we need your support. As an exchange for sponsoring PyCon Finland we offer your company high value visibility during and before the event.
Last year’s Pycon Finland 2011 had 130 participants from six different countries. Based on the 2011 conference feedback survey 93% of participants consider participating this year.
We are offering three different sponsor packages
Gold Sponsor Package
Top visibility on the event web site, programme and stage. Four tickets to the event. An option to have own booth for product presentations, recruitment and marketing. Toast during the social event.
The main sponsor has a guaranteed seminar presentation slot and can suggest a sprint topic for the second day.
- Premium visibility on the stage
- A conference stand
- Logo in the brochure brochure and on the website
- Guaranteed speaker slot
- Toast in the dinner event
- Choice for a sprint topic, advertised in web and in the brochure
- Short recruitment pitch at the event during the lightning talks
- 4 corporate tickets
Silver Sponsor Package
This is an affordable option for corporations heavily invested in Python and who are looking to promote their organization among Python developers.
- A conference stand
- Logo in the brochure, logo on the website
- Short recruitment pitch at the event during lightning talks
- 2 corporate tickets
Bronze Sponsor Package
For companies interest in supporting Python community.
- Logo on the website
- Logo in the brochure
- Short recruitment pitch at the event during lightning talks
- 1 corporate ticket
More information:


Popular PP extruder , perfect for labs, small enterprises; updated for a bigger screw and motor.
Type:
Extruder
Version:
4.3
Status:
Tested
License
CERN Open Source Hardware License
Authors
Type
Single Screw
Weight
110 kg
Power (W)
5 kW
Voltage
380V or 220V
Amperage
16A
Input Flake Size
Small
Screw diameter
30mm
Length of screw (mm)
900 mm
Effective screw length
600 mm
Rated Motor Power
3 kW
Motor
- Rated Motor output Torque
109 Nm
- Rated Motor output speed
263 RPM
- Heating zones
3
Heating power: max.
2 kW
| Part Nr. | Description | Configuration |
|---|---|---|
| 1 | Extrusion Hopper | Stainless 2mm |
| 2 | Screw Shield | Stainless 2mm |
| 3 | Heatbands | 7x 300W Brass |
| 4 | Screw & Shield Support Mount | |
| 5 | Nozzle | |
| 6 | Motor | 1480RPM | 3Kw | Supports 220V | 380V |
| 7 | Reducer | 1:10 |
| 8 | Motor Flange | 160mm diameter | 8x M10 bolts |
| 9 | Barrel Flange | 100mm diameter | 8x M8 bolts |
| 10 | Bearing Housing | |
| 11 | Extrusion Screw | 30mm diameter |
| 12 | Power Switch Motor | Contactor |
| 13 | Emergency Switch | |
| 14 | VFD Panel | |
| 15 | Feed Zone PID (Temperatur Controller) | Inkbird 100 VH |
| 16 | Mixing Zone PID (Temperatur Controller) | Inkbird 100 VH |
| 17 | Nozzle Zone PID (Temperatur Controller) | Inkbird 100 VH |
| 18 | Power Switch Heating | Contactor |
| 19 | Direction Switch | |
| 20 | Baseplate | 80cm x 15mm x 200mm |
Product Resources
Instagram | Github (open source files) | EMail | Facebook | Wiki | Community map
Discord - Support Chat (pre-sales, community) | Telefon (Whatsapp, English, French, German, Spanish, Catalan)


A prototypical relative clause (RC) modifies a nominal that is understood to fulfill some grammatical role in the RC. The head is said to be “extracted” from the RC. Occasionally the head may be another clause rather than a nominal; this special case will be discussed below.
In the basic dependency representation, the main predicate of the prototypical (that is, adnominal) RC attaches to the head as acl:relcl
(if a language has relative clauses, it should use the :relcl
subtype to distinguish relative clauses from other adnominal clauses).
This is shown in the example on the left.
In the enhanced dependency layer, there is an additional dependency in the opposite direction to indicate the role from which the head was “extracted”.
The relativizer can be understood as an anaphor whose antecedent is the head of the relative clause. Not all languages use a relativizer.
Even in English, the relativizer is optional in some contexts, as in the object relativization in the examples above.
Basic UD (left) analyzes the relativizer, if present, as filling a role in the RC. Specifically:
- Pronominal relativizers (that, which, who, what, etc.) are nominals and fill roles such as subject, object, or oblique.1
- Adverbial relativizers (where, when, why, how, etc.) attach as advmod within the RC.
- A possessive pronominal relativizer (whose) modifies a nominal (subject, object, oblique modifier) within the RC the same way as a normal possessive modifier would, i.e., depending on language, it can be nmod:poss, det:poss, nmod or det.
- A relative determiner (which) may modify another noun within the RC via the det relation.
    In such cases no enhanced relation should be added from its parent to the
head noun (because they are the same node). We should only add a nsubj
relation from the antecedent
to the nsubj
of the relative clause (and remove the corresponding nsubj
relation between the
relative pronoun and the subject).
DZ: This example and explanation is taken from our documentation of enhanced dependencies, where it was added after issue #531.    One with a relativizer, like (3), is called a nonreduced relative clause.
Relative Markers
In some languages, the relative clause is marked by a morpheme that does not represent any argument within the relative clause; it is thus not a pronoun, and not a relativizer in the sense described above. For example, the de morpheme in Chinese marks the preceding clause as a relative clause. It does not represent the shared argument within the RC; that argument is either realized by zero if it is in a core function, or represented by a personal pronoun (他 tā “he” in the second example; examples from Dixon vol. 2, p. 3303).
- [zh] 你给我邮来的信一半都是英文。 Nǐ gěi wǒ yóu lái de xìn yībàn dōu shì yīngwén. “Half of the letters you send to me are in English.”
- [zh] 我给他送书的人是我弟弟。 Wǒ gěi tā sòng shū de rén shì wǒ dìdì.  .  .  .  . PUNCT _ _ 10 punct _ _
|
The relative marker may also be a bound morpheme. In Dyirbal, a relative clause is marked by relative suffix -ŋu replacing the tense suffix on the RC verb (Dixon vol. 2, p. 323).
- [dbl] Jani manigu budilŋaŋu banagañu. “John, who had got the money, returned.”
(lit.    Participial clauses (people living in glass houses; students given high marks) are not considered relative clauses in English, they are ordinary adnominal clauses (acl), or even adjectival modifiers (amod) if the participle is tagged ADJ.
Note that the above distinction is not universal, as some languages do not distinguish finite and non-finite verb forms.
  _ PUNCT _ _ 2 punct _ _
|
Semantically, relative clauses may be restrictive (helping to narrow a set of referents), or ascriptive (adding detail about a referent that has already been identified):
- Restrictive
- I rented the movie which you bought (as opposed to some other one).
- Ascriptive
- I introduced myself to John, who promptly forgot my name.
- I rented the movie, which you bought (as opposed to renting).
The restrictive/ascriptive distinction does not affect the UD analysis: all RCs are analyzed with the acl:relcl
relation.
The antecedent of an ascriptive relative clause may be even a clause (rather than a nominal):
- I tried to explain myself – which was a bad idea.
DZ: Did we reach a consensus about clausal antecedents?
There is the fundamental issue that acl
must depend on a nominal.   _ PUNCT _ _ 2 punct _ _
|
Case-marked Relativizers
If required by the syntactic relations within the RC, the relativizer bears case markers (morphological or adpositional), just as if the position were filled with a full nominal.
- [cs] nebezpečí, kterého se bojíte “danger which you fear” (lit. danger, which.
Gen
yourself you.fear) - [cs] nebezpečí, kterému čelíte “danger which you are facing” (lit. danger, which.
Dat
you.face) - [cs] nebezpečí, které překonáte “danger which you overcome” (lit. danger, which.
Acc
you.overcome) - [cs] nebezpečí, o kterém nevíte “danger which you do not know about” (lit. danger, about which.
Loc
you.not.know) - [cs] nebezpečí, se kterým se vyrovnáte “danger which you cope with” (lit. danger, with which.
Ins
yourself you.cope)
The enhanced relations include deep syntactic relations. Therefore, in case marking languages the enhanced
dependencies may link verb dependents that are not in the expected morphological case, required by surface syntax.
In the following Czech example, the relative modifier phrase v němž “in which” is obligatorily in the locative
case form (Case=Loc
). If it were a main clause, the referent dům “house” would have to be in locative too:
v domě “in house”.
- Non-RC paraphrase: The house is on sale; you said you wanted to live in that house.
The basic UD analysis depends on whether it is a reduced or nonreduced RC.  Such clauses are typically complements of verbs of saying or knowing (I don’t know where he lives) but they may also depend on a similar nominal. Compare
- [cs] dům, kde bydlel Hemingway “the house where Hemingway lived”
- [cs] otázka, kde bydlel Hemingway “the question of where Hemingway lived”
In the second example, kde bydlel Hemingway is an adnominal clause (acl) but not a relative clause. There is no coreference between otázka “question” and kde “where”. There is such coreference in the first example, hence the clause is relative there.
Language-specific guidelines must specify whether the wh-word is to be disambiguated between PronType=Int
and Rel
, or it can be PronType=Int,Rel
everywhere and the disambiguation is only at the syntactic level
between acl
and acl:relcl
.
Adverbial Clauses
Pronominal adverbs such as where, when, how, why frequently introduce adverbial clauses (advcl).
They can also introduce non-relative adnominal modifier clauses (acl) similarly providing time/place/manner information.
In the following example, when is an interrogative/relative adverb (PronType=Int,Rel
) but the adnominal clause
it introduces is not relative because there is no coreference between headlines and when (but cf.
the time when Nixon resigned, here it would be a relative clause).
   The ceremony where/when we became citizens can be interpreted as an RC if the bestowal
of citizenship happened during the ceremony (in which interpretation4, thus acl:relcl
).
But the ceremony when we became citizens could be used to refer to a particular ceremony held around the time
of becoming a citizen, as opposed to some other ceremony held at some other time; the modifier can be fronted as
an advmod
within the higher clause: When we became citizens, the ceremony…. This is the acl
interpretation.
Interrogative/Relative Adverbs versus Subordinating Conjunctions
Relative adverbs (ADV PronType=Int,Rel
) should not be confused with subordinating conjunctions (SCONJ).
The former are constituents in the sentence, they refer to circumstances such as location or time of an event.
The latter just mark a clause as such a constituent, but they are not constituents themselves. The problem is
that some words in some languages seem to oscillate between the two categories. For example, the English word when
is clearly an adverb in interrogative contexts: When did he arrive? Like other English question words, it
can also be used as a relative adverb: That’s the moment when you’ll realize what really matters to you.
In this sentence, when is a constituent of the relative clause and although it is an adverb (and not a nominal),
it is coreferential with the nominal argument in the main clause, the moment. However, in other contexts
the reference to a particular time period seems to be weakened and the adverb seems to be in the process of
grammaticalization towards a subordinating conjunction, somewhat similar to if (which is never an adverb):
These companies find it harder to recruit skilled graduates when financial firms can pay higher salaries.
DZ: One option is to say that when is always ADV
and never SCONJ
,
despite possible grammaticalization. Another option is to say that when it introduces an adverbial clause, it is
SCONJ
, otherwise it is ADV
. Adverbial clauses indeed can be introduced by subordinating conjunctions, such
as if.
Other languages do not have this problem, as they use distinct words for the adverb and the subordinating
conjunction. For example, the possible Czech translations of when are either kdy (ADV
) or když (SCONJ
):
- [cs] Neodpověděl mi na otázku, kdy hodlá přijet. “He didn’t answer my question of when he was going to come.”
- [cs] V okamžiku, kdy přijede, jsme připraveni mu předvést výsledky. “The moment he arrives, we are ready to show him the results.”
- [cs] Nepřijel, když jsme to nejvíc potřebovali. “He didn’t come when we needed it most.”
- [cs] Když budete mít výsledky, přijedu také. “If you have results, I will come too.”
Free Relatives
Free relatives are nominals containing a relative clause where the relativizer is “fused” with the head of the whole nominal; in other words, there is no explicit modified noun, and its position is filled with a relative pronoun which would otherwise serve as the relativizer (thus these constructions are also known as fused relatives). The relative pronoun is deemed as the head of the construction, thereby receiving a dependency relation reflective of its function in the higher clause, and the rest of the relative clause depends on it as an acl:relcl.
The enhanced representation of a free relative construction will not have a ref
relation between the
parent nominal and the relativizer because they are the same node.     PUNCT _ _ 3 punct _ _
|
DZ: In the above example, we have once again the problem
that a relative clause should not be a subtype of acl
because it does not modify a nominal. Here
it modifies an adverb (where), hence I went with advcl:relcl
.
Not all languages have free relatives in the same sense and extent as in English. In Czech, the corresponding construction will typically involve a demonstrative pronoun, which will be modified by a relative clause. The relative clause will have a relative pronoun, which will be case-marked as required within the relative clause, while the case marking of the demonstrative is driven by the requirements of the main clause.
- [cs] Teď se budeme věnovat tomu, čeho se bojíš. “Let’s now attend to what you are afraid of.” (The demonstrative tomu is in the dative, as required by the predicate věnovat se of the main clause. The relative čeho is in the genitive, as required by the predicate bát se of the relative clause. If we swap the functions and make the main clause relative, the forms of the pronouns will change: Teď se bojíš toho, čemu se věnujeme.   PUNCT _ _ 4 punct _ Gloss=.
|
In rare cases,5 the demonstrative can be omitted in Czech. Even when the demonstrative is omitted, the relative pronoun is considered a part of the relative clause, not of the main clause. First, the relative pronoun still follows the case requirements of the relative clause. This is not easy to observe due to limited contexts in which the demonstrative is omitted and to case syncretism, yet it is so. Second, according to the Czech grammar, the relative clause is obligatorily delimited by a comma from the main clause in writing, and the comma is invariably put before the relative pronoun, not after it.
- [cs] Má (to), co si zaslouží. “He has what he deserves.” (main clause accusative, relative clause accusative)
- [cs] Dostanou (to), co jim patří. “They get what belongs to them.” (main clause accusative, relative clause nominative)
- [cs] Lidé ničili (to), čeho se jim dostalo jako božího daru. “People destroyed what they received as a gift from God.” (main clause accusative, relative clause genitive)
DZ: The recommended analysis of the Czech examples is not yet final.
Since the relative pronoun does not belong to the main clause, we cannot analyze the Czech examples the same way as free relatives in English. So what are the options?
- The “relative” clause is actually an object clause, i.e., the direct object of the main clause is realized as a clause. Consequently, it is attached via ccomp to the predicate of the main clause. This is the approach that is employed in the current conversion of the Czech data. Note that it would be difficult to depart from this approach, as this construction is similar to complement clauses: Vím, co si zaslouží. “I know what he deserves.” The drawback of this approach is that there is no trace of the relativity of the clause, and of the coreference between the argument of the relative/complement clause and the omitted argument of the main clause.
- There is an elided demonstrative to in the main clause; we use the standard UD treatment of
ellipsis. That is, we promote the relative clause to the position of the elided pronoun. Unlike
in the previous option, the relation between the predicates of the main and the relative clauses
will be obj, not ccomp. There is still the drawback that the construction cannot be
recognized as involving a relative clause. An additional drawback is that one has to distinguish
between complement clauses (
ccomp
) and promoted relative clauses (obj
), which may be difficult for annotators, and for large corpora such as Czech PDT it is not tractable. - The elided demonstrative could be handled similarly to how UD currently handles gapping constructions. The relative clause would be attached to the predicate of the main clause via the obj relation (not orphan, because it is not a link between two orphaned dependents). In the enhanced representation, there would be an empty node representing the demonstrative to, and all the expected relations would be restored as if the demonstrative were overtly present. The objection that we cannot reliably detect these cases in corpora like Czech PDT still holds. The solution would also require a modification of the guidelines regarding the usage of empty nodes (but there is a separate proposal for such an extension). On the other hand, the similarity of the construction to relative clauses would now be recognizable, and so would be the coreference between the missing argument of the main clause and the visible argument of the relative clause.   PUNCT _ _ 1 punct _ Gloss=.
|
In the Czech examples so far, the elided argument always functioned as a direct object in the main clause. There is another pattern where the common argument acts as a subject both in the main clause and in the relative clause. There are thus no case conflicts, as both positions require the nominative. These examples resemble the English free relatives more closely than the previous ones.6
- [cs] Kdo neokrádá stát, okrádá svou rodinu. “He who does not rob the state robs his family.”
- [cs] Kdo kupoval později, může dnes své akcie prodat dráž. “Whoever bought later can sell their shares more expensive today.”
- [cs] Kdo se bojí, nesmí do lesa. “He that is afraid of leaves must not come in a forest.”
- [cs] Co se vleče, neuteče. “All is not lost that is delayed.”
These relative clausal subjects are different from situational clausal subjects in that they represent an entity rather than a situation (event or state). An example of a situational clausal subject would be Že je nevinen, bylo jasně prokázáno. “That he was innocent was clearly proven.” Nevertheless, relative clausal subjects are still clausal subjects, and there is no reason why they could not be attached via the csubj relation. In particular, there is no indication that the relative pronoun belongs to the main clause (rather than to the RC).
☞ TODO: Correlatives in Indian languages.
☞ TODO: Add examples from languages where the fullest representation of the common argument is in the relative clause and there is nothing in the main clause.
Clefts
Relative clauses also occur in the analysis of cleft constructions.   PUNCT _ _ 3 punct _ _
|
The Czech equivalent uses a demonstrative pronoun instead of a free relative: Jan je ten, komu chceme pomoct. “Jan is who we want to help.”   PUNCT _ _ 3 punct _ _
|
Notes
-
The Cambridge Grammar of the English Language (Huddleston and Pullum, 2002) considers that at the beginning of a relative clause to be a subordinator. UD adopts the traditional analysis of that as a relative pronoun roughly interchangeable with which etc. ↩
-
The Cambridge Grammar of the English Language (Huddleston and Pullum, 2002), pp. 1043–44. ↩
-
R. M. W. Dixon. 2013 (first published 2010). Basic Linguistic Theory. Oxford University Press, Oxford, UK. ISBN 978-0-19-957108-6. ↩
-
Or, formally, wherein. ↩
-
The necessary condition for omissibility of the demonstrative seems to be that the main clause require it to be in accusative or nominative (to). In most cases, the relative clause also requires the relative pronoun to be in accusative or nominative (co), although PDT contains one example where the relative is in the genitive (Lidé ničili (to), čeho se jim dostalo jako božího daru. “People destroyed what they received as a gift from God.”) For a query that partially filters examples of omitted demonstrative in UD_Czech-PDT 2.9, see http://hdl.handle.net/11346/PMLTQ-XWFZ. ↩
-
See http://hdl.handle.net/11346/PMLTQ-IXY8 for similar examples in UD Czech PDT 2.9. ↩


My research on health-aware planning under uncertainty, package delivery using quadrotors, and augmented reality for cyber-physical systems has been featured in a number of technology news websites.
It was on the MIT homepage twice, once on Aug 21, 2014 and again on Oct 29, 2014.
MIT News, Wired, Boston Globe, BetaBoston, Yahoo news, Factor-Tech, GigaOM, VentureBeat, Economic times, RedOrbit
PHYS.org, ACM Tech News, Science News, Live Science
Laurens Drone Blog, TechSwarm, Gizmag, Electronics Weekly DYI Drones I, DroneLife.com,
CnBeta (Chinese), CDR (Czech), Terra (Chile), Intisari (Indenosian), Tech (Chinese)
MIT news office, IEEE Spectrum, Gizmag, GE Foundation, Augmented Reality Trends


We're sorry but this application doesn't work properly without JavaScript enabled. Please enable it to continue.


Notebooks
Story: The |ßkururu (|xabbe, or 'Kritje')
The |ßkururu (|xabbe, or 'Kritje')
Title
The |ßkururu (|xabbe, or 'Kritje')
Collection
Summary
The Grillus Capensis, or 'Kritje', [or |ßkururu] roasted and mixed with puffader poison and so-called 'boomgift'. In the Katkop dialect, by ≠kásin (L IV.-2. 3516-3519).
Comments
1) An insert pasted inside the front cover of Book IV-2 contains notes on a poisoned arrow made by ≠kasin from |ßkururu. The opposite page features a note on how to put down the translation of |xam names (wherever they are known); a correction of a list of |xam medicines for Mr Buchanan, dated December 1873, 2) See also Mixing arrow poisons, 3) This story is found in Book IV-2
Contributors
Date
15 November 1873
Categories
Custom and daily life, Artefact and dress
Keywords
insect (which is poisonous) , insect (and making of poison) , insect (the names of) , insect (its proper name is Grillus Capensis) , insect (called |ßkururu, Kritje, or |xabbe) , insect (its Koranna name) , insect (its Dutch name) , insect (its |xam name) , poisons (the making of) , poisons (called Boom Gift) , poisons (from puffadder and an insect called |ßkururu) , poisons (the names of) , poisons (the preparation and mixing of) , poisons (used in shooting game) , poisons (and ≠kasin) , poisons (used on arrows) , poisons (that kill quickly) , poisons (|ßkururu roasted and mixed with puffadder poison and Boom gift) , weapons (poisoned arrows as) , weapons (used for shooting game) , weapons (and poisons) , weapons (and the |ßkururu, |xabbe, or 'Kritje')
Story Pages
3516-3519


WITNESS LIST Human Services Committee April 10, 2003-12:00A HB 1869 For: Jefferson, Larry (Texas Children Hosp. Baylor College of Medicine) Longoria, Celcilia (Harris County Attorney) HB 2222 On: Levine, Ken (Sunset Commission) Ninaud, Christina (Sunset Advisory Board) HB 2420 For: Caldwell, Jim (Texas Silver Haired Legislature) Dyer, Heather (Texas Service Advocacy Coalition) Higgins, Carlos (Self and Texas Silvered Haired Legislature) Rich, Sid (Texas Association of Residential Care Communities) HB 2724 For: Ivy, Floyd (Texas Licensed Child Care Assn) McIntire, Thomas (Texas Licensed Child Care Assn) Pewitt, Bill (Texas Licensed Child Care Assn) On: Lutz, Judy (TX Department) HB 2866 For: Ivy, Floyd (Tx Licensed Child Care Assn TLCCA) McIntire, Thomas (Texas Licensed Child Care Assn) Pewitt, Bill (Texas Licensed Child Care Assn) On: Lutz, Judy (TX Dept. of Protective and Regulatory Services) HB 2886 For: Baerissie, Charles (Self) Hamlin, Jim (Self) Johnson, Elvera (Self) Sanchez, Gilbert (Self) Turley, Gail (County & District Clerks' Assoc. of Texas) HB 3200 For: Maxey, Glen (Brookwood Community) Against: Rich, Sid (Texas Assoc. of Residential Care Communities) On: Gold, Marc (TX Department on Human Services) HB 3315 For: Ivy, Floyd (Texas Licensed Child Care Care Association TLCCA) McIntire, Thomas (TX Licensed Child Care Association TLCCA) Pewitt, Bill (Texas Licensed Child Care Assn) HB 3355 For: McCall, Mark (eMedical Files) Singer, Wayne (eMedical Files) On: Counihan, Will (TX Comptroller of Public Account) Hagert, Celia (Center for Public Policy Priorities) SB 261 For: Remmert, Lyndal (TIBH Industries) On: Gonzalez, Venessa (Sunset Commission) SB 579 On: Counihan, Will (TX Comptrollers of Public Account) Morris, Cathy (TDPRS)


RIP Millennnium War Aigis on Nutaku February 12th, 2015 - December 26th, 2017
Millennnium War Aigis on Nutaku


food made with love
welcome to our lovely food city...we offer the best services around including delivery to a pin point locations or fairly cheap We thank you for your visitation to the TURIZZMO pizza inn you hungry?...well worry no more...click th link below... for any complaints frell free to leave a coment on the message tab...THANK YOU!
WELCOME !!


django-dumpslow demo
Artificially slow page
A page that calls
time.sleep(2)
A page that calls
time.sleep(5)


API
Using the primary API, you can place a request as such:
curl https://html.haus/api/elements/abbr.json
You will receive a result that looks like this:
{
"name": "abbr",
"description": "Abbreviation element represents an acronym",
"code": "https://html.haus/api/elements/abbr.html",
"url": "https://html.haus/reference.html#abbr"
}
You can use references to code to also request the sample HTML:
curl https://html.haus/api/elements/abbr.html
A comprehensive list of all elements supported is available here:
curl https://html.haus/api/index.json
JavaScript
Ultimately, this means you can use JavaScript fetch functions to query the API using this formula:
https://html.haus/api/elements/${element-name}.json
https://html.haus/api/elements/${element-name}.html
Here's an example using the standard fetch() function:
fetch('https://html.haus/api/elements/${element-name}.json').then(function (response) {
// The API call was successful!
return response.json();
}).then(function (html) {
// This is the JSON from our response
console.log(html);
}).catch(function (err) {
// There was an error
console.warn('Something went wrong.', err);
});


@paul32269456 It's not necessarily going to be a "new chain", as opposed to a protocol upgrade for the current chain. It's definitely not going to be a new coin. In any case, in answer to your question, we're striving for 2021, but it'll be hard to meet that deadline!


'Mumbai Trip'
Mumbai trip is one of my favourite trip ever. I go with my real elder brother and one of younger cousin. The experience was so good, we travelled to so many places in mumbai. The images showmn above are clicked by me. The one thing that i learnt from this trip is that, Living in these type of rush cities is way much harder than to live in small towns and villages. I still love Indore.
'Bike Transformation'
This is the half transformed Suzuki bike which i was modifying with my frineds when i was in my drop after 12th. and this was one of my favourite activities that days.
I learnt so many things during the whole process, my friend was a known diploma student who have a some knowledge about bikes and we decided to transform this one. Swipe to see the complete modified bike.
'Bike Transformation'
Finally our bike was on road and we ride so much on it, it was buttery smooth with an amazing engine sound, It costs around 45000 plus some more little expenditures to make this one.
The whole process is captured by me and i the video is posted on youtube on a channel name "ALL TIME VLOGGER".
'Scrap Boat Crafting'
It was my friend's birthday his name is RAJAT. We olanned to make a saftey type boat made up of plastic bottles, and we decided to test it on my friend's birthday. Our lockdown gets some adventurous part. Do not try this if you don't know to swim. We had wnough number of swimmers along with us.
Get In Touch
Contact Details
I hope! you find my personal profile so much exciting. I am so glad if you get in touch with me by filling this small and easy form and reviewing this whole.


Doge Social Network
Home
Profile
Friends
Welcome to Doge Social Network
Here you can find friends or stalk strangers.
The Doge Social Network does not take any reponsibility for the information found.


“The world as we have created it is a process of our thinking. It cannot be changed without changing our thinking.”
by Albert Einstein
(about)
“It is our choices, Harry, that show what we truly are, far more than our abilities.”
by J.K. Rowling
(about)
“There are only two ways to live your life. One is as though nothing is a miracle. The other is as though everything is a miracle.”
by Albert Einstein
(about)
“The person, be it gentleman or lady, who has not pleasure in a good novel, must be intolerably stupid.”
by Jane Austen
(about)
“Imperfection is beauty, madness is genius and it's better to be absolutely ridiculous than absolutely boring.”
by Marilyn Monroe
(about)
“Try not to become a man of success. Rather become a man of value.”
by Albert Einstein
(about)
“It is better to be hated for what you are than to be loved for what you are not.”
by André Gide
(about)
“I have not failed. I've just found 10,000 ways that won't work.”
by Thomas A. Edison
(about)
“A woman is like a tea bag; you never know how strong it is until it's in hot water.”
by Eleanor Roosevelt
(about)
“A day without sunshine is like, you know, night.”
by Steve Martin
(about)


This is a list of
people whose ideas on how and where the world is - and should be
- evolving, may be of interest to those who want to understand
the frontier of human thought, at least according to my opinion. Originally I created it
to give credit to people who influenced my ideas but as it often happens the
project took a life of its own. Please enjoy these resources. It
would be great if you could support this site or help me improve it. Now
you can also take part in the discussions on the Visionaries
mailing list.
I apologize if my
selection of thinkers is not sufficiently balanced. In Russia, reading most of them could get
me into Big Trouble. I hope to fix these gaps now - with your
help.
You may also want
to take part in the efforts that should lead to distribution of
visionary ideas based on merit rather
than cute facade or the interests of social power structures.
If you have any opinion on these people, the URLs of their pages, or have other candidates who you think should be listed here, please mail them to me! (I do not promise to include them, however. They may be wonderful people, but I may not understand - or agree with - their work, or think that they belong more to Great Scientists or Activists than Visionaries, etc.)
The selection process is getting more and more difficult for me, as the amount of suggestions I receive has outgrown both my knowledge of important people and the amount of "free" time I can devote to maintaining this page.
I am working on a
formal set of criteria for accepting and classifying nominations,
and would like to turn this page - already with about 60,000
visitors a year - can turn into an objective public resource. For
that, I would need assistance and funding. Please let me know if
you can help in any way. Meanwhile, you can at least click on a
few ads on this site, to add a few cents to its development.
If you are interested please read the the draft proposal for the Thinkers site
development and suggest your comments.
I have absolutely no time to answer criticisms of the current state of the site coming from people who haven't read the proposal, and are not suggesting any help. Sorry.
Navigation Key for the Thinkers Pages:
| Books by this thinker | ||
| Other web pages (live search) | ||
| Current usenet discussions |
Thank You!


---
layout: null
section-type: about
title: About
---
## About
Abhinaya is a VC at M25. She double majored in Finance and Mathematical Computer Science at Univeristy of Illinois at Chicago. While she was there, she led the finance student organization and co-founded the Portfolio Management Team which is now one of the largest organizations in the college. She was also a part of numerous programs to help increase digital literacy in the community by partnering with Google and Blue1647. When she finds a problem, she seeks to solve it by taking action. She started series on Youtube, where she showcases up-and-coming entrepreneurs by documenting their day. She grew up in India and suburbs of Chicago. Currently, she lives in Little Italy where you can find her exploring this beautiful city with her camera.
More here.
{% include social-buttons.html %}


vignettes/non-microbiome_data.Rmd
non-microbiome_data.Rmd
To apply a microshades palette color to a plot, use
scale_fill_manual()
.
The following examples use the palmerpenguins dataset to show how to apply the color palettes to non-microbiome data.
This first example examines the number of each species of penguin. The different color shades represent the island that the penguin was located.
library(palmerpenguins)
library(microshades)
library(dplyr)
library("ggplot2")
data(package = 'palmerpenguins')
ggplot(penguins, aes(species, fill = island)) + geom_bar() +
scale_fill_manual(values = microshades_palette("micro_green"))
This next example examines the flipper length to body mass measurements between different penguin species. To add an enhanced detail to the visual, a combination variable was created in this example that contains the species and year. The different base colors represent the species and the shades represent the year that the data was collected.
penguins_mod <- penguins %>% mutate(combination_variable = paste(species, year, sep = "-"))
hex_values <-c(microshades_palette("micro_green", 3, lightest = FALSE),
microshades_palette("micro_blue", 3, lightest = FALSE),
microshades_palette("micro_purple", 3, lightest = FALSE))
ggplot(penguins_mod, aes(x = flipper_length_mm,
y = body_mass_g)) +
geom_point(aes(color = combination_variable)) +
theme_minimal() +
scale_color_manual(values = hex_values, na.translate = FALSE) +
labs(title = "Penguin flipper and body mass",
x = "Flipper length (mm)",
y = "Body mass (g)",
color = "Penguin Species and Year") +
theme(legend.position = "bottom",
legend.background = element_rect(fill = "white", color = NA),
plot.title.position = "plot",
plot.caption = element_text(hjust = 0, face= "italic"),
plot.caption.position = "plot") +
facet_wrap(~species)
## Warning: Removed 2 rows containing missing values (`geom_point()`).
This last example examines the bill length to depth measurements between different penguin species. The combination variable generated for the previous example is used for this plot as well. The different base colors represent the species and the shades represent the year that the data was collected.
bill_len_dep <- ggplot(data = penguins_mod,
aes(x = bill_length_mm,
y = bill_depth_mm,
group = combination_variable)) +
geom_point(aes(color = combination_variable),
size = 3,
alpha = 0.8) +
geom_smooth(method = "lm", se = FALSE, aes(color = combination_variable)) +
theme_minimal() +
scale_color_manual(values = hex_values, na.translate = FALSE) +
labs(title = "Penguin bill dimensions",
x = "Bill length (mm)",
y = "Bill depth (mm)",
color = "Penguin species",
shape = "Penguin species") +
theme(legend.position = "right",
legend.background = element_rect(fill = "white", color = NA),
plot.title.position = "plot",
plot.caption = element_text(hjust = 0, face= "italic"),
plot.caption.position = "plot")
bill_len_dep
## `geom_smooth()` using formula = 'y ~ x'
## Warning: Removed 2 rows containing non-finite values (`stat_smooth()`).
## Warning: Removed 2 rows containing missing values (`geom_point()`).


NAME
grpc_get_error
- Returns the error code generated by the session.
SYNOPSIS
grpc_error_t grpc_get_error(grpc_sessionid_t session_id)
ARGUMENTS
grpc_sessionid_t session_id
- The session ID
DESCRIPTION
The grpc_get_error() function returns the error code that was generated in the session specified by
session ID.
This function is MT-safe.
RETURN VALUE
If successful, the error code is returned.
ERRORS
GRPC_NOT_INITIALIZED
- GRPC client is not initialized yet.
GRPC_INVALID_SESSION_ID
- Session ID is not valid.
last update : $Date: 2005/07/11 07:11:24 $


Objective:
The goal is to create median house price estimator for Boston city, using a Multiple Linear Regression Model build from scratch, applied on the “Boston Housing Dataset”. Then I will try to improve this estimator, using a Multiple Polynomial Regression Model.
I won’t explain theory here, only background basic equations needed for code understanding.
Table of contents
- Dataset
- Multiple Linear model definition
- Loss function definition
- Gradient definition
- Gradient descent algorithm
- Training the model on data
- Model evaluation
- Multiple Polynomial Regression
- Median houses prices Estimations
- Conclusion
Importing libraries
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import dataframe_image as dfi
import csv
%matplotlib inline
1.Dataset
Importing dataset
First we need to load the “Boston Housing Dataset” using sklearn datasets library:
from sklearn.datasets import load_boston
boston = load_boston()
boston.keys()
dict_keys(['data', 'target', 'feature_names', 'DESCR', 'filename'])
From these keys, we can get more informations about the data and construct a pandas dataframe !
print(boston.DESCR)
.. _boston_dataset:
Boston house prices dataset
---------------------------
**Data Set Characteristics:**
:Number of Instances: 506
:Number of Attributes: 13 numeric/categorical predictive. Median Value (attribute 14) is usually the target.
:Attribute Information (in order):
- CRIM per capita crime rate by town
- ZN proportion of residential land zoned for lots over 25,000 sq.ft.
- INDUS proportion of non-retail business acres per town
- CHAS Charles River dummy variable (= 1 if tract bounds river; 0 otherwise)
- NOX nitric oxides concentration (parts per 10 million)
- RM average number of rooms per dwelling
- AGE proportion of owner-occupied units built prior to 1940
- DIS weighted distances to five Boston employment centres
- RAD index of accessibility to radial highways
- TAX full-value property-tax rate per $$10,000
- PTRATIO pupil-teacher ratio by town
- B 1000(Bk - 0.63)^2 where Bk is the proportion of blacks by town
- LSTAT % lower status of the population
- MEDV Median value of owner-occupied homes in $$1000's
:Missing Attribute Values: None
:Creator: Harrison, D. and Rubinfeld, D.L.
This is a copy of UCI ML housing dataset.
https://archive.ics.uci.edu/ml/machine-learning-databases/housing/
This dataset was taken from the StatLib library which is maintained at Carnegie Mellon University.
The Boston house-price data of Harrison, D. and Rubinfeld, D.L. 'Hedonic
prices and the demand for clean air', J. Environ. Economics & Management,
vol.5, 81-102, 1978. Used in Belsley, Kuh & Welsch, 'Regression diagnostics
...', Wiley, 1980. N.B. Various transformations are used in the table on
pages 244-261 of the latter.
The Boston house-price data has been used in many machine learning papers that address regression
problems.
.. topic:: References
- Belsley, Kuh & Welsch, 'Regression diagnostics: Identifying Influential Data and Sources of Collinearity', Wiley, 1980. 244-261.
- Quinlan,R. (1993). Combining Instance-Based and Model-Based Learning. In Proceedings on the Tenth International Conference of Machine Learning, 236-243, University of Massachusetts, Amherst. Morgan Kaufmann.
The “13 numeric/categorical predictive” are the feature variables based on which we will predict the median value of houses “MEDV” … our target !
Dataframe construction
df = pd.DataFrame(boston.data, columns=boston.feature_names)
df['MEDV'] = boston.target # set the target as MEDV
Ok now let’s visualize our dataframe:
pd.options.display.float_format = '{:.2f}'.format
dfi.export(df.head(7), "img/boston_dataframe.png")
Basic informations about the dataset:
df.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 506 entries, 0 to 505
Data columns (total 14 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 CRIM 506 non-null float64
1 ZN 506 non-null float64
2 INDUS 506 non-null float64
3 CHAS 506 non-null float64
4 NOX 506 non-null float64
5 RM 506 non-null float64
6 AGE 506 non-null float64
7 DIS 506 non-null float64
8 RAD 506 non-null float64
9 TAX 506 non-null float64
10 PTRATIO 506 non-null float64
11 B 506 non-null float64
12 LSTAT 506 non-null float64
13 MEDV 506 non-null float64
dtypes: float64(14)
memory usage: 55.5 KB
One can see that our dataframe is composed of 14 columns and 506 entries (rows). All values are as float type and there is no null values.
Even more intersting statistical informations about our data:
dfi.export(df.describe(), "img/boston_dataframe_describe.png")
Outliers
An interesing fact on this dataset is about the max value of MEDV! From the original dataset description, we can read:
Variable #14 seems to be censored at 50.00 (corresponding to a median price of 50,000 Dollars); Censoring is suggested by the fact that the highest median price of exactly 50,000 Dollars is reported in 16 cases, while 15 cases have prices between 40,000 and 50,000 Dollars, with prices rounded to the nearest hundred. Harrison and Rubinfeld do not mention any censoring.
So let’s remove these problematic values where MEDV = 50.0 :
df = df[~(df['MEDV'] >= 50.0)]
Correlation matrix
Now we want to explore our data and see how our target is correlated to a feature or another.
correlation = df.corr()
fig = plt.figure(figsize=(13, 9))
mask = np.triu(np.ones(correlation.shape)).astype(bool)
sns.heatmap(correlation.round(2), mask=mask, annot=True, cmap='BrBG',
vmin=-1, vmax=1, center= 0, linewidths=2, linecolor='white')
plt.show()
Remember, our target is the median price MEDV ! So we need to read the last line of our table.
We can observe that the target is highly and positively correlated to the RM feature (the average number of rooms per dwelling) and it looks normal as the more a dwelling has rooms, the more its price is.
On the other hand, we see that the target is highly and negatively correlated to the LSTAT feature (% lower status of the population) … houses prices are lower when the amount of lower status people increase.
Given these observations, I will keep RM and LSTAT features for analysis as they are the two most correlated to our target.
Data visualization
# setting plots background color
plt.rcParams.update({'axes.facecolor':'#f8fafc'})
fig = plt.figure(figsize=(15, 5))
plt.subplot(121)
plt.scatter(df['RM'], df['MEDV'], c= 'yellowgreen', edgecolor='k', s=50)
plt.xlabel('Avg Nb Rooms', fontsize = 12), plt.ylabel('Median Price (1000$$)', fontsize = 12)
plt.title('Median Price v/s Avg Nb Rooms', fontsize = 15)
plt.subplot(122)
plt.scatter(df['LSTAT'], df['MEDV'], c= 'darkorange', edgecolor='k', s=50)
plt.xlabel('% Low Status', fontsize = 12), plt.ylabel('Median Price (1000$$)', fontsize = 12)
plt.title('Median Price v/s % Lower Status People', fontsize = 15)
plt.show()
Except for few points, the median price looks approximately linearly correlated to our features ! For a first approach, let’s consider the hypothesis of a linear correlation between the target MEDV and features RM and LSTAT.
3D data visualization
# interactive plot: %matplotlib notebook
# normal mode plot: %matplotlib inline
plt.rcParams.update({'axes.facecolor':'white'})
fig = plt.figure(figsize=(14, 14))
fig.suptitle('Dataset 3D Visualization', fontsize=20)
fig.subplots_adjust(top=1.2)
ax = fig.add_subplot(projection='3d')
ax.set_xlabel('Avg Nb Rooms', fontsize = 15)
ax.set_ylabel('% Low Status', fontsize = 15)
ax.set_zlabel('Median Price (1000$$)', fontsize = 15)
u1 = np.array(df['RM'])
u2 = np.array(df['LSTAT'])
v = np.array(df['MEDV'])
ax.scatter(u1, u2, v, color='lightcoral', edgecolor='k', s=50)
ax.elev, ax.azim = 5, -130
plt.show()
2.Multiple-Linear model definition
In statistics, multiple linear regression is a mathematical regression method extending simple Linear Regression to describe the variations of an endogenous variable associated with the variations of several exogenous variables.
For a given sequence of m observations, as we consider two features from our data
$${(x_{1 i}, x_{2 i}, y_i) \hspace{4mm}i=1 …, m}$$
$$ y_i=\beta_{0} +\beta_{1}.x_{1 i} +\beta_{2}.x_{2 i} + \epsilon_i $$
$$ Using \hspace{3mm}matrix \hspace{3mm}notations \hspace{3mm}x_1 = [x_{1 1}, x_{1 2}, …, x_{1 m}]^T \hspace{3mm}x_2 = [x_{2 1}, x_{2 2}, …, x_{2 m}]^T \hspace{3mm}$$
$$and \hspace{3mm} y = [y_1, y_2, …, y_m]^T$$
$$The \hspace{3mm}model \hspace{3mm}is:\hspace{3mm} y = X.\beta + \epsilon$$
$$Where\hspace{3mm} X = [1 \hspace{3mm} x_{1}\hspace{3mm} x_{2}] \hspace{3mm}and\hspace{3mm} \beta= [\beta_{0} \hspace{3mm}\beta_{1}\hspace{3mm}\beta_{2}]^T$$
Converting data into arrays
x1 = df['RM'].values.reshape(-1, 1)
x2 = df['LSTAT'].values.reshape(-1, 1)
y = df['MEDV'].values.reshape(-1, 1)
print(x1.shape, x2.shape, y.shape)
(490, 1) (490, 1) (490, 1)
Adding identity column vector to features:
X = np.hstack((x1, x2))
X = np.hstack((np.ones(x1.shape), X))
print(X[0:5])
[[1. 6.575 4.98 ]
[1. 6.421 9.14 ]
[1. 7.185 4.03 ]
[1. 6.998 2.94 ]
[1. 7.147 5.33 ]]
Defining model
def model(X, Beta):
return X.dot(Beta)
Parameters initialization
np.random.seed(50)
Beta = np.random.randn(3, 1)
print(Beta)
[[-1.56035211]
[-0.0309776 ]
[-0.62092842]]
Checking model’s initial state by visualizing the regression plane
%matplotlib inline
plt.rcParams.update({'axes.facecolor':'white'})
fig = plt.figure(figsize=(13, 13))
fig.suptitle('Initial State Regression Plane Visualization', fontsize=20)
fig.subplots_adjust(top=1.2)
ax = fig.add_subplot(projection='3d')
ax.set_xlabel('Avg Nb Rooms', fontsize = 15)
ax.set_ylabel('% Low Status', fontsize = 15)
ax.set_zlabel('Median Price (1000$$)', fontsize = 15)
# Dataset plot
u1 = np.array(df['RM'])
u2 = np.array(df['LSTAT'])
v = np.array(df['MEDV'])
ax.scatter(u1, u2, v, color='lightcoral', edgecolor='k', s=50)
# Hyperplane regression plot
u1 = np.linspace(0,9,10)
u2 = np.linspace(0,40,10)
u1, u2 = np.meshgrid(u1, u2)
v = Beta[0] + Beta[1]*u1 + Beta[2]*u2
ax.plot_surface(u1, u2, v, alpha=0.5, cmap='plasma', edgecolor='plum')
ax.elev, ax.azim = 5, -130
plt.show()
One clearly see on plot that the model is not fitted yet to our data !
3.Loss function : Mean Squared Error (MSE)
To measure the error of our model we define the Loss function as the mean of the squares of the residuals:
$$ J(\beta) = \frac{1}{m} \sum (y - X.\beta)^2 $$
def lossFunction(X, y, Beta):
m = y.shape[0]
return 1/(m) * np.sum((model(X, Beta) - y)**2)
Let’s check the initial Loss value:
lossFunction(X, y, Beta)
1015.5676625443134
4.Gradient definition
$$\frac{\partial J(\beta) }{\partial \beta} = - \frac{2}{m} X^T.(y - X.\beta)$$
But as we want to solve a minimization problem, we keep for calculations the gradient multiplied by -1:
def gradient(X, y, Beta):
m = y.shape[0]
return 2/m * X.T.dot(model(X, Beta) - y)
5.Gradient descent algorithm
$$\beta' = \beta - \alpha \frac{\partial J(\beta) }{\partial \beta}$$
def gradientDescent(X, y, Beta, learning_rate, n_iterations):
loss_history = np.zeros(n_iterations)
for i in range(n_iterations):
Beta = Beta - learning_rate * gradient(X, y, Beta)
loss_history[i] = lossFunction(X, y, Beta)
return Beta, loss_history
6.Training the model on data
First I define the hypermarameters:
N_ITERATIONS = 500
LEARNING_RATE = 0.001
Then I train the model on the data…
Final_Beta, loss_history = gradientDescent(X, y, Beta, LEARNING_RATE, N_ITERATIONS)
…so I can get the regression coefficients.
print(f"Intercept = {Final_Beta[0][0]:.2f}")
print(f"coefficient 1 = {Final_Beta[1][0]:.2f}")
print(f"coefficient 2 = {Final_Beta[2][0]:.2f}")
Intercept = -0.87
coefficient 1 = 4.78
coefficient 2 = -0.57
Let’s have a look on the Learning Curve:
plt.rcParams.update({'axes.facecolor':'#f8fafc'})
plt.figure(figsize=(10,6))
plt.plot(range(N_ITERATIONS), loss_history, c= 'purple')
plt.title('Learning curve', fontsize = 15)
plt.xlabel('Iterations', fontsize = 12)
plt.ylabel('Loss value', fontsize = 12)
plt.show()
7.Model evaluation
Regression plane visualization
Let’s create a 3D plot animation for better visualization:
from matplotlib import animation
plt.rcParams.update({'axes.facecolor':'white'})
fig = plt.figure(figsize=(13, 13))
ax = fig.add_subplot(projection='3d')
fig.suptitle('Final Regression Plane Visualization', fontsize=20)
fig.subplots_adjust(top=1.1)
ax.set_xlabel('Avg Nb Rooms', fontsize = 15)
ax.set_ylabel('% Low Status', fontsize = 15)
ax.set_zlabel('Median Price (1000$$)', fontsize = 15)
plt.close()
def init():
# Dataset plot
u1 = np.array(df['RM'])
u2 = np.array(df['LSTAT'])
v = np.array(df['MEDV'])
ax.scatter(u1, u2, v, color='lightcoral', edgecolor='k', s=50)
# Regression plane plot
u1 = np.linspace(0,9,20)
u2 = np.linspace(0,40,20)
u1, u2 = np.meshgrid(u1, u2)
v = Final_Beta[0] + Final_Beta[1]*u1 + Final_Beta[2]*u2
ax.plot_surface(u1, u2, v, alpha=0.3, cmap='plasma', edgecolor='plum')
return fig,
def animate(i):
ax.view_init(elev=10., azim=i)
return fig,
# Creating the animation
anim = animation.FuncAnimation(fig, animate, init_func=init,
frames=360, interval=40, blit=True)
# Saving the animation
anim.save('igm/animation1.gif', fps=25)
The regression plane seems to fit pretty good on median prices lower than 40000 Dollars, But not so good for higher values ! It fits badly as well for median prices where the percentage of low status people is high.
The model could be too simple to well modelize the data.
Coefficient of determination
Coefficient values between [0, 1]. Indicates the quality of the prediction.
$$ R^2 = 1 - \frac{\sum ((y_i - \hat{y_i})^2}{\sum ((y_i - \bar{y})^2)} $$
def determinationCoef(y, y_pred):
SSR = ((y - y_pred)**2).sum() # Residual sum of squares SSR
SST = ((y - y.mean())**2).sum() # Total sum of squares SST
return np.sqrt(1 - SSR/SST)
y_prediction = model(X, Final_Beta)
print(f"R2 = {determinationCoef(y, y_prediction):0.2f}")
R2 = 0.81
The R2 coefficient is quite high, but far from the maximum value.
This confirms what we can see on graphics: the model must be too simple… So let’s try to improve it !
8.Multiple Polynomial Regression
This time we will consider a non linear - polynomial correlation between the median price value and the percentage of lower status people feature.
Polynomial regression is a form of regression analysis in which the relationship between the independent variable x and the dependent variable y is modelled as an nth degree polynomial in x. Polynomial regression fits a nonlinear relationship between the value of x and the corresponding conditional mean of y. Although polynomial regression fits a nonlinear function of the data, as a statistical estimation problem it is linear, in the sense that the regression model is linear to the unknown parameters that are estimated from the data. For this reason, polynomial regression is considered to be a special case of multiple linear regression.
The regression model remains linear to the unknown parameters:
$$ y = X.\beta + \epsilon$$
… but polynomial regression fits a nonlinear function of the features:
$$ y_i=\beta_{0} +\beta_{1}.x_{1 i} +\beta_{2}.x_{2 i} +\beta_{3}.x_{1 i}.x_{2 i} +\beta_{4}.x_{2 i}^2 + \epsilon_i $$
Converting data into arrays
x1 = df['RM'].values.reshape(-1, 1)
x2 = df['LSTAT'].values.reshape(-1, 1)
y = df['MEDV'].values.reshape(-1, 1)
print(x1.shape, x2.shape, y.shape)
(490, 1) (490, 1) (490, 1)
Here we need to scale our data in order to avoid memory overflow !!
Calculations without scaling brings too high values …
I used the sklearn MinMaxScaler preprocessing to scale the data:
$$X_{scaled} = X_{std} * (max - min) + min$$
where
$$X_{std} = (X - X_{min}) / (X_{max} - X_{min})$$
from sklearn.preprocessing import MinMaxScaler
RM_scaler = MinMaxScaler([-1,1])
LSTAT_scaler = MinMaxScaler([-1,1])
MEDV_scaler = MinMaxScaler([-1,1])
x1 = RM_scaler.fit_transform(x1)
x2 = LSTAT_scaler.fit_transform(x2)
y = MEDV_scaler.fit_transform(y)
Now we need to add identity and non-linear terms column vector features:
$$X = [1 \hspace{3mm} x_1 \hspace{3mm} x_2 \hspace{3mm} x_1.x_2 \hspace{3mm} x_2^2]$$
X = np.hstack((x1, x2))
X = np.hstack((X, x1*x2))
X = np.hstack((X, x2**2))
X = np.hstack((np.ones(x1.shape), X))
print(X[0:5])
[[ 1. 0.15501054 -0.83328702 -0.12916827 0.69436726]
[ 1. 0.0959954 -0.6021117 -0.05779995 0.3625385 ]
[ 1. 0.3887718 -0.88607947 -0.34448271 0.78513682]
[ 1. 0.31711056 -0.94665185 -0.3001933 0.89614972]
[ 1. 0.37420962 -0.81383718 -0.3045457 0.66233095]]
Time for hyperparameters initialization:
np.random.seed(50)
Beta = np.random.randn(5, 1)
print(Beta)
[[-1.56035211]
[-0.0309776 ]
[-0.62092842]
[-1.46458049]
[ 1.41194612]]
Ok now we can check model’s initial state by visualizing the 3D regression surface
%matplotlib inline
plt.rcParams.update({'axes.facecolor':'white'})
fig = plt.figure(figsize=(13, 13))
fig.suptitle('Initial State Regression surface Visualization', fontsize=20)
fig.subplots_adjust(top=1.2)
ax = fig.add_subplot(projection='3d')
ax.set_xlabel('Scaled Avg Nb Rooms', fontsize = 15)
ax.set_ylabel('Scaled % Low Status', fontsize = 15)
ax.set_zlabel('Scaled Median Price', fontsize = 15)
# Dataset plot
ax.scatter(x1, x2, y, color='lightcoral', edgecolor='k', s=50)
# Regression surface plot
u1 = np.linspace(-1,1,20)
u2 = np.linspace(-1,1,20)
u1, u2 = np.meshgrid(u1, u2)
v = Beta[0] + Beta[1]*u1 + Beta[2]*u2 + Beta[3]* u1*u2 + Beta[4]* u2**2
ax.plot_surface(u1, u2, v, alpha=0.3, cmap='plasma', edgecolor='plum')
ax.elev, ax.azim = 10, -130
plt.show()
Perfect ! We can see that the regression surface is far from the dataset points. It’s time to train our polynomial regression model.
Let’s launch the train …
N_ITERATIONS = 50000
LEARNING_RATE = 0.01
Final_Beta, loss_history = gradientDescent(X, y, Beta, LEARNING_RATE, N_ITERATIONS)
print(Final_Beta)
[[-0.54169521]
[ 0.00731156]
[-0.62805316]
[-1.00386475]
[-0.05360365]]
… and visualize the updated regression surface !
%matplotlib inline
plt.rcParams.update({'axes.facecolor':'white'})
fig = plt.figure(figsize=(13, 13))
ax = fig.add_subplot(projection='3d')
fig.suptitle('Final Regression surface Visualization', fontsize=20)
fig.subplots_adjust(top=1.1)
ax.set_xlabel('Scaled Avg Nb Rooms', fontsize = 15)
ax.set_ylabel('Scaled % Low Status', fontsize = 15)
ax.set_zlabel('Scaled Median Price', fontsize = 15)
plt.close()
def init():
# Dataset plot
ax.scatter(x1, x2, y, color='lightcoral', edgecolor='k', s=50)
# Regression surface plot
u1 = np.linspace(-1,1,20).reshape(-1,1)
u2 = np.linspace(-1,1,20).reshape(-1,1)
u1, u2 = np.meshgrid(u1, u2)
v = Final_Beta[0] + Final_Beta[1]*u1 + Final_Beta[2]*u2 + Final_Beta[3]* u1*u2 + Final_Beta[4]* u2**2
ax.plot_surface(u1, u2, v, alpha=0.3, cmap='plasma', edgecolor ='plum')
return fig,
def animate(i):
ax.view_init(elev=10., azim=i)
return fig,
# Creating the animation
anim = animation.FuncAnimation(fig, animate, init_func=init,
frames=360, interval=40, blit=True)
# Saving the animation
anim.save('igm/animation2.gif', fps=25)
Great !! This regression surface fits our data much better than previously with the multiple linear regression model.
Coefficient of determination
y_prediction = model(X, Final_Beta)
print(f"R2 = {determinationCoef(y, y_prediction):0.2f}")
R2 = 0.87
We see that for this model, the coefficient of determination is really better, in addition to the fact that the regression surface adapts quite well to our data!
9. Median houses prices Estimations
Ok, now that we have a quite good model, let’s try to do what we are here for : make some estimations.
Imagine that new data incoming … we get new lines in our dataframe, and it reveals that:
import tabulate
data_new = {'RM': [4, 8], 'LSTAT': [35, 6], 'MEDV': ['estimation ?', 'estimation ?']}
df_new = pd.DataFrame(data=data_new)
print(df_new.to_markdown())
| | RM | LSTAT | MEDV |
|---:|-----:|--------:|:-------------|
| 0 | 4 | 35 | estimation ? |
| 1 | 8 | 6 | estimation ? |
Now, as it is our goal, we want to estimate the median price value (MEDV) for these new data!
So let’s convert our data into arrays:
x1_new_data = np.array([4, 8]).reshape(-1,1)
x2_new_data = np.array([30, 6]).reshape(-1,1)
To do the prediction calculation, we need to go in the scaled space !
x1_new = RM_scaler.transform(x1_new_data)
x2_new = LSTAT_scaler.transform(x2_new_data)
Then add identity and non-linear terms column vector to features as usual …
X = np.hstack((x1_new, x2_new))
X = np.hstack((X, x1_new*x2_new))
X = np.hstack((X, x2_new**2))
X = np.hstack((np.ones(x1_new.shape), X))
print(X)
[[ 1. -0.83176854 0.55709919 -0.46337758 0.31035951]
[ 1. 0.70109216 -0.77660461 -0.54447141 0.60311472]]
So we can estimate a scaled median price:
y_prediciton_scaled = model(X, Final_Beta)
… and go back to real values using the inverse scaling transformation !
y_prediciton = MEDV_scaler.inverse_transform(y_prediciton_scaled)
print(f"The estimated median price for (RM=4,LSTAT=35) is {y_prediciton[0][0]*1000:.0f} Dollars !")
print(f"The estimated median price for (RM=8,LSTAT=6) is {y_prediciton[1][0]*1000:.0f} Dollars !")
The estimated median price for (RM=4,LSTAT=35) is 17064 Dollars !
The estimated median price for (RM=8,LSTAT=6) is 37093 Dollars !
To finally report the estimated median price values on plots:
%matplotlib inline
plt.rcParams.update({'axes.facecolor':'white'})
fig = plt.figure(figsize=(15, 15))
fig.suptitle('Median Price Estimations', fontsize=20)
fig.subplots_adjust(top=1.4)
# VIEW 1
ax = fig.add_subplot(121, projection='3d')
ax.set_xlabel('Avg Nb Rooms', fontsize = 15)
ax.set_ylabel('% Low Status', fontsize = 15)
ax.set_zlabel('Median Price (1000$$)', fontsize = 15)
ax.elev, ax.azim = 8, -130
# Dataset plot
u1 = np.array(df['RM'])
u2 = np.array(df['LSTAT'])
v = np.array(df['MEDV'])
ax.scatter(u1, u2, v, color='lightcoral', edgecolor='k', s=50)
# Prediction plot
ax.scatter(x1_new_data[0], x2_new_data[0], y_prediciton[0][0], color='aqua', edgecolor='k', s=150)
ax.scatter(x1_new_data[1], x2_new_data[1], y_prediciton[1][0], color='yellow', edgecolor='k', s=150)
# VIEW 2
ax = fig.add_subplot(122, projection='3d')
ax.set_xlabel('Avg Nb Rooms', fontsize = 15)
ax.set_ylabel('% Low Status', fontsize = 15)
ax.set_zlabel('Median Price (1000$$)', fontsize = 15)
ax.elev, ax.azim = 25, -160
# Dataset plot
u1 = np.array(df['RM'])
u2 = np.array(df['LSTAT'])
v = np.array(df['MEDV'])
ax.scatter(u1, u2, v, color='lightcoral', edgecolor='k', s=50)
# Prediction plot
ax.scatter(x1_new_data[0], x2_new_data[0], y_prediciton[0][0], color='aqua', edgecolor='k', s=150)
ax.scatter(x1_new_data[1], x2_new_data[1], y_prediciton[1][0], color='yellow', edgecolor='k', s=150)
plt.show()
10.Conclusion
I built a multiple linear regression model from scratch to estimate the average house price from the Boston data set. The model was pretty good but needed to be improved … Then I built a multiple polynomial regression model to better fit the data, and this model gave even better results:
Multiple Linear regression model: R2 = 81
Multiple Polynomial regression model: R2 = 87
Now we have a tool which can help Boston City’s real estate agencies to estimate the median house price as a support for their business activity.


All the participants must be first registered here.
All the Teams must be first registered here.
The email ids used for registering at Pantheon18 and Capture Flag must be same.
The Teams registered for pantheon18 are the only ones allowed to participate in Capture The Flag.
Failing to adhere to the rules mentioned above, the teams would be disqualified.


Routing Traffic to Docker Services
By the end of this exercise, you should be able to:
- Route traffic to a Docker service from within the swarm using dnsrr DNS lookups
- Route traffic to a Docker service from outside the swarm using host port publishing
Configuring an Internally Routable Service
Create an overlay network
my_overlay
, or use the one you created in the last exercise.Create a service out of the
training/whoami-windows:latest
image; containers created from this image will respond with their container ID when receiving a web request on their port 5000.PS: node-0 Administrator> docker service create --name whoami ` --replicas=4 --network my_overlay ` --endpoint-mode dnsrr ` training/whoami-windows:latest
Create another service attached to the same network, which we'll use to attempt to communicate with your first service:
PS: node-0 Administrator> docker service create --name pinger ` --network my_overlay --replicas=4 ` microsoft/nanoserver ping <IP_ADDRESS> -t
Launch a powershell in one of your
pinger
containers (it doesn't matter which one or on which node). Then, probe DNS resolution for yourwhoami
service:PS: node-0 Administrator> docker container exec -it <container ID> powershell PS C:\> Resolve-DnsName -Name whoami Name Type TTL Section IPAddress ---- ---- --- ------- --------- whoami A 600 Answer <IP_ADDRESS> whoami A 600 Answer <IP_ADDRESS> whoami A 600 Answer <IP_ADDRESS> whoami A 600 Answer <IP_ADDRESS>
By launching the
whoami
service with the flag--endpoint-mode dnsrr
, a DNS lookup on the service namewhoami
returns all the A-records corresponding to that service name, one for each replica of that service.Try contacting a few of your
whoami
containers using the IPs you found above:PS C:\> (Invoke-WebRequest http://<container IP>:5000).Content I am 02FF20A20861
Try doing the same to resolve the DNS entry
pinger
:PS C:\> Resolve-DnsName -Name pinger Name Type TTL Section IPAddress ---- ---- --- ------- --------- pinger A 600 Answer <IP_ADDRESS>
The
pinger
service wasn't started with the--endpoint-mode dnsrr
flag, so its DNS resolution defaults tovip
, or the Virtual IP of the service as a whole (not of individual containers like we got for thewhoami
service). On Windows Server 1709+ (semi-annual Server channel), requests to a virtual IP such as this get load balanced by Docker to the containers managed by that service; this functionality is not available in Windows Server 2016, but is expected in Windows Server 2019.Exit your container, and use
docker service inspect pinger
to confirm the single IP the DNS entrypinger
resolved to is the virtual IP of the pinger service, and usedocker container inspect
on yourwhoami
containers to confirm their IPs match the IPs returned in the DNS lookup above.
Configuring an Externally Routable Service
Start a service using host mode port publishing:
PS: node-0 Administrator> docker service create --name iis --replicas=4 ` --publish mode=host,target=80 ` microsoft/iis
This will map port 80 inside each container managed by this service onto a random available port on the host, so traffic from the outside network can be forwarded to your containerized application.
Do
docker container ls
on a node that has one of theseiis
containers running on it. Under thePORTS
column in the resulting table, you should see something like<IP_ADDRESS>:20931->80/tcp
; in this case, Docker is forwarding traffic from the host port's 20931 to the container's port 80. Try visiting the iis landing page in your browser at: , and confirm that your containerized website is reachable.
Cleaning up
Remove all existing services, in preparation for future exercises:
PS: node-0 Administrator> docker service rm $(docker service ls -q)
Conclusion
In this exercise, we've explored the two main ways traffic gets routed to containerized applications on Windows: internal to the cluster, dnsrr routing resolves service names to a list of IPs of corresponding containers; it's up to you to load balance across these, and periodically check whether the list has changes (due to rescheduled containers or rescaled services). External to the cluster, host mode publishing maps a random host port onto a specified container port; it's up to you to then point your load balancer at the hosts and ports your application is running on.


Linear Discriminant Analysis
Example
Xtrain = randn(100,5);
labels = randi([1 3], [100 1]);
Xtest = randn(100,5);
lda = cv.LDA('NumComponents',3);
lda.compute(Xtrain, labels);
Y = lda.project(Xtest);
Xapprox = lda.reconstruct(Y);
|
|
addlistener |
Add listener for event. |
|
|
compute |
Compute the discriminants for data and labels. |
|
|
delete |
Destructor |
|
|
eq |
== (EQ) Test handle equality. |
|
|
findobj |
Find objects matching specified conditions. |
|
|
findprop |
Find property of MATLAB handle object. |
|
|
ge |
>= (GE) Greater than or equal relation for handles. |
|
|
gt |
> (GT) Greater than relation for handles. |
| Sealed
|
isvalid |
Test handle validity. |
|
|
le |
<= (LE) Less than or equal relation for handles. |
|
|
load |
Deserializes this object from a given filename. |
|
|
lt |
< (LT) Less than relation for handles. |
|
|
ne |
~= (NE) Not equal relation for handles. |
|
|
notify |
Notify listeners of event. |
|
|
project |
Projects samples into the LDA subspace. |
|
|
reconstruct |
Reconstructs projections from the LDA subspace. |
|
|
save |
Serializes this object to a given filename. |


You've Been Served - Virginia Fortune
Virginia Fortune is the general manager of both the 1878 and The Premium Club — Private Members’ Clubs at 3Arena.
“I’ve worked in hospitality for over 20 years. I fell into the industry unexpectedly , I was sitting at home ‘between’ jobs and answered an ad in the paper (old-school style) for a front of house manager at the old Point Theatre and I got the job with very little experience.
“I really wanted to be a vet but I landed in this business instead!
“I’m quite glad I did as 3Arena is a lot more exciting than any veterinary clinic that I have visited. No day is ever the same.
“My team are fantastic and together we have built great relationships with our members which is so important to the success of the private members’ clubs. So, although it wasn’t a choice necessarily, I’m very grateful for the career I have and that my years of hard work have paid off.
“My work day really depends on whether we have a show that evening or not. If we have a show, the office will be frantic and buzzing. There are clubs to open, ensuring they are spic and span, caterers to meet, staff briefs, table plans to check, last minute requests etc etc. Then it’s doors open and I’m on duty for the evening.
“On a non-show day we are all dealing with show announcements, member requests, ticket holds, preparations for the next show and a lot of other ad-hoc tasks that can’t be addressed when we have a run of shows on.
“Right now, I am working on my 2020 budget and also spending a lot of my time refurbishing the club spaces, which is never-ending really.
“We share a lift with the artists, so a particular highlight has to be being in the lift with a rock star quite a few times — it’s usually very unexpected and you need to pretend you don’t see them as it’s very uncool to even show that you are aware of their presence.
“A bizarre conversation with Jay Z in the lift (that can’t be repeated…) and running into Will Smith one evening (literally) are among the unusual things to surprise me at work.
“The best part of the job has to be the crew at 3Arena that I work with every day and definitely being trusted to work independently and lead a team.
“A brilliant team certainly helps!"
See www.the1878.ie and www.thepremiumclub.ie for more information.


Class Router
Router simplifies the setup of template routes (or better said: changes in the template routes).
It will check if a slug exists in the theme (or child theme), and if not, it will create addiotional
checks if it exists in the plugin 'template' directory. If so it will use this one, otherwise
WordPress will fall back to the default single/ archive pages.
If theme does no provide the following files:
- single-{slug}.php
- archive-(slug}.php
This will check the plugin/ theme if the file exists in this location and serves that file
- /templates/single-{slug}.php
- /templates/archive-{slug}.php
Methods summary
public
|
#
__construct( string $slug, string $coreFile )
The constructor of a route.
The constructor of a route.
Parameters
- $slug
- The slug to create a route for.
- $coreFile
- The FILE variable of the plugin/ theme location
|
public static
|
#
factory( string $slug, string $coreFile )
A factory to construct the Router
A factory to construct the Router
Parameters
- $slug
- The slug to create a route for.
- $coreFile
- The FILE variable of the plugin/ theme location
|
public
LengthOfRope\Treehouse\Router\Router
|
#
routeSingle( )
Setup a route for single pages.
Setup a route for single pages.
It will check if:
1. the current active theme has a template file for the given slug;
2. If not, it will check if the plugin requesting the route has a template file in the 'template' directory for the given slug;
3. As a last resort falls back to the default theme's single.php (or index.php)
Returns
|
public
LengthOfRope\Treehouse\Router\Router
|
#
routeArchive( )
Setup a route for archive pages.
Setup a route for archive pages.
It will check if:
1. the current active theme has a template file for the given slug;
2. If not, it will check if the plugin requesting the route has a template file in the 'template' directory for the given slug;
3. As a last resort falls back to the default theme's archive.php (or index.php)
Returns
|
public
LengthOfRope\Treehouse\Router\Router
|
#
routeTaxonomy( )
Setup a route for taxonomy pages.
Setup a route for taxonomy pages.
It will check if:
1. the current active theme has a template file for the given slug;
2. If not, it will check if the plugin requesting the route has a template file in the 'template' directory for the given slug;
3. As a last resort falls back to the default theme's taxonomy.php (or index.php)
Returns
|


Weather Dashboard
Pittsburgh
(09/14/2020)
Temperature: 75°F
Humidity: 86%
Wind Speed 3.2 MPH
UV Index:
1