Git Product home page Git Product logo

stamps's Introduction

About Me

Website GitHub LinkedIn

I am a creator at heart with a passion for building things that people love. I also love making art - sketching, photography, and designing fills my soul.

Since 1999 I’ve had the privilege of shipping exceptional products to customers around the world. I’ve led teams ranging in size from 1 to 100 at start-ups and fortune 500 companies.

I graduated from business school in 2002 with a degree in Management Information Systems. In my junior year of college, I was hired by LexisNexis where I eventually lead small and large teams shipping a wide range of large-scale enterprise products.

In the recent past, I owned and operated a distinguished consulting firm Littlelines — specializing in shippinng products for small and large companies worldwide. For fourteen years, I lead engineering and design teams shipping hundreds of products for our clients. In 2020, the company was acquired.

Today, I’m the CEO of StaticPop Co., a small portfolio of digital companies I own or have invested in. I'm currently available for investment opportunities, business coaching, product strategy, speaking, and mentoring. If interested, please feel free to reach out.

stamps's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

stamps's Issues

Rails 3.2/ruby 1.9.3 Incompatibility

When running 'bundle update' using Rails 3.2 (ruby 1.9.3p194) I am seeing the following dependency issue.

Bundler could not find compatible versions for gem "multi_json":
In Gemfile:
multi_json (~> 1.0) ruby

stamps (>= 0) ruby depends on
  multi_json (0.0.5)

Savon client reuse?

According to my reading of Stamps::Request, you're creating an instance of Savon::Client for each request. Is there any particular reason for that?

Savon uses HTTPI ,which in turn prefers HTTPClient, which is documented as having an expensive initialization procedure. The recommended method of using HTTPClient is to set up a single client instance and then reuse it across requests (and threads, as it's threadsafe).

So, it'd be preferable for the Stamps client, during initialization, to initialize a Savon client (and potentially the underlying HTTPI adapter, since Savon doesn't appear to do that itself). This would keep us from incurring the setup cost on every request.

Thoughts?

The property 'authenticator' is not defined for this Trash.

I've pretty much copied and pasted the code from here verbatim: http://rubydoc.info/gems/stamps/0.2.0/frames

And I'm getting the following backtrace:

