GithubHelp home page GithubHelp logo

pulpcore's People

pulpcore's Issues

Pulpcore for java 7

What steps will reproduce the problem?
1. Go to interactive pulpcore website
2. try any examples include the Milpa game

What is the expected output? What do you see instead?
Applet should be displaying after javascript loading
However, after loading, the applet area become a zombie, it is frozen

What version of the product are you using? On what operating system?
Windows 7
Java RE 1.7.0-b147
new Chrome

Please provide any additional information below.
Examples can be run in an Applet viewer in Netbeans.

I guess it is the problem of the loading javascript
By the way, using Toolkit.get.... I found this will cause Applet errors
On my another computer, with JRE 6, every thing is fine


Original issue reported on code.google.com by [email protected] on 22 Oct 2011 at 2:08

Upgrade to Java 5

- Use Java 5 language features
- Use Java 5 API 

Java 1.4 usage is shrinking quickly, and PulpCore would be better with Java 5 
language features and 
removing some Java 1.4 support code (timer code, for example).


Original issue reported on code.google.com by [email protected] on 11 Apr 2009 at 12:54

Blinking Caret with inversed color scheme

What steps will reproduce the problem?
1. Change the background of the textField to BLACK and the foreground of
text to WHITE.

What is the expected output? What do you see instead?
I would expect to see a blinking Caret, but don't. I also looked for a
function to change Caret color for the blinking.

What version of the product are you using? On what operating system?
0.10.11, and I also checked the SVN repository.

Please provide any additional information below.
This is the code that I think needs changing. Don't shoot me if I am wrong,
since I haven't compiled the pulpcore sources with any changes.

pulpcore.Sprite;

// Show Caret
            if (focusVisible && selectionLength == 0 && 
                timeUntilBlinkOff > 0 && caretPosition >= scrollPosition) 
            {
                int caretX = font.getStringWidth(text, scrollPosition,
caretPosition);
                if (caretX >= 0 && caretX < maxWidth) {
                    g.setColor(Colors.BLACK);
                    g.fillRect(caretX, 0, 1, font.getHeight() +
EXTRA_CARET_HEIGHT*2);
                }
            }

Original issue reported on code.google.com by [email protected] on 2 Mar 2008 at 2:54

KEY_P seems out of place in Input.java

Using the Pulp core, we can see the following constants:
KEY_P 64  //Why isn't this set to 80?
KEY_A 65 
KEY_O 79 
.... //There is no entry with a value of 80
KEY_Q 81 


1. Is this a design decision or a bug?

2. If it's a design decision, it should probably be documented more
clearly; I was looping through all possible "letter" key values, and missed
P because of this.


Thanks again; the engine works great, and I've got a workaround for this,
so it's no biggie. :)

Original issue reported on code.google.com by [email protected] on 8 Nov 2007 at 8:39

Cant use properties files for bundles!

I am using bundle files for localize the texts on my game but pulpcore
shows warn about my bundle.properties and don't copy it to jar or dist

Is there any way to make it go to jar so i can use them?

Or do i have to do my own Bundle system and use other file extension?


Original issue reported on code.google.com by [email protected] on 18 Mar 2008 at 4:49

Font rendering - Gradient

I am trying to generate a gradient font and i am using this

family = Fusi.ttf
size = 32
color = #99ccff
gradient.color=#0033cc

stroke.color=#003399
stroke.size=0.5

shadow.y = 3
shadow.x = 3
shadow.color = #7f000000

But it doesn't work good, it just fill's all image with the second color,
also would be nice to have some more options, like more gradient stops, or
blured drop shadow

Also, would it be possible to make PulpCore able to load Angelcode font
like the ones generated by this tool
http://slick.cokeandcode.com/demos/hiero.jnlp

They look almost like PulpCore generated fonts

Original issue reported on code.google.com by [email protected] on 15 Mar 2008 at 1:08

Allow compression level to be passed into PNGWriter

It would be nice to allow the setting of the compression level when using
PNGWriter instead of defaulting to no compression.

I've attached a patch that will add a second (optional) parameter to the
PNGWriter.write method. The value for this second parameter can be any of
the compression levels found in "Deflater". The default is no compression.

