Contribute to Open Source. Search issue labels to find the right project for you!

💡 Color Scheme


<img width=“1667” alt=“screen shot 2017-12-05 at 17 07 21” src=“”>,0.06999999999999998,0.1641788304175111,1,0.9607779866308874,0.09999999999999998,1,0,0.1494902070119224,0.07999999999999999,0.5787541837100253,0.8,0.03500000000000003,0.49565490578773164,0.7&swatchOrder=0,1,2,3,4

Updated 15/12/2017 01:13

💡 Revenue & Growth


Revenue Plan

30% of MAU click through and order $20 average order size 5% commission ————————— = $1 per order

16k MAU x 30% conversion = $4,800 revenue

2018 User Growth

Jan - 250 Feb - 500 Mar - 1,000 Apr - 2,000 May - 4,000 Jun - 8,000 Jul - 16,000 Aug - 32,000 Sep - 64,000 Oct - 128,000 Nov - 256,000 Dec - 512,000

Updated 15/12/2017 01:11

💡 Personality


If Zerogluten was a person, it would be:

Occupation: mentor and evangelist Style: modern, clean, with a touch of trendy, spring colors Metaphor: light

Personality: - Innovative - Welcoming - Friendly - Helpful - Caring - Happy - Loyal

Updated 15/12/2017 01:10


  • Text only search of all products
  • Find Where To Buy button
    • They enter their email
    • We get notified
    • We manually find the product
    • We message them with the links

This will be an amazing way to bootstrap our email list and build relationships with our early adopters.

Updated 15/12/2017 01:08

Section 5.2.1: Remove operator role


