Hi there,
I have a general question about voltage fluctuation and measurement accuracy. I noticed that the voltage in my house come from 210 V to 245 V, based on the house consumption (high consumption -> low voltage, low consumption -> high voltage) and I don't know if this behavior is normal. BTW, the measurement change as well as the house consumption changes. I have done this trial: I measured a light when the voltage was 230 V and the measurement was correct (103 Watt. I tested it using a multimeter). As the house consumption increases, then the measured consumption of the light increases as well, up to 115-120 Watts. Obviously, also the reverse appears.
I know that the error is very low, from 95 to 120 W, but I think that with high values the error increases.
The question is born because I have a pv system of 6 kWp and, sometimes, it measure 6500 - 6900 Watts.
Can you give me an explanation of that phenomena?
It seems that the firmware does not check the real Volts, but uses a standard measure.
PS: I use this firmware https://github.com/openenergymonitor/emonTxFirmware/tree/master/emonTxV3/RFM/emonTxV3.2/emonTxV3_2_continous_kwhtotals. I used also this https://github.com/openenergymonitor/emonTxFirmware/tree/master/emonTxV3/RFM/emonTxV3.2/emonTxV3_2_DiscreteSampling but the result is the same.
Therefore, I use the AC-AC adapter.
Thanks
Re: how to handle voltage fluctuation
Voltage fluctuations are quite normal. They result from the changing load on the supply system.
Every component of your public electricity supply, the generator, the transformers and the cables all the way to your lamp, has a property called "impedance". There will be two parts to this, a physical property of the metal itself, the resistance, and for transformers particularly there is also inductance because the wire is coiled up on an iron core inside to form windings. Together, these impede the flow of current and in doing so a voltage appears across them. It is this voltage that is lost in the supply and causes the voltage at your lamp to drop when the greatest load is on the system. You've probably noticed that the voltage is high when most people are not using electricity, for example late at night.
Now your lamp (if it is an incandescent tungsten filament lamp) has resistance, if you measure it with a multimeter you will get confused because the resistance depends on the temperature of the filament (and that changes from say 20°C when the lamp is off to around 2500°C when it is on, and the resistance hot will be about 12 × the resistance cold, so it is a bad example. But if you measure a water heater (a kettle) the resistance varies little, because the temperature change is much smaller. The current drawn by your kettle is directly proportional to voltage - it is known as "Ohms Law", and the power is proportional to both current and voltage. Therefore if your voltage increases by 10%, the current will increase by 10% also, and the power will increase by 21% (1.1 × 1.1 = 1.21).
Finally, your firmware does use the voltage measurement to compute the real power. If you look at the sketch, you can see it happening in line 634:
634 long instP_CT1 = filtV_div4_CT1 * filtI_div4_CT1;
because "instP" is the instantaneous power, "filtV" is the voltage and "filtI" is the current.
All this is very basic electrical theory and you will find plenty of information on the Web and in text books.
Re: how to handle voltage fluctuation
Hi Robert,
Thanks for the answer, it is very exhaustive.
So, if the (theoretical) power consumption of a light (or something else) is 100W it is not always equal. If the house voltage is high the overall power consumption is high as well. Am I correct?
Re: how to handle voltage fluctuation
That is (generally) correct.
There is one common exception: switched-mode power supplies such as you will find in your computer or TV. Those will probably be "constant power" because the power needed by the computer or TV does not change (or it changes, but not as a result of the mains voltage changing) and so the current will fall as the voltage rises. But these will be only a small part of your total load so overall you will see that the power consumption will be roughly proportional to voltage2.
Re: how to handle voltage fluctuation
Thanks Robert,
you are great! :)
Re: how to handle voltage fluctuation
That ohmic drop you see when your house is consuming 6kW will, all else being equal, turn into an ohmic rise of the same value when your house is exporting 6kW. If you live in an area with widespread rooftop solar like I do, it's more common to see the voltage peaks in the middle of the day and the troughs at night. In the chart below the vertical grid-lines represent midnight.
While everyone is at work and school there are a lot of empty houses dumping power out onto the grid, and that power might have to travel quite a ways before it finds a shopping centre, factory, school or office block to consume it. Around here it's not uncommon to have 11kV feeders running backwards in the middle of the day.
The question is born because I have a pv system of 6 kWp and, sometimes, it measure 6500 - 6900 Watts.
That's probably not directly related to grid voltage. I think a lot of inverters can go 10% over their rated output. I have a 3kW inverter and 4kW worth of panels and when the conditions are right I see it output 3.3kW.


Professional Presentation Designer
Professional graphics designer
Graphics & Design
Writing & Transcription
Business
Video & Animation
Try Design Point Pro
Unrivaled professionals, trusted and reliable.
Engr. DIV
Engr. TIO


| ID | {{resource?.id}} |
| Name | {{resource?.name}} |
| Created | {{resource?.created | date:'medium'}} |
| Updated | {{resource?.updated | date:'medium'}} |
| Version | {{resource?.version}} |
| Owner | {{resource?.owner?.name || resource?.owner?.username || "unknown"}} |
| Mimetype | {{resource?.mimetype}} |
| Filesize | {{resource?.file?.size}} |
| Uploaded | {{resource?.file?.uploaded | date:'medium'}} ({{resource?.file?.uploaded_by?.name || resource?.file?.uploaded_by?.username || "unknown"}}) |
| Downloads | {{resource?.download_count}} |
| Workflow | {{ (workflow | async)?.name }} |
| Entity | {{ (entity | async)?.name }} |
| Attributed To | {{ resource?.extras['attributedTo'] }} |
| Generated By | {{ g }} |
| {{ i == 0 ? "Generated From:" : ""}} | {{ d }} |


Version 0.0.1, September 19, 2018
Authors: Ali Shahid, Dan Huynh, Kobi Lee, Michael Pintur, Muzammil Elahi, Nick Marecek, Prayrit Khanna, Yousef Fahim
This section provides a detailed overview of our projects scheduling and logistics.
Reach is an android and web-based application which implements Google Maps API allowing users to advertise and locate events, parties and other social gatherings in their relative proximity. The objectives of this project is to provide users with an easy way to advertise or find events within their area.
Assumptions:
Constraints:
| no. | Deliverable | Deadline | Adjusted Deadline |
|---|---|---|---|
| 1 | SPMP (First Draft) | September 23, 2018 | - |
| 2 | Requirements (First Draft) | September 23, 2018 | - |
| - | Analysis | TBD | TBD |
| - | GUI Prototype | TBD | TBD |
| - | Design | TBD | TBD |
| - | Implementation | TBD | TBD |
| Date | Change |
| 2018/09/21 | Development of the SPMP. |
1. Course Website
2. IEEE Standard for SPMP
This section provides definitions and terms used through the SPMP to better understand it.
| Item | Definition |
| Google API | Google APIs is a set of application programming interfaces. These API's allow 3rd party apps to communicate with Google services included in the API's |
This section provides details to the project's overall organization and implementation framework.
The team has agreed on a democratic leadership style. If the majority votes, then the majority rules. This democratic style of leadership ensures that the majority of members' needs are satisfied, which in turn will result in a more productive team.
To organize a large team, members are split into seperate working categories. The categories include: Database, Front End
Back End (for both web and app), Design, Implementation, SQA, etc.
Furthermore, in order to ensure even workloads, members are only able to pick 3 categories at a time. A fair distribution of work, will ensure members are not overwhelmed with too many roles.
Finally, each Subgroup will have a "group admin" or "group representative" who will be responsible for keeping their group aware and following the standards all members agreed to set at the beginning of the project. As group representatives, they must meet once or twice a week with updates of new constraints, timelines, and commits.
| # | Role | Members |
| 1 | SRS Document | Bethel Adaghe, Jamie Omorodion, Joshua Varga, Morgenne Besenschek, Muzammil Elahi |
| 2 | Website Front End Development | Bethel Adaghe, Dan Huynh, Midusa Nadeswarathasan, Muzammil Elahi, Nick Marecek, Qiao Liu, Yingxu Zhao |
| 3 | Back End Development | James Robertson, Joshua Varga, Julius Fan, Kobi Lee, Michael CWJ, Morgenne Besenschek, Yousef Fahim |
| 4 | Database | Michael Pintur, Muzammil Elahi, Prayrit Khanna, Qiao Liu, Yingxu Zhao, Yousef Fahim |
| 5 | UML diagrams | Midusa Nadeswarathasan, Muzammil Elahi, Pranavy Perinparajah |
| 6 | Android Front End Development | Midusa Nadeswarathasan, Nick Marecek, Qiao Liu, Pranavy Perinparajah |
| 7 | Android Back End Development | Ali Shahid, Dustin Dugal, Julius Fan |
| 8 | SQA | All Members |
The objective of this project is to develop a web and android application that allows hosts to post events, and users to find those events using google maps platform. Our main priorities are securing funding in order to purchase access to the google API as well as setting up a mock up of our front end. Ultimately, we plan to finish all of our deliverables by the end of the term.
Risk 1: Misuse of the application, for example, fake party set-ups for other purposes.
Solutions:
i. In-depth terms of service clause which alleviates legal responsibility from us
ii. Report function will be implemented to circumvent this issue
iii. Cautionary message to warn users when looking at locations (Similar to Pokemon Go warning about not using the app while driving)
Risk 2: Server overload due to high traffic.
Solutions:
i. Application must be portable from server to server
ii. Queue system could be implemented preventing complete server overload, causing users to wait
Risk 3: Malicious use of app by hosts and/or users.
Solutions:
i. Rating system will be implemented so users/hosts who receive excessive reports will be flagged and potentially blocked from features in the application
ii. Ban systems in place in case of excessive reports, ranging from temporary bans to permanent bans
The following is being used for the development of the project.
Android Application Development: The code pertaining to the android application must be documented fully following the Javadocs format. Web Application Development: The code pertaining to the web application must be documented fully following the Javadocs format.