Original issue reported on code.google.com by daniel.watling on 9 Nov 2009 at 6:57

Attachments:

copy constructor "new AnimatedImage(AnimatedImage image)" doesn't keep the same state of animation.

1/ when using the 'copy' constructor of AnimatedImage, I expect the current
state of the copy will be exactly the same as the one of the original
animated image, including:

- the copy 'isPlaying' state is equal
- the current frame is the same

This is not the case.

2/ 

CoreImage imgs[] = new CoreImage[3];
imgs[0] = CoreImage.load("image1.png");
imgs[1] = CoreImage.load("image2.png");
imgs[3] = CoreImage.load("image3.png");

AnimatedImage anim = new AnimatedImage(imgs);
anim.setFrame(1);

AnimatedImage anim-copy = new AnimatedImage(anim1);

System.out.println("anim frame = "+anim.getFrame());
// displays '1' ==> OK

System.out.println("anim-copy frame = "+anim-copy.getFrame());
// displays '0' ==> PROBLEM.



Original issue reported on code.google.com by [email protected] on 29 Jul 2009 at 7:06

Port to Desktop/OpenGL

Port to Desktop using OpenGL and OpenAL. Either LWJGL or JOGL/JOAL.

Explore provising one or two automatic packaging scripts:
- Web Start
- Getdown
- Install4J and exe4j
- Launch4J
- jsmooth

Original issue reported on code.google.com by [email protected] on 11 Apr 2009 at 1:05

[improvement] CoreMath sin(), cos(), tan() performance.

replace the un-needed multiplications by their constant equivalent in
CoreMath.sin() function (CoreMath.java, lines 799 and below):

  int d = mul((1 << INTERNAL_BITS) / (2*3*4*5*6*7*8*9), fxSquared);
  int c = mul(d - (1 << INTERNAL_BITS) / (2*3*4*5*6*7), fxSquared);
  int b = mul(c + (1 << INTERNAL_BITS) / (2*3*4*5), fxSquared);
  int a = mul(b - (1 << INTERNAL_BITS) / (2*3), fxSquared);
  return sine >> (INTERNAL_BITS - FRACTION_BITS);

Maybe detailed multiplications should be kept in comments.

+ same idea for bit shifts of constant value INTERNAL_BITS and
(INTERNAL_BITS - FRACTION_BITS)


Original issue reported on code.google.com by [email protected] on 9 Jul 2009 at 5:32

Attempting to view PulpCore demos hangs Firefox with JDK 6u10 on Fedora 9

What steps will reproduce the problem?
1. Start with Fedora 9 as the OS
2. Install Firefox (I've tried with the latest 3.0 release and a Minefield
nightly)
3. Install the latest JDK (6u10)
4. Attempt to view one of the PulpCore demos

What is the expected output? What do you see instead?

Expect the demo to load and render without hanging.  Instead, Firefox
hangs and required a kill -9 to end.

What version of the product are you using? On what operating system?

This is on Fedora 9, using JDK 6u10, and recent versions of Firefox.  

Please provide any additional information below.

This problem seems to be related to the JDK upgrade, as the PulpCore demos
worked for me on the same system, using jdk 1.6.0_05


Original issue reported on code.google.com by [email protected] on 28 Oct 2008 at 10:28

Mistake in the code of one constructor of the class EncryptedInt

The following constructor (in file EncryptedInt.java , line 111) doesn't
set the initial value as expected, instead it set the value to zero.

public EncryptedInt(PropertyListener listener, int value, ARC4 cipher) {
        super(listener, 0);
        // should be
        super(listener, value);
}


Note: the bug presence in a real application has not been tested.

Original issue reported on code.google.com by [email protected] on 15 Apr 2008 at 10:41

Don't use Retroweaver in debug builds [Was: Some Sugestions]

Hi, i like allot Pulp Core, but i think the build system needs to be
redesigned.

Don´t know if you ever used Netbeans, Netbeans use ant also for build and
run java applications. I make a project and run, it wont build up a jar but
run from the /build directory, and when i change one file, only that file
is compiled and it quick run the application again