[Tue, 24 Jan 2012 17:34:48 GMT] WARNING NoMethodError - The property 'authenticator' is not defined for this Trash.:
[Tue, 24 Jan 2012 17:34:48 GMT] WARNING   /Users/mboyle/.rbenv/versions/1.9.2-p290/lib/ruby/gems/1.9.1/gems/hashie-1.0.0/lib/hashie/trash.rb:50:in `property_exists?'
[Tue, 24 Jan 2012 17:34:48 GMT] WARNING   /Users/mboyle/.rbenv/versions/1.9.2-p290/lib/ruby/gems/1.9.1/gems/hashie-1.0.0/lib/hashie/trash.rb:35:in `[]='
[Tue, 24 Jan 2012 17:34:48 GMT] WARNING   /Users/mboyle/.rbenv/versions/1.9.2-p290/lib/ruby/gems/1.9.1/gems/hashie-1.0.0/lib/hashie/dash.rb:83:in `block in initialize'
[Tue, 24 Jan 2012 17:34:48 GMT] WARNING   /Users/mboyle/.rbenv/versions/1.9.2-p290/lib/ruby/gems/1.9.1/gems/hashie-1.0.0/lib/hashie/dash.rb:82:in `each_pair'
[Tue, 24 Jan 2012 17:34:48 GMT] WARNING   /Users/mboyle/.rbenv/versions/1.9.2-p290/lib/ruby/gems/1.9.1/gems/hashie-1.0.0/lib/hashie/dash.rb:82:in `initialize'
[Tue, 24 Jan 2012 17:34:48 GMT] WARNING   /Users/mboyle/.rbenv/versions/1.9.2-p290/lib/ruby/gems/1.9.1/gems/stamps-0.2.0/lib/stamps/mapping.rb:122:in `new'
[Tue, 24 Jan 2012 17:34:48 GMT] WARNING   /Users/mboyle/.rbenv/versions/1.9.2-p290/lib/ruby/gems/1.9.1/gems/stamps-0.2.0/lib/stamps/mapping.rb:122:in `to='
[Tue, 24 Jan 2012 17:34:48 GMT] WARNING   /Users/mboyle/.rbenv/versions/1.9.2-p290/lib/ruby/gems/1.9.1/gems/hashie-1.0.0/lib/hashie/trash.rb:34:in `[]='
[Tue, 24 Jan 2012 17:34:48 GMT] WARNING   /Users/mboyle/.rbenv/versions/1.9.2-p290/lib/ruby/gems/1.9.1/gems/hashie-1.0.0/lib/hashie/dash.rb:83:in `block in initialize'
[Tue, 24 Jan 2012 17:34:48 GMT] WARNING   /Users/mboyle/.rbenv/versions/1.9.2-p290/lib/ruby/gems/1.9.1/gems/hashie-1.0.0/lib/hashie/dash.rb:82:in `each_pair'
[Tue, 24 Jan 2012 17:34:48 GMT] WARNING   /Users/mboyle/.rbenv/versions/1.9.2-p290/lib/ruby/gems/1.9.1/gems/hashie-1.0.0/lib/hashie/dash.rb:82:in `initialize'
[Tue, 24 Jan 2012 17:34:48 GMT] WARNING   /Users/mboyle/.rbenv/versions/1.9.2-p290/lib/ruby/gems/1.9.1/gems/stamps-0.2.0/lib/stamps/client/stamp.rb:32:in `new'
[Tue, 24 Jan 2012 17:34:48 GMT] WARNING   /Users/mboyle/.rbenv/versions/1.9.2-p290/lib/ruby/gems/1.9.1/gems/stamps-0.2.0/lib/stamps/client/stamp.rb:32:in `create!'
[Tue, 24 Jan 2012 17:34:48 GMT] WARNING   /Users/mboyle/.rbenv/versions/1.9.2-p290/lib/ruby/gems/1.9.1/gems/stamps-0.2.0/lib/stamps.rb:25:in `method_missing'
[Tue, 24 Jan 2012 17:34:48 GMT] WARNING   /Users/mboyle/knack/code/knack-stamps/knack.rb:28:in `block in <class:Knack>'

The API log from this request appears to be:

[Tue, 24 Jan 2012 17:34:48 GMT] INFO D, [2012-01-24T12:34:47.109981 #12164] DEBUG -- : SOAP request: https://swsim.testing.stamps.com/swsim/swsimv12.asmx
[Tue, 24 Jan 2012 17:34:48 GMT] INFO D, [2012-01-24T12:34:47.110046 #12164] DEBUG -- : SoapAction: http://stamps.com/xml/namespace/2010/11/swsim/swsimv12/AuthenticateUser, Content-Type: text/xml;charset=UTF-8
[Tue, 24 Jan 2012 17:34:48 GMT] INFO D, [2012-01-24T12:34:47.110068 #12164] DEBUG -- : <?xml version="1.0" encoding="UTF-8"?><soap:Envelope xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tns="http://stamps.com/xml/namespace/2010/11/swsim/swsimv12" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"><soap:Body><tns:AuthenticateUser><tns:Credentials><tns:IntegrationID>d6e72572-909c-472e-9c1f-f7b660732a08</tns:IntegrationID><tns:Username>stampswap1</tns:Username><tns:Password>postage1</tns:Password></tns:Credentials></tns:AuthenticateUser></soap:Body></soap:Envelope>
[Tue, 24 Jan 2012 17:34:48 GMT] INFO D, [2012-01-24T12:34:48.606401 #12164] DEBUG -- : SOAP response (status 200):
[Tue, 24 Jan 2012 17:34:48 GMT] INFO D, [2012-01-24T12:34:48.606472 #12164] DEBUG -- : <?xml version="1.0" encoding="utf-8"?><soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Body><AuthenticateUserResponse xmlns="http://stamps.com/xml/namespace/2010/11/swsim/swsimv12"><Authenticator>exp=1327512888&amp;uid=2797662&amp;cty=swsim&amp;ctk=EURNuJ1Rh+rvdtwvdUj8UET0ouk=&amp;iid=ciXn1pyQLkecH/e2YHMqCA==&amp;rsid=0&amp;eac=0&amp;eacx=0&amp;rrsid=0&amp;raid=0&amp;resellerid=0&amp;mac=bvrxFWvr6ji3DaX7LHcRCLSr3/k=</Authenticator></AuthenticateUserResponse></soap:Body></soap:Envelope>

Not compatible with Ruby 2.4.0

The stamps gem is not installing when ruby 2.4.0 is used.

The issue is that stamps requires JSON version ~> 1.0

But json less than 2.0 does not install with ruby 2.4.0, native extensions are not getting built when JSON 1.8 was used.

Ruby 2.4.0 comes with JSON 2.0.2 which does not match stamps requirements. Can the gem dependency be updated?

The property 'address' is not defined for this Trash

Running into a similar issue to another that has been reported but different property (and newer version of the WSDL)

This is happening when I run the Stamps.create! action. Here is the output I am getting:

SOAP request: https://swsim.testing.stamps.com/swsim/SwsimV23.asmx
SoapAction: http://stamps.com/xml/namespace/2012/04/swsim/swsimv23/AuthenticateUser, Content-Type: 
text/xml;charset=UTF-8
<?xml version="1.0" encoding="UTF-8"?><soap:Envelope xmlns:xsd="http://www.w3.org/2001/XMLSchema"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xmlns:tns="http://stamps.com/xml/namespace/2012/04/swsim/swsimv23"
 xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"><soap:Body><tns:AuthenticateUser>
 <tns:Credentials><tns:IntegrationID>[MY-INTEGRATION-ID-HERE]</tns:IntegrationID><tns:Username>[MY
 -USERNAME-HERE]</tns:Username><tns:Password>[MY-PASSWORD-HERE]</tns:Password>
 </tns:Credentials></tns:AuthenticateUser></soap:Body></soap:Envelope>

SOAP response (status 200):

 <?xml version="1.0" encoding="utf-8"?><soap:Envelope
  xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-
  instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Body><AuthenticateUserResponse
  xmlns="http://stamps.com/xml/namespace/2012/04/swsim/swsimv23">
 <Authenticator>exp=1344609632&amp;uid=2799981&amp;cty=swsim&amp;
 ctk=AAuJ3tJa7M5ALfsNktPX99CJOoM=&amp;iid=6LKmNRnJxEyDQfY5lUwNVw==
 &amp;rsid=0&amp;eac=0&amp;eacx=0&amp;rrsid=0&amp;raid=0&amp;resellerid=0
 &amp;pexp=0&amp;mac=Yf9kPx+hNYoX5po8vIOrCbHWgaQ=</Authenticator>
 <LastLoginTime>2012-08-09T14:38:58.12</LastLoginTime><ClearCredential>false</ClearCredential>
 <LoginBannerText /><PasswordExpired>false</PasswordExpired></AuthenticateUserResponse></soap:Body>
 </soap:Envelope>

NoMethodError: The property 'address' is not defined for this Trash.
from /Users/ayb/.rvm/gems/ruby-1.9.2-p290@stack/gems/hashie-1.0.0/lib/hashie/trash.rb:50:in property_exists?' from /Users/ayb/.rvm/gems/ruby-1.9.2-p290@stack/gems/hashie-1.0.0/lib/hashie/trash.rb:35:in[]='
from /Users/ayb/.rvm/gems/ruby-1.9.2-p290@stack/gems/hashie-1.0.0/lib/hashie/dash.rb:83:in block in initialize' from /Users/ayb/.rvm/gems/ruby-1.9.2-p290@stack/gems/hashie-1.0.0/lib/hashie/dash.rb:82:ineach_pair'
from /Users/ayb/.rvm/gems/ruby-1.9.2-p290@stack/gems/hashie-1.0.0/lib/hashie/dash.rb:82:in initialize' from /Users/ayb/.rvm/gems/ruby-1.9.2-p290@stack/gems/stamps-0.3.0/lib/stamps/mapping.rb:126:innew'
from /Users/ayb/.rvm/gems/ruby-1.9.2-p290@stack/gems/stamps-0.3.0/lib/stamps/mapping.rb:126:in to=' from /Users/ayb/.rvm/gems/ruby-1.9.2-p290@stack/gems/hashie-1.0.0/lib/hashie/trash.rb:34:in[]='
from /Users/ayb/.rvm/gems/ruby-1.9.2-p290@stack/gems/hashie-1.0.0/lib/hashie/dash.rb:83:in block in initialize' from /Users/ayb/.rvm/gems/ruby-1.9.2-p290@stack/gems/hashie-1.0.0/lib/hashie/dash.rb:82:ineach_pair'
from /Users/ayb/.rvm/gems/ruby-1.9.2-p290@stack/gems/hashie-1.0.0/lib/hashie/dash.rb:82:in initialize' from /Users/ayb/.rvm/gems/ruby-1.9.2-p290@stack/gems/stamps-0.3.0/lib/stamps/client/stamp.rb:32:innew'
from /Users/ayb/.rvm/gems/ruby-1.9.2-p290@stack/gems/stamps-0.3.0/lib/stamps/client/stamp.rb:32:in create!' from /Users/ayb/.rvm/gems/ruby-1.9.2-p290@stack/gems/stamps-0.3.0/lib/stamps.rb:25:inmethod_missing'
from (irb):28
from /Users/ayb/.rvm/gems/ruby-1.9.2-p290@stack/gems/railties-3.1.7/lib/rails/commands/console.rb:45:in start' from /Users/ayb/.rvm/gems/ruby-1.9.2-p290@stack/gems/railties-3.1.7/lib/rails/commands/console.rb:8:instart'
from /Users/ayb/.rvm/gems/ruby-1.9.2-p290@stack/gems/railties-3.1.7/lib/rails/commands.rb:40:in <top (required)>' from script/rails:6:inrequire'
from script/rails:6:in `