Mushrooms - P. cyanescens & P. cubensis
Ice Cream Computer, but no Ego Death
I'm not an 'experienced' tripper from the point of having had a lot of intense experiences, but I eat psilocybin mushrooms maybe once a month. Usually on Friday night.
Set: This evening, I am mentally in a good space. Aside from the usual concerns about money, my family is good and healthy, and I've successfully conducted a meeting for a youth group that my youngest son belongs to. These things always give me stress, although it's really 'no big deal.' I purchased a 12-pack of non-alcholic beer at the grocery store, so I have something to drink. I don't drink alcohol or smoke marijuana, so my system's pretty clean in that regard. All, in all, my 'set' is good. My plan is to make some tea after midnight, then go to bed and enjoy the dreams and vision.
Setting: At our suburban home, in the north-eastern USA, after a storm that has left about 21' of snow. Very cold outside. Everyone else is asleep in the house (7 puppies, two large dogs, four children, and my wife). My youngest son is sleeping in the master bed with my wife as he usually does on Friday. I'm sitting at the computer browsing and reading the New York Times.
Trip: I decide to mix two species. Because the wavy caps (psilocybe cyanescens) are extremely potent, I weigh out 0.8 grams of wavy caps and 0.6 grams of cubensis (stropharia strain). This doesn't sound like much but there are two considerations: 1) I am a lightweight, I don't take heroic trips *and* 2) I know from experience that these wavy caps are very strong.  The stropharia cubensis are typical strength. Both are bone-dry, so they're more potent on a per-gram basis than might be expected. But yeah, I know that 1.4 grams doesn't sound like much. Supply's not an issue, though, so I take what I need.
At about midnight, I brew the tea. I put the shrooms and a tea bag in a cup. The tea is apple spice flavor. I pour boiling water from the teapot onto the shrooms and teabag and let it sit for 10 minutes. Then I strain the mix after removing the teabag. I drink the tea about 12:10 am. In my opinion, 'tea is the only way to go.'
Effects: After 15 minutes, I feel like 'something's happening'. My stomach starts to churn a little bit, and I can feel the energy of the mushrooms begin to flow into my muscles. At 20 minutes, the tiny convulsions start. Not the tendon jump that I have experienced with Amanita Muscaria, mini-convulsions is about the best terminology for it, kind of like the shivers. I put a blanket over my shoulders, it's a little bit cold in the room, as well, considering that it's about 4 degrees farenheit outside. At 30 minutes, I go upstairs to brush my teeth and go to bed.
While I'm brushing my teeth, I can tell this will be a fairly intense trip, for me. I literally feel like I'm on autopilot when I'm brushing my teeth, rapidly and perfectly brushing. I look at a tibetian buddhist poster on the bathroom wall while taking a piss and it's not moving, so the visuals haven't begun at this point. But my perceptive center seems to be shifting. My point of view is moving around within my brain is the only way I can describe it.
After I lay in bed for a while, the effects begin to take hold. Firstly, there's the nearly overwhelming feeling that my mind is melting. The sensation that somehow, everything that I know will be lost, as the synaptic connections are erased. I 'know' this is not the case but it's somewhat disturbing. I can feel the psilocybin washing through my brain and as it does, the holographic representation within my head is distorting and 'melting.'
I sense that this is the threshold of what people refer to as 'ego death'. I'm fearful of this happening. I don't want to freak out and wake my son or my wife, since they don't know I'm tripping. So I continue to ride it out, and to reassure myself that the relatively light dose that I took ensures that I'll be able to maintain. Like I said, I'm a lightweight, and given my personal situation, I'm not ready at this point for 'ego death' or to go beyond a level 3-4 trip.
About 45 minutes after drinking the tea, the visions start. I remember from experience that I can control the trip at least to the extent of keeping it positive, so my fear begins to dissipate.
For me, the best visions occur after ingesting fresh wavy caps (psilocybe cyanescens). With fresh caps, lots of times I see the Green Man, with really beautiful organic visions. With dried wavy caps, for some reason, I have a different trip. The metaphor that creeps in is 'the Ice Cream Computer.'
The visions on these dry caps soon become extremely intense. In the dark, without my glasses, the objects in the room are all moving and swaying. My son and my wife are sleeping next to me, and when I look at my son, he looks 'normal' but I can sense my overwhelming love for him, and for my wife. But the visuals with my eyes open are getting pretty wild, so I close my eyes and get in a comfortable position in bed.
The CEV's are incredible. Three dimensional, incredibly intricate patterns, many colors but blues, purples and greens predominate. Moving, evolving, three dimensional patterns. The sense that 'these are structures/machines/technology/art?? that intelligent beings can create' is imparted upon me. The fear that these visions, as they pass through my mind, will wipe away my memories, returns, but passes. The visions are three dimensional, living, machines, folding and unfolding and evolving in continuous cosmic evolution. Incredible, raw intelligence. I have the feeling that the mushrooms open the mind and that external intelligence flowing through my brain. My normal thought patterns begin to distort, and it's a strange feeling to observe this happening, and again, I begin to wonder if it will be permanent. But that fear, too, passes.
These aren't any specific images, nothing recognizable, but fantastic, complex patterns. I remember when I was young, seeing CEV's after smoking marijuana or good hash. These visions are orders of magnitude beyond that.
The part that always amazes me is that the images are so consistent, although infinitely variable at the same time. It also seems to me that the wavy caps have their own character and psilocybe cubensis have theirs, although I haven't eaten enough of the stropharia cubensis to form an opinion about that.
I need to write some of these thoughts down at the time, sometime, because the experiences are so damn interesting and I feel, extremely beneficial to my overall mental health and outlook. I can't say that I've met external beings, or experienced ego death, or brought back specific knowledge, but the feeling I get, in these late night visions, is that there is indeed a beneficial intelligence and beauty that permeates the universe, including human beings. We don't perceive it all the time because if we did, it would be difficult to function in the day-to-day world. However, it is there, and the mushrooms, help me in my own life, to experience these aspects of reality.
I don't know if this is of much interest to the reader, but for me, this is fairly typical for a psilocybin trip. Originally, my plan for the evening was to take 2.4 grams of cubensis. However, I started to think that the wavy caps might be getting old, and decided to use some of them to supplement the cubes. Maybe next time, I'll go for the 2.4 gram cube trip. I'm curious at times, that the experiences that I have on mushrooms don't seem to be typical as compared to many of the reports that I read. However, for me, they're really a tool for relaxing my mind. In the relatively low doses that I take, I still maintain control as an observer. To be honest, I'm afraid to 'lose control' but at the same time, I feel that a good brainwashing every once in a while is truly a benefit to my health.
Peace
Slackwater Farmer
Experience Reports are the writings and opinions of the individual authors who submit them.
Some of the activities described are dangerous and/or illegal and none are recommended by Erowid.