In Pulp Core every time i change something, i have to compile everything,
remake all res, rebuild jar, retroweaver it and then run on Pulp Player.

That slows down development.

I think with some work you could do this.

When we call ant (run) it automatic build ( res ( svg, fonts, etc... ),
sources ) into the build/ folder and Pulp Player would run from the
classes, without jar them. So when we change anything on res or source, ant
would check for file date and if its newer then compile/copy it to build/
folder then Pulp Player can run it again.

Now when we do a "ant build" it will do the compile check ( same as for run
) and then make the jar\zip and all other needed files, and also retroweave
and proguard the files.

This might be hard to implement, but will result in a lot faster deployment
of the games


Another suggestion ( that might not be so good ) is:
Separate the code into 2 jars, one with just basic applet stuff that would
load very fast on browser, other other with extra code plus game code, and
maybe the res also, and then after load the first jar, use ClassLoader to
load the other jar, don't know if it works on applets but might work.
This would just give a faster loading on applet on browser, but then take
more time on downloading extra classes
The only advantage, is that applet will be created on page lots faster, i think



Original issue reported on code.google.com by [email protected] on 14 Mar 2008 at 7:58

TimeLine.moveTo takes sprite's base properties

What steps will reproduce the problem?
1. create the following basic program:
Sprite nb = new FilledSprite(100,100,20,20,YELLOW);
Timeline tl = new Timeline();
tl.moveTo(nb, 200, 300, 1000);
tl.after(1).moveTo(nb, 0, 0, 1000);
addTimeline(tl);
2. Run the program

I expect to see the sprite moving from its initial location (100,100) to
the second location (200,300) and from the second location (200,300) to the
third location (0,0).

What I see instead is, the sprite moving from (100,100) to (200,300), then
it disapears and appears immediately at its initial location. Finally, I it
moves from the initial location (200,300) to the third location (0,0).

Somehow moveTo doesn't update the properties inside the sprite after it has
finished animating it. Then, when another moveTo occurs, it uses the
initial location properties, instead of the new ones, (which were supposed
to be setted by moveTo when it is done animating it).

The same happens for scaleTo.

Even setting the properties directly with a TimeLineEvent won't solve this
problem, that is:

      tl.moveTo(nb, 200, 300, 1000);
      tl.after().add(new TimelineEvent(1) {
        public void run() {
            // TODO Auto-generated method stub
            nb.x.set(200);
            nb.y.set(300);
        }

      });
      tl.after(210).moveTo(nb, 313, 313, 2000);


Tried it on the latest pulpcore (0.11.5) on Windows vista, with the
following javas:
java version "1.6.0_13"
Java(TM) SE Runtime Environment (build 1.6.0_13-b03)
Java HotSpot(TM) Client VM (build 11.3-b02, mixed mode, sharing)
Eclipse SDK
Version: 3.4.2
Build id: M20090211-1700

(not that I think it is related).

Original issue reported on code.google.com by [email protected] on 15 Jul 2009 at 7:54

When a ScrollPane with no items is added to the scene it crashes with an NegativeArrayException

What steps will reproduce the problem?
1. Initialize a new ScrollPane
2. Add it to the scene with add();

What is the expected output? What do you see instead?
Expected output should be nothing or a empty ScrollPane.

What version of the product are you using? On what operating system?
Latest pulpcore svn build as of now. Java 1.6.

Original issue reported on code.google.com by [email protected] on 3 Jun 2009 at 7:02

Irregular results with pixel-level intersections

The Sprite.intersects(Sprite) method doesn't seem to be working properly on
ImageSprites with custom aspect ratios and pixel-level intersections.

Simple test scene (Use the background image from the Hello World example):

public class TestScene extends Scene2D {
    private FilledSprite sprite;
    private ImageSprite sprite2;

    public void load() {
        Sprite background = new
FilledSprite(0,0,Stage.getWidth(),Stage.getHeight(), Colors.BLUE);
        add(background);
        sprite = new FilledSprite(200,200,100,100, Colors.WHITE);
        sprite2 = new ImageSprite("background.png",200,200,50,100);
        add(sprite);
        add(sprite2);
//        sprite2.setPixelLevelChecks(false);
    }