'>>

The property 'address' is not defined for this Trash

I know that there is another bug with the same title, but this is using the latest version of the Stamps.com API (https://swsim.testing.stamps.com/swsim/SwsimV34.asmx)

Make the calls as defined in the ReadMe result in the error in the title.

Here are my example calls:

standardized_address = Stamps.clean_address(
  :address => {
    :full_name => 'The White House',
    :address1  => '1600 Pennsylvania Avenue, NW',
    :city      => 'Washington',
    :state     => 'DC',
    :zip_code  => '20500'
})

rates = Stamps.get_rates(
  :from_zip_code => '45440',
  :to_zip_code   => '20500',
  :weight_lb     => '0.5',
  :ship_date     => '2014-02-28'
)

stamp = Stamps.create!(
  :tracking_number => true,
  :rate          => rates.first,
  :to            => standardized_address,
  :from          => {
    :full_name    => 'Littlelines',
    :address1     => '50 Chestnut Street',
    :address2     => 'Suite 234',
    :city         => 'Beavercreek',
    :state        => 'OH',
    :zip_code     => '45440',
    :phone_number => '9375545027'
  },
  :memo => 'Thanks for shopping with us!'
)

I can see that the problem is with the serialization of the To Address object in the lib/stamps/mapping.rb. So I attempted to pass

:to => standardized_address[:address]

but that results in an error:

SystemStackError: stack level too deep

License terms are not stated

Hey, I'd like to use this code, but my organization's policy requires that all third party libraries we use be made available under an approved license. Presuming that it is your intention to make the code freely available, could you specify a license so that we know whether or not we'll be allowed to use it? Thanks!

stamps.com Offset and length must refer to a position in the string. Parameter name: string2

I have an issue while calling CreateIndicium method of stamps.com.

I have passed following parameters.
byte[][] ImageData=new byte[2045][];
Sws.CreateIndicium(strAuthenticator, ref IntergatorID, ref TrackingNumber, ref rate, FromAddress, ToAddress,null,null, true, ImageType.Gif, EltronPrinterDPIType.High, "Thank you for Using Stamps.com",0, false,null, 90, 0,0,0,true,false, false, NonDeliveryOption.Undefined,null, "",false,null, PaperSizeV1.Default,null, false,90, out StampsTxID, out URL, out PostageBalance, out Mac, out PostageHash, out ImageData);

please help me to resolve this issue.

gem dependency issues

When I try to install the gem, I get this:

$ gem install stamps
ERROR: While executing gem ... (Gem::DependencyError)
Unable to resolve dependencies: stamps requires httpi (= 0.7.9); savon requires httpi (> 1.1.0); wasabi requires httpi (> 1.0)

Seems like there ought to be a happy medium here - guessing that stamps would work fine on a newer version of httpi?

NoMethodError for #get_authenticator_token when AuthenticateUser operation fails

For some unrelated reason, stamps.com has decided that my integration id is invalid; no idea why, I'll sort that out with them. In the meantime, though, Stamps.get_authenticator_token is raising NoMethodError rather than doing something a little more sane.

I'd be happy to provide a patch, but I'd like a little guidance on the right approach to take. Perhaps raising a more explicit exception, maybe Stamps::InvalidIntegrationID or some such?

1.9.3-p0 :033 > Stamps.get_authenticator_tokenSOAP request: https://swsim.stamps.com/swsim/swsimv12.asmx
SoapAction: http://stamps.com/xml/namespace/2010/11/swsim/swsimv12/AuthenticateUser, Content-Type: text/xml;charset=UTF-8
<?xml version="1.0" encoding="UTF-8"?><soap:Envelope xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tns="http://stamps.com/xml/namespace/2010/11/swsim/swsimv12" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"><soap:Body><tns:AuthenticateUser><tns:Credentials><tns:IntegrationID>my integration id</tns:IntegrationID><tns:Username>my username</tns:Username><tns:Password>my password</tns:Password></tns:Credentials></tns:AuthenticateUser></soap:Body></soap:Envelope>
SOAP response (status 500):
<?xml version="1.0" encoding="utf-8"?><soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Body><soap:Fault><faultcode>soap:Server</faultcode><faultstring>Invalid integration ID.</faultstring><faultactor>https://swsim.stamps.com/swsim/swsimv12.asmx</faultactor><detail><sdcerror code="002B0207" xmlns="http://stamps.com/xml/namespace/2008/01/fault">Invalid integration ID. Bridge exception code 0x002b0207; module 43, category 2, item 7.</sdcerror></detail></soap:Fault></soap:Body></soap:Envelope>


NoMethodError: undefined method `[]' for nil:NilClass
from /Users/bcm/.rvm/gems/ruby-1.9.3-p0@brooklyn/gems/stamps-0.2.0.copious.1/lib/stamps/request.rb:39:in `get_authenticator_token'
from /Users/bcm/.rvm/gems/ruby-1.9.3-p0@brooklyn/gems/stamps-0.2.0.copious.1/lib/stamps.rb:25:in `method_missing'
from (irb):33
from /Users/bcm/.rvm/gems/ruby-1.9.3-p0@brooklyn/gems/railties-3.1.6/lib/rails/commands/console.rb:45:in `start'
from /Users/bcm/.rvm/gems/ruby-1.9.3-p0@brooklyn/gems/railties-3.1.6/lib/rails/commands/console.rb:8:in `start'
from /Users/bcm/.rvm/gems/ruby-1.9.3-p0@brooklyn/gems/railties-3.1.6/lib/rails/commands.rb:40:in `<top (required)>'
from script/rails:6:in `require'
from script/rails:6:in `<main>'

Errno::ECONNRESET: Connection reset by peer - SSL_connect

Running 1.9.3 and Rails 3.2.14

I've been getting

Errno::ECONNRESET: Connection reset by peer - SSL_connect

I've tried this on multiple dev machines, made sure it wasn't an issue with openssl, all to no avail. Anyone experience the same / have a suggestion for what could be causing it?

Thanks

Unexpected values for response hash

I'm getting some strange values in my response hash:

ruby-1.9.3-p0 :068 > a = Stamps.account
  ...
ruby-1.9.3-p0 :069 > a[:customer_id]
#<String:0x7ffd8a7f4df8
    attr_accessor :attributes = {}
>
ruby-1.9.3-p0 :070 > a[:customer_id].class
String < Object
ruby-1.9.3-p0 :071 > a[:customer_id].inspect
"\"7085587\""

that doesn't look like any String I ever heard of. what am I missing? why doesn't a[:customer_id] return 7085587?

I followed the trail of bread crumbs from Stamps to Savon to Crack, saw that REXML is being used for XML parsing, and had to pause to wipe the blood from my eyes and ears.

I asked on the commit where you rolled back to Savon 0.8.6, but I'll ask again here, why not roll forward to 1.1.0 or whatever the most recent version is, if the problem was with 0.9.2? I'd feel more comfortable for sure with less antique code under the hood, and I'm going to experiment on my own with that version, but if there's some other problem with recent versions of Savon that I'm not aware of, please let me know.

thanks!

#clean_address test failing on ruby 1.9.3

  1) Failure:
