Git Product home page Git Product logo

matlabadin's People

matlabadin's Issues

Basic Ret handling

- Subclass GraphParameters into RetGraphParameters and ProtGraphParameters
- Add HoW ability & logic
- Add TV ability & logic
- Add DS ability & logic
- Add Exo ability & logic
- Add Inq ability
-- Add (Inq) Action suffix
- Add SW ret logic
- Track Physical Vulnerability uptime (Judgments of the Bold)

Original issue reported on code.google.com by [email protected] on 29 Mar 2012 at 4:29

fsm.exe crashes when parallelization is initiated

What steps will reproduce the problem?
1. run calc_statscaling after updating the C# code
2. Once the code starts the hit scaling loop and enters the "if useParallel" 
section of rotation_model, the following error occurs:

Deleting file 
data\\^WB_^SS_SotR_CS_J_AS_Cons_HW\\Prot_003000\\T3_10000_90000_1_.csv as it 
was generated by a previous build. 
Deleting file 
data\\^WB_^SS_SotR_CS_J_AS_Cons_HW\\Prot_003000\\T3_10000_90000_1_.csv as it 
was generated by a previous build. 
Deleting file 
data\\^WB_^SS_SotR_CS_J_AS_Cons_HW\\Prot_003000\\T3_10000_90000_1_.csv as it 
was generated by a previous build. 
Deleting file 
data\\^WB_^SS_SotR_CS_J_AS_Cons_HW\\Prot_003000\\T3_10000_90000_1_.csv as it 
was generated by a previous build. 
Deleting file 
data\\^WB_^SS_SotR_CS_J_AS_Cons_HW\\Prot_003000\\T3_10000_90000_1_.csv as it 
was generated by a previous build. 
Deleting file 
data\\^WB_^SS_SotR_CS_J_AS_Cons_HW\\Prot_003000\\T3_10000_90167_1_.csv as it 
was generated by a previous build. 
Deleting file 
data\\^WB_^SS_SotR_CS_J_AS_Cons_HW\\Prot_003000\\T3_10000_90167_1_.csv as it 
was generated by a previous build. 
Deleting file 
data\\^WB_^SS_SotR_CS_J_AS_Cons_HW\\Prot_003000\\T3_10000_90167_1_.csv as it 
was generated by a previous build. 
Deleting file 
data\\^WB_^SS_SotR_CS_J_AS_Cons_HW\\Prot_003000\\T3_10000_90167_1_.csv as it 
was generated by a previous build. 
Deleting file 
data\\^WB_^SS_SotR_CS_J_AS_Cons_HW\\Prot_003000\\T3_10000_90167_1_.csv as it 
was generated by a previous build. 
Deleting file 
data\\^WB_^SS_SotR_CS_J_AS_Cons_HW\\Prot_003000\\T3_10000_90167_1_.csv as it 
was generated by a previous build. 
Deleting file 
data\\^WB_^SS_SotR_CS_J_AS_Cons_HW\\Prot_003000\\T3_10000_90167_1_.csv as it 
was generated by a previous build. 
Deleting file 
data\\^WB_^SS_SotR_CS_J_AS_Cons_HW\\Prot_003000\\T3_10000_90167_1_.csv as it 
was generated by a previous build. 
Unhandled Exception: System.AggregateException: One or more errors occurred. 
---> System.Collections.Generic.KeyNotFoundException: The given key was not 
present in the dictionary. 
   at Matlabadin.MatlabadinGraph`1.<>c__DisplayClassb.<.ctor>b__5(Choice c) 
   at System.Linq.Enumerable.WhereSelectArrayIterator`2.MoveNext() 
   at System.Linq.Buffer`1..ctor(IEnumerable`1 source) 
   at System.Linq.Enumerable.ToArray[TSource](IEnumerable`1 source) 
   at Matlabadin.MatlabadinGraph`1..ctor(MatlabadinGraph`1 graph, GraphParameters`1 gp) 
   at Matlabadin.Program.GenerateGraph(Int64GraphParameters gp, String rotation, Double[]& hintPr) 
   at Matlabadin.Program.ProcessGraph(TextWriter stream, String rotation, Int32 stepsPerGcd, PaladinSpec spec, PaladinTalents talents, Double haste, Double mehit, Double sphit) 
   at Matlabadin.Program.ProcessGraph(String file, String rotation, Int32 stepsPerGcd, PaladinSpec spec, PaladinTalents talents, Double haste, Double mehit, Double sphit) 
   at Matlabadin.Program.ProcessParams(String[] args) 
   at System.Threading.Tasks.Task.Execute() 
   --- End of inner exception stack trace --- 
   at System.Threading.Tasks.Task.WaitAll(Task[] tasks, Int32 millisecondsTimeout, CancellationToken cancellationToken) 
   at System.Threading.Tasks.Task.WaitAll(Task[] tasks, Int32 millisecondsTimeout) 
   at System.Threading.Tasks.Task.WaitAll(Task[] tasks) 
   at Matlabadin.Program.ParallelProcess(TextReader input) 
   at Matlabadin.Program.Main(String[] args)

and a pop-up window warning that fsm.exe has crashed appears.  Clicking "OK" on 
the window will allow the program to resume, but the same error may occur 
multiple times in both the hit and exp loops.

Original issue reported on code.google.com by theckhd on 8 Apr 2012 at 11:11

Glyph of HotR support

fsm.exe needs to adjust the duration of Weakened Blows based on the 
presence/absence of Glyph of Hammer of the Righteous
-add glyph input to fsm.exe
-modify WB duration just as we did for AW with Sanctified Wrath talent

Original issue reported on code.google.com by theckhd on 3 Aug 2012 at 7:20

Holy Avenger

- HA ability
- HA buff

* Wowhead & battle.net currently (2012-03-29) have different version of this 
ability that require quite different implementations. The wowhead version does 
not have a GoaK link which I assume is later because it's a better design for 
Prot.

Original issue reported on code.google.com by [email protected] on 29 Mar 2012 at 4:40

Sanctity of Battle - prot support

Initial support for Sanctity of Battle:
-add haste argument to FSM inputs
-adjust J/CS cooldowns based on haste
-determine appropriate time-step scaling (likely cdCS/10 or so?)

Original issue reported on code.google.com by theckhd on 2 Apr 2012 at 2:19

  • Blocked on: #16

Time-based modelling

Instead of converging state probabilities to steady-state t=inf solution, a 
duration could be specified and all possible outcomes up to t=n could be 
calculated.

Eg: J>Cons

t=0, 1 initial starting state[CS next]
t=1.5, 2 states: J miss[Cons next], J hit[Cons next]
t=3, 2 states: [J next]
...
t=600

This gives us an exact result without having to run simulations for many 
timesteps. Some state coalescence logic will be required to prevent an 
explosion of states for high values of t.

Original issue reported on code.google.com by [email protected] on 29 Mar 2012 at 6:03

Pass all talent/spec info to fsm

Update the matlab-C# command-line interface to pass actual talent choices 
instead of true/false values.

- Pass the 6 talents chosen as per talent.m into fsm
- Add a spec parameter to the talent choices
- Update GraphParameters<T> with a Talent structure
- Update GraphParameters<T> with a Spec enum
- Int64StateManager: perform buff compression based on Talent/Spec
-- Allocate space for only one of the SH/EF/SS buffs
-- GC for prot, sunder for ret, etc

Original issue reported on code.google.com by [email protected] on 30 Mar 2012 at 2:24

  • Blocking: #18

Implement mana tracking

As a way to test whether a rotation is self-sustaining, which is potentially an 
issue in 4.0.6, I want to implement mana tracking.

Basic concept: 
+new structure in [AM] called mana.* which stores the mana cost of each ability 
in the same form as raw.*, dmg.*, etc.

+costs will be be positive, gains (SoI, J) can be negative

+if desired, we can go with a more faithful representation that includes both 
costs and gains?  Mostly useful for real-time mana management in [PM],[PS]

+mana and pmana fields in val for postprocessing

+A rotation can be evaluated just on the basis of its ability weighting, in a 
similar fashion to dps or healing.  This will give us some idea of whether the 
rotation is self-sustainable, or whether we should reduce Cons/HW filler usage.

Original issue reported on code.google.com by theckhd on 14 Feb 2011 at 7:22

Divine Purpose

- DP trigger logic
- DP buff
- DP buff logic
- Rotation conditional changes?
-- Should we use DP conditionals in rotation or pretend we have 5 HP?
-- Eg ^SS>SotR5>CS>J>AS>Cons
--- DP procs off CS @ 2 HP: do we SotR immediately? I think we do.

Original issue reported on code.google.com by [email protected] on 29 Mar 2012 at 4:46

Advanced Ret Handling

The Art of War, Sanctity of Battle require significant changes to the model. In 
particular:

- Auto-attack tracking
-- Can treat as a buff/ability CD
-- Need to create a graph branch whenever the swing timer reaches 0

Crusader's Zeal is easy to implement once the above is in place

With the above in place, we can improve the output to track:
- Track auto-attack swings since we have the info to do it
-- Seals

Original issue reported on code.google.com by [email protected] on 29 Mar 2012 at 4:34

EF stacks = availablehp

Support low-HP EF in fsm.exe through stacks (see comment in 
StateTransition.UseAbility(), case EF).

Original issue reported on code.google.com by theckhd on 3 Aug 2012 at 11:57

Bastion of Glory

Shield of the Righteous Level 90
3 Holy Power    Melee Range
Instant cast    1.5 sec cooldown
Requires Shields
Instantly slam the target with your shield, causing 4063 Holy damage, reducing 
the physical damage you take by 30% for 3 sec, and causing Bastion of Glory.

Bastion of Glory
Increases the strength of your next Word of Glory when used to heal yourself by 
10%. Stacks up to 5 times.

Changes Required:
- Additional suffix to WoG to indicate BoG stacks
- BoG buff: 20s duration, 5 stacks

Original issue reported on code.google.com by [email protected] on 29 Apr 2012 at 10:08

Add Darkheart Hacker to gear_db

http://db.mmo-champion.com/i/68739
added in 4.0.6

Also testing the issue tracker

Original issue reported on code.google.com by theckhd on 14 Feb 2011 at 7:13

Decision on equipped gear set (egs) data structure

This is both a test of the issue tracker and a legitimate question.

There are two ways to handle the equipped gear set (egs) structure.  The
first is to define egs slots by name, as such:

egs.head
egs.shoulder
egs.chest

and so forth.  Each of these would be its own structure, so that typing 
 egs.head.sta
would return the amount of stamina on the equipped head slot item.

This has the advantage of being very straightforward and easy to code and
remember.  The downside is that if we want, for example, to pull out the
total stamina contribution from gear, we need to do it by hand:

total_sta = egs.head.sta+egs.shoulder.sta+egs.chest.sta+...

Another possibility is to store the egs structure very similarly to the idb
structure.  Each slot gets an index that corresponds to the slot id
in-game.  This makes egs a 1xN structure array, where N is the number of
slots on the paper doll.

The advantage here is that every slot has the same stat fields, so
calculations of total contributions are very easy.  The total stam is just:
sum([egs.sta]).

I'm leaning towards the second one, even though that means we'll have to
remember all the slot IDs.  We could potentially work around this by adding
a second, optional argument to the equip() function that specifies the
slot.  The second argument could take numeric or string inputs so that 

equip(12345,'head') 

would equip item 12345 in the head slot.

Original issue reported on code.google.com by theckhd on 3 Jun 2010 at 8:09

Glyph of Word of Glory support

Add support for GoWoG in fsm.exe
-add glyph input to fsm.exe
-add GoWoG buff, track duration (varies with HP used when cast)
-append (GoWoG) to output action strings when cast under buff

Original issue reported on code.google.com by theckhd on 3 Aug 2012 at 7:22

fsm.exe has trouble parsing inputs

In r495 I adjusted the arguments being written to file in fsm_gen to handle 
permanent buffs (see line 59 of r495, compared to line 75 of r472).  For some 
reason, at this time fsm.exe started perceiving the '\n' terminator as an 
argument and threw errors, so I removed it.

However, now any time we attempt to use parallel processing, the file is 
written improperly and fsm.exe sees many input arguments (instead of 9).

Returning the newline character re-introduces the error in single calculations 
(sees 10 inputs instead of 9), and causes crashes with the parallel processing.

Original issue reported on code.google.com by theckhd on 3 Aug 2012 at 7:07

SotR cast rate output from FSM buggy?

Run:
c=build_config('hit',2,'exp',2,'queue','SotR>CS');
[c.rot.hpg/3 c.rot.cps(8)]

ans =

    0.0604    0.0741

The SotR cast rate is consistently 22.7% higher than the HPG rage 
(ans(2)/ans(1)=1.2270).  It sill occurs with longer queues (i.e. 'SotR>CS>J', 
'SotR>CS>J>AS', etc.) and the ratio is always 22.7% for 2% hit and exp. 

Note that c.rot.cps(8) matches the actionPr output for SotR, so the error must 
lie somewhere within the FSM code.  I've double-checked that the HPG rate is 
correct (based on CS and J cast rates and miss percentages).  

Interestingly, the ratio seems to depend on hit/exp.  At 7.5% hit, 7.5% exp, 
the ratio is 1.0811, which is (probably not coincidentally) 1/0.9250, or 
1/(1-0.075), where 0.075 is the remaining chance to be parried.  

As such, my assumption is that actionPr is errantly dividing SotR cast rates by 
an extra factor of mdf.mehit.

Original issue reported on code.google.com by theckhd on 14 Apr 2012 at 10:37

fsm.exe crashes repeatedly during calc_statscaling

Run calc_statscaling in r504 (uploading shortly)

During the hit/hit calcs (hit scaling for hit) and hit/haste calcs (hit scaling 
for haste), the code has to generate a large number of results.  During these 
long generation periods, fsm.exe will crash several times.  Occasionally this 
will throw an error in matlab as well (see below).

Unhandled Exception: System.AggregateException: One or more errors occurred. 
---> System.IndexOutOfRangeException: Index was outside the bounds of the 
array. 
   at Matlabadin.MatlabadinGraph`1.UpdateFromFixedWidthNextState(Double[] pr, Double[] nextPr) 
   at Matlabadin.MatlabadinGraph`1.CalculateNextStateProbability(Double[] pr, Double decayFactor) 
   at Matlabadin.MatlabadinGraph`1.ConvergeStateProbability(Int32& iterationsPerformed, Double& finalRelTolerance, Double& finalAbsTolerance, Double relTolerance, Double absTolerance, Int32 maxIterations, Int32 iterationStride, Double[] initialState) 
   at Matlabadin.Program.ProcessGraph(TextWriter stream, String rotation, PaladinSpec spec, PaladinTalents talents, Int32 stepsPerHastedGcd, Double haste, Double mehit, Double rahit, Buff[] permanentBuffs) 
   at Matlabadin.Program.ProcessGraph(String file, String rotation, PaladinSpec spec, PaladinTalents talents, Int32 stepsPerHastedGcd, Double haste, Double mehit, Double rahit, Buff[] permanentBuffs) 
   at Matlabadin.Program.ProcessParams(String[] args) 
   at System.Threading.Tasks.Task.Execute() 
   --- End of inner exception stack trace --- 
   at System.Threading.Tasks.Task.WaitAll(Task[] tasks, Int32 millisecondsTimeout, CancellationToken cancellationToken) 
   at System.Threading.Tasks.Task.WaitAll(Task[] tasks, Int32 millisecondsTimeout) 
   at System.Threading.Tasks.Task.WaitAll(Task[] tasks) 
   at Matlabadin.Program.ParallelProcess(TextReader input) 
   at Matlabadin.Program.Main(String[] args)
??? Error using ==> feof
Invalid file identifier.  Use fopen to generate a valid file identifier.

Error in ==> memoized_fsm>load_fsm_csv at 62
    while not(feof(fid))

Error in ==> memoized_fsm at 45
    [actionPr, metadata, uptime] = load_fsm_csv(filename);

Error in ==> rotation_model at 131
            [c.rot.actionPr, ...

Error in ==> calc_statscaling at 172
        c=rotation_model(c);

I've also included two of the error log files below, if they're at all useful:

WERF90A.tmp.appcompat.txt:
<?xml version="1.0" encoding="UTF-16"?>
<DATABASE>
<EXE NAME="fsm.exe" FILTER="CMI_FILTER_PRIVACY">
    <MATCHING_FILE NAME="fsm.exe" SIZE="69632" CHECKSUM="0x192F32F9" BIN_FILE_VERSION="0.0.0.0" BIN_PRODUCT_VERSION="0.0.0.0" PRODUCT_VERSION="0.0.0.0" FILE_DESCRIPTION=" " FILE_VERSION="0.0.0.0" ORIGINAL_FILENAME="fsm.exe" INTERNAL_NAME="fsm.exe" LEGAL_COPYRIGHT=" " VERDATEHI="0x0" VERDATELO="0x0" VERFILEOS="0x4" VERFILETYPE="0x1" MODULE_TYPE="WIN32" PE_CHECKSUM="0x0" LINKER_VERSION="0x0" UPTO_BIN_FILE_VERSION="0.0.0.0" UPTO_BIN_PRODUCT_VERSION="0.0.0.0" LINK_DATE="08/05/2012 18:19:17" UPTO_LINK_DATE="08/05/2012 18:19:17" VER_LANGUAGE="Language Neutral [0x0]" EXE_WRAPPER="0x0" FILE_ID="00001e6cb8b89d71726254c70c1e6f4e9008f9bf74c0" PROGRAM_ID="0000da39a3ee5e6b4b0d3255bfef95601890afd80709" />
</EXE>
<EXE NAME="clr.dll" FILTER="CMI_FILTER_THISFILEONLY">
    <MATCHING_FILE NAME="clr.dll" SIZE="9793280" CHECKSUM="0x42B57458" BIN_FILE_VERSION="4.0.30319.269" BIN_PRODUCT_VERSION="4.0.30319.269" PRODUCT_VERSION="4.0.30319.269" FILE_DESCRIPTION="Microsoft .NET Runtime Common Language Runtime - WorkStation" COMPANY_NAME="Microsoft Corporation" PRODUCT_NAME="Microsoft® .NET Framework" FILE_VERSION="4.0.30319.269 (RTMGDR.030319-2600)" ORIGINAL_FILENAME="clr.dll" INTERNAL_NAME="clr.dll" LEGAL_COPYRIGHT="© Microsoft Corporation.  All rights reserved." VERDATEHI="0x0" VERDATELO="0x0" VERFILEOS="0x4" VERFILETYPE="0x2" MODULE_TYPE="WIN32" PE_CHECKSUM="0x964183" LINKER_VERSION="0xA0000" UPTO_BIN_FILE_VERSION="4.0.30319.269" UPTO_BIN_PRODUCT_VERSION="4.0.30319.269" LINK_DATE="12/15/2011 11:15:45" UPTO_LINK_DATE="12/15/2011 11:15:45" EXPORT_NAME="mscorwks_ntdef.dll" VER_LANGUAGE="English (United States) [0x409]" EXE_WRAPPER="0x0" FILE_ID="00006b8286f068db77de56a171a076b6c62322b221ba" PROGRAM_ID="0000d2ebf46831d2cb329af767293eb20cfd0000ffff" />
</EXE>
<EXE NAME="kernel32.dll" FILTER="CMI_FILTER_THISFILEONLY">
    <MATCHING_FILE NAME="kernel32.dll" SIZE="1162752" CHECKSUM="0x38678646" BIN_FILE_VERSION="6.1.7601.17651" BIN_PRODUCT_VERSION="6.1.7601.17651" PRODUCT_VERSION="6.1.7600.16385" FILE_DESCRIPTION="Windows NT BASE API Client DLL" COMPANY_NAME="Microsoft Corporation" PRODUCT_NAME="Microsoft® Windows® Operating System" FILE_VERSION="6.1.7600.16385 (win7_rtm.090713-1255)" ORIGINAL_FILENAME="kernel32" INTERNAL_NAME="kernel32" LEGAL_COPYRIGHT="© Microsoft Corporation. All rights reserved." VERDATEHI="0x0" VERDATELO="0x0" VERFILEOS="0x40004" VERFILETYPE="0x2" MODULE_TYPE="WIN32" PE_CHECKSUM="0x12386D" LINKER_VERSION="0x60001" UPTO_BIN_FILE_VERSION="6.1.7601.17651" UPTO_BIN_PRODUCT_VERSION="6.1.7601.17651" LINK_DATE="07/16/2011 05:27:23" UPTO_LINK_DATE="07/16/2011 05:27:23" EXPORT_NAME="KERNEL32.dll" VER_LANGUAGE="English (United States) [0x409]" EXE_WRAPPER="0x0" FILE_ID="0000ade184001d3b1d5cb68c5922428c6148303b63cd" PROGRAM_ID="0000f519feec486de87ed73cb92d3cac802400000000" />
</EXE>
</DATABASE>

WERDFEE.tmp.WERInternalMetadata.xml:

<?xml version="1.0" encoding="UTF-16"?>
-<WERReportMetadata> -<OSVersionInformation> 
<WindowsNTVersion>6.1</WindowsNTVersion> <Build>7601 Service Pack 1</Build> 
<Product>(0x30): Windows 7 Professional</Product> 
<Edition>Professional</Edition> 
<BuildString>7601.17835.amd64fre.win7sp1_gdr.120503-2030</BuildString> 
<Revision>1130</Revision> <Flavor>Multiprocessor Free</Flavor> 
<Architecture>X64</Architecture> <LCID>1033</LCID> </OSVersionInformation> 
-<ParentProcessInformation> <ParentProcessId>3968</ParentProcessId> 
<ParentProcessPath>C:\Windows\System32\cmd.exe</ParentProcessPath> 
<ParentProcessCmdLine>cmd /e:4096 /c "fsm.exe 
<data\\fsm_gen_input_227665.tmp"</ParentProcessCmdLine> 
</ParentProcessInformation> -<ProblemSignatures> 
<EventType>APPCRASH</EventType> <Parameter0>fsm.exe</Parameter0> 
<Parameter1>0.0.0.0</Parameter1> <Parameter2>501eb925</Parameter2> 
<Parameter3>clr.dll</Parameter3> <Parameter4>4.0.30319.269</Parameter4> 
<Parameter5>4ee9d6e1</Parameter5> <Parameter6>c0000005</Parameter6> 
<Parameter7>00000000001750b8</Parameter7> </ProblemSignatures> 
-<DynamicSignatures> <Parameter1>6.1.7601.2.1.0.256.48</Parameter1> 
<Parameter2>1033</Parameter2> <Parameter22>b84f</Parameter22> 
<Parameter23>b84fd7d7c9e22eb02ea540ad81d51552</Parameter23> 
<Parameter24>bf45</Parameter24> 
<Parameter25>bf45684e865a267a41b0062934da7820</Parameter25> 
</DynamicSignatures> -<SystemInformation> 
<MID>74F9EC72-2ED0-4560-9F94-300B79A3ADC9</MID> <SystemManufacturer>System 
manufacturer</SystemManufacturer> <SystemProductName>System Product 
Name</SystemProductName> <BIOSVersion>1305</BIOSVersion> </SystemInformation> 
</WERReportMetadata>

Original issue reported on code.google.com by theckhd on 5 Aug 2012 at 8:22

Avenging Wrath

Add AW to MoP FSM
- AW ability
- AW buff
- (AW) suffix to casts

Original issue reported on code.google.com by [email protected] on 29 Mar 2012 at 4:05

Selfless Healer

- Add Selfless Healer Graph Parameter
- Extend state tracking to record # buff stacks for stacking buffs
- Add buff stack rotation conditional eg: FoL[#SH=2]

Original issue reported on code.google.com by [email protected] on 29 Mar 2012 at 4:13

Holy Prism (L90 talent)

-Add Holy prism abilities & logic
-HPE and HPA for enemy and ally targets, respectively
-FSM can treat it as a single ability; MATLAB needs to know which to use for 
damage/heal calcs

Original issue reported on code.google.com by theckhd on 29 Mar 2012 at 2:12

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.