    public void update(int elapsedTime) {
        super.update(elapsedTime);
        sprite.setLocation(Input.getMouseX(),Input.getMouseY());
        if(sprite.intersects(sprite2)) {
            sprite.alpha.set(50);
        } else {
            sprite.alpha.set(255);
        }
    }
}


Uncommenting the "sprite2.setPixelLevelChecks(false)" line produces the
expected results.

Original issue reported on code.google.com by [email protected] on 26 May 2008 at 4:25

Javascript not working with Pulpcore 0.11.4

What steps will reproduce the problem?
1. Go to BubbleMark Example on the Pulpcore site
2. Use any of the Javascript controls
3. None of the controls work

What is the expected output? What do you see instead?
The controls should affect the applet. Controls are unresponsive.

What version of the product are you using? On what operating system?
Pulpcore 0.11.4, Java 1.6 Update 10, Windows Vista Home Premium, Firefox
3.0.5 or Internet Explorer 8; does not matter

Please provide any additional information below.
Javascript controls works with this system using Pulpcore 0.11.3 from the
downloads. The latest nightly build does not work.

Original issue reported on code.google.com by [email protected] on 24 Dec 2008 at 8:37

Make images immutable by default

Immutable images will allow certain rendering optimizations and automatic 
mip-mapping. Mutable 
images will be created with a copyMutable() method or something similar.

Original issue reported on code.google.com by [email protected] on 11 Apr 2009 at 12:59

Provide option for fixed timestep.

Add built in support for fixed timesteps. 

Physics engines and some AI code need a fixed timestep to operate correctly. 
Fixed timesteps can 
be implemented at the Scene-level, but it doesn't apply to timelines and 
properties.

Optionally, provide a hook to allow interpolation as Gaffer describes here:
http://gafferongames.com/game-physics/fix-your-timestep/

Original issue reported on code.google.com by [email protected] on 11 Apr 2009 at 12:40

Reflection Filter

There is a error in Reflection.java. The following will fix it. (No idea 
how to commit source!)

    /**
        Creates a Reflection filter with the default parameters.
     */
    public Reflection() {
        this(1);
    }

        /**
        Creates a Reflection filter with the specified gap.
     */
    public Reflection(int gap) {
        this(gap, 0.75f);
    }

    /**
        Creates a Reflection filter with the specified gap and 
reflection height (as a fraction of
        the input image).
    */
    public Reflection(int gap, float fraction) {
        this(gap, fraction, 128, 0);
    }

Original issue reported on code.google.com by [email protected] on 6 Mar 2010 at 2:31

Sprite.visible.set(false) shouldn't repaint the sprite

What steps will reproduce the problem?
1. Create a Sprite 
2. make it invisible
3. make it visible again

What is the expected output? What do you see instead?
The sprite is updated twice. We could expect that it will be updated only
once when the Sprite is made visible again (step 3). We shouldn't waste
time updating a Sprite that doesn't show on the screen. 



Original issue reported on code.google.com by [email protected] on 5 Apr 2009 at 4:35

Life cycle event management patch.

I've created a simple life cycle event management package and integrated it
with PulpCore.

Here's a patch.

Note, I did a diff on the directory after I imported it into Eclipse as a
project, so when applying the patch locally, be careful about the Eclipse
specific files and specific build.properties entries.

Also, the code needs to be cleaned up because my editor settings are
different than those of the files - is there a Jalopy file or something
similar somewhere so I can format them correctly?

I also included a screenshot of the Quick template running with it.

Original issue reported on code.google.com by [email protected] on 26 Mar 2008 at 5:22

Attachments:

Sprite.drawSprite() called even if sprite is not dirty.

For some reason, drawSprite() is called more than necessary in a Sprite. I
made a test on FilledSprite, but there should be a problem with other types
of sprites too. 

What steps will reproduce the problem?
1. add a trace in FilledSprite.drawSprite().
 System.out.println("redrawing FilledSprite").