test: #clean_address with valid data should indicate if the address match. (AddressTest) [/Users/bcm/Projects/usl/stamps/test/client/address_test.rb:29]:
Failed assertion, no message given.

rvm info: https://gist.github.com/3014649
Gemfile.lock: https://gist.github.com/3014652

It's certainly possible that the failure is due to my having updated dependencies. I haven't had time to dive into this beyond noticing that, at the beginning of the failing test, @address looks like this:

address: {:authenticator=>"ZVk2fjKAIR8AgCYYo+3EQuylEHg=", :address=>{:full_name=>"MATT SEARS", :address1=>"123 MOCKINGBIRD LANE", :address2=>nil, :city=>"NEW YORK", :state=>"NY", :zip_code=>"11111", :zip_code_add_on=>"222", :dpb=>"06", :check_digit=>"5", :urbanization=>nil, :cleanse_hash=>"W9pHbVsNIdYE8/B6SyQ4wOkIIr9kZWFkYmVlZg==20110713", :override_hash=>"PxU7xsTh5+lebMpE9IcjOWQS0alkZWFkYmVlZg==20110713"}, :address_match=>nil, :city_state_zip_ok=>nil, :@xmlns=>"http://stamps.com/xml/namespace/2010/11/swsim/swsimv12"}

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.