Komodo
feed-github
Auto feed for all activities in GitHub. New notification as they happen in real-time.
100 messages
Before 05-Dec-19 12:00 AM
GitHub
BOT
25-Nov-19 02:46 PM
ca333
[KomodoPlatform/komodo] Pull request opened: #224 sync FSM
ca333
[KomodoPlatform/komodo] Pull request closed: #224 sync FSM
ca333
[komodo:FSM] 1000 new commits
`38a6226`
Syntax - jl777
`899e223`
Test - jl777
`a5f0729`
Fix error check - jl777
`011a4f9`
Prints - jl777
`6274db7`
Test - jl777
[komodo] ubuntu-18.04 CI failure on FSM
[komodo] Win Build failure on FSM
[komodo] macOS-latest CI on FSM
There are 1 failures, 0 warnings, and 0 notices.
[komodo] GitHub Actions checks failure on FSM
[komodo] macOS-latest CI success on FSM
[komodo] Win Build failure on FSM
tonymorony
[komodo:channelscc-tests-patch] 1 new commit
`2db5f41`
update channelsCC test - tonymorony
tonymorony
[KomodoPlatform/komodo] New branch created: channelscc-tests-patch
[komodo] ubuntu-18.04 CI failure on FSM
[komodo] GitHub Actions checks failure on FSM
tonymorony
[KomodoPlatform/komodo] Pull request opened: #225 update channelsCC test
GitHub
BOT
25-Nov-19 04:32 PM
ca333
[komodo:v0.5.0] 1 new commit
`e40f402`
use kmd metrics art - ca333
ca333
[komodo:v0.5.0] 1 new commit
`11316be`
bump client-version - ca333
tonymorony
[KomodoPlatform/komodo] Pull request closed: #225 update channelsCC test
tonymorony
[komodo:v0.5.0] 2 new commits
`2db5f41`
update channelsCC test - tonymorony
`a7ee9a4`
Merge pull request #225 from KomodoPlatform/cha... - tonymorony
tonymorony
[KomodoPlatform/komodo] Pull request review submitted: #222 v0.5.0
ca333
[KomodoPlatform/komodo] Pull request closed: #222 v0.5.0
ca333
[komodo:dev] 1 new commit
`b8212b1`
v0.5.0 (#222) - ca333
GitHub
BOT
25-Nov-19 06:29 PM
tonymorony
[komodo:dev] 1 new commit
`ce8952c`
temporary disabled one channelsCC test - tonymorony
GitHub
BOT
25-Nov-19 08:30 PM
ca333
[komodo:dev] 1 new commit
`6ebc140`
update heirCC - ca333
GitHub
BOT
25-Nov-19 08:49 PM
ca333
[komodo:dev] 1 new commit
`279d1e5`
update heirfund, heiradd, heirclaim - ca333
[komodo] ubuntu-18.04 CI cancelled on channelscc-tests-patch
[komodo] GitHub Actions checks failure on channelscc-tests-patch
GitHub
BOT
25-Nov-19 10:59 PM
ca333
[jl777/komodo] Pull request opened: #1762 v0.5.0
[komodo] macOS-latest CI success on dev
GitHub
BOT
25-Nov-19 11:32 PM
leto
[jl777/komodo] Pull request opened: #1763 Update libsodium URL. 1.0.15 is now unsupported
A Hush user just reported a build error and it was because the libsodium project moved 1.0.15 into an
unsupported/
directory.
[komodo] macOS-latest CI success on fixlibsodium
GitHub
BOT
25-Nov-19 11:59 PM
[komodo] Win Build success on dev
GitHub
BOT
26-Nov-19 12:26 AM
[komodo] Win Build success on fixlibsodium
GitHub
BOT
26-Nov-19 12:43 AM
ca333
[jl777/komodo] New comment on pull request #1763: Update libsodium URL. 1.0.15 is now unsupported
we upgraded to 1.0.18 yesterday @leto related to:
https://github.com/KomodoPlatform/komodo/pull/222/commits/5bb0bdffac7331e41baa40b563d342071df69110
https://github.com/KomodoPlatform/komodo/pull/222#commitcomment-36118405
https://github.com/zcash/zcash/issues/4238
leto
[jl777/komodo] New comment on pull request #1763: Update libsodium URL. 1.0.15 is now unsupported
@ca333 sounds good, I made this before I saw those. Hush has upgraded to 1.0.18 in a branch. Closing this
leto
[jl777/komodo] Pull request closed: #1763 Update libsodium URL. 1.0.15 is now unsupported
[komodo] ubuntu-18.04 CI success on dev
[komodo] GitHub Actions checks success on dev
GitHub
BOT
26-Nov-19 01:22 AM
[komodo] ubuntu-18.04 CI success on fixlibsodium
[komodo] GitHub Actions checks success on fixlibsodium
GitHub
BOT
26-Nov-19 01:28 AM
blackjok3rtt
[StakedNotary:blackjok3r] 2 new commits
`5693ee3`
de-spaggettii - blackjok3rtt
`db8ed13`
stats.py script using getNotarisationsForBlock RPC - blackjok3rtt
GitHub
BOT
26-Nov-19 01:36 AM
blackjok3rtt
[StakedNotary:blackjok3r] 1 new commit
`810e1da`
fix - blackjok3rtt
blackjok3rtt
[StakedNotary] Branch blackjok3r was force-pushed to
ec2750b
Compare changes
blackjok3rtt
[StakedNotary:blackjok3r] 1 new commit
`ca9f071`
fix - blackjok3rtt
GitHub
BOT
26-Nov-19 01:50 AM
blackjok3rtt
[StakedNotary:blackjok3r] 1 new commit
`85ea29f`
fix.. - blackjok3rtt
GitHub
BOT
26-Nov-19 02:00 AM
blackjok3rtt
[StakedNotary:blackjok3r] 1 new commit
`79bde4c`
fix! - blackjok3rtt
blackjok3rtt
[StakedNotary] Branch blackjok3r was force-pushed to
3a0ed71
Compare changes
blackjok3rtt
[StakedNotary:blackjok3r] 1 new commit
`e4166e8`
fix - blackjok3rtt
blackjok3rtt
[StakedNotary:blackjok3r] 1 new commit
`a54487f`
fix - blackjok3rtt
blackjok3rtt
[StakedNotary:blackjok3r] 1 new commit
`c8418c3`
... - blackjok3rtt
GitHub
BOT
26-Nov-19 02:15 AM
blackjok3rtt
[StakedNotary:blackjok3r] 1 new commit
`4925b05`
try - blackjok3rtt
blackjok3rtt
[StakedNotary:blackjok3r] 1 new commit
`ef5bc2a`
fix - blackjok3rtt
blackjok3rtt
[StakedNotary] Branch blackjok3r was force-pushed to
c7a2b32
Compare changes
blackjok3rtt
[StakedNotary:blackjok3r] 1 new commit
`ce9071f`
reverse sort - blackjok3rtt
GitHub
BOT
26-Nov-19 02:23 AM
siddhartha-crypto
[developer-docs:sidd] 1 new commit
`00c43e9`
retouch the user tutorial for pegs - siddhartha-crypto
GitHub
BOT
26-Nov-19 03:05 AM
blackjok3rtt
[StakedNotary:blackjok3r] 1 new commit
`f1cc042`
fix - blackjok3rtt
blackjok3rtt
[StakedNotary] Branch blackjok3r was force-pushed to
8b961bb
Compare changes
blackjok3rtt
[StakedNotary] Branch blackjok3r was force-pushed to
f3160a5
Compare changes
blackjok3rtt
[StakedNotary] Branch blackjok3r was force-pushed to
260e707
Compare changes
blackjok3rtt
[StakedNotary] Branch blackjok3r was force-pushed to
4d472e1
Compare changes
blackjok3rtt
[StakedNotary] Branch blackjok3r was force-pushed to
9b73e13
Compare changes
blackjok3rtt
[StakedNotary] Branch blackjok3r was force-pushed to
22941f1
Compare changes
blackjok3rtt
[StakedNotary] Branch blackjok3r was force-pushed to
6e7d633
Compare changes
blackjok3rtt
[StakedNotary] Branch blackjok3r was force-pushed to
0f7ed03
Compare changes
blackjok3rtt
[StakedNotary] Branch blackjok3r was force-pushed to
5cc0e15
Compare changes
blackjok3rtt
[StakedNotary] Branch blackjok3r was force-pushed to
4c446b4
Compare changes
blackjok3rtt
[StakedNotary] Branch blackjok3r was force-pushed to
888c92a
Compare changes
blackjok3rtt
[StakedNotary] Branch blackjok3r was force-pushed to
f42d2d8
Compare changes
GitHub
BOT
26-Nov-19 05:53 AM
blackjok3rtt
[StakedNotary:blackjok3r] 1 new commit
`abf7e5b`
fix - blackjok3rtt
blackjok3rtt
[StakedNotary] Branch blackjok3r was force-pushed to
fd0791b
Compare changes
blackjok3rtt
[StakedNotary] Branch blackjok3r was force-pushed to
898de5d
Compare changes
blackjok3rtt
[StakedNotary] Branch blackjok3r was force-pushed to
b2ca3cc
Compare changes
blackjok3rtt
[StakedNotary] Branch blackjok3r was force-pushed to
7af4d86
Compare changes
GitHub
BOT
26-Nov-19 06:25 AM
Alrighttt
[KomodoPlatform/atomicDEX-API] New comment on issue #302: Shared statistics
Have you considered implementing RPC calls to komodod that track swaps via the DEX fee address? I have some basic python scripts that show this is possible if anyone would like to see them.
GitHub
BOT
26-Nov-19 06:25 AM
blackjok3rtt
[StakedNotary] Branch blackjok3r was force-pushed to
db0bed0
Compare changes
blackjok3rtt
[StakedNotary] Branch blackjok3r was force-pushed to
112e676
Compare changes
GitHub
BOT
26-Nov-19 06:38 AM
blackjok3rtt
[StakedNotary] Branch blackjok3r was force-pushed to
dbcb94f
Compare changes
blackjok3rtt
[StakedNotary] Branch blackjok3r was force-pushed to
daf63f1
Compare changes
GitHub
BOT
26-Nov-19 06:46 AM
blackjok3rtt
[StakedNotary] Branch blackjok3r was force-pushed to
2c4bf20
Compare changes
blackjok3rtt
[StakedNotary] Branch blackjok3r was force-pushed to
c3097c6
Compare changes
blackjok3rtt
[StakedNotary] Branch blackjok3r was force-pushed to
cf8e65d
Compare changes
blackjok3rtt
[StakedNotary] Branch blackjok3r was force-pushed to
5f37593
Compare changes
blackjok3rtt
[StakedNotary] Branch blackjok3r was force-pushed to
545761a
Compare changes
blackjok3rtt
[StakedNotary] Branch blackjok3r was force-pushed to
df4fd8f
Compare changes
GitHub
BOT
26-Nov-19 07:12 AM
blackjok3rtt
[StakedNotary] Branch blackjok3r was force-pushed to
27dbbfc
Compare changes
GitHub
BOT
26-Nov-19 07:15 AM
smk762
[KomodoPlatform/atomicDEX-API] New comment on issue #302: Shared statistics
A handy approach when seed node data is missing, wouldn't mind a look at them thanks.
GitHub
BOT
26-Nov-19 07:19 AM
blackjok3rtt
[StakedNotary] Branch blackjok3r was force-pushed to
2b6b233
Compare changes
GitHub
BOT
26-Nov-19 07:27 AM
blackjok3rtt
[StakedNotary] Branch blackjok3r was force-pushed to
4c11da9
Compare changes
GitHub
BOT
26-Nov-19 07:29 AM
jl777
[jl777/komodo] Pull request closed: #1762 v0.5.0
jl777
[komodo:dev] 10 new commits
`8378b23`
update macOS CI/CD - ca333
`57a2490`
Merge pull request #219 from jl777/dev - ca333
`5c82fb1`
fix test eval - ca333
`2dfaa69`
sync dev (#221) - ca333
`9a201c8`
Merge pull request #223 from jl777/dev - ca333
jl777
[jl777/komodo] Pull request opened: #1764 Dev
v0.5.0
jl777
[jl777/komodo] Pull request closed: #1764 Dev
jl777
[komodo:beta] 11 new commits
`8378b23`
update macOS CI/CD - ca333
`57a2490`
Merge pull request #219 from jl777/dev - ca333
`5c82fb1`
fix test eval - ca333
`2dfaa69`
sync dev (#221) - ca333
`9a201c8`
Merge pull request #223 from jl777/dev - ca333
[komodo] macOS-latest CI success on dev
GitHub
BOT
26-Nov-19 07:31 AM
blackjok3rtt
[StakedNotary] Branch blackjok3r was force-pushed to
4449637
Compare changes
GitHub
BOT
26-Nov-19 07:33 AM
jl777
[komodo:beta] 2 new commits
`a3485c7`
Hot fix for crash - jl777
`ad6b3ff`
Merge branch 'master' into beta - jl777
jl777
[komodo:FSM] 72 new commits
`b75482a`
Merge pull request #8 from jl777/beta - Alrighttt
`1236c03`
add hempcoin - Alrighttt
`d449582`
json syntax - Alrighttt
`66b5f9f`
hempcoin assetchains.old - Alrighttt
`a364281`
Merge pull request #1625 from Alrighttt/beta - jl777
[komodo] macOS-latest CI success on FSM
jl777
[komodo:jl777] 113 new commits
`b75482a`
Merge pull request #8 from jl777/beta - Alrighttt
`1236c03`
add hempcoin - Alrighttt
`d449582`
json syntax - Alrighttt
`66b5f9f`
hempcoin assetchains.old - Alrighttt
`a364281`
Merge pull request #1625 from Alrighttt/beta - jl777
[komodo] macOS-latest CI success on jl777
jl777
[komodo:nSPV] 124 new commits
`b75482a`
Merge pull request #8 from jl777/beta - Alrighttt
`1236c03`
add hempcoin - Alrighttt
`d449582`
json syntax - Alrighttt
`66b5f9f`
hempcoin assetchains.old - Alrighttt
`a364281`
Merge pull request #1625 from Alrighttt/beta - jl777


Library API
An API for dats that have been saved locally and/or published on the network.
import { library } from 'dat://unwalled.garden/index.js'
// read
await library.list({
authors,
types,
keys,
isSaved,
isHosting,
visibility,
forkOf,
isOwner,
sortBy,
offset,
limit,
reverse
})
// write
await library.configure(key, {isSaved, isHosting, visibility})
LibraryDat
The values returned by library functions will fit the following object shape:
| Attribute | Type | Usage |
|---|---|---|
| key | string |
The key of the dat |
| url | string |
The url of the dat |
| author | Object |
The dat that published the dat record (not necessarily the author of the dat) |
| url | string |
|
| title | string |
|
| description | string |
|
| type | string |
|
| isOwner | boolean |
Is the local user the owner of the author dat? |
| meta | Object |
Information about the dat |
| title | string |
|
| description | string |
|
| type | string |
|
| mtime | number |
The timestamp of the last observed change to the dat |
| size | number |
The local size of the dat in bytes |
| author | url |
The url of the author of this dat |
| forkOf | url |
The url of the dat this dat is forked from |
| isOwner | boolean |
Is the local user the owner of the dat? |
| isSaved | boolean |
Has the local user saved the dat? |
| savedAt | number |
The timestamp of when the dat was saved to the local user’s library |
| isHosting | boolean |
Is the local user hosting the dat? |
| visibility | string |
The visibility of the dat and its record |
Notes
The canonical record of a saved dat is stored privately. If the visibility is “public” then a link-entry will also be added to the public dats record.
Thumbnails of published dats should be published at /.data/thumbs/
using the key as the filename.
list(opts)
List dats by that are saved locally or published by authors.
| Param | Type | Default | Usage |
|---|---|---|---|
| opts | Object |
||
| authors | string|string[] |
Filter by author URLs | |
| types | string|string[] |
Filter by dat types | |
| keys | string|string[] |
Filter by dat keys | |
| isSaved | boolean |
Filter by: Has the local user saved the dat? | |
| isHosting | boolean |
Filter by: Is the local user hosting the dat? | |
| visibility | string |
'all' |
Filter by this visibility. See visibility |
| forkOf | string |
Filter by: Only forks of this URL | |
| isOwner | boolean |
Filter by: Is the local user the owner of the dat? | |
| sortBy | string |
'topic' |
One of: 'topic' |
| offset | number |
0 | |
| limit | number |
||
| reverse | boolean |
false |
| Returns |
|---|
Promise<LibraryDat[]> |
configure(key, opts)
Configure a dat in the local user’s library.
| Param | Type | Default | Usage |
|---|---|---|---|
| key | string |
Dat key (required) | |
| opts | Object |
||
| isSaved | boolean |
Save the dat to the local user’s library? | |
| isHosting | boolean |
Host the dat using the local user’s devices? | |
| visibility | string |
One of: 'public' , 'unlisted' , 'private' |
| Returns |
|---|
Promise<void> |


This demo describes how to read an external data file and then make a couple of linear regression models for prediction in R. In data analysis, a data set from random experiments is to be prepared, which is usually of the form of external source files. Loading the data set on your workspace, a model that explains data generating process (that can be considered close to the truth) is suggested. Since the purpose of our model is forecasting, finally, a best model is to be used to create future values.
This demo is the new version of the min vol demo. major change is adding plots that compare the daily and cumulative returns of S&P 500 and min vol ETF, and discussing low vol anomaly.


Self Confidence
What is the Relationship between Mindfulness and Awareness?
The difference is in how we observe both mindfulness and awareness. When we meditate, we are being mindful, we are being mindful that our brains are complex and have many thoughts, that sometimes we forget to think about the existence of it all. Mindfulness is like stepping back, and like headspace.com says, watch the cars go by without chasing them.
Awareness is when we realise that in response to different life situtations, we have emotions. It is the acknowledgement that we are not our emotions. Our emotions are an extension of us, they are like monsters. The monsters shouldn't be fed!
Chapter 4 of search inside yourself focuses a lot on realising that you are angry, or realising that you are sad, or mad or angry. But that we should not let these emotions rule our actions. We should take breaths, embrace the emotion, feel what it is doing to you and your mind. But then let it go, and not ake decisions in the heat of the moment.
Body Scan
I tried the body scan technique. It is a good way to assess how you are feeling, and in a very mindful way. I've got a sore knee at the moment from this basketball injury. When I bodyscan, I think I have a better attitude towards the pain.
In the chapter there was an example of someone who had got rid of a strong anxiety disorder, just by being mindful about the feelings associated. This sounded quite extreme, but it is kind of inspiring in a way.
What Did I Take Away?
I think I took away some good lessons about emotions. I don't really consider my self to be really rash, or ever ruled by my emotions too much, but from this chapter I think I can empathise with others who do, or at least be aware that people's emotions don't make them who they are. All fairly airy fairy stuff, but gives us an insight into things that we never give much thought.


3 REITs offering growth and good income
by Tristan HarrisonReal estate investment trusts (REITs) could be the answer for investors looking for a combination of growth and a good level of income.
Commercial property is known for having a much better income yield compared to residential property. It could also achieve steady capital growth because their underlying rental income keeps growing.
Here are three REITs that be good picks:
National Storage REIT (ASX: NSR)
National Storage is the largest self-storage provider in Australia and New Zealand.
Things are looking good for National Storage with house prices rising again. It benefits from being able to charge more for its units and higher house prices could also mean more people looking for a cheaper place to store their items.
The REIT had steadily increased its distribution until FY19 when it maintained the distribution, which is still a good result. National Storage currently has a distribution yield of 5%.
Rural Funds Group (ASX: RFF)
Rural Funds is a farmland REIT with a variety of farm types including cotton, almonds, macadamias, cattle and vineyards.
The REIT has rental increases that are linked to CPI or a fixed 2.5% rise built into its contracts. This steady income growth allows management to forecast that the distribution can grow by 4% per annum for the foreseeable future.
Increasing distributions supported by growing cash profit support long-term capital growth of the properties and share price. Rural Funds currently has a distribution yield of 5.7%.
Arena REIT No 1 (ASX: ARF)
Arena owns a portfolio of ‘social’ property including childcare centres, healthcare buildings and specialist disability accommodation facilities.
The REIT has 100% occupancy, a weighted average lease expiry (WALE) of 14.1 years and achieved an average like for like rent increase of 3.6% in FY19. It’s that strong combination of factors which has enabled steady operating earnings and distribution growth. It also reduced its gearing to 22.8% during FY19, improving its balance sheet.
It currently has a FY20 distribution yield of 5%.
Foolish takeaway
All three of these REITs have demonstrated earnings growth over the past few years. I like Rural Funds for its higher yield, although Arena REIT has also been impressive for consistent growth.


Technical Blog Post #2
Classes vs. IDs
8/9/15
This week in DBC, we worked with HTML and CSS, two very important components when it comes to building websites. If the website were a human body, HTML would be the bones, and CSS would be the skin. HTML provides the structure of the website, what text/pictures will be displayed, where they are displayed, links, and all that jazz. Whereas CSS is what provides the styling and flair. Without CSS, web pages would still be functional, they would just be extremely plain and boring.
In dealing with CSS, there are three parts. The selector, the property, and the value. For example, if I wanted to change all of the h2 headings to have a blue font I would use: h2 { color: blue; } where h2 is the selector, color is the property and blue is the value. This will turn every h2 tag in the HTML document blue. Well, what if you don't want to turn everything blue. What if I just wanted to change three h2 tags, or just one h2 tag blue? That is where classes and IDs come into play. A class is used when you want to change selected elements that share the same type tag. Like I mentioned earlier, if you have 6 h2 tags, and you want to change 3 of them to have a blue font, you can use a class, which works like this. In the HTML document, in the h2 tags that you would like to change blue you'll add a class attribute to those tags:

Everything in between the opening h2 tag and the closing h2 tag will then be given the class "blue". Now, in your CSS document, you'll call the class selector with a period, set the property to color, and then set the value to blue, like this: .class { color: blue; } Everything that has a class blue, will now have blue text.Now for IDs. IDs are a little different in that they have a heavier specificity value than classes and can only be applied to one unique element. So unlike our h2 tags with the class of blue, we would only be able to change one h2 element to blue. This makes it easier to change, for instance, one of the blue h2 elements without changing them all. Say that we wanted to make one of the three h2 tags have a bold font, but not the other two. This is when an ID would come in handy. Since an ID has a higher specificity value, it would take precedence over the class. We would set it like this:

and everything between this h2 tag and the closing one will be bold. In the CSS document we call the bold id like this: #id { color: blue; font-weight: bold; } This will give the h2 element with the ID of bold, a bold text.One of the creeds that developers live by is D.R.Y, Don't Repeat Yourself. Classes allow you to apply a certain style to multiple elements without going and changing each individual element. IDs come in handy when you have one element that you would like to style, since you can only apply a certain ID to just one element.


Base map:© USGS The National Map: National Boundaries Dataset, 3DEP Elevation Program, Geographic Names Information System, National Hydrography Dataset, National Land Cover Database, National Structures Dataset, and National Transportation Dataset; USGS Global Ecosystems; U.S. Census Bureau TIGER/Line data; USFS Road Data; Natural Earth Data; U.S. Department of State Humanitarian Information Unit; and NOAA National Centers for Environmental Information, U.S. Coastal Relief Model. Data refreshed August, 2019.
Data source: City of Vancouver
GeoJSON: Deck.gl


string_decoder
Node-core v8.9.4 string_decoder for userland
npm install --save string_decoder
Node-core string_decoder for userland
This package is a mirror of the string_decoder implementation in Node-core.
Full documentation may be found on the Node.js website.
As of version 1.0.0 string_decoder uses semantic versioning.
Previous versions
Previous version numbers match the versions found in Node core, e.g. 0.10.24 matches Node 0.10.24, likewise 0.11.10 matches Node 0.11.10.
Update
The build/ directory contains a build script that will scrape the source from the nodejs/node repo given a specific Node version.
Streams Working Group
string_decoder
is maintained by the Streams Working Group, which
oversees the development and maintenance of the Streams API within
Node.js. The responsibilities of the Streams Working Group include:
- Addressing stream issues on the Node.js issue tracker.
- Authoring and editing stream documentation within the Node.js project.
- Reviewing changes to stream subclasses within the Node.js project.
- Redirecting changes to streams from the Node.js project to this project.
- Assisting in the implementation of stream providers within Node.js.
- Recommending versions of
readable-stream
to be included in Node.js. - Messaging about the future of streams to give the community advance notice of changes.
See readable-stream for more details.


input type=month
element testaria-label
Aria-label should be used as accessible name
No accessible description.
aria-labelledby
p referenced by aria-labelledby
Aria-labelledby should be used as accessible name
No accessible description.
Label should be used as accessible name
No accessible description.
title
attributeTitle should be used as accessible name
No accessible description.
aria-describedby
p referenced by aria-describedby
Aria-describedby should be used as accessible description
No accessible name.
label
element & title
attributeLabel should be used as accessible name
Title should be used as accessible description


My train service, South Western Rail may be on strike for a month, blast them, but comfort comes from the fact that we’re not nearly as strike-prone as the French.
As figures from the Hans Böckler Foundation show though, the Frogs are the stroppiest nation in Europe – as if we needed to be told that,
Here, between 2008 and2017, there were an average of 21 strike days per 1,000 employees each year – a long way below the French at 118.


The angle property is the rotation of the Game Object in degrees from its original orientation.
Values from 0 to 180 represent clockwise rotation; values from 0 to -180 represent counterclockwise rotation.
Values outside this range are added to or subtracted from 360 to obtain a value within the range. For example, the statement player.angle = 450 is the same as player.angle = 90.
If you wish to work in radians instead of degrees you can use the property rotation
instead. Working in radians is slightly faster as it doesn't have to perform any calculations.


Introducing Mud, my theme for Hugo (the static site generator used to create this site). That’s what it’s called for the moment, at least. Because it’s brown and not very clever. Let’s see whether it sticks.
Lightweight
The best way to make a site load fast, work on every browser, and show up properly in search engines, is to strip out anything unnecessary. So this is a theme without any JavaScript (though you can add Google Analytics and Disqus if you like, just by filling in your account details in the configuration). No images, no web fonts, no plugins, just clean HTML and CSS. It uses modern browser features, but falls back to a usable default if you’re somehow stuck in the 90s.
Modern
Mud uses HTML5 semantic elements for article, section, header, footer and so on, as you’d expect from a Hugo site. It also includes shortcodes for asides and footnotes in your content, allowing you to use Markdown syntax inside them - without them, you have to write all block elements in plain HTML.
Hugo shortcodes are templated expansions for Markdown. Hugo includes the highlight
shortcode, and Mud includes shortcodes for aside
, footnote
, and hidebox
.
Mud does code highlighting with Pygments, so that no JavaScript is necessary, and you can take advantage of Pygments’ extensive library of languages.
// Here are some of the colours from the scss stylesheet:
$color_background: hsl(190, 5%, 16%);
$color_background_under: hsl(73, 10%, 11%);
$color_background_over: hsl(43, 5%, 23%);
$color_text: hsl(43, 20%, 90%);
$color_text_dim1: hsl(43, 25%, 85%);
$color_text_dim2: hsl(43, 21%, 79%);
$color_text_dim3: hsl(43, 17%, 71%);
$color_text_bright: #fff;
// Or, because Pygments supports all the cool languages, Hello World in Rust:
io::println("Hello world!");
To get the code highlighting to work, you need Python (version 2 or 3). If you have a Mac, it’s already there by default. Then it’s a quick one-liner to install Pygments:
$ pip install pygments
Then, in your Hugo site’s config, set it to use CSS classes. In YAML:
# YAML:
pygmentsUseClasses: true
# TOML:
pygmentsUseClasses = true
Hugo calls Pygments automatically during page creation, so once it’s installed you don’t have to think about it ever again.
Dark
Minimal doesn’t always mean white. White’s all very well, but we geeks and night owls appreciate the gloom of a nice dark theme. Nothing’s quite black, all the dirty greys and muted pastels are chromatically based on a small, harmonious set of hues.


Hawk is an HTTP authentication scheme using a message authentication code (MAC) algorithm to provide partial HTTP request cryptographic verification. For more complex use cases such as access delegation, see Oz.
Current version: 3.x
Note: 3.x and 2.x are the same exact protocol as 1.1. The version increments reflect changes in the node API.
Hawk is an HTTP authentication scheme providing mechanisms for making authenticated HTTP requests with partial cryptographic verification of the request and response, covering the HTTP method, request URI, host, and optionally the request payload.
Similar to the HTTP Digest access authentication schemes, Hawk uses a set of client credentials which include an identifier (e.g. username) and key (e.g. password). Likewise, just as with the Digest scheme, the key is never included in authenticated requests. Instead, it is used to calculate a request MAC value which is included in its place.
However, Hawk has several differences from Digest. In particular, while both use a nonce to limit the possibility of replay attacks, in Hawk the client generates the nonce and uses it in combination with a timestamp, leading to less "chattiness" (interaction with the server).
Also unlike Digest, this scheme is not intended to protect the key itself (the password in Digest) because the client and server must both have access to the key material in the clear.
The primary design goals of this scheme are to:
In addition, Hawk supports a method for granting third-parties temporary access to individual resources using a query parameter called bewit (in falconry, a leather strap used to attach a tracking device to the leg of a hawk).
The Hawk scheme requires the establishment of a shared symmetric key between the client and the server, which is beyond the scope of this module. Typically, the shared credentials are established via an initial TLS-protected phase or derived from some other shared confidential information available to both the client and the server.
Without replay protection, an attacker can use a compromised (but otherwise valid and authenticated) request more than once, gaining access to a protected resource. To mitigate this, clients include both a nonce and a timestamp when making requests. This gives the server enough information to prevent replay attacks.
The nonce is generated by the client, and is a string unique across all requests with the same timestamp and key identifier combination.
The timestamp enables the server to restrict the validity period of the credentials where requests occuring afterwards are rejected. It also removes the need for the server to retain an unbounded number of nonce values for future checks. By default, Hawk uses a time window of 1 minute to allow for time skew between the client and server (which in practice translates to a maximum of 2 minutes as the skew can be positive or negative).
Using a timestamp requires the client's clock to be in sync with the server's clock. Hawk requires both the client clock and the server clock to use NTP to ensure synchronization. However, given the limitations of some client types (e.g. browsers) to deploy NTP, the server provides the client with its current time (in seconds precision) in response to a bad timestamp.
There is no expectation that the client will adjust its system clock to match the server (in fact, this would be a potential attack vector). Instead, the client only uses the server's time to calculate an offset used only for communications with that particular server. The protocol rewards clients with synchronized clocks by reducing the number of round trips required to authenticate the first request.
Server code:
var Http = require('http');
var Hawk = require('hawk');
// Credentials lookup function
var credentialsFunc = function (id, callback) {
var credentials = {
key: 'werxhqb98rpaxn39848xrunpaw3489ruxnpa98w4rxn',
algorithm: 'sha256',
user: 'Steve'
};
return callback(null, credentials);
};
// Create HTTP server
var handler = function (req, res) {
// Authenticate incoming request
Hawk.server.authenticate(req, credentialsFunc, {}, function (err, credentials, artifacts) {
// Prepare response
var payload = (!err ? 'Hello ' + credentials.user + ' ' + artifacts.ext : 'Shoosh!');
var headers = { 'Content-Type': 'text/plain' };
// Generate Server-Authorization response header
var header = Hawk.server.header(credentials, artifacts, { payload: payload, contentType: headers['Content-Type'] });
headers['Server-Authorization'] = header;
// Send the response back
res.writeHead(!err ? 200 : 401, headers);
res.end(payload);
});
};
// Start server
Http.createServer(handler).listen(8000, 'example.com');
Client code:
var Request = require('request');
var Hawk = require('hawk');
// Client credentials
var credentials = {
id: 'dh37fgj492je',
key: 'werxhqb98rpaxn39848xrunpaw3489ruxnpa98w4rxn',
algorithm: 'sha256'
}
// Request options
var requestOptions = {
uri: 'http://example.com:8000/resource/1?b=1&a=2',
method: 'GET',
headers: {}
};
// Generate Authorization request header
var header = Hawk.client.header('http://example.com:8000/resource/1?b=1&a=2', 'GET', { credentials: credentials, ext: 'some-app-data' });
requestOptions.headers.Authorization = header.field;
// Send authenticated request
Request(requestOptions, function (error, response, body) {
// Authenticate the server's response
var isValid = Hawk.client.authenticate(response, credentials, header.artifacts, { payload: body });
// Output results
console.log(response.statusCode + ': ' + body + (isValid ? ' (valid)' : ' (invalid)'));
});
Hawk utilized the SNTP module for time sync management. By default, the local machine time is used. To automatically retrieve and synchronice the clock within the application, use the SNTP 'start()' method.
Hawk.sntp.start();
The client attempts to access a protected resource without authentication, sending the following HTTP request to the resource server:
GET /resource/1?b=1&a=2 HTTP/1.1
Host: example.com:8000
The resource server returns an authentication challenge.
HTTP/1.1 401 Unauthorized
WWW-Authenticate: Hawk
The client has previously obtained a set of Hawk credentials for accessing resources on the "http://example.com/" server. The Hawk credentials issued to the client include the following attributes:
The client generates the authentication header by calculating a timestamp (e.g. the number of seconds since January 1, 1970 00:00:00 GMT), generating a nonce, and constructing the normalized request string (each value followed by a newline character):
hawk.1.header
1353832234
j4h3g2
GET
/resource/1?b=1&a=2
example.com
8000
some-app-ext-data
The request MAC is calculated using HMAC with the specified hash algorithm "sha256" and the key over the normalized request string. The result is base64-encoded to produce the request MAC:
6R4rV5iE+NPoym+WwjeHzjAGXUtLNIxmo1vpMofpLAE=
The client includes the Hawk key identifier, timestamp, nonce, application specific data, and request MAC with the request using
the HTTP Authorization
request header field:
GET /resource/1?b=1&a=2 HTTP/1.1
Host: example.com:8000
Authorization: Hawk id="dh37fgj492je", ts="1353832234", nonce="j4h3g2", ext="some-app-ext-data", mac="6R4rV5iE+NPoym+WwjeHzjAGXUtLNIxmo1vpMofpLAE="
The server validates the request by calculating the request MAC again based on the request received and verifies the validity and scope of the Hawk credentials. If valid, the server responds with the requested resource.
Hawk provides optional payload validation. When generating the authentication header, the client calculates a payload hash using the specified hash algorithm. The hash is calculated over the concatenated value of (each followed by a newline character):
hawk.1.payload
application/json
)For example:
Thank you for flying Hawk
text/plain
Yi9LfIIFRtBEPt74PVmbTF/xVAwPn7ub15ePICfgnuY=
Results in the following input to the payload hash function (newline terminated values):
hawk.1.payload
text/plain
Thank you for flying Hawk
Which produces the following hash value:
Yi9LfIIFRtBEPt74PVmbTF/xVAwPn7ub15ePICfgnuY=
The client constructs the normalized request string (newline terminated values):
hawk.1.header
1353832234
j4h3g2
POST
/resource/1?a=1&b=2
example.com
8000
Yi9LfIIFRtBEPt74PVmbTF/xVAwPn7ub15ePICfgnuY=
some-app-ext-data
Then calculates the request MAC and includes the Hawk key identifier, timestamp, nonce, payload hash, application specific data,
and request MAC, with the request using the HTTP Authorization
request header field:
POST /resource/1?a=1&b=2 HTTP/1.1
Host: example.com:8000
Authorization: Hawk id="dh37fgj492je", ts="1353832234", nonce="j4h3g2", hash="Yi9LfIIFRtBEPt74PVmbTF/xVAwPn7ub15ePICfgnuY=", ext="some-app-ext-data", mac="aSe1DERmZuRl3pI36/9BdZmnErTw3sNzOOAUlfeKjVw="
It is up to the server if and when it validates the payload for any given request, based solely on it's security policy and the nature of the data included.
If the payload is available at the time of authentication, the server uses the hash value provided by the client to construct the normalized string and validates the MAC. If the MAC is valid, the server calculates the payload hash and compares the value with the provided payload hash in the header. In many cases, checking the MAC first is faster than calculating the payload hash.
However, if the payload is not available at authentication time (e.g. too large to fit in memory, streamed elsewhere, or processed at a different stage in the application), the server may choose to defer payload validation for later by retaining the hash value provided by the client after validating the MAC.
It is important to note that MAC validation does not mean the hash value provided by the client is valid, only that the value included in the header was not modified. Without calculating the payload hash on the server and comparing it to the value provided by the client, the payload may be modified by an attacker.
Hawk provides partial response payload validation. The server includes the Server-Authorization
response header which enables the
client to authenticate the response and ensure it is talking to the right server. Hawk defines the HTTP Server-Authorization
header
as a response header using the exact same syntax as the Authorization
request header field.
The header is contructed using the same process as the client's request header. The server uses the same credentials and other
artifacts provided by the client to constructs the normalized request string. The ext
and hash
values are replaced with
new values based on the server response. The rest as identical to those used by the client.
The result MAC digest is included with the optional hash
and ext
values:
Server-Authorization: Hawk mac="XIJRsMl/4oL+nn+vKoeVZPdCHXB4yJkNnBbTbHFZUYE=", hash="f9cDF/TDm7TkYRLnGwRMfeDzT6LixQVLvrIKhh0vgmM=", ext="response-specific"
A browser script is provided for including using a <script>
tag in lib/browser.js. It's also a component.
Hawk relies on the Server-Authorization and WWW-Authenticate headers in its response to communicate with the client. Therefore, in case of CORS requests, it is important to consider sending Access-Control-Expose-Headers with the value "WWW-Authenticate, Server-Authorization" on each response from your server. As explained in the specifications, it will indicate that these headers can safely be accessed by the client (using getResponseHeader() on the XmlHttpRequest object). Otherwise you will be met with a "simple response header" which excludes these fields and would prevent the Hawk client from authenticating the requests.You can read more about the why and how in this article
There are cases in which limited and short-term access to a protected resource is granted to a third party which does not have access to the shared credentials. For example, displaying a protected image on a web page accessed by anyone. Hawk provides limited support for such URIs in the form of a bewit - a URI query parameter appended to the request URI which contains the necessary credentials to authenticate the request.
Because of the significant security risks involved in issuing such access, bewit usage is purposely limited only to GET requests and for a finite period of time. Both the client and server can issue bewit credentials, however, the server should not use the same credentials as the client to maintain clear traceability as to who issued which credentials.
In order to simplify implementation, bewit credentials do not support single-use policy and can be replayed multiple times within the granted access timeframe.
Server code:
var Http = require('http');
var Hawk = require('hawk');
// Credentials lookup function
var credentialsFunc = function (id, callback) {
var credentials = {
key: 'werxhqb98rpaxn39848xrunpaw3489ruxnpa98w4rxn',
algorithm: 'sha256'
};
return callback(null, credentials);
};
// Create HTTP server
var handler = function (req, res) {
Hawk.uri.authenticate(req, credentialsFunc, {}, function (err, credentials, attributes) {
res.writeHead(!err ? 200 : 401, { 'Content-Type': 'text/plain' });
res.end(!err ? 'Access granted' : 'Shoosh!');
});
};
Http.createServer(handler).listen(8000, 'example.com');
Bewit code generation:
var Request = require('request');
var Hawk = require('hawk');
// Client credentials
var credentials = {
id: 'dh37fgj492je',
key: 'werxhqb98rpaxn39848xrunpaw3489ruxnpa98w4rxn',
algorithm: 'sha256'
}
// Generate bewit
var duration = 60 * 5; // 5 Minutes
var bewit = Hawk.uri.getBewit('http://example.com:8080/resource/1?b=1&a=2', { credentials: credentials, ttlSec: duration, ext: 'some-app-data' });
var uri = 'http://example.com:8000/resource/1?b=1&a=2' + '&bewit=' + bewit;
The greatest sources of security risks are usually found not in Hawk but in the policies and procedures surrounding its use. Implementers are strongly encouraged to assess how this module addresses their security requirements. This section includes an incomplete list of security considerations that must be reviewed and understood before deploying Hawk on the server. Many of the protections provided in Hawk depends on whether and how they are used.
Hawk does not provide any mechanism for obtaining or transmitting the set of shared credentials required. Any mechanism used to obtain Hawk credentials must ensure that these transmissions are protected using transport-layer mechanisms such as TLS.
While Hawk provides a mechanism for verifying the integrity of HTTP requests, it provides no guarantee of request confidentiality. Unless other precautions are taken, eavesdroppers will have full access to the request content. Servers should carefully consider the types of data likely to be sent as part of such requests, and employ transport-layer security mechanisms to protect sensitive resources.
Hawk provides limited verification of the server authenticity. When receiving a response back from the server, the server
may choose to include a response Server-Authorization
header which the client can use to verify the response. However, it is up to
the server to determine when such measure is included, to up to the client to enforce that policy.
A hostile party could take advantage of this by intercepting the client's requests and returning misleading or otherwise incorrect responses. Service providers should consider such attacks when developing services using this protocol, and should require transport-layer security for any requests where the authenticity of the resource server or of server responses is an issue.
The Hawk key functions the same way passwords do in traditional authentication systems. In order to compute the request MAC, the server must have access to the key in plaintext form. This is in contrast, for example, to modern operating systems, which store only a one-way hash of user credentials.
If an attacker were to gain access to these keys - or worse, to the server's database of all such keys - he or she would be able to perform any action on behalf of any resource owner. Accordingly, it is critical that servers protect these keys from unauthorized access.
Unless a transport-layer security protocol is used, eavesdroppers will have full access to authenticated requests and request MAC values, and will thus be able to mount offline brute-force attacks to recover the key used. Servers should be careful to assign keys which are long enough, and random enough, to resist such attacks for at least the length of time that the Hawk credentials are valid.
For example, if the credentials are valid for two weeks, servers should ensure that it is not possible to mount a brute force attack that recovers the key in less than two weeks. Of course, servers are urged to err on the side of caution, and use the longest key reasonable.
It is equally important that the pseudo-random number generator (PRNG) used to generate these keys be of sufficiently high quality. Many PRNG implementations generate number sequences that may appear to be random, but which nevertheless exhibit patterns or other weaknesses which make cryptanalysis or brute force attacks easier. Implementers should be careful to use cryptographically secure PRNGs to avoid these problems.
The request MAC only covers the HTTP Host
header and optionally the Content-Type
header. It does not cover any other headers
which can often affect how the request body is interpreted by the server. If the server behavior is influenced by the presence
or value of such headers, an attacker can manipulate the request headers without being detected. Implementers should use the
ext
feature to pass application-specific information via the Authorization
header which is protected by the request MAC.
The response authentication, when performed, only covers the response payload, content-type, and the request information provided by the client in it's request (method, resource, timestamp, nonce, etc.). It does not cover the HTTP status code or any other response header field (e.g. Location) which can affect the client's behaviour.
The protocol relies on a clock sync between the client and server. To accomplish this, the server informs the client of its current time when an invalid timestamp is received.
If an attacker is able to manipulate this information and cause the client to use an incorrect time, it would be able to cause the client to generate authenticated requests using time in the future. Such requests will fail when sent by the client, and will not likely leave a trace on the server (given the common implementation of nonce, if at all enforced). The attacker will then be able to replay the request at the correct time without detection.
The client must only use the time information provided by the server if:
tsm
MAC digest calculated using the same client credentials over the timestamp has been verified.When receiving a request with a bad timestamp, the server provides the client with its current time. The client must never use the time received from the server to adjust its own clock, and must only use it to calculate an offset for communicating with that particular server.
Special care must be taken when issuing bewit credentials to third parties. Bewit credentials are valid until expiration and cannot be revoked or limited without using other means. Whatever resource they grant access to will be completely exposed to anyone with access to the bewit credentials which act as bearer credentials for that particular resource. While bewit usage is limited to GET requests only and therefore cannot be used to perform transactions or change server state, it can still be used to expose private and sensitive information.
Hawk validates the incoming request MAC against the incoming HTTP Host header. However, unless the optional host
and port
options are used with server.authenticate()
, a malicous client can mint new host names pointing to the server's IP address and
use that to craft an attack by sending a valid request that's meant for another hostname than the one used by the server. Server
implementors must manually verify that the host header received matches their expectation (or use the options mentioned above).
If you are looking for some prose explaining how all this works, this is it. Hawk is being developed as an open source project instead of a standard. In other words, the code is the specification. Not sure about something? Open an issue!
As of version 0.10.0, Hawk is feature-complete. However, until this module reaches version 1.0.0 it is considered experimental and is likely to change. This also means your feedback and contribution are very welcome. Feel free to open issues with questions and suggestions.
Hawk's only reference implementation is provided in JavaScript as a node.js module. However, it has been ported to other languages. The full list is maintained here. Please add an issue if you are working on another port. A cross-platform test-suite is in the works.
The algorithm used is closely related to the key issued as different algorithms require different key sizes (and other requirements). While some keys can be used for multiple algorithm, the protocol is designed to closely bind the key and algorithm together as part of the issued credentials.
It is really hard to include other headers. Headers can be changed by proxies and other intermediaries and there is no well-established way to normalize them. Many platforms change the case of header field names and values. The only straight-forward solution is to include the headers in some blob (say, base64 encoded JSON) and include that with the request, an approach taken by JWT and other such formats. However, that design violates the HTTP header boundaries, repeats information, and introduces other security issues because firewalls will not be aware of these "hidden" headers. In addition, any information repeated must be compared to the duplicated information in the header and therefore only moves the problem elsewhere.
Digest requires pre-negotiation to establish a nonce. This means you can't just make a request - you must first send a protocol handshake to the server. This pattern has become unacceptable for most web services, especially mobile where extra round-trip are costly.
Hawk is an attempt to find a reasonable, practical compromise between security and usability. OAuth 1.0 got timestamp and nonces halfway right but failed when it came to scalability and consistent developer experience. Hawk addresses it by requiring the client to sync its clock, but provides it with tools to accomplish it.
In general, replay protection is a matter of application-specific threat model. It is less of an issue on a TLS-protected system where the clients are implemented using best practices and are under the control of the server. Instead of dropping replay protection, Hawk offers a required time window and an optional nonce verification. Together, it provides developers with the ability to decide how to enforce their security policy without impacting the client's implementation.
app
and dlg
in the authorization header and normalized mac string?The original motivation for Hawk was to replace the OAuth 1.0 use cases. This included both a simple client-server mode which
this module is specifically designed for, and a delegated access mode which is being developed separately in
Oz. In addition to the Hawk use cases, Oz requires another attribute: the application id app
.
This provides binding between the credentials and the application in a way that prevents an attacker from tricking an application
to use credentials issued to someone else. It also has an optional 'delegated-by' attribute dlg
which is the application id of the
application the credentials were directly issued to. The goal of these two additions is to allow Oz to utilize Hawk directly,
but with the additional security of delegated credentials.
When calculating a hash or MAC, a static prefix (tag) is added. The prefix is used to prevent MAC values from being used or reused for a purpose other than what they were created for (i.e. prevents switching MAC values between a request, response, and a bewit use cases). It also protects against exploits created after a potential change in how the protocol creates the normalized string. For example, if a future version would switch the order of nonce and timestamp, it can create an exploit opportunity for cases where the nonce is similar in format to a timestamp.
Short answer: no.
Hawk was originally proposed as the OAuth MAC Token specification. However, the OAuth working group in its consistent incompetence failed to produce a final, usable solution to address one of the most popular use cases of OAuth 1.0 - using it to authenticate simple client-server transactions (i.e. two-legged). As you can guess, the OAuth working group is still hard at work to produce more garbage.
Hawk provides a simple HTTP authentication scheme for making client-server requests. It does not address the OAuth use case of delegating access to a third party. If you are looking for an OAuth alternative, check out Oz.
Hawk is a derivative work of the HTTP MAC Authentication Scheme proposal co-authored by Ben Adida, Adam Barth, and Eran Hammer, which in turn was based on the OAuth 1.0 community specification.
Special thanks to Ben Laurie for his always insightful feedback and advice.
The Hawk logo was created by Chris Carrasco.


Dockerized Silex application
If you were redirected here from the website
docroot
the contraption is working. Yay.
Here, have a cat:


Live coding? What could go wrong?!
Who are these dudes?
Pics of Ivan and Ian
Show of hands...
- People who've done web dev?
- People who've written Javascript?
Many call it the language of the web... :unamused:
- It is the language of the browser
- With the invent of Node.js, it also runs on servers
- It was written in 10 days in 1995... They've been trying to fix it ever since.
Tooling
- nodemon: utility for reloading server on changes (local development)
- kNex: database migrations and query building
- Eslint: symantic rules for your code
- Prettier: syntactic rules for your code
Libraries
- Express: microframwork for web applications in node.js
- Eslint: symantic rules for your code
- Prettier: syntactic rules for your code
HTTP - the protocol of the web
URLs, Routes, Paths, etc.
Your typical web app structure
Databases / Application Persistance


This project demonstrates how very inexpensive Bluetooth Low Energy tags can used to track assets with a $20 computer.
A Raspberry Pi runs a Python script telling it to get a list of Bluetooth addresses to survey for from the server, it surveys for them, and then uploads the ones it found out of the ones it surveyed for. The assets it's surveying for are BLE tags, reliably detectable from 50 feet away.
A RESTful web service provides access for the web client and Raspberry Pi to database information on logs and assets.
Web Client: Angular 6
Web Service: Spring
Database: MySQL
Hardware Scripting: Python
Bluetooth Low Energy is a recent specification of Bluetooth that allows a device to constantly advertise while using very little energy. The BLE tags we're using are Bytereal's and can be bought online for around $8 a piece. However, many BLE tags start are available for $2 and less in bulk. All BLE tags typically last around a year, advertising the entire time.
Kevin Aiken, Michael Hankins, Richard Marquet and Phu Pham created this project for GSU's Software Engineering class.


Milepost GCC
machine learning enabled self-tuning compiler
Grigori Fursin, Yuriy Kashnikov, Abdul Wahid Memon, Zbigniew Chamski, Olivier Temam, Mircea Namolaru, Elad Yom-Tov, Bilha Mendelson, Ayal Zaks, Eric Courtois, Francois Bodin, Phil Barnard, Elton Ashton, Edwin Bonilla, John Thomson, Christopher K. I. Williams, Michael O’Boyle
Presented by Emmanuel Bengio
Use the arrow keys or swipe to navigate
Motivation
- Optimization levels are generic (-O1..3)
- Optimize regardless of code organization
- It is possible to tweak flags to affect execution
- Modern architectures are very complex
- Machine learning is a great tool to generalize from data
ICI architecture
Tweaking flags
They posit that:
- Tweaking flags has an (important) effect on:
- Compilation time
- Executable size
- Exectuable speed
- A solution is to tweak flags randomly
- At some point you will get something "better"
To test this, they select random flags, compile and test, 1000 times.
Tweaking flags
To test this, they select random flags, compile and test, 1000 times.
A few of the best flags for their benchmark.
Tweaking flags
Tweaking flags randomly takes an enormously inappropriate amount of time, but actually yields good results (sometimes).
Transferring flags
Two similar programs can probably make use of the same flags:
What does it all mean?
- It's ok to apply some flags to a never
before seen program
- If we can match programs that look
similar we can use similar flags
- and maybe expect similar speedups?
Question
How would you define a similarity metric for a method's code?
Question
How would you define a similarity metric for a method's code?
Answer: define a bunch of AST/CFG-related features that you can count. Then take Euclidian distance
Now we have everything we need to do
machine learning!
- A way to generate data
- An objective
- A desired process:
given some program features I want some optimal flags
Probabilistic approach
Want to learn a model:
$$q(x | t,\theta)$$
where \(x\) is a boolean vector of flags, \(t\) is a feature vector, and \(\theta\) is the parameter set of the distribution.
Then we want to do 1-shot prediction of the flags.
Probabilistic approach
$$q(x | t,\theta)$$
\(q\) is the probability that \(x\) is a good configuration of flags given \(t\)
To collect data:
- Sample 1000 programs with uniformly random flags
- Keep those at >95% of optimal speedup
Probabilistic approach
For simplicity they model the distribution as a joint of IID Bernoulli variables:
$$P(x|t) = \prod_i P(x_i|t)$$
Given \(q(x | t,\theta)\) for a new \(t_{new}\) we want:
$$ x^* = \mbox{argmax}_x q(x|t_{new},\theta) $$
but we can't really do that in a reasonable time.
Question
How would you approximate \(x^*\)?
$$ x^* = \mbox{argmax}_x q(x|t_{new},\theta) $$
Given a bunch to training examples \((x_i,t_j)\)
Finding \(q\)
The paper proposes two methods for "getting" \(q\):
- 1-nearest-neighbour
- decision tree
1-nearest-neighbour:
- Get \(q\) from nearest example in training data.
- Once you have \(q\), sample from it to get some \(x\).
- You now have a good set of flags with high-probability!
The tree approach gone wrong
The paper uses decision trees to compute the joint
$$f(x,t)=P(x,t)$$
So given a \(t\), try a bunch of \(x\) until they're good enough...?
when they should be using them to compute
$$f(t) = x^*$$
(which trees are good at!)
Results
They still get appreciable results:
Results
Execution time speedups (a), code size improvements (b) and compilation time
speedup (c)
Flaws of the paper
- Their final ML model is overly simple
- Their tree model is dubious
- Only capable of deciding flags on a per-file basis?
- They don't compare themselves (numerically) to other approaches
Questions?
Thank you for your attention
Machine Learning reminder
The very broad goal of machine learning is to learn an algorithm given a distribution of examples and a measure of performance.
$${\color{red}\mathcal{F}} = \mbox{argmin}_f \; {\color{blue}\mathcal{L}}\left(f,{\color{green}\mathcal{D}}\right)$$
Machine Learning reminder
A very typical way of phrasing the problem is using parameterized functions:
$${\color{red}\mathcal{F}} = \mbox{argmin}_f \; {\color{blue}\mathcal{L}}\left(f,{\color{green}\mathcal{D}}\right)$$
$$\Leftrightarrow$$
$${\color{red}\theta} = \mbox{argmin}_{\color{red}\theta} \; {\color{blue}\mathcal{L}}\left(f_{\color{red}\theta},{\color{green}\mathcal{D}}\right)$$
and now begins the fun of inventing parameterized functions.


--- layout: event title: First Open Shop datetime: 2015-05-12 18:00-21:00 description: SBK opens its doors for the first time! ---
Hey Local Bicyclists!
Announcing the start of Somerville Bike Kitchen's (SBK) Open Shop nights every Tuesday evening from 6pm to 9pm. SBK is a community organized bike repair space that provides tools and stands to help people to fix their own bikes. The space is located at 339R Summer St. just outside of Davis Sq. We have a suggested $10 per hour use fee.
Our first open shop is this Tuesday (5/12), so stop by to fix your bike our just check us out! You can also find more information on the web at somervillebikekitchen.org.


hi im
mathew de vin
web developer and designer
about me
Web developer and designer. Currently attending the University of British Columbia pursuing a Bachelors in Computer Science. Located in the Okanagan.
Although I’m constantly learning as a student, I’ve developed skills through self-directed projects and collaborated projects using JavaScript, HTML5, CSS3, React.js, Node.js, Express.js, SCSS/SASS, GSAP. Redesigning and reorganizing a university team formation tool allowing me to grow in Django and Python, while exploring the MVC software design pattern. ExpressJS, SQL, noSQL. With skills also in Java and Python development.
Design skills developed using the Affinity Toolset (Photo, Designer, and Publisher) and Figma alongside minor knowledge with the Adobe Toolset (Photoshop and Illustrator).


FBI official investigated after allegedly altering Russia probe document, sources say
(CNN) – An FBI official is under criminal investigation after allegedly altering a document related to surveillance of a Trump campaign adviser in 2016, according to several sources briefed on the matter.
Sources told CNN the document is related to the FBI’s effort to obtain FISA warrants on former Trump campaign aide Carter Page.
How important the document was to the Page investigation is unknown, but the changes were significant enough to have shifted the document’s meaning, according to the sources.
Details about the document are expected to be part of a review conducted by Justice Department Inspector General Michael Horowitz.
Horowitz is expected to release his report on Dec. 9 and testify before the Senate Judiciary Committee two days later.
The possibility that the document was changed will likely fuel outrage from Republicans, who say the FBI committed wrongdoing in its investigation of connections between the Trump campaign and Russian election meddling.
Copyright 2019 CNN. All rights reserved.


Trump says he doesn't think China is 'stepping up' in trade talks
AUSTIN, Texas, Nov 20 (Reuters) - U.S. President Donald Trump said on Wednesday he has not made a trade deal with China yet because Beijing is not "stepping up" in negotiations.
"I don't think they're stepping up to the level that I want," Trump told reporters after touring a plant in Austin that assembles Apple Inc computers. (Reporting by Steve Holland; Writing by Eric Beech; Editing by Sandra Maler)
© Copyright Thomson Reuters 2019. Click For Restrictions - http://about.reuters.com/fulllegal.asp


--- layout: default title: Home ---
I am a second year Master student at Moscow Institute of Physics and Technology. As well, I am a research assistant at Quantum Communications Group of Russian Quantum Center, my research lies in the field of postprocessing for Quantum Key Distribution.
Since school ages I am fascinated with Physics, Math and Computer Science — I studied them hard, I participated in olympiades and I entered MIPT to support my interest and to have them as my lifetime occupation.
What I am keen on the most at the moment, it is quantum computing and quantum information — for I treat this field to be a one which will heavily influence the shape of our world in the nearest future. Moreover, I highly appreciate how comprehensive quantum computing is — I may not restrict myself to some particular topic — coming up with a novel qubit realization interests me just the same as relating BQP to NP! Of course, I dream of becoming a quantum information scientist after finishing Master studies!
Well, initially I considered it to be some kind of portfolio — more vibrant than CV, but not too much. However, I remembered how once I spent eight hours in the Visa Center of Spain trying to obtain my passport. There, a man, who was also waiting for his passport, and whom I hardly knew, told me:
"In the end, we have nothing but the stories we've participated in and the stories we've heard about. So, tell me yours and I'll tell you mine"
Hence, I decided to not only list here my achievements and add some images, but to tell a little story about each one I treat to be worth mentioning (probably, if adding images to CV was conventional, there wouldn't be this cite...). I am aware of great amount of work this decision entails — probably, it even contradicts my initial aim — but I simply want these stories to be told.
And now, not so fast, I am working on this site — don't be scared if some sections are empty — I'll try to fill them as soon as possible! :-)
I decided to split all the stories I have to tell into the following categories:
Now, I showed my hand — and its yours time! Hope, you will find something enjoyable!


Uninstall Apps This button is for development purposes only.
Go to ARKIS_Arkis in order to use your app.


| 1 | /* =========================================================== | |
| 2 | * JFreeChart : a free chart library for the Java(tm) platform | |
| 3 | * =========================================================== | |
| 4 | * | |
| 5 | * (C) Copyright 2000-2009, by Object Refinery Limited and Contributors. | |
| 6 | * | |
| 7 | * Project Info: http://www.jfree.org/jfreechart/index.html | |
| 8 | * | |
| 9 | * This library is free software; you can redistribute it and/or modify it | |
| 10 | * under the terms of the GNU Lesser General Public License as published by | |
| 11 | * the Free Software Foundation; either version 2.1 of the License, or | |
| 12 | * (at your option) any later version. | |
| 13 | * | |
| 14 | * This library is distributed in the hope that it will be useful, but | |
| 15 | * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY | |
| 16 | * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public | |
| 17 | * License for more details. | |
| 18 | * | |
| 19 | * You should have received a copy of the GNU Lesser General Public | |
| 20 | * License along with this library; if not, write to the Free Software | |
| 21 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, | |
| 22 | * USA. | |
| 23 | * | |
| 24 | * [Java is a trademark or registered trademark of Sun Microsystems, Inc. | |
| 25 | * in the United States and other countries.] | |
| 26 | * | |
| 27 | * ------------------- | |
| 28 | * LineFunction2D.java | |
| 29 | * ------------------- | |
| 30 | * (C) Copyright 2002-2009, by Object Refinery Limited. | |
| 31 | * | |
| 32 | * Original Author: David Gilbert (for Object Refinery Limited); | |
| 33 | * Contributor(s): -; | |
| 34 | * | |
| 35 | * Changes: | |
| 36 | * -------- | |
| 37 | * 01-Oct-2002 : Version 1 (DG); | |
| 38 | * 28-May-2009 : Added accessor methods for co-efficients, implemented | |
| 39 | * equals() and hashCode(), and added Serialization support (DG); | |
| 40 | * | |
| 41 | */ | |
| 42 | ||
| 43 | package org.jfree.data.function; | |
| 44 | ||
| 45 | import java.io.Serializable; | |
| 46 | import org.jfree.chart.util.HashUtilities; | |
| 47 | ||
| 48 | /** | |
| 49 | * A function in the form y = a + bx. | |
| 50 | */ | |
| 51 | public class LineFunction2D implements Function2D, Serializable { | |
| 52 | ||
| 53 | /** The intercept. */ | |
| 54 | private double a; | |
| 55 | ||
| 56 | /** The slope of the line. */ | |
| 57 | private double b; | |
| 58 | ||
| 59 | /** | |
| 60 | * Constructs a new line function. | |
| 61 | * | |
| 62 | * @param a the intercept. | |
| 63 | * @param b the slope. | |
| 64 | */ | |
| 65 | public LineFunction2D(double a, double b) { | |
| 66 | this.a = a; | |
| 67 | this.b = b; | |
| 68 | } | |
| 69 | ||
| 70 | /** | |
| 71 | * Returns the 'a' coefficient that was specified in the constructor. | |
| 72 | * | |
| 73 | * @return The 'a' coefficient. | |
| 74 | * | |
| 75 | * @since 1.0.14 | |
| 76 | */ | |
| 77 | public double getIntercept() { | |
| 78 |
1
1. getIntercept : replaced return of double value with -(x + 1) for org/jfree/data/function/LineFunction2D::getIntercept → KILLED |
return this.a; |
| 79 | } | |
| 80 | ||
| 81 | /** | |
| 82 | * Returns the 'b' coefficient that was specified in the constructor. | |
| 83 | * | |
| 84 | * @return The 'b' coefficient. | |
| 85 | * | |
| 86 | * @since 1.0.14 | |
| 87 | */ | |
| 88 | public double getSlope() { | |
| 89 |
1
1. getSlope : replaced return of double value with -(x + 1) for org/jfree/data/function/LineFunction2D::getSlope → KILLED |
return this.b; |
| 90 | } | |
| 91 | ||
| 92 | /** | |
| 93 | * Returns the function value. | |
| 94 | * | |
| 95 | * @param x the x-value. | |
| 96 | * | |
| 97 | * @return The value. | |
| 98 | */ | |
| 99 | public double getValue(double x) { | |
| 100 |
3
1. getValue : Replaced double multiplication with division → KILLED 2. getValue : Replaced double addition with subtraction → KILLED 3. getValue : replaced return of double value with -(x + 1) for org/jfree/data/function/LineFunction2D::getValue → KILLED |
return this.a + this.b * x; |
| 101 | } | |
| 102 | ||
| 103 | /** | |
| 104 | * Tests this function for equality with an arbitrary object. | |
| 105 | * | |
| 106 | * @param obj the object (null permitted). | |
| 107 | * | |
| 108 | * @return A boolean. | |
| 109 | */ | |
| 110 | public boolean equals(Object obj) { | |
| 111 |
1
1. equals : negated conditional → KILLED |
if (!(obj instanceof LineFunction2D)) { |
| 112 |
1
1. equals : replaced return of integer sized value with (x == 0 ? 1 : 0) → NO_COVERAGE |
return false; |
| 113 | } | |
| 114 | LineFunction2D that = (LineFunction2D) obj; | |
| 115 |
1
1. equals : negated conditional → KILLED |
if (this.a != that.a) { |
| 116 |
1
1. equals : replaced return of integer sized value with (x == 0 ? 1 : 0) → KILLED |
return false; |
| 117 | } | |
| 118 |
1
1. equals : negated conditional → KILLED |
if (this.b != that.b) { |
| 119 |
1
1. equals : replaced return of integer sized value with (x == 0 ? 1 : 0) → NO_COVERAGE |
return false; |
| 120 | } | |
| 121 |
1
1. equals : replaced return of integer sized value with (x == 0 ? 1 : 0) → KILLED |
return true; |
| 122 | } | |
| 123 | ||
| 124 | /** | |
| 125 | * Returns a hash code for this instance. | |
| 126 | * | |
| 127 | * @return A hash code. | |
| 128 | */ | |
| 129 | public int hashCode() { | |
| 130 | int result = 29; | |
| 131 | result = HashUtilities.hashCode(result, this.a); | |
| 132 | result = HashUtilities.hashCode(result, this.b); | |
| 133 |
1
1. hashCode : replaced return of integer sized value with (x == 0 ? 1 : 0) → SURVIVED |
return result; |
| 134 | } | |
| 135 | } | |
Mutations | ||
| 78 |
1.1 |
|
| 89 |
1.1 |
|
| 100 |
1.1 2.2 3.3 |
|
| 111 |
1.1 |
|
| 112 |
1.1 |
|
| 115 |
1.1 |
|
| 116 |
1.1 |
|
| 118 |
1.1 |
|
| 119 |
1.1 |
|
| 121 |
1.1 |
|
| 133 |
1.1 |


--- layout: archive title: Zulip Chat Archive permalink: /stream/116395-maths/topic/group.2Elean.20in.20natural.20language.html ---
At Big Proof 2019, Peter Koepke talked about his work doing basic analysis in a proof verification system using a controlled natural language. During his time in Edinburgh he typed up the first half of group.lean into ForTheL and then pretty-printed it into a pdf file.
I know Tom Hales is interested in getting a controlled natural language to work with Lean as part of the Fabstracts project, because he (rightly, in my opinion) believes that more mathematicians will be attracted to his project if it looked like the attached pdf rather than the lean file (we lean-readers forget how intimidating Lean looks to regular mathematicians). This document is some evidence that the idea of getting human-readable text from Lean is perhaps not as far-fetched as one might initially guess.
I finish with a quote from Koepke answering my question about sharing the document.
Can I share it on the Lean chat? [I haven't done this yet]
Yes please, provided you could warn readers that this is just a dummy;
actually it would not even run in the Naproche-SAD version which is on
Github, since I used a slightly modified fork on my laptop.
[the .ftl file is a text file]
He also sent me some Sylow stuff: CNLforLean.ftl.pdf CNLforLean.ftl
Here he was not working with a file with Lean proofs, just statements of Sylow's theorems.
Is there anything special being done to produce the ftl file? If it's just a hand translation into a CNL I don't see a major advantage
It's a glimpse of what lean might look like in the future, which is I guess a big deal for mathematicians
My question is how can we generate this? I can see the benefit but just saying "wouldn't it be nice" doesn't achieve anything
I could go through any file and write the statements in natural language, but that's a labor intensive thing. Unless this proposal is associated to some plan for doing this work automatically there isn't a lot of added value
I find the proofs even harder to read than the mathlib-proofs
Fabstracts currently has nothing. I guess the suggestion doing the rounds is that it ends up looking something like this.
And of course there won't be proofs in Fabstracts
@Mario Carneiro There is an example of automatic natural language generation in this video: http://media.podcasts.ox.ac.uk/comlab/comsci/2017-09-04-ICFP2017/2017-09-04-ICFP2017-day2-pm-08.mp4 from the site: http://conal.net/papers/compiling-to-categories/
and also this PhD thesis which is somewhat related: http://icr.uni.lu/mcramer/downloads/doktor.pdf
@Mario Carneiro also see: https://link.springer.com/content/pdf/10.1007%2Fs10817-016-9377-1.pdf A Fully Automatic Theorem Prover with Human-Style Output
@Tim Daly The tidy
tactic is heavily inspired by the Ganesalingam–Gowers paper.
The proof scripts generated by tidy
could probably be transformed into human readable proofs without too much effort.
Last updated: Apr 24 2020 at 19:02 UTC


I will use this page to add stories/short descriptions to some of the pictures included in the Pictures page.


Cloud Vision V1 API - Module Google::Cloud::Vision::V1::ProductSearch::Paths (v0.6.4)
Reference documentation and code samples for the Cloud Vision V1 API module Google::Cloud::Vision::V1::ProductSearch::Paths.
Path helper methods for the ProductSearch API.
Extended By
Methods
#location_path
def location_path(project:, location:) -> ::String
Create a fully-qualified Location resource string.
The resource will be in the following format:
projects/{project}/locations/{location}
- project (String)
- location (String)
- (::String)
- (::ArgumentError)
#product_path
def product_path(project:, location:, product:) -> ::String
Create a fully-qualified Product resource string.
The resource will be in the following format:
projects/{project}/locations/{location}/products/{product}
- project (String)
- location (String)
- product (String)
- (::String)
- (::ArgumentError)
#product_set_path
def product_set_path(project:, location:, product_set:) -> ::String
Create a fully-qualified ProductSet resource string.
The resource will be in the following format:
projects/{project}/locations/{location}/productSets/{product_set}
- project (String)
- location (String)
- product_set (String)
- (::String)
- (::ArgumentError)
#reference_image_path
def reference_image_path(project:, location:, product:, reference_image:) -> ::String
Create a fully-qualified ReferenceImage resource string.
The resource will be in the following format:
projects/{project}/locations/{location}/products/{product}/referenceImages/{reference_image}
- project (String)
- location (String)
- product (String)
- reference_image (String)
- (::String)
- (::ArgumentError)


Invalid username and password.
You have been logged out.
Login Form
Username
Password
Login
Remember me
Forgot password?


Mum calls out shop's clothing labels as daughter, 2, loves 'boys' dinosaur top
A mum has gone viral on social media after sharing a powerful message to a shop, calling on them to remove the 'gendered' labels they put on their items of clothing
by Courtney Pochin, https://www.facebook.com/courtneypochinmirror/?modal=admin_todo_tourA store has come under fire from a frustrated parent for using 'gendered' clothing labels.
India Springle, from New Zealand has called out Kmart and urged them to remove 'boys' and 'girls' labels from children's clothes.
The mum shared an impassioned message on social media revealing that her two-year-old daughter Lola had fallen in love with a dinosaur top from the shop.
However inside the item was a label proclaiming that it was meant for boys aged between one and seven.
In a post on Facebook, which went viral but has since been removed, Springle said children should be able to "wear whichever clothes they choose".
She wrote: "Hey Kmart.. get with the program already would you?!
"Even my nearly three-year-old thinks your gender labels are bull.
The mum continued: "Girls can only wear a dinosaur t-shirt if it's pink and full of sequins?!
"Sure there are heaps of bigger things going on in the world right now but I happen to think that it is pretty important to allow out children to wear whichever clothes they choose and not feel shame or stigma because that piece of clothing has been assigned to a specific gender."
Speaking to Mail Online, a spokesperson for Kmart said: "At Kmart our store design is set up to assist customers with a convenient shopping experience based on their shopping behaviour.
"At Kmart we are consistently listening to our customers and incorporating their feedback to both future product ranges and store design."
Many people online agreed with Springle's comments.
One person replied: "Ridiculous, I cannot understand in this day and age why I have to go to the boys section to get even just a plain black t-shirt and black jeans for my two-and-a-half-year old girl. Labelled boys - WTF. It's mental."
However some people thought she was overreacting.

Someone else added: "Why does it matter so much about the words written in the label? Your daughter looks delightfully happy in her dinosaur top so why make an issue out of nothing."
What do you think about the labels? Let us know in the comments below.