2. create a small example:
public void load() {
    sprite = new FilledSprite(Colors.BLACK);
    add(sprite);
    photo1 = new ImageSprite("photo1.png", 0, 0);
    add(photo1);
 }
 public void update(int elapsedTime) {
   if(Input.isPressed(Input.KEY_SPACE)) {
    photo1.x.animateTo(10, 1000);
    }
3. run the app. Hit space
4. You see in the console that FilledSprite is drawn 10 times during the
animation. BUT this shouldn't be the case because it's not dirty. The only
way the method should be called is by changing one of it's property
(height, width, x, y  or fillColor). Other cases shouldn't redraw this sprite.

What is the expected output? What do you see instead?
drawSprite should be call only once in this example.

Original issue reported on code.google.com by [email protected] on 5 Apr 2009 at 5:28

Provide a GWT version

Google Web Toolkit allows for java developers to cross-compile java code into 
javascript code.

Your framework could, theoretically, run "natively" in the browser if it gets 
cross-compiled for javascript and if it uses the canvas html tag.

Original issue reported on code.google.com by [email protected] on 5 Dec 2011 at 12:20

A TimelineEvent is *always* executed at the begining of a child Timeline

1. produce a new scene, in the load() method put the following code:
<code>
FilledSprite s = new FilledSprite(0,0,30,30,YELLOW);
add(s);

Timeline tl = new Timeline();
Timeline sec = new Timeline();
tl.after().move(s, 50,0,0,0,2000);
sec.move(s, 0,0, 100, 100, 2000);
final Int i = new Int(0);
sec.after().addEvent(new TimelineEvent(10) {
    @Override
    public void run() {
        i.set(i.get()+1);
        CoreSystem.print("run"+i.get());
    }   
});
tl.after().add(sec);
addTimeline(tl);
</code>
2. Execute the scene

We expect to see, in the following order:
1) The yellow square moves from (50,0) to (0,0), during 2 seconds.
2) The yellow scene moves from (0,0) to (100,100) during 2 seconds.
3) A "run1" line appears in the console.

What we actually see is:
1) The yellow square moves from (50,0) to (0,0), during 2 seconds.
2) A "run1" line appears in the console.
3) The yellow scene moves from (0,0) to (100,100) during 2 seconds.
4) A "run2" line appears in the console.
5) A "run3" line appears in the console.

Note that the repetition of run2 and run3 is probably related to issue 
27[1]
Also note that this happens only if the child Timeline 'sec' should happen 
in the middle of the father Timeline 'tl'.

This happens with the latest svn version

[1] http://code.google.com/p/pulpcore/issues/detail?id=27


Please provide any additional information below.

Original issue reported on code.google.com by [email protected] on 1 Aug 2009 at 7:58

Erratic timer on AMD64-X2 system

What steps will reproduce the problem?
1. Run Milpa game demo
2. Observe erratic motion/animation.

What is the expected output? What do you see instead?

Expected smooth motion.

What version of the product are you using? On what operating system?
- AMD Athlon 64 X2 Dual system, running Windows XP
- Java build 1.6.0_05-b13

Please provide any additional information below.

- There is a bug with the System.NanoTime implementation on AMD64 X2
machines where the two processors are not completely synchronized, and so
two subsequent calls to NanoTime could return a negative delta. That's
probably what's happening here. I'd be glad to test out any debug
builds/solutions you might come up with, if you're interested in working on
fixing this issue.

Thanks for the excellent framework!

Original issue reported on code.google.com by [email protected] on 3 Apr 2008 at 12:28

Robust Widget/GUI (Themed Buttons, Borders, DropDowns and Lists, EventListeners)

Summary:  Extend the current GUI/Widgeting system to support out of the box
sleek customizable Widgets which use EventListeners (for drawing and
updating) to separate code better.  Making a more dynamic GUI system as
well as one much easier to code.

Goals and Specifics:
1. Easier coding - Putting chunks of code into event listeners helps in   
organizing your code.  Of course the old version of handling events in the
update method will still be there.