[This issue is being opened to separate the comment from #468 general editorial comments. ]

Organization / Program: Slandala Section: 5.2.1 PDF Page: None PDF Line(s): 1173 Comment: Increasingly the operator role is not used by anyone. It may be used for network support, tape operators (where they still exist), or possibly even the guy he has to come in each week to fix the air conditioner; but typically the admins are also operators.

Suggested Change: None

Updated 14/12/2017 23:15 1 Comments

Fix issues with Draft.js when React enables Asynchronous Scheduling


The Problem

tldr; Draft.js has a bug where selection event handling can lead to a broken state when using asynchronous React.

More detail; In Draft, we currently expect every event to be followed by an immediate update. If you have multiple handlers updating the editor for the same events, or any asynchronous batching that delays the update, then you can get editorState race conditions. This is documented in more detail here -

The problem is that now, with async React, we may have many updates happen before React gets around to rendering. As an example, here is a simplified scenario what could happen if a user types “hello” quickly: - input event for ‘h’ keypress -> Draft enqueues update from prev. state of ‘’ to ‘h’ (Note - no re-render yet! state remains ‘’) - input event for ‘e’ keypress -> Draft enqueues update from prev. state of ‘’ to ‘e’ (Note - no re-render yet! state remains ‘’) - input event for ‘l’ keypress -> Draft enqueues update from prev. state of ‘’ to ‘l’ (Note - no re-render yet! state remains ‘’) - input event for ‘l’ keypress -> Draft enqueues update from prev. state of ‘’ to ‘l’ (Note - no re-render yet! state remains ‘’) - input event for ‘o’ keypress -> Draft enqueues update from prev. state of ‘’ to ‘o’ (Note - no re-render yet! state remains ‘’) - React renders the latest queued update -> Draft displays just the character ‘o’ in the editor.

One way or another, it seems we will need to save the updates in a queue and apply them as a batch. The details of how this will work are still TBD.

Updated 14/12/2017 22:12 2 Comments

Initial Spec


py-component-controller is a fork from my PMC (page modal architecture) working at Transparent Language. It should radically simplify writing and maintaining selenium tests with python.

py-component-controller is going to provide a wdio like interface in regards to searching for WebElements. Rather than raising a NoSuchElementException when elements aren’t found, component properties will simply return None. This makes it much easier to check for element availability, rather than having to wrap over exception cases.

The @element decorator should detect the selector and appropriately invoke find_element_by_css_selector or find_element_by_xpath. Additionally, selectors will support formating templates.

An example would be,

from pyscc import Component

class Profile(Component):

  def save_button(self):
    return 'button[ng-click="onSave()"]'

  def tooltip(self):
    return 'span.tooltip[aria-label="{label}"]'

profile = Profile(webdriver)
profile.save_button.get() >> return WebElement or None
# driver.find_element_by_css_selector('selector')
profile.tooltip.get.fmt(label="Hello World") >> return WebElement or None
# driver.find_element_by_css_selector('selector'.format(**kwargs)) >> return True or False
# try:
#   driver.find_element_by_css_selector('selector')
# except WebElementException:
#   return False
# else:
#    return True >> return True or False
# try:
#   controller.javascript.is_visible(driver.find_element_by_css_selector('selector'))
# except WebElementException:
#   return False
# else:
#    return True
profile.save_button.scroll_to() >> return True or False

These apis should also simplify existing Controller functionality, consuming callable methods from component elements.

Legacy, python controller.wait(timeout=5, condition=lambda: controller.element_exists(expression=lambda: page.button))

Pyscc, python controller.wait(timeout=5,

Updated 15/12/2017 02:51 4 Comments

Warn when creating teams under a FREE org when PRO is available


From #1547, It’s not Taya’s fault that she created a team in the wrong Org, it’s ours. So how do we fix this? How do we stop someone from putting a team on their free personal org instead of a paid org?

I think the solution is to warn them and to default to a paid org.

So, when you go to the new team page, the selected org is the first paid org.

Then, - if a user is a part of at least 1 PRO+ org AND - the user is creating a team under a PERSONAL org we should warn them that they will not get all the benefits of pro.

There are 2 UIs that come to mind: 1. Pop a box above the “Create Team” button when they select a free org OR 2. When they click the button, pop up a modal listing all the benefits of putting a team under a paid org.

If they aren’t a part of a paid org, there’s no need for any of this.

Thoughts @tayamueller @ackernaut?

Updated 14/12/2017 20:40

Caching opt-problems to speed up compilation.


Hi there,

I am currently working on some cpu backends for Opt.

I have scripts that perform tests and due to the large number of available options (useOptLM, backend, number of threads, …..) there actually is a large number of tests to perform.

A significant bottleneck to test-performance is the compilation of the problems (At the moment about 20 opt-compiles per example, i.e. hundreds in total.) It should be possible to run these in seconds (not minutes). Also, the minutes will likely increase to hours if more features (e.g. solvers) are added.

So far, this has not really been a problem but especially with the new backends present (frequent) testing will be important.

I don’t really have any concrete suggestions yet, I am mostly looking to start a discussion on this. I don’t think that caching is really an issue from a user-perspective (this is already achieved by having separate API function for problem definition and problem solution).

Some thoughts:

  1. The automatically generated functions (e.g. PCGStep1) seem to be constant for most solver-settings, so it should be possible to cache at least those. They only account for about half of total compilation time though…
  2. The solver itself depends on the backend, is caching even possible in that case?
Updated 14/12/2017 21:11 1 Comments

Dark Theme Enhancing Extensions and User Styles


I think it would be nice to put together a wiki entry with suggestions/links to things that can further enhance this repo’s goal of a “universal dark theme.” I figured I would start off a list here, and hopefully get some thoughts from everyone else out there.


  • f.lux
    • Mac, Windows, Linux
  • LightBulb (thanks @CaptaPraelium for the recommendation #27)
    • Windows only

Firefox Extensions

  • Dark Background and Light Text (again, thanks @CaptaPraelium for the suggestion)

    • Let’s you customize the background, text, link colors etc. to match the theme used in this repo
  • Stylus

    • implement custom userstyles (see below)

Page Specific Userstyles

For times when an extension just can’t do a good enough job

I’ll try to continually update this issue and, ultimately, add this to wiki page. If there are any things you guys use, please list below! :)

Updated 14/12/2017 19:24

Add spec for Gaia Hub drivers


This spec should be the interface that needs to be satisfied by the different Gaia Hub drivers. Currently there are two drivers, AzDriver and S3Driver. The AzDriver is used in the deployed version and is the most complete. I’ve attempted to generalize below:

class SpecDriver {
  constructor (config) { 
    // instance of client for this storage provider 
    this.service = specLibrary.Client(config.credentials.accountName, config.credentials.accountKey)
    // Currently bucket for Az and S3, but maybe path more generally?
    this.path = config.path 
    // A winston logger config see /hub/server/config.js
    this.logger = config.logger
    // Needed for constructing URL in Az and S3
    this.accountName = config.credentials.accountName
    // Currently just the domain (see getReadURLPrefix in Az and S3)
    this.readURL = config.readURL
    // For setting cache headers on requests to the backend
    this.cacheControl = config.cacheControl

  // Used to check if a filename is valid before writing
  // Could we change this to an instance method?
  static isPathValid (path) { return bool }

  // This returns the root path from which to perfom reads
  getReadURLPrefix () { return readURLPrefix }

  // Currently doesn't return anything, should return a promise?
  performWrite (args) { return Promise }

@kantai @jcnelson @larrysalibra

Updated 14/12/2017 19:09

nuxt@next - plugins suddenly bundled in vendor.js file


Hy all, I just have updated the nuxt@next branch to get the new Vue version :) Looks good so far, but now I’ve seen that my vendor file grew up to over 300kb (which gives me a warning that it is too big now).

This wasn’t the case with rc11 or the nuxt@next branch I had before (1.0.0-gh-b31b0f2). Is this intended?

thanks Simon

Updated 14/12/2017 21:24 4 Comments

Use Django FSM to manage states


We’re considering using Django FSM to manage states in the order management flow. I personally don’t have much experience with this package, but it seems useful in managing of what actions and transitions are allowed depending on the current state. Any thoughts/opinions on this are welcomed.

Updated 14/12/2017 16:49

Deprecate user-key encryption in favor of master key


User-key, while more secure, is impairing a lot of features in the ownCloud platform and also getting in the way of some functionality. It also doesn’t provide a good way to recover data in case the keys are lost. There’s the recovery key, yes, but enabling this is almost the equivalent like sharing all files with the administrator, which is almost equivalent to master key.

Some examples: - not able to add users to groups:

As discussed before internally, we should discuss deprecating user-key encryption in favor of master key encryption.

This would require a big enough timeline for people to migrate to master key in the meantime until we can remove the code and the option. We already made “master key” the top item when selecting encryption type at setup.

@hodyroff @pmaier1 @DeepDiver1975 @tomneedham @butonic @sharidas

Updated 14/12/2017 16:04

What's next for suitcss?


Hey all, Wanted to start up a discussion to share some ideas & concerns I have about what might be next for suitcss. Would love to get everyone’s input.

/cc @suitcss/contributors


This came up quite a while ago, and we decided not to pursue it. Lerna makes this pretty damn easy. I think the benefit to development efficiency would be more than worth it.

If we proceed, we would have to decide if we wanted to release packages in a fixed or independent versioning mode. - fixed is simpler and has less complications with interacting packages. (my preference for suit) - The drawback is unexpected major version bumps for end-users (e.g. user is only using components-grid@4.x but a breaking change to components-button bumps all packages to 5.x. However, in that case a user could just simply stay on components-grid@4.x with no harm.

Here’s an example of what the conversion process might look like:

Leverage postcss ecosystem

Now that our build is fully postcss, there is a lot we could do to streamline development, and also provide a level of extensibility for our users. For example, currently whenever we have a responsive variant of a utility, we just duplicate the code and change selectors. If a user wants to add a new viewport def (e.g. --xlg-viewport), they’re stuck recreating all the code if they want to use it with responsive utilities (e.g. .u-xlg-size1of4).

We should be able to leverage postcss more into our build process to make things like this more configurable. Tailwind CSS, for example, has an @responive directive for generating these.

Spec changes/clarifications

media prefixing for components

Whether or not it is a common or “suggested” practice, I still feel that we should have media-prefixing for components written into the spec. Previous discussions here and here.

Long ago @necolas stated:

For components, you can use media queries directly in your component CSS instead. And in general, I’m not really sure that viewport-width should be the concern of UI components. Certain frameworks will allow you to efficiently re-render the component HTML, and I think swapping out HTML is often simpler and more robust.

While I agree, I think there are still simple situations where media prefixing for components can make a lot of sense. Consider something like this, where you might want to render a gutter on md and lg only:

<div class="Grid md-Grid--withGutter lg-Grid--withGutter">…</div>

NPM Scoped packages

Would be nice to release things on npm with scoped packages (e.g. @suitcss/components-grid)

deprecate preprocessor?

I’m wondering if we should deprecate the preprocessor in favor or using just a postcss and a suitcss-postcss plugin directly. It seems like it’s really only used internally anyway (correct me if I’m wrong).


Wondering if it would be a good idea to have a community-managed suitcss-contrib org for people to source “vetted” community components and utils.

Along these lines, I think it would be nice to somehow provide more guidance to the community for common problems everyone needs to solve. Currently , I think everyone kind of figures out how to manage things like typography components, forms, spacing, etc. on their own. While I don’t want to provide a kitchen-sink, many of these seem so common that guidance would be helpful.

Updated 14/12/2017 15:54

Error on the server side : Cannot read property 'SAMLResponse' of undefined


Hey there ! I am trying to sort my onelogin sso authentification following this example :

I’m a bit confused by this bit : router.get('/spinitsso-redirect', (req, res) => { const url = sp.createLoginRequest(idp, 'redirect'); return res.redirect(url); }); The “url” returned is actually an object ? I had to do url.context to get the url back

I am now trying to access myurl/sso/spinitsso-redirect but getting the following error : TypeError: Cannot read property 'SAMLResponse' of undefined

Any ideas why ? Am I missing something ?

Updated 14/12/2017 17:23 10 Comments information


Info to be added to the

  • [ ] Milestones
  • [ ] Projects
  • [ ] Config information [how it works/is put together]
  • [ ] Deployment information
  • [x] How to use - npm init etc
  • [x] Git branch information
  • [x] How to branch
  • [x] Detail libraries used
  • [x] Authors
  • [x] Licence

Anything else need adding?

Updated 14/12/2017 21:21 2 Comments



It’s a way off yet but it has been mentioned so let’s have it as a discussion point.

Let me know your thoughts on this.

Personally, I ❤️ the now CLI from Zeit - I was reliably informed yesterday that for OSS you can have teams, now CLI has great configuration options and also deployments can be made, then tested then promoted up to production by re aliasing the link.

Other options mentioned were:

Updated 14/12/2017 11:46 1 Comments

git branches


I’m thinking now we’re going to quite possibly be developing on four different branches we should maybe consider making a development branch where our dev/#/feature get’s merged into first before being moved up to master.

What’s everyone’s thoughts on this way of managing the changes?

Updated 14/12/2017 11:45 4 Comments

Use a standard state management library [ngrx/store] and strategy


Overtime even this app is getting big and having more and more components. And naturally there are some state that are required by different components that are no where to close each other in the app hierarchy. Thus we’ll have to use multiple @Input and @Output combinations to share a single state, which is ugly and not scalable at all.

Another thing we do sometimes (not always so no consistency here) to solve this problem, use different services with both observable and non reactive regular variables (no consistency again)

Which is why I think we should start using which is like rxjs powered react for angular.

And if a state goes out of an component scope, it has to be part of more global scope. Although we can make some exceptions for 1 level nested @Output and @Input passing if it makes too much sense.

This is an issue not only concerning record-editor but also (even though some cases not fit for ngrx, so needs to be evaluated separately) and (@Glignos)

Updated 14/12/2017 09:11

Under Membership, please support Groups/tenants for SAAS apps memberships


This feature is incorrectly named, its supposed to be Membership-

With so many SaaS apps, adoption of ASP is so far behind, primarily leaving out membership components for groups/tenants (with the turn of a switch/configurable).


Many will argue its not membership, however - a group/company similar to users, i.e. it also has access/features/roles/components enabled at the group level for e.g. free/pro/premium or non-profits/commercial etc.

IMHO it is a subset of membership. This has not been properly addressed and been punted for a very long time. Further - this is an aspect/AOA of the systems authorization and security, that’s commons to many SaaS apps/developers, impeding the rolls out of SaaS apps. Many are reinventing the wheel.

I really like johns sample on ASP MVC group management

Updated 14/12/2017 19:23 1 Comments

Hydration using a HOA or plugin / remove from core! 🥤


From the docs:

Hyperapp works transparently with SSR and pre-rendered HTML, enabling SEO optimization and improving your sites time-to-interactive.

The process consists of serving a fully pre-rendered page together with your application. Then instead of throwing away the server-rendered markdown, we’ll turn your DOM nodes into an interactive application.

Sounds great! But does it have to be built-in? Currently there is no way to opt-out or customize this process.

I’ll also admit that I am not even close to an expert on this subject. By making this solution external (by allowing you to solve this problem externally, that is), we’d get the chance to figure out exactly what we want and what works best for Hyperapp.

Is anyone already enjoying the benefits of our current “self-hydration” solution? Have you had the need to customize this process or found that it didn’t meet your needs so you avoided it instead? Do you have a position on this issue?

Updated 14/12/2017 23:49 9 Comments

Possible GSoC ideas


Setup Improvments Move setup and upgrade to migration model #91 Setup Script (web version) improvement #191 Installation model enhancement - separate .sql for each table and data set #247 Mods to Globals order of operation #361 database.sql need updates for new globals tabs to work out of the box #362

Calendar Improvments In the Calendar when a user clicks on the patient allow the demographics tab to open. #791 feature request: calendar refresh on event panel exit #824 Calendar Overflow discussion #774 Calendar Admin - can’t set repeating factors for Provider event categories #767 Audit features for appointments. #529

Report Improvments Ideas: Discussion on changing the reports . #818 Report and forms generator #675 Ability to generate a csv file as output for any queries under Patient List Creation or Clinical reports #660

Updated 14/12/2017 02:15

[Suggestion] - Write With Monika?


Howdy! I really enjoy the Monika After Story Mod thus far. I’m trying to get the courage to add in some of my own conversation topics, mostly just about things that I want Monika to encourage me some more about, like cleaning and stuff.

But what I would like to suggest is, would it be possible to integrate a basic text editor? I’m not expecting Monika to be able to react to what one writes, but something about her presence reminds me of those distraction free writing programs, and I feel she would love to cheer you on at word count goals and things like that. I remember reading someone suggest an unlockable rain background noise too; that would go well with this.

Updated 14/12/2017 15:11 3 Comments

Include a few XLSForms that users can learn from


This was suggested in, but I’d like to make it more actionable. Here are two forms that I think should be in the docs. * All Widgets - Every widget that is supported by Collect * Form Design Tips - A few form design techniques to improve data quality

I think they should probably go under Form Building > XLSForm. Maybe as a Note? Or under Tips and Best Practices?

I think we should also remove the sample Excel file under Using the Application because it’s not as complete as the All Widgets Form

Updated 14/12/2017 01:27

[下書き] DBとWebAPIの構成について諸々



Botの機能として以下のような機能を実装しようとしたときに恐らくどうしても必要になる 特に最後のデータの溜め込みは今後の発展の可能性を見込んで

  • 永続化機構の必要な機能
  • 運用時の設定値などのダイナミックな変更
  • コミュニティ内の活動(rainの総量等)をDBにためて、APIで公開 => いい感じになる
    • 例えばGoogleHomeから取れるようなアドオンを作れたり…


理想を言えばwebsocketクライアントであるbotとは分けて開発した方が後々良さそうだけど、開発環境とdeploymentが若干複雑になる(テストはしやすいはず)ので悩ましい。 最終的には分けることは必要になる局面は来そうだけど、もともとカジュアルに機能追加をしていっているものなので、きっと分けるタイミングで機能の棚卸しと精査ができるから良いと思っていたり…




Updated 14/12/2017 14:05 4 Comments

Updating the contributors list


I will update the riot.js contributors list

@rsbondi will no longer actively contribute to the project but he will be part of the riot organization as Inactive Maintainer. He will be only removed from the contributors list (thank you for your great help!!)

@rogueg he just disappeared, no answers via mail chat or issues on the repo, he will be simply moved to the Inactive Maintainers team and removed from the contributors list thank you anyway

@aMarCruz @cognitom I didn’t hear any news or message from both since 6 months. They are not available via chat, mail or github so I will move both to the Inactive Maintainers team for now (and remove them from the project contributors) hoping to hear anything from them anytime soon.

side note: I am collaborating with a friend on the riot v4 foundation and I am really excited about it. I am also open to anyone who wants to participate actively to riotjs as core contributor ✌️

Updated 13/12/2017 22:38

Timer class clarification


The current Timer variable naming is not very clear. Specifically: - “one_shot” is not immediately intuitive. This has been renamed to “repeat”. - “wait_time” has been updated to “time_interval”, to be more consistent with it’s function.

Logic, class doc, and code using Timer class have been updated accordingly.

Pros: Class is now more intuitive to work with Downside: This changes the API. Docs and tutorials would need to be updated.

Updated 14/12/2017 23:46 4 Comments

Angular Material schematics


Brainstorming ideas (some of these are more long-term): * Basic app layout with toolbar and sidenav * Could include a fab * Could include a nav-list in the sidenav * Could include a ... menu in the toolbar * Add a page with a grid-list layout * Add a page with a full-page data-table * Add a page with a full-page tree * Add a card layout with drag-and-drop (similar to Google Keep)

Updated 14/12/2017 22:40

VPConstraint should not have ValuePropagation as dependency



classes derived from TR::VPConstraint have the optimization OMR::ValuePropagation as a dependency.

This dependency is most likely because TR::VPConstraint needs access to fe and comp but, because TR::VPConstraint is not an optimization, the access to fe and comp have to come from another intermediary object. In this case, the accesses are done through OMR::ValuePropagation. However, there are cases in which one wishes to create an instance of TR::VPConstraint without running the OMR::ValuePropagation optimization. Therefore, TR::VPConstraint should not depend on OMR::ValuePropagation.

Updated 14/12/2017 15:34 3 Comments

add hashes to filenames to clear local caches on new prod builds


@jazzido looking for some more help with this. To my understanding, the idea is that we would tap into the [hash] properties in the production Webpack to modify the names of the files that are output, but I’m not sure how to reference each of these filenames in the HTML that we generate here:

Updated 13/12/2017 23:32 2 Comments

codemirror theme selection


Which themes should be included All themes are provided and enabled in 3.4 alpha or test here

  • [ ] 3024-day.css
  • [ ] 3024-night.css
  • [ ] abcdef.css
  • [ ] ambiance-mobile.css
  • [ ] ambiance.css
  • [ ] base16-dark.css
  • [ ] base16-light.css
  • [ ] bespin.css
  • [ ] blackboard.css
  • [ ] cobalt.css
  • [ ] colorforth.css
  • [ ] default.css
  • [ ] dracula.css
  • [ ] duotone-dark.css
  • [ ] duotone-light.css
  • [ ] eclipse.css
  • [ ] elegant.css
  • [ ] erlang-dark.css
  • [ ] hopscotch.css
  • [ ] icecoder.css
  • [ ] isotope.css
  • [ ] lesser-dark.css
  • [ ] liquibyte.css
  • [ ] material.css
  • [ ] mbo.css
  • [ ] mdn-like.css
  • [ ] midnight.css
  • [ ] monokai.css
  • [ ] neat.css
  • [ ] neo.css
  • [ ] night.css
  • [ ] panda-syntax.css
  • [ ] paraiso-dark.css
  • [ ] paraiso-light.css
  • [ ] pastel-on-dark.css
  • [ ] railscasts.css
  • [ ] rubyblue.css
  • [ ] seti.css
  • [ ] solarized.css
  • [ ] the-matrix.css
  • [ ] tomorrow-night-bright.css
  • [ ] tomorrow-night-eighties.css
  • [ ] ttcn.css
  • [ ] twilight.css
  • [ ] vibrant-ink.css
  • [ ] xq-dark.css
  • [ ] xq-light.css
  • [ ] yeti.css
  • [ ] zenburn.css
Updated 14/12/2017 20:30 4 Comments

Proposal: different streams for each level


Just a idea but I think it will be great to have something like this: ruby logger = 'logfile.log', error: { stream: })'Hello') # => put information to logfile logger.error('Hello') # => put information to rollbar

In this case you can use one logger with different sources for each logger level instead using rollbar and logger.

@hanami/core WDYT?

Updated 13/12/2017 17:52

Improve urwid tui


I have pushed today a new branch called urwid. Some time ago I saw the very nice project called xapers, and I saw their very nice TUI based on urwid. I have modified it so that we can use it with papis, I think it has a nice potential of becoming a very capable tui similar to the tui used in tig. It is in a very rough state right now but in order to use it I have created also a database class for papis, that might be used to handle different search-engine backends related to the issues #31 and so on.

The tui is relatively usable but it is i nthe very early stages where everyone can hack in and discuss about the architecture thereof. So feel free to pull the urwid branch and hack in. I will create also an acknowledgement document where we acknowledge the great work done in.

Updated 13/12/2017 18:12

Extend MCorr to use composite quadrature rule


In this pull request, the original term in the mass correction step <a href=“\hat{H}{n+1}” target=“blank”><img src=“\hat{H}{n+1}” title=“\hat{H}{n+1}” /></a> is replaced by <a href=“{H}\epsilon(\phin)-\Delta&space;t\nabla\cdot({H}\epsilon(\phin)\bm{V})” target=“blank”><img src=“{H}\epsilon(\phin)-\Delta&space;t\nabla\cdot({H}\epsilon(\phin)\bm{V})” title=“{H}\epsilon(\phin)-\Delta t\nabla\cdot({H}_\epsilon(\phin)\bm{V})” /></a> so that the composite quadrature rule can play a role here. Since this is an explicit term now, only the function getResidual is changed in the implementation.

Here are some details.

  1. In order to compare to the original method, a new label mass_correction_reference is introduced.
  2. Three new parameters are passed into the c code: <a href=“\Delta&space;t” target=“blank”><img src=“\Delta&space;t” title=“\Delta t” /></a> from VOF module; <a href=“{H}\epsilon(\phin)” target=“blank”><img src=“{H}\epsilon(\phin)” title=“{H}\epsilon(\phin)” /></a> created in postStep of the previous step; the velocity field <a href=“\bm{V}” target=“blank”><img src=“\bm{V}” title=“\bm{V}” /></a> from VOF module.
  3. Those new parameters in c code are called dt, q_H_old, q_v.
  4. The first term of <a href=“{H}\epsilon(\phin)-\Delta&space;t\nabla\cdot({H}\epsilon(\phin)\bm{V})” target=“blank”><img src=“{H}\epsilon(\phin)-\Delta&space;t\nabla\cdot({H}\epsilon(\phin)\bm{V})” title=“{H}\epsilon(\phin)-\Delta t\nabla\cdot({H}_\epsilon(\phin)\bm{V})” /></a> is added into r in evaluateCoefficients_explicit_comp_quad; the 2nd term is introduced as f computed in the same function.

Some extension can be done for the next step.

  1. Add boundary integral terms. Note that for Vortex2D problem, the boundary integral is zero.
  2. Treat the 2nd term of <a href=“{H}\epsilon(\phin)-\Delta&space;t\nabla\cdot({H}\epsilon(\phin)\bm{V})” target=“blank”><img src=“{H}\epsilon(\phin)-\Delta&space;t\nabla\cdot({H}\epsilon(\phin)\bm{V})” title=“{H}\epsilon(\phin)-\Delta t\nabla\cdot({H}\epsilon(\phin)\bm{V})” /></a> implicitly as <a href=“\Delta&space;t\nabla\cdot({H}\epsilon(\phin+u)\bm{V})” target=“blank”><img src=“\Delta&space;t\nabla\cdot({H}\epsilon(\phin+u)\bm{V})” title=“\Delta t\nabla\cdot({H}\epsilon(\phin+u)\bm{V})” /></a>. One has to compute <a href=“{H}\epsilon(\phin+u)” target=“blank”><img src=“{H}\epsilon(\phin+u)” title=“{H}\epsilon(\phin+u)” /></a> and update the calculateJacobian to include the term <a href=“\int{\delta}\epsilon(\phin)\phi_i\phi_j” target=“blank”><img src=“\int{\delta}\epsilon(\phin)\phi_i\phi_j” title=“\int{\delta}_\epsilon(\phin)\phi_i\phi_j” /></a>
  3. More tests will be done since small difference is observed now.
Updated 15/12/2017 02:10 2 Comments

global css conflicts


I understand that Bootstrap was part of the initial frog development efforts as a way to get the system up and running quickly. With frog more mature its a good time to address this. There is an issue with global CSS conflicting with the functionality, layout, and styling of components in both the student and teacher views. This is an important issue because it can make subcomponents act in strange ways and removes developers agency in being able to control the function, design, look and feel of a teacher view or student views. Debugging these issues with a global CSS is cumbersome and frustrating. Each component should import their css or styles in the manner that befits them.

The issue with bootstrap.min.css is that it just does not style bootstrap components but styles EVERY HTML tag. Not very optimal.

Short term solutions? At the moment when I delete, bootstrap.min.css the styles on my components work, however, the graph view gets blown away. For example, the graph view should import its bootstrap styles as it can be placed in any container or routing structure. I need a short-term fix.

Long term solution? standard procedures and rules for importing and defining styles into a component; teacher and student views.

Updated 14/12/2017 21:19 6 Comments

Refactor of name for container of waveforms


I would like to propose a refactor of the name for the container of waveforms. Currently we have:[1].adc_samples[1].pe_samples[1].pe_samples[1].image

It is potentially misleading to call them “adc_samples” and “pe_samples” as these assume units that might not be the case. Therefore I would propose to rename them to “samples”. This would also make the access of waveforms more consistent across data levels.

This would be a huge refactor that would presumably affect every ctapipe user’s code. Therefore it should probably be delayed until we intend a huge refactor of the code. This could be the same time we remove the “tel” containers for the R0 -> DL1 containers (I presume this is an intended change once we move to single telescopes per file).

Updated 13/12/2017 17:54 3 Comments

multihash support in swarm


We are often asked about multihash support.

We should have a proper discussion about pros and cons at least. I suggest this issue shall be the place for that discussion until someone formulates this as an EIP (or is it SIP?)

Updated 14/12/2017 10:18 6 Comments

SOFA-NG: Roadmap


Dear SOFA community and @sofa-framework/reviewers,

As you know, one of our main objectives is currently to propose a major evolution of SOFA: this is the project “SOFA-NG”, standing for Next Gen.
Let us give you some insight about the final plan and the steps to reach these objectives. Any feedback is welcome.


The final objective of SOFA-NG is to refactorize the current (non-core) modules and components by moving them into plugins. It will permit to: - compile and load only the necessary modules - clean all dependencies in SOFA - help focusing the work of validation/verification/doc/test on specific codes - improve the packaging of codes - ease understanding the API of SOFA for new users

Steps of implementation

Our concerns - Focus on non-core components only - Make the transition as smooth as possible - Keep the history

Steps to follow - Propose an architecture and a folder structure - Decide a place for each component (incrementally) - Create the folder structure in SOFA plugins directory - Pluginize one by one the components towards their new place

Note that this project - will be documented, scripts will be provided to help the transition in plugins - is compatible (can be run in parallel) with the deprecation task

Proposed structure

As you can see the structure is quite similar to the old namespace structure of SOFA.
Feel free to edit/comment this pad or to propose your own version.

Updated 13/12/2017 14:40 1 Comments

Generic extension for Join results (example in documentation)



I have worked a lot with join opperations and saw one of your examples in the readme:

… The query above assumes the Product class has a constructor that takes in a Category object. The query above won’t work, but we can work around that with the following query:

from p in db.Product
from c in db.Category.Where(q => q.CategoryID == p.CategoryID).DefaultIfEmpty()
select Product.Build(p, c);
public static Product Build(Product product, Category category)
  if (product != null)
    product.Category = category;
  return product;

You have such a good way with IUpdatable in form of a Set method. I think you can change the example in following:

public static class CustomExtensions
      public static T Set<T, TV>(this T source, Expression<Func<T, TV>> extract, TV value)
         if (source == null) throw new ArgumentNullException("source");
         if (extract == null) throw new ArgumentNullException("extract");

         var propertyInfo = GetPropertyInfo(default(T), extract);
         propertyInfo.SetValue(source, value, null);

         return source;

      public static PropertyInfo GetPropertyInfo<TSource, TProperty>(
          TSource source,
          Expression<Func<TSource, TProperty>> propertyLambda)
         Type type = typeof(TSource);

         MemberExpression member = propertyLambda.Body as MemberExpression;
         if (member == null)
            throw new ArgumentException(string.Format(
                "Expression '{0}' refers to a method, not a property.",

         PropertyInfo propInfo = member.Member as PropertyInfo;
         if (propInfo == null)
            throw new ArgumentException(string.Format(
                "Expression '{0}' refers to a field, not a property.",

         if (propInfo.ReflectedType != null && (type != propInfo.ReflectedType &&
            throw new ArgumentException(string.Format(
                "Expresion '{0}' refers to a property that is not from type {1}.",

         return propInfo;

With this your example could be more generic:

from p in db.Product
from c in db.Category.Where(q => q.CategoryID == p.CategoryID).DefaultIfEmpty()
select p.Set(x => x.Category, c);
Updated 14/12/2017 08:56 5 Comments

Drop Boom support


In the same way that we are not supporting out of the box Joi, I think we should not support out of the box Boom. If a user wants to use Joi, it can do it by using the setSchemaCompiler api. I think that in the same way if a user want to use Boom (which is not a core Fastify library) it can use the setErrorHandler api and handle it accordingly.

Why this proposal? I want to simplify the logic of Reply before release the v1.0.0, and in my opinion the Boom support is something that we can remove since is unnecessary.

To be very specific, I’m proposing to remove the following lines:

@fastify/fastify thoughts? Please do no think “but I need it”, you can accomplish the same thing with setErrorHandler, I’m just talking about if it is needed by the framework itself.

Updated 14/12/2017 09:37 3 Comments

Fix 540


As titled, see #540 for context.

This solution is based on the content type and the type of the payload. What do you think about directly checking the payload type and serialize accordingly? Eg: js var payloadType = typeof payload if (payloadType === 'object') { // serialize object and set header } else if (payloadType === 'string') { // just set the header }

I haven’t ran the benchmark yet, but this could be faster because JSON data is very commonly used. What do you think?

Updated 14/12/2017 09:29

Future of WebTV


Latest releases of Firefox removed support for NPAPI plugins entirely, so I guess WebTV doesn’t work in Firefox 57.x and up anymore.

There is still a Firefox 52.x ESR version that gets security updates, so for the moment, one can still have WebTV in Firefox without using versions that are out of support. Firefox 57.x ESR is projected to be supported until July 3, 2018. It is also the last version that officially supports Windows XP and Vista (Firefox even automatically upgraded to 52.x ESR instead of later regular versions on those systems).

As Firefox p*ssed of a lot of plugin developers with this step, I expect quite some part of the users to “down"grade to this ESR version for the moment, as also important other plugins like Greasemonkey, VideoDownloadHelper, DownThemAll and so on are affected.

So for the moment, we should just keep the WebTV support, at least until 3rd of July 2018.

But also Chrome seems to undergo certain changes that will make VXG stop working, VXG Inc. has posted the following on the OpenPLi forum:

Hi guys,

We’ve had many people message us about our VXG Chrome Plug-in from this thread. As you may have noticed, browsers have slowly been removing third party plugins. This appears to be happening with VXG Chrome Plug-in as well.

Noticing this trend, our engineering team have developed a solution that will work in all major browsers, without a plugin. If you visit our website - ( and sign up for our dashboard, you will be given the option to download something called the VXG Gateway. This seems to be an adequate substitution for our Plug-in customers.

Feel free to email us at ( Thanks.

I’ve contacted VXG about VXG Gateway and asked if that can be a solution for our OWIF running on an embedded system with limited CPU power and am awaiting their response.

This issue is there to have a place to discuss the future of the built-in WebTV and possible solutions.

Updated 13/12/2017 12:12

feat(abc: reuse-tab): new reuse-tab component plans!


复用标签在中台系统非常常见,本质是不同路由页可切换且这一过程中数据不会丢失。(例如:#97 也是这个想法)



  • 增加 reuse: true 属性表示该菜单可被复用


  • 增加 <reuse-tab></reuse-tab> 组件



参数 说明 类型 默认值
max 允许最多复用多少个页面 number 10
change 切换时回调 EventEmitter -
close 关闭回调 EventEmitter -

欢迎大家提供更友好的想法 :smile:。

Updated 14/12/2017 09:32 5 Comments

Unexpected reordering after keyed removal


Per this example using current unstable picodom @2.0.0

Click to remove elements from the list, and note how the removed element always ends up at the bottom of the range - because it doesn’t get destroyed until 2 seconds later.

Keyed updates presumably exist, for one, so you can do this sort of thing?

Updated 14/12/2017 15:08 24 Comments

Using with react-responsive. antd cause react-responsive failure





jest test environment

Reproduction link


Steps to reproduce

I met this bug in a complex situation and I tried to simplify it, so this test case seems strange.

import React from 'react';
import { mount } from 'enzyme';

import 'antd';
import MediaQuery from 'react-responsive';

test('<MediaQuery />', () => {
  const wrapper = mount(
      <MediaQuery minDeviceWidth={1224} values={{ deviceWidth: 1600 }}>
        <div>You are a desktop or laptop</div>

  expect(wrapper.text()).toBe('You are a desktop or laptop');

What is expected?

import 'antd' should not affect react-responsive

What is actually happening?

once antd is imported before react-responsive this test fails

Comment import 'antd' or move it one line below would make this test pass.

<!– generated by ant-design-issue-helper. DO NOT REMOVE –>

Updated 14/12/2017 06:25 4 Comments

Rewrite vimiv completely in Qt


I have played around with PyQt5 lately and must say I was very happy.

Reasons for a complete rewrite: * The code is not very clean, lots of it could be done in a more elegant and extendable way * The tests are horrible * Gtk has bugged me quite a bit

Reasons against: * Lots of work * Destroys any packages, user configurations, …

If anybody has an opinion on this, I would love to hear it.

Updated 13/12/2017 10:39

cdk-table visual explanation


Bug, feature request, or proposal:


What is the expected behavior?

The cdk-table looks very flexible and useful. But when I try to get into its implementation details it seems very much confusing to understand the whole data-flow and template rendering.

I read the doc and also tried to refer the code many times, but I think its a visual explanation in form of a chart would be more helpful.

Maybe it’s a silly requirement from a beginner, but if anyone can just guide me to the existing material available for the same on web, that would also be a great help.

Thank you

Updated 14/12/2017 22:33

About CompilationUnits in Spoon


We started to discuss with @tdurieux about the concept of CompilationUnit and its usage in Spoon. We both agree on the fact that the compilation units are currently badly used in Spoon: currently, only the source compilation units are managed. So you can never query the output compilation units, and you might even get a wrong compilation unit, for example if you query the CU of a type generated by a template.

In order to fix the issue @tdurieux proposes a radical solution which is to put the compilation units directly in the Spoon model: we should be able to do CtType.getParent(CompilationUnit.class) and get something.

I’m personnally mixed in the sense that it would mean that for the same code, we could have two different models, depending if we use the outputType CompilationUnit or classes. But, on the other hand, it’s already the case: we may have two different models depending if we use autoimport or not.

So WDYT about that proposal?

Updated 14/12/2017 09:01 5 Comments

TBD: Hard-requirement for php-fileinfo


Just stumbled over which looks similar to

The php-fileinfo functions seems to be used in the following code-part:

This means we’re in trouble if the following applies:

  1. php-fileinfo is not installed / loaded (only listed as “optional” in the documentation)
  2. open_basedir is configured which doesn’t include the path to the “file” binary and/or popen or any other functions are disabled

which might lead to such issues like seen in the documentation issue linked above.

Updated 13/12/2017 14:42 1 Comments

Godot 3.0 beta performance issues, when duplicating a scene node (3D area with nested geometry nodes)


I’m based on a Windows 8 laptop with an Nvidia 960m GPU, running the Godot 3 beta.

I have a simple 2 scene setup (both 3D). The first scene is the project root and the main stage. The second scene is a 3D ‘tile’ containing 150+ cubes, which I translate/animate (in the _process function) along the X axis towards the camera. When this tile moves off screen, I duplicate it, place the duplicate at the top of the screen, and remove the instance that just moved of screen.

This should produce a smooth scrolling effect (60fps), and it works fairly well. Indeed, I’ve used the same scheme in a Godot 2.* project, and it works well enough.

On the 3.* beta however, there appears to be a 1-2 frame pause, every time a duplicate is created. I had a brief discussion with a few others on the Godot IRC, and they agree it sounds suspicious…

Is this something you guys are aware of?

Updated 14/12/2017 17:55 2 Comments

Update fiscal periods


Yesterday I was studying the process for creating a fiscal Year, I notice That there are procedures that create a period for each month of the fiscal year, but when I tried to update the interval (start date – end date) the periods remained the same. Is this a problem? or I just misunderstood.

Updated 13/12/2017 09:19

Separate each language folder


I think it is not possible to separate each language folder. For example I don’t need Italian language while default locate is set to English. It could be a big issue if we have many languages and files.

I expect each language folder to be generated in separate file (not all languages in one file). something like this after generation: en.js fr.js it.js ...

Updated 14/12/2017 08:36 2 Comments

WebGL 1 support



I created this issue to start a discussion around support of WebGL 1 in Godot 3.x.

Our interest in WebGL 1 stems from the following statistics (Taken from - WebGL 1 browser support: 92.93% - WebGL 2 browser support: 59.74% (Most notably Safari and Edge support missing)

My understanding is that WebGL 1 is somewhat based on OpenGL ES 2.0: “This specification may diverge from OpenGL ES 2.0 in order to ensure interoperability or security, often defining areas that OpenGL ES 2.0 leaves implementation-defined.” from

Since @karroffel will be working on a OpenGL ES 2.0 renderer for Godot 3.1, my question is whether this will also entail WebGL 1 support?

Further, what limitations will the OpenGL ES 2.0 renderer have compared to the GLES3 renderer?

Updated 14/12/2017 18:56 6 Comments

feat(abc: simple-table): new simple-table component plans!


现有的 nz-table 已经足够满足绝大多数需求,然而在中台系统中绝大多数在使用过程中只是需要一个简单的数据表格展示,但现有的使用规则很繁琐:

  • HTML模板存在大量 tdth
  • 表格数据来源于 HTTP
  • 繁琐的选择框
  • 简单的排序、过滤动作

simple-table 是在 nz-table 向上构建更高价的组件,同时以更简洁的方式解决上述问题。


  • [x] Column 配置
  • [x] 简化远程HTTP调用
  • [ ] 简化选择框处理
  • [ ] 简单排序
  • [ ] 过滤可配置
  • [ ] 切换分页时自动返回表格顶部
  • [ ] 允许设置分页左、中、右对齐
  • [x] 支持对所有表格统一配置默认项
  • [x] 简化页码、每页数量变化时回调处理,例如只有一个 change 回调
  • [ ] 代码片断

假定以下是 simple-table 的构建代码:


    template: `<simple-table [data]="users"></simple-table>`
export class DemoComponent {
    users = this._http.get('/users');
    constructor(private _http: _HttpClient) {}


    template: `
    <simple-table [data]="users" [columns]="columns">
         <ng-template #action let-item><a (click)="edit(item)">Edit</a></ng-template>
export class DemoComponent {
    users = this._http.get('/users');
    columns: SimpleColumn[] = [
        { title: '编号', index: 'id', type: 'checkbox' },
        { title: '姓名', index: 'name' },
        { title: '年龄', index: 'age', sort: true },
        { title: '状态', index: 'status', format: (cell: any, row: any) => `s: ${val}` }
    constructor(private _http: _HttpClient) {}


参数 说明 类型 默认值
data 自定义数据源,且 data > url any[], Observable<any[]> -
url 后端URL地址 string -
extraParams 额外请求参数,默认自动附加 pips 至URL<br>{ status: ‘new’ }<br>// url?pi=1&ps=10&status=new<br>{ status: ‘new’, time: { begin: 2017 } }<br>// url?pi=1&ps=10&status=new&time.begin=2017 any -
reqMehtod 请求方法 string GET
reqHeader 请求 header any -
reqBody 请求 body any -
reqReName 重命名请求参数 pips<br>例如:{ pi: 'Page' } pi 会被替换成 Page Object -
resReName 重命名返回参数 totallist<br>例如:{ total: 'Total' } Total 会被当作 total Object -
columns 列描述 SimpleTableColumn[] -
action 操作栏 TemplateRef<any> -
ps 每页数量,当设置为 0 表示不分页,默认:10 number 10
bordered 是否显示边框 boolean false
size table大小 small,middle,default default
showSizeChanger 是否显示pagination中改变页数 boolean false
pageSizeSelectorValues pagination中每页显示条目数下拉框值 number[] [10, 20, 30, 40, 50]
showQuickJumper 是否显示pagination中快速跳转 boolean false
showTotal 是否显示总数据量 boolean false
isPageIndexReset 数据变更后是否保留在数据变更前的页码 boolean true
toTopInChange 切换分页时返回顶部 boolean true
pagePlacement 分页方向 left,center,right right


参数 说明 类型 默认值
type? checkbox 多选<br> radio 单选<br>img 图像且居中<br>currency 货币且居右<br>date 日期格式且居中<br>ynboolean类型徽章化 document string -
title 表格标题 string -
index 列数据在数据项中对应的 key,支持 a.b.c 的嵌套写法 string, string[] -
width? 列宽,例如:10%100px string -
sort? 排序的受控属性,ascdescfalse boolean, string -
format? 格式化列值 function(cell: any, row: any) -
className? class 属性值,例如:<br>text-center 居中<br> text-right 居右<br> text-danger 异常色 string -
colSpan? 合并列 number -
dateFormat? 日期格式,type=date 有效 string YYYY-MM-DD HH:mm
ynYes? 徽章 true 时文本,type=yn 有效 string
ynNo? 徽章 false 时文本,type=yn 有效 string



// 调整所有 `simple-table` 每页数据为 15 条
export function simpleTableConfigFactory() {
    return Object.assign(new SimpleTableConfig(), { ps: 15 });

    providers: [
        { provide: SimpleTableConfig, useFactory: simpleTableConfigFactory }
参数 说明 类型 默认值
ps 每页数量,当设置为 0 表示不分页,默认:10 number 10
bordered 是否显示边框 boolean false
size table大小 small,middle,default default
showSizeChanger 是否显示pagination中改变页数 boolean false
pageSizeSelectorValues pagination中每页显示条目数下拉框值 number[] [10, 20, 30, 40, 50]
showQuickJumper 是否显示pagination中快速跳转 boolean false
showTotal 是否显示总数据量 boolean false
isPageIndexReset 数据变更后是否保留在数据变更前的页码 boolean true
toTopInChange 切换分页时返回顶部 boolean true
pagePlacement 分页方向 left,center,right right
reqReName 重命名请求参数 pips<br>例如:{ pi: 'Page' } pi 会被替换成 Page Object -
resReName 重命名返回参数 totallist<br>例如:{ total: 'Total' } Total 会被当作 total Object -

欢迎大家提供更友好的想法 :smile:。

Updated 15/12/2017 02:57 8 Comments

preparation for new release 0.06


I wondered whether to send out emails, or just create a new issue with some announcement and/or discussion labels.

I think it would be a good moment to create a 0.06 release, to include the GCC 7 fix, change to RSTP (as default STP version) and other fixes.

If there are any other thoughts/concerns, please raise them.

If not, I think that sometime by the end of this week [Friday], or beginning of next week, I’ll make a new release.

Thanks Alex

Updated 13/12/2017 07:33

Versioning plan for F# in VS 15.6 and moving forward


This is a more detailed breakdown and tracking issue for #4112.

We have strong motivation to decouple versioning of the F# compiler and tools from the F# language and core library. We also wish to keep the F# language and F# Core library coupled in version numbers. The reasoning is as follows:

  • The F# major language version number will change more and more slowly over time. Proposed and approved new features still fit snugly in the minor version number.
  • The F# minor language version is expected to change, but not as often as tooling and SDK versions.
  • Decoupling the FSharp.Compiler.Service version from the language version has proven to be a good thing, as it has allowed the adoption of SemVer and rapid iteration. A similar model can be applied for the F# compiler and tooling.
  • Coupling the compiler version with the language version is not always done in other languages (e.g., C#), and such decoupling hasn’t been a problem.

Here’s what it should look like:

Visual Studio version 15.5 (current) 15.6 15.7 vNext
F# language version 4.1 4.1 4.4 4.x
FSharp.Core version 4.4.3.x 4.4.4.x 4.4.x.y
FSharp.Core NuGet package version 4.2.x 4.3.x 4.4.x 4.x.y
F# compiler banner F# Compiler 4.1 F# Compiler 10.x.y for F# 4.1 F# Compiler 11.x.y for F# 4.4 F# Compiler XX.y.z for F# 4.x
VS product Name Visual F# 4.1 Visual F# 10.x.y for F# 4.1 Visual F# 11.x.y for F# 4.4 Visual F# XX.y.z for F# 4.x
VS product details Microsoft Visual F# 4.1 Microsoft Visual F# 10.x.y for F# 4.1 Microsoft Visual F# 11.x.y for F# 4.4 Microsoft Visual F# XX.y.z for F# 4.x
F# SDK version 4.1 10.x 11.x ZZ.x
F# Compiler .dll version 10.x.y.z 11.x.y.z WW.x.y.z
FSharp.Compiler.Tools version 4.1.x 10.x.y for F# 4.1 11.x.y for F# 4.4 XX.y.z for F# 4.x
VS Assembly versions 15.4.x.y 15.6.x.y 15.7.x.y vNext.x.y

You’ll note a few things:

  • There will be no F# 4.2 or F# 4.3 language version - it will skip to F# 4.4. This is because it will bring the F# language, FSharp.Core, and FSharp.Core NuGet package back into sync.
  • The Compiler and SDK version will start at 10.x.y, and so on. This is to ensure that the F# language version will never catch up, and lets us start on the path of SemVer.
  • Visual Studio assembly versions will match the VS release. It should be plainly obvious if an assembly is a part of Visual Studio this way.
  • FSharp.Compiler.Service is not a part of this plan. Given that it has already been on this separate versioning path, and may need to version independently of the assets Microsoft produces for a number of reasons, we intend on keeping it as-is.

We believe that this will make versioning a bit more sane moving forward, as it gives us the ability to rev tooling at a faster pace than the language, while also laying out a plan to align F# language versions, FSharp.Core versions, and FSharp.Core NuGet package versions.

Updated 14/12/2017 17:34 8 Comments

Should compiler IL be able to provide real register hints?


A lively discussion started in #2128 that quickly went beyond that scope of that code change, so I’d like to move that discussion here to examine the questions raised there. I have copied @vijaysun-omr ’s last comment (slightly modified to remove text specific to the PR) in that pull request here as I think it is a good place to start the discussion in this issue:

  1. Is the register symbol representing something that is just a hint or a mandatory requirement o register assign ? Use cases have come up in both categories in the past, but the real question is : what do we think we want to support in the future at the OMR layer? Using GRA to implement a hint sounds more acceptable than for implementing a mandatory requirement (what about noOpt ?).

  2. I think there is also a variant wherein the real register is chosen ahead of time for a given local vs the real register is not chosen but whatever the real register is chosen for this local by the compiler, it remains consistent for that local.

Tagging the original discussers: @mstoodle @vijaysun-omr @andrewcraik @0xdaryl

Updated 13/12/2017 18:32 5 Comments

Thoughts on battery tiers.


Currently, there are two battery types in BNI:

  • The basic “Battery Pack”: 20 MJ, +60% acceleration, 10% top speed
  • “High performance” battery packs (aka battery pack 2): 75 MJ, +100% acceleration, +25% top speed

From discussions on Discord, the idea has been brought up multiple times of adding some variety to these options such that there can be interesting choices in choosing fuel types rather than having one fuel type to rule them all. To that end, I’m considering the following:

  • Keeping “Battery Pack” as-is, or slightly nerfing it. (The MJ capacity would remain unchanged)

  • Splitting the tier 2 batteries into three types:

    • a “High Performance” type with very good acceleration at the cost of capacity. Existing tier-2 batteries would convert over to this type
  • An “Endurance” type with a good MJ rating but mediocre other stats, for long trips without logistics support.
  • Some sort that has a high max speed.

In any case, all of the tier 2 versions should be seen as an upgrade to the tier 1 version – but each should have its own merits. Long range trains may prefer max speed over acceleration, for instance. Of course, this also massively complicates charging infrastructure since you now need to figure out what kind of battery to put into a particular train.

Updated 14/12/2017 00:48 2 Comments

Implement partially mapped bitmaps: hybrid Java heap + off heap


This is an issue raised by @kishoreg and related to how Pinot uses Roaring bitmaps.

Currently, we support ImmutableRoaringBitmapMutableRoaringBitmap and RoaringBitmap. The ImmutableRoaringBitmap class stores the containers off-heap (possibly on disk). Other classes (MutableRoaringBitmap and RoaringBitmap) store the data on Java’s heap.

However, there are instances where we would like just one container to be stored in memory and to be mutable, whereas the rest of the containers should be off-heap and immutable.

I think that we are lucky in that this can be implemented in a sane manner, without having to go crazy and risk lots of bugs. However, I have not yet come up with a design that I like, so I want to open this up for discussion. Another issue is that I am not 100% clear on what would best serve Pinot’s needs.

A MutableRoaringBitmap is implemented as a derived class of ImmutableRoaringBitmap. The key implementation concept is the attribute PointableRoaringArray highLowContainer in the class ImmutableRoaringBitmap. We currently have two types of PointableRoaringArray. The base ImmutableRoaringBitmap class uses an ImmutableRoaringArray. Unsurprisingly, the MutableRoaringBitmap uses a MutableRoaringArray.

If one looks at the MutableRoaringBitmap class itself, it is rather thin. Maybe 1500 lines, but a lot of it may not be needed in a hybrid model, except maybe for an add method. That is, we inherit many useful methods from ImmutableRoaringBitmap.

I think that one possibility would be to implement something like a HybridRoaringBitmap that would be an instance of the base base ImmutableRoaringBitmap. It would have an ImmutableRoaringArray but also a MappeableContainer.

It might behave much like a MutableRoaringBitmap, except that any attempt at modifying a mapped container would generate an exception. I am not sure how you make sure that there is only ever just one mutable container.

I will stop here and open up the discussion.

See also which might ever offer a viable alternative.

Updated 15/12/2017 01:07 9 Comments

dispatch a reducer return a resolved promise

this.props.dispatch({ // 1
  type: 'heatmap/userList/selectActive',
  payload: openid
this.props.dispatch({ // 2
  type: 'heatmap/user',
selectActive(state, { payload }) {
  return { ...state, activeOpenid: payload }

* queryTableData(__, { call, put, select }) {
  const {
    'heatmap/userList': { activeOpenid }
  } = yield select()
  const query = qs.parse(, { ignoreQueryPrefix: true })

  const {
    success, msg, result, uv
  } = yield call(queryUserHeatData, {
      eventid: query.eventid,
      openid: activeOpenid

2 顺序依赖 1,但是我希望可以写法上体现的更强烈一些

this.props.dispatch({ // 1
  type: 'heatmap/userList/selectActive',
  payload: openid
}).then(() => {
  this.props.dispatch({ // 2
    type: 'heatmap/user',

希望 dispatch.reducer 可以返回一个resolve的 promise 🤔

Updated 14/12/2017 07:27 3 Comments

Tools for composing user-agent stylesheets


After seeing Jon Gacnik’s comment about user styles in browsers, I realized it would be cool to have a toolset for easily composing and testing user-agent stylesheets in Beaker.

I mentioned it to @pfrazee, and he had the idea that you could take this to the next level with a user-managed config file that specifies variables like theme color, font, background color, etc. that apps and websites could integrate.

Beaker supports CSS variables, so we could actually achieve that level of customizability just with a user stylesheet.

In the user stylesheet:

html {
  --theme-color: blue;

And in a website:

.username {
  color: var(--theme-color);
Updated 13/12/2017 03:15 1 Comments

Match UDID to authentication


Right now we trust that a device gives us its correct UDID in the command (connect) and checkin endpoints. However in this way a compromised device cert and/or rogue device (however unlikely) is able to read any given device’s command queue by simply forging another UDID.

To consider implementing a check in those endpoints (or some middleware, etc.) that checks that a provided UDID matches the authentication (client certificate/cert. signature) given to us in the request.

Updated 13/12/2017 02:31 4 Comments

Fork me on GitHub