Giter Site home page Giter Site logo

rust-lang / this-week-in-rust Goto Github PK

View Code? Open in Web Editor NEW
2.0K 67.0 1.1K 16.96 MB

Data for this-week-in-rust.org

Home Page: https://this-week-in-rust.org/

Shell 1.85% Python 24.32% CSS 16.96% JavaScript 1.20% HTML 43.85% SCSS 8.66% Dockerfile 0.73% Makefile 2.43%
rust newsletter blog pelican

this-week-in-rust's Introduction

This Week in Rust

Content for this-week-in-rust.org. Made available under CC-BY-SA.

All code Copyright 2014 Ember Arlynx, made available under the MIT license.

TWiR Editors

Language Reviewers

PRs for next issue are now being accepted

To propose content for inclusion in the next newsletter (found in the drafts/ folder), create a new Pull Request updating the relevant section in the draft.

Alternately, tweet us @thisweekinrust.

What do we look for when considering whether to include something in This Week in Rust?

This Week in Rust is intended to highlight the incredible work of the Rust Community.

What we are generally looking for includes:

  • how-to intros (and advanced deep dives) into Rust concepts and areas
  • Rust walkthroughs that explain concepts in different ways than well known resources like the Rust book, Rustlings, and Rust by Example
  • updates on tooling when in long form or framed as a tutorial (for more details, see what we are not looking for below)
  • Rust-related podcast episodes
  • Rust-related screenshots and videos
  • Rust meetup recordings
  • Rust meetup announcements
  • Presenter slide decks on Rust
  • Observations and thoughts on Rust and the Rust community
  • Calls for participation in Rust open source projects
  • Rust job announcements
  • and more!

What we are generally NOT looking for includes:

  • Anything that violates the Rust Community Code of Conduct
  • Rants or anything degrading to any part or member of the Community. Rather than submitting an article about what is wrong with something, we would much rather you write something that explains how you'd make it better.
  • Duplicates of recent posts (even with the wording changed slightly)
  • Anything behind a paywall (this includes Medium's paid article / members-only mechanism)
  • Anything that requires information to be shared/captured (like an email address) in order to access

Projects/Tooling Updates

There are further guidelines for the Projects/Tooling Updates Section

We include:

  • Updates on tooling when in long form or framed as a tutorial (this can be through a blog, through GitHub, through a newsletter, and more) - it must have a high amount of Rust specific info (examples in Rust, notes on things learned about Rust in the process of creating/updating the project, etc.)
  • Updates on tooling that call out specific contributors - it is wonderful to highlight all the great people contributing to Rust OSS projects (Note - the update still must include a high amount of Rust specific info)
  • Changelogs of projects (though we strongly prefer the changelogs be accompanied with details on the changes, guides to using the changes, etc.)

We do not include:

  • Links that are solely to a GitHub repo or crate on crates.io. While we would love to include these, there are too many being created/updated every week for us to include them all. We encourage you to write up an introduction to your project with examples, information you learned through creating the project, changes you recently made to the project, etc.

Notes:

  • A small description of the project or the update in your link is encouraged (for example: FooBar 1.0: adding support for Baz)
  • We discourage submitting links and link descriptions that are solely of a commercial/sales nature

These are meant to be guidelines, if you are ever not sure about whether something should be included please feel free to open a pull request anyway and we can discuss it!

The editors of This Week in Rust do reserve the right to make the decision about whether to include something or not, but we intend to do so in a way that is as transparent as possible.

Link style guidelines:

The link text should be the same as the page's title. If the title seems to need additional context (for example, if the title is "What's New" and should have the project name added), please ask in the PR comments.

Links should use the most canonical form. For example, if example.tech redirects to www.example.com, then the latter is preferred.

Links should not contain unnecessary tracking parameters, e.g. utm_source, utm_campaign.

Some prefixes are used, and should be placed to the left of the link.

  • [video] for videos
  • [audio] for podcasts or other audio.
  • [series] for articles that are one of a series.
  • 2-letter languages codes (e.g. [ZH], [ES], [FR]) for content in a language other than English.

Community sub-categories

Editors will sort community links into sub-categories. The following sub-categories are currently used:

  • Official -- rust-lang.org blog posts and other official Rust team communications.
  • Foundation -- foundation.rust-lang.org blog posts and other official foundation communications.
  • Project/Tooling Updates -- News about the progress of a Rust project. Must be more informative than just a changelog.
  • Newsletters -- Regularly scheduled articles about an area of Rust development, e.g. posts titled "This Month in ___".
  • Research -- Academic Papers that are about Rust or contain significant Rust content.
  • Observations/Thoughts -- Articles about Rust.
  • Rust Walkthroughs -- Articles that include a significant amount of Rust source code, that walk the reader through building something.
  • Miscellaneous -- Links that don't clearly fit in other sub-categories.

Most blog posts about Rust belong in Rust Walkthroughs if they show how something is done (including source code), otherwise Observations/Thoughts. Articles that don't contain much Rust content, or news articles that mention Rust, won't always be accepted, but when they are they can be placed in the Miscellaneous sub-category.

If a set of related links is published (e.g. from a large Rust conference), the editors may choose to invent a new category just for that issue.

How I get PR lists:

git log --author=bors --since='MM/DD/YYYY 12:00PM' --until='MM/DD/YYYY 12:00PM' --pretty=oneline > ~/entropy/twir.txt
# edit in vim to get rid of everything but PR number, copy into clipboard
for pr in $(xsel -ob); do firefox https://github.com/mozilla/rust/pull/$pr; sleep 0.07; done
# wait a long time...
# write TWIR

Alternatively use GitHub search:

https://github.com/rust-lang/rust/pulls?q=is%3Apr+is%3Amerged+updated%3A2014-11-03..2014-11-10

How I get new contributors:

Use the included new_contribs.sh script:

new_contribs.sh 6/21/2014

Building

To ensure consistency across development setups, we use a Docker container-based workflow for building the website and email newsletter. Similarly, we use a makefile to Ensure you have Docker installed on your system if you intend to build the website or email newsletter.

Building the website

Before attempting to build the website, ensure Docker is in a running state on your system.

Note: If looking to test the website's search functionality locally, you will need to adjust the TESTING_LOCALLY variable to True.

Building the newsletter

Before attempting to build the email newsletter, ensure Docker is in a running state on your system.

this-week-in-rust's People

Contributors

andrewpollack avatar bennyvasquez avatar brson avatar cdmistman avatar emberian avatar ericseppanen avatar erikjee avatar extrawurst avatar gankra avatar gterzian avatar hannobraun avatar hmble avatar hunger avatar kvark avatar llogiq avatar mariannegoldin avatar mark-simulacrum avatar matthiasbeyer avatar michael-f-bryan avatar nasa42 avatar naternater avatar nellshamrell avatar pnkfelix avatar psiace avatar rylev avatar skade avatar szabgab avatar tjtelan avatar u007d avatar xandkeeper avatar

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  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  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 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  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

this-week-in-rust's Issues

TWIR 108's Crate of the Week

I got no submissions this week, so I'm arbitrarily picking a crate:

This week's Crate of the Week is cargo-count – a neat way to summarize line counts for cargo projects. Thanks go to lizida who suggested it back in September.

Also if you need a Quote of the Week, Chris Lattner's take on Rust and Swift is pretty neat:

The major philosophic difference between Rust today and Swift-as-I-envision-it is that Rust forces you to think about ownership everywhere, but Swift-as-I-envision-it should only force you to think about single ownership & borrowing if you want to optimize performance or guarantee that you have no encounters with the runtime.

If it helps, think of the extant Swift "inout" parameter modifier as being equivalent to "&mut", and imagine the logical swift extensions to support the rest of the Rust model.

This is a really important area for us to develop, but it also isn't the highest priority of the team. That means that Rust will maintain a lead in this area of applicability... unless someone motivated and capable from the open source community decides that it is really important to them, and makes it happen sooner.

TWIR 110's CotW

This week's crate is clippy, a collection of lints for better Rust code. Alas, being a plugin, it only runs on nightly Rust, but that's easy to do with multirust. Thanks to leodasvacas for the suggestion.

New RFCs?

I don't know if this is necessary, but I just want to be sure new RFCs including rust-lang/rfcs#1736 get included, because I don't see them in the draft. I'm not too familiar with the TWiR publishing cycle though.

Support emoji

@llogiq put a :smile: emoji in PR #240 and it was printed verbatim. We should add support for emoji (probably replacing :smile: with respective Unicode character by injecting some filter in Markdown -> HTML pipeline?).

community notes 22.10.2015

  • There's a Rust workshop with Women Who Code on the November 2nd at Codemotion Berlin: http://berlin2015.codemotionworld.com/news/women-who-code-workshop-introduction-to-rust/
    You need to sign up. There's a talk on the next day.
  • We sent in an application for a devroom at FOSDEM 2016, but it was rejected. It is still possible to submit talks to the accepted devrooms, though!
  • We are currently applying to be present at a couple of other events.
  • There are plans for an assembly at 32C3, the german hacker congress.

Highlight issues in the homepage

... Either highlight, or better yet, tag the issues which correspond to new releases of the compiler, like rustc-1.0, rustc-1.1, cargo-1.0, so that we can see which changes came in relative to which issue of "this week in rust", and to better see what falls in-between.

TWIR 117's CotW

The crate of this week is roaring, the Rust
version of Prof. D. Lemire's compressed bitmap data structure. I can personally
attest that both the Rust and Java versions compare very favorably in both
speed and size to other bit sets and are easy to use.

Thanks to polyfractal for the
suggestion.

TWIR 104's Crate of the Week

This week's Crate of the Week is ramp. Ramp supplies some high performance low memory easy to use big integral types.

Whenever you need integers too large for a u64 and cannot afford to lose precision, ramp has just what you need.

Thanks to zcdziura for this week's suggestion.

TWIR 101 CotW

This week's Crate of the Week is glium a safe Rust wrapper for OpenGL. Thanks to DroidLogician for the suggestion.

OpenGL is a time-honored standard, which also means its API has seen enough growth to make it look like you might find Sleeping Beauty if you look deep enough. Also it was created when multicore wasn't exactly on the radar, so many things are not thread safe. Caveat error! Glium pre-verifies whatever it can to make errors either impossible at compile time or panic before it can crash (so you at least get a helpful message instead of random garbage). It caches the context, manages your buffers using Rust's standard RAII idiom and by this brings some much-needed sanity to OpenGL programming.

No draft/ directory

The README mentions a drafts/ directory for the next issue, but I can't find it?
It's for bindgen 0.17.

Crate of the week for TWIR '95

Something like the following:


This is a new part of this weekly installation, where llogiq will write about a crate that some of you may not know. Please nominate a crate of your choice at the rust-users thread so he can write about it next week.

For this first installment, the most votes went to serde. Despite many of you probably knowing it, I accepted the popular vote because of the great benefit those who don't yet know it may get. Thanks go to bstrie for the suggestion.

Serde (de)serializes arbitrary Rust data to a number of formats, including json, XML, YAML, Bincode and MessagePack. It is possible to write encoder/decoder pairs to work with Serde that don't need to know too much about Rust objects, and Rust data structures only need a pair of auto-derived traits to work with Serde. Now what can one use serializaton for? Storing rust objects in files or database blobs, sending them between processes, over language-barriers or over the network, for one.

In short, serde is the rust framework for your (de)serialization needs.

TWIR 100 Crate of the Week

The Crate of this week is Conrod, a simple to use intermediate-mode GUI library written in pure Rust. Thanks to 7zf.

Conrod forgos the traditional "wrap the default GUI for each operating system/desktop environment" approach and uses OpenGL to present a simple, but color- as well as powerful GUI in its own style. There are a good number of widgets implemented already, and writing GUI code with conrod is a breeze thanks to the very streamlined interface.

TWIR 120's CotW + PRs

This week's crate of the week is rotor, a mio-based async-IO library providing an event loop, state machine combinators and futures.

Thanks to LilianMoraru for the suggestion.

Notable PRs:
rust-lang/rust#31942 Now into_iter() must come from an impl IntoIterator
rust-lang/rust#31929 A small change speeds up rustc
rust-lang/rust#31926 More _post methods for LintPasses (full disclosure: I did it)
rust-lang/rust#31904 [breaking!] Some Formatter errors are no longer silently discarded
rust-lang/rust#31876 OsRng no longer stops filling buffers after 4294967296 bytes on Windows
rust-lang/rust#31858 Also on Windows Files larger than 4GB aren't truncated on read/write
rust-lang/rust#31857 Scoping Bug Fixed
rust-lang/rust#31832 Update libc to fix Android build
rust-lang/rust#31834 new copy_from_slice method
rust-lang/rust#31846 makefiles now can disable jemalloc on rustc build
rust-lang/rust#31362 rustc will now warn of publicly visible extern crates; this will become a hard error in the future
rust-lang/rust#31704 Clone for IntoIter
rust-lang/rust#31805 use more 64-bit system functions on Android where available
rust-lang/rust#30969 compare_exch (+weak) function
rust-lang/rust#30856 Recognize #[thread_local] on extern statics
rust-lang/rust#30614 CStr::from_bytes_with_nul(_)

That was a busy week... 😄

'the team' link under Final Comment Period doesn't work

The link (src) to the team is https://rust-lang.org/team.html. This doesn't work for me. According to nmap, that server isn't listening for https requests:

$ nmap rust-lang.org
Starting Nmap 6.40 ( http://nmap.org ) at 2016-05-12 17:47 CDT
Nmap scan report for rust-lang.org (192.241.171.49)
Host is up (0.059s latency).
rDNS record for 192.241.171.49: fwd01.do.easydns.com
Not shown: 992 closed ports
PORT     STATE    SERVICE
22/tcp   open     ssh
80/tcp   open     http
111/tcp  open     rpcbind
135/tcp  filtered msrpc
139/tcp  filtered netbios-ssn
445/tcp  filtered microsoft-ds
3306/tcp open     mysql
3918/tcp open     pktcablemmcops

Changing the link to http results in a redirect to https://www.rust-lang.org/team.html, which does work. The www subdomain strikes again!

TWIR 118's COTW + interesting PRs

This week's crate of the week is rayon, which gives us par_iter()/par_iter_mut() functions that use an internal thread pool to easily parallelize data-parallel operations. There's also rayon::join(|| .., || ..) for Fork-Join-style tasks. Apart from the ease of use, it also performs very well, comparable to hand-optimized code. Thanks to LilianMoraru for the suggestion.

Also here are links to the (IMHO) interesting PRs merged:
rust-lang/rust#31551
rust-lang/rust#31545
rust-lang/rust#31468
rust-lang/rust#31442
rust-lang/rust#31425 (Yay! MIR Compiler plugins!)
rust-lang/rust#31651 (eddyb fixes an old bug)
rust-lang/rust#31562 (some more methods for lints. Full disclosure: From me – feel free to skip if you deem it unimportant)
rust-lang/rust#31630
rust-lang/rust#31629 (some love for i585 users)

And a big refactoring that actually broke some things
https://github.com/rust-lang/rust/pulls?q=is%3Apr+org%3Arust-lang+is%3Amerged+merged%3A2016-02-08..2016-02-15+[breaking-batch]

Website unreachable

Your page is offline as the domain does not point anywhere anymore. It looks like you hosted that site on a server using DynDNS. Did you know you could host static pages directly on github and even have domains point to it?

Crate of the Week 39

The Crate of the Week is BurntSushi's quickcheck. Out of all quickcheck implementations, this is probably one of the more impressive ones. Thanks to DanielKeep, who had this to say:

It helps write property-based tests: you define some property and how to test it, and quickcheck feeds your test random inputs as it tries to narrow down the ranges within which the property fails to hold. Handy when the set of possible test cases is very large.

I'd like to add an appeal to all supporters of "repeatable tests". Don't let the worthy goal of repeatability override the worthier goal of actually finding bugs. Your deterministic tests usually cannot even make a dent in the vast space of possible inputs. With a bit of randomness thrown in, you can greatly improve you chances and thus make your tests more valuable. Also with quickcheck, you get to see a minimized input that makes your test fail, which you can then turn into a repeatable test easily.

crate of the week 38

Again a last-minute nomination took the cake.

This week's crate of the week does something some won't know is possible, and does it in a natural way. You know how in some languages you have to run through hoops to correctly lazily instantiate stuff? Not in Rust, for thanks to the lazy_static crate you just put your static values inside a lazy_static! { ... } block, pay a modest runtime cost on lookup and be done.

Btw. this aligns very well with the C++ adage "... and what you pay for, you couldn't have written any better".

Crate of the Week 40

This time I resolved not to nag Rustdom with calls for nominations, and we only got two crates and no votes. Great! I guess this means I can write about whatever I want. 😄

So today I'll write about rust-itertools. Because iterators in Rust are awesome, and this crates makes them even awesome-r. If you want to do something with iterators that seems to be slightly impossible using the std APIs, chances are itertools already implements a way that is both fast and elegant. Knowing your itertools APIs will level up your Rust-fu.

For a (very small and simple) example, haven't you wished to zip two iterators, but don't stop iteration after the shorter iterator has run out? With itertools you can just say x.zip_longest(y) and get an iterator of EitherOrBoth<X, Y>.

TWIR 103 Crate of the Week

Thanks go to reddit user notriddle for this week's Crate of the Week, which is Huon W.'s alias, which allows mutably aliasing values – which seems to actually be safe, somewhat surprisingly. Honestly, I'm a bit shocked about it myself.

Invalid Atom feed

Since yesterday (August 2nd), somewhere between 15:09:58 and 16:10:56 EDT (according to my computer's clock!), the Atom feed for This Week in Rust is invalid. Specifically, feeds-to-pocket panics1 when processing the feed because the <entry> elements are missing the <updated> subelement, which is required by the Atom spec.


1 It panics because one of my dependencies uses unwrap() instead of bubbling up an Err, so I'll take this opportunity to fix it! I downloaded the invalid feed and I'll do my tests with this copy.

Subscribe button does not work?

I tried to sign up for e-mail, but I don't think it worked. I didn't get any feedback when I clicked or any confirmation e-mails. Furthermore, a caret appeared in the button, and on inspection it seems to be a text field, not <input type="submit"> (and not part of a <form> either). I suspect there's supposed to be some JS doing some magic here, but my browsers (Opera and Firefox) don't load anything.

This is the affected URL:
http://this-week-in-rust.org/staging/blog/2015/07/27/this-week-in-rust-89/

TWIR 114's CotW

This week's Crate is toml, a crate for all our configuration needs, simple yet effective. Thanks to stebalien for the suggestion.

TWIR 116's CotW

The crate of this week is herbie-lint, a miraculous compiler plugin to check the numerical stability of floating-point operations in the code. Another reason to have a nightly Rust handy.

Thanks to redditor protestor for the suggestion.

IPv6 connection problems

this-week-in-rust.org does have a AAAA record that points to 2600:3c03::f03c:91ff:fee4:cb69. That IP however does not respond to any packets (not even with destination unreachable).
This results in eg. wget waiting the full tcp connect timeout before falling back to IPv4.

I also noticed that the feeds include all past issues, which currently results in a 1,5 MiB atom.xml. Is this intended? The number of entries can be limited through FEED_MAX_ITEMS.

TWIR 119's CotW + PRs

This week's crate of the week is Diesel, a rustic typesafe extensible object-relational mapper and query builder. Just go to their site; the examples speak for themselves.
Thanks to LilianMoraru and DroidLogician for the suggestion.

Also here are a few selected interesting PRs from last week:

rust-lang/rust#31791 LLVM update
rust-lang/libc#194 sys::libc now has preliminary DragonFly support
rust-lang/rust#31785 libc moved from nursery to rust-lang
rust-lang/rust#31761 new: read_volatile, write_volatile
rust-lang/rust#31757 match_of_unit_variant_via_paren_dotdot will be deny by default in 1.8
rust-lang/libc#192 some Android fix
rust-lang/libc#192 placement-in for LinkedList
rust-lang/rust#31668 some 64-bit LFS functions are now used where available
rust-lang/rust#31656 unpretty-printing MIR
rust-lang/rust#31534 [breaking] some non-inline modules now need path annotations
rust-lang/rust#31474 A MIR typecheck pass
rust-lang/cargo#2328 Cargo gained cfg-based target-specific depenndencies
rust-lang/rust#31792 Enable building freestanding sysroot with cargo

Expired cert

this-week-in-rust.org uses an invalid security certificate. The certificate expired on 16.05.2016 05:28.
 Error code: SEC_ERROR_EXPIRED_CERTIFICATE 

This week in Rust 106's CotW

This week's Crate of the Week is nom, a library of fast zero-copy parser combinators, which has already been used to create safe, high-performance parsers for a number of formats both binary and textual. nom just reached version 1.0, too, so congratulations for both the major version and the CotW status are in order! 😄 Thanks to reddit user gbersac for the nom-ination.

TWIR 121's CotW + PRs

This week's Crate of the Week is preferences which does the right thing to your program's preferences on all common operating systems.

Interesting PRs:

rust-lang/rust#32055 no more private imports in rustdoc
rust-lang/rust#32039 rustc will catch missing fields in pattern matches again
rust-lang/rust#32032 regression fix for LLVM type errors with bools
rust-lang/rust#32012 Vecs and VecDeques now drop faster ;-)
rust-lang/rust#32007 compiletest gets some more capabilities
rust-lang/rust#31999 slice.as_ptr generates simpler LLVM IR
rust-lang/rust#31996 libc update
rust-lang/rust#31989 Patterns can now be pointers-to-pointers to str with different lifetimes
rust-lang/rust#31985 libstd can now be compiled with emscripten
rust-lang/rust#31962 One less internal compiler error with trait consts
rust-lang/rust#31945 implement RFC 1461
rust-lang/rust#31928 Stabilized APIs for 1.8
rust-lang/rust#31937 Positional fields are now named starting from "0", "1", ..
rust-lang/rust#31797 vec![..] no longer copies from the stack
rust-lang/rust#31430 zeroing on drop
rust-lang/rust#31335 AsciiExt::in_ascii_{lower, upper}case
rust-lang/rust#30884 Implement inclusive ranges

TWIR 113's CotW

This week's crate of the week is crossbeam. This is a library of non-blocking data structures and synchronization primitives that makes writing concurrent programs easier and more efficient (both in terms of code and runtime).

Thanks to DroidLogician for the suggestion.

What happened to into_string?

I'm not sure if this is "in scope" for this week in rust or not, but suddenly &str.into_string is failing and I am not sure why. Would be nice if this was documented here.

Multiple Updates from Rust Core links wrong in 149

In the This Week in Rust 149 document at "https://this-week-in-rust.org/blog/2016/09/27/this-week-in-rust-149/", in the section "Updates from Rust Core", some of the updates mentioned are a link to the wrong target.

The current link targets are definitely wrong, because they are equal to the target of a previous link, but I'm not completely certain I identified the correct targets here, so please check that.

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.