2. Themed Widgets - Creating buttons from scratch is difficult, so
providing a basic set of reusable buttons easily transformed would
streamline the dev process.  Using modern buttons as a default, then having
a default Theme that would be easily editable by the developer.  An example
constructor could be ThemedButton(String text, int x, int y, Color
buttonBaseColor).  Pulpcore would automaticcaly convert the default button
image to the base color of the developer specifies using some handy image
processing techniques (http://www.jhlabs.com)
(http://www.javalobby.org/articles/ultimate-image/)

3. Clean Up - Specifically making a really sexy scroll bar for the
ScrollPane, automatically creating beveled borders for Group's of widgets,
and adding a basic Layout such as a LinearLayout.

Original issue reported on code.google.com by [email protected] on 8 Jun 2009 at 4:03

Images using INTERPOLATION_NEAREST_NEIGHBOR throws a bunch of ArrayIndexOutOfBoundsException when overlapping

What steps will reproduce the problem?
Create two sprites that use INTERPOLATION_NEAREST_NEIGHBOR and have them
overlap each other in playback

What is the expected output? What do you see instead?
Some sprites show some do not.  Several hundred exceptions are thrown as
soon as the overlapping sprite come onto the screen.

What version of the product are you using? On what operating system?
This bug was tested in 0.10 and I built a version of 0.11 from svn that did
it too.

I notice if I turned off INTERPOLATION_NEAREST_NEIGHBOR everything works.

Please provide any additional information below.

Here is one of the traces:
[pulpcore-player] pulpcore.platform.graphics.error:
java.lang.ArrayIndexOutOfBoundsException: -448
[pulpcore-player]   at
pulpcore.image.CompositeSrcOver.blend(CompositeSrcOver.java:291)
[pulpcore-player]   at
pulpcore.image.CoreGraphics.internalDrawScaledImage(CoreGraphics.java:1104)
[pulpcore-player]   at
pulpcore.image.CoreGraphics.internalDrawScaledImage(CoreGraphics.java:1057)
[pulpcore-player]   at
pulpcore.image.CoreGraphics.drawImage(CoreGraphics.java:777)
[pulpcore-player]   at
pulpcore.image.CoreGraphics.drawImage(CoreGraphics.java:748)
[pulpcore-player]   at
pulpcore.sprite.ImageSprite.drawSprite(ImageSprite.java:188)
[pulpcore-player]   at pulpcore.sprite.Sprite.draw(Sprite.java:654)
[pulpcore-player]   at pulpcore.sprite.Group.drawSprite(Group.java:469)
[pulpcore-player]   at pulpcore.sprite.Sprite.draw(Sprite.java:654)
[pulpcore-player]   at pulpcore.sprite.Group.drawSprite(Group.java:469)
[pulpcore-player]   at pulpcore.sprite.Sprite.draw(Sprite.java:654)
[pulpcore-player]   at pulpcore.sprite.Group.drawSprite(Group.java:469)
[pulpcore-player]   at pulpcore.sprite.Sprite.draw(Sprite.java:654)
[pulpcore-player]   at pulpcore.scene.Scene2D.drawScene(Scene2D.java:829)
[pulpcore-player]   at core.FAScene.drawScene(FAScene.java:10)
[pulpcore-player]   at pulpcore.Stage.animationLoop(Stage.java:656)
[pulpcore-player]   at pulpcore.Stage.run(Stage.java:511)
[pulpcore-player]   at java.lang.Thread.run(Unknown Source)

Original issue reported on code.google.com by [email protected] on 17 Feb 2008 at 3:19

TimelineEvent in the middle of a Timeline is executed more than once

1. produce a scene with the following code in it's load() method:

<code>
Timeline tl = new Timeline();
final Int i = new Int(0);
tl.move(s, 0,0, 100, 100, 2000);
tl.after().addEvent(new TimelineEvent(10) {
    @Override
    public void run() {
        i.set(i.get()+1);
        CoreSystem.print("run"+i.get());
    }
});
addTimeline(tl);
</code>

I expect to see in the console output a single line:
run1
What I actually see is two lines:
run1
run2

Note that this is not related to the fact that the TimelineEvent is 
residing within a child Timeline, since if you do `tl.at(0).addEvent(...)` 
the event would occur once only.


What version of the product are you using? On what operating system?


Please provide any additional information below.

Original issue reported on code.google.com by [email protected] on 1 Aug 2009 at 7:51

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.