Coder Social home page Coder Social logo

gotraining's Introduction

Go Training

CircleCI

Review our different courses and material

Copyright 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022, Ardan Labs
[email protected]

Learn More

Reach out about corporate training events, open enrollment live training sessions, and on-demand learning options.

Ardan Labs (www.ardanlabs.com)
[email protected]

To attend any of our high-performance tranings check out this link:
https://www.ardanlabs.com/training

Index

Purchase Video / Book

The entire training class has been recorded to be made available to those who can't have the class taught at their company or who can't attend a conference. This is the entire class material.

education.ardanlabs.com

There is a book for all of the material in the class.

Ultimate Go Notebook

Our Experience

We have taught Go to thousands of developers all around the world since 2014. There is no other company that has been doing it longer and our material has proven to help jump-start developers 6 to 12 months ahead of their knowledge of Go. We know what knowledge developers need in order to be productive and efficient when writing software in Go.

Our classes are perfect for intermediate-level developers who have at least a few months to years of experience writing code in Go. Our classes provide a very deep knowledge of the programming language with a big push on language mechanics, design philosophies and guidelines. We focus on teaching how to write code with a priority on consistency, integrity, readability and simplicity. We cover a lot about “if performance matters” with a focus on mechanical sympathy, data oriented design, decoupling and writing/debugging production software.

Our Teachers

William Kennedy (@goinggodotnet)

William Kennedy is a managing partner at Ardan Labs in Miami, Florida. Ardan Labs is a high-performance development and training firm working with startups and fortune 500 companies. He is also a co-author of the book Go in Action, the author of the blog GoingGo.Net, and a founding member of GoBridge which is working to increase Go adoption through diversity.

Video Training
Ultimate Go Video
Ardan Labs YouTube Channel

Blog
Going Go

Writing
Running MongoDB Queries Concurrently With Go
Go In Action

Articles
IT World Canada

Video
Golang Charlotte (2024) - Domain Driven, Data Oriented Architecture
GopherCon SG (2023) - K8s CPU Limits and Go
P99 Talk (2022) - Evaluating Performance In Go
GopherCon Europe (2022) - Practical Memory Profiling
Dgrpah Day (2021) - Getting Started With Dgraph and GraphQL
GDN Event #1 (2021) - GoBridge Needs Your Help
Training Within The Go Community (2019)
GopherCon Australia (2019) - Modules
Golab (2019) - You Want To Build a Web Service?
GopherCon Singapore (2019) - Garbage Collection Semantics
GopherCon India (2019) - Channel Semantics
GoWayFest Minsk (2018) - Profiling Web Apps
GopherCon Singapore (2018) - Optimizing For Correctness
GopherCon India (2018) - What is the Legacy You Are Leaving Behind
Code::Dive (2017) - Optimizing For Correctness
Code::Dive (2017) - Go: Concurrency Design
dotGo (2017) - Behavior Of Channels
GopherCon Singapore (2017) - Escape Analysis
Capital Go (2017) - Concurrency Design
GopherCon India (2017) - Package Oriented Design
GopherCon India (2015) - Go In Action
GolangUK (2016) - Dependency Management
GothamGo (2015) - Error Handling in Go
GopherCon (2014) - Building an analytics engine

Golang Charlotte (2023) - Domain Driven, Data Oriented Architecture with Bill Kennedy
Prague Meetup (2021) - Go Module Engineering Decisions
Practical Understanding Of Scheduler Semantics (2021)
Go Generics Draft Proposal (2020)
Hack Potsdam (2017) - Tech Talk with William Kennedy
Chicago Meetup (2016) - An Evening
Vancouver Meetup (2016) - Go Talk & Ask Me Anything With William Kennedy
Vancouver Meetup (2015) - Compiler Optimizations in Go
Bangalore Meetup (2015) - OOP in Go
GoSF Meetup - The Nature of Constants in Go
London Meetup - Mechanical Sympathy
Vancouver Meetup - Decoupling From Change

Podcasts
Ardan Labs Podcast: On Going Series
Mangtas Nation: A Golang Deep Dive with Bill Kennedy
Coding with Holger: Go with Bill Kennedy
Craft of Code: From Programming to Teaching Code with Bill Kennedy
GoTime: Design Philosophy
GoTime: Learning and Teaching Go
GoTime: Bill Kennedy on Mechanical Sympathy
GoTime: Discussing Imposter Syndrome
HelloTechPros: Your Tech Interviews are Scaring Away Brilliant People
HelloTechPros: The 4 Cornerstones of Writing Software

More About Go

Go is an open source programming language that makes it easy to build simple, reliable, and efficient software. Although it borrows ideas from existing languages, it has a unique and simple nature that make Go programs different in character from programs written in other languages. It balances the capabilities of a low-level systems language with some high-level features you see in modern languages today. This creates a programming environment that allows you to be incredibly productive, performant and fully in control; in Go, you can write less code and do so much more.

Go is the fusion of performance and productivity wrapped in a language that software developers can learn, use and understand. Go is not C, yet we have many of the benefits of C with the benefits of higher level programming languages.

The Ecosystem of the Go Programming Language - Henrique Vicente
The Why of Go - Carmen Andoh
Go Ten Years and Climbing - Rob Pike
The eigenvector of "Why we moved from language X to language Y" - Erik Bernhardsson
Learn More - Go Team
Simplicity is Complicated - Rob Pike
Getting Started In Go - Aarti Parikh

Minimal Qualified Student

The material has been designed to be taught in a classroom environment. The code is well commented but missing some of the contextual concepts and ideas that will be covered in class. Students with the following minimal background will get the most out of the class.

  • Studied CS in school or has a minimum of two years of experience programming full time professionally.
  • Familiar with structural and object oriented programming styles.
  • Has worked with arrays, lists, queues and stacks.
  • Understands processes, threads and synchronization at a high level.
  • Operating Systems
    • Has worked with a command shell.
    • Knows how to maneuver around the file system.
    • Understands what environment variables are.

Important Reading

Please check out this page of important reading. You will find articles and videos around mechanical sympathy, data-oriented design, Go runtime and optimizations and articles about the history of computing.

Before You Come To Class

The following is a set of tasks that can be done prior to showing up for class. We will also do this in class if anyone has not completed it. However, the more attendees that complete this ahead of time the more time we have to cover additional training material.

Prep Work

Watch This
Prepare You Mind

Reading Material
http://go.dev/
https://www.ardanlabs.com/blog/

Exercises
https://tour.golang.org/welcome/1
https://gophercises.com/

Books
https://www.manning.com/books/go-in-action
https://bitfieldconsulting.com/books/fundamentals

Joining the Go Slack Community

We use a slack channel to share links, code, and examples during the training. This is free. This is also the same slack community you will use after training to ask for help and interact with may Go experts around the world in the community.

Installing Go

Local Installation

https://www.ardanlabs.com/blog/2016/05/installing-go-and-your-workspace.html

Editors

Visual Studio Code
https://code.visualstudio.com/Updates
https://github.com/microsoft/vscode-go

VIM
http://www.vim.org/download.php
http://farazdagi.com/blog/2015/vim-as-golang-ide/

Goland
https://www.jetbrains.com/go/

Installing the Training Material

While many of the examples can be done using the online playground (http://play.golang.org), some may find it easier to complete them with their local editor. To do so, you will want to load the training material locally to your machine. From a command prompt, issue the following commands:

mkdir -p $(go env GOPATH)/src/github.com/ardanlabs && cd $_
git clone https://github.com/ardanlabs/gotraining.git

NOTE: This assumes you have Git installed. If you don’t, you can find the installation instructions here: https://git-scm.com/

Twitter

Jessie Frazelle (@frazelledazzell)
"@goinggodotnet you were amazing!!! So enthusiastic!!! Thanks for doing this for everyone!"

Kelsey Hightower (‏@kelseyhightower)
"Day 1 of the [Ultimate] Go workshop was outstanding! Big shoutout to @intel, @golangbridge, and @goinggodotnet for bringing this to Portland."

Katrina Owen (@kytrinyx)
"OH: "You thought you knew Go..." (You do Go? You want to do Go?) You should take this workshop. Seriously.) "

Ian Molee (@ianfoo) "If you're at @GopherCon, get yourself to a session with @goinggodotnet. Superb! Pretty sure his pic appears with the definition of "dynamo.""

Matt Oswalt (@Mierdin)
"Should be mentioned that though I am no expert, I have been using Go for about a year - and this meetup is kicking my ass."

Testimonials

Paul Yeoh
_"Today’s workshop was just mind blowing! You kept us all on the edge all day long - it was the most exhilarating all day workshop I have attended, period. The content was inspiring, moving - caused me to think deeply and gave me a lot of meat to chew on about what it is we are really doing as programmers, what an awesome day!

And most of all, I just got such a kick out of the energy which you were putting out - larger than life, it felt like you were turned up to 200%. I really took a lot from it at many levels. Thank you!!"_

Ana-Maria Lazar, Software Engineer at Sainsbury's
"Intensive crash course in Go that literally takes you to a whole new level. Not only Bill provides lots of examples and exercises to familiarize yourself faster with the language but there is also a lot of information that can be applied to other languages as well. Perfect combination!"

Susan Dady, Software Engineer - GE Digital
"Rarely will you come across a course as worthwhile as this one. I learned many things relevant and useful in my daily work and William's energy kept me engaged. I came back to work excited to get coding in Go."

Richard Stanley, Software Engineer - GE Digital
"Not only does Bill deeply understands the technical details of Go, he also can explain them in an effective, enthusiastic manner that helped me retain somewhat dry material. His passion for the language and its capabilities are obvious through out his training."

Shalab Goel, Ph.D.
"It was a pleasure taking this course — learning lot of "dry" stuff in such animated and enthusiastic environment. The exercises were spot on for building what you called as "memory muscle. I have good amount of background in conventional multithreaded and distributed environments, but I have not put that knowledge to use more recently; so it was good refresher from that point of view as well. From Yuck to completely Wow-ed is how I will like to describe my respect for Go within three days. I knew nothing about GO before the course."

Geoff Clitheroe (@gclitheroe)
"Your training is awesome! Myself and three colleagues recently caught variations of the training at GopherCon and OSCON. We all thought the Bootcamp was the best thing at any of these conferences (and I went to both). Awesome work to Bill for presenting and anyone involved in developing the training. I really liked the structure, emphasis on deeper understanding, me doing a small number of examples to emphasize this, and general content. Night and day to other training which is to often just watching someone else live code. Great work."

ACL Services (@ACLServices)
"I'd just like to thank you again for just a phenomenal training session. The feedback from everyone was overwhelmingly positive. You probably could tell first hand that there were skeptics at first, but you've turned many into golang converts and we are really excited in growing golang adoption internally."

Joshua Shuster (@naysaier)
"I would consider Ardan Studio's 3 day course to be invaluable. Bill and his staff, being some of the foremost authorities in the Go language, were able to make many of the complex go topics understandable. Covering everything from memory management, all the way up to building concurrency programs and web API's. It has given me the knowledge to write idiomatic Go, and make the best use of its features. I would highly their courses to anyone new to Go, or to anyone wanting to widen their existing knowledge."

Neeru Dwivedi
"I attended the one day workshop by Bill Kennedy from Ardan Labs. I was in for a surprise as before the workshop I was concerned whether I would understand concepts and whether I would be able to follow along. Bill has this wonderful way of explaining concepts and his knowledge on the concepts is so good that, I didn't feel that I was learning something new & complicated. The Go Workshop got me started on the Go language. This workshop is perfect for beginners and anyone who wants to learn more about Go. I highly recommend this."

Todd Rafferty (@webrat)
"I highly recommend William Kennedy / Ardan Lab for Go Training. William is extremely passionate about the Go language and his energy feeds into his training. Very professional, very informative. My favorite section of his training, if I had to pick, was the segment on MultiWriters. I highly recommend a 3 day course, over a 2 day course. Even after the classes were over, William was always responsive with additional questions via various social media channels."

Georgi Knox (@GeorgiCodes)
"The Intro to Go Workshop enabled me to come into class with very little knowledge of Go and leave having a firm grasp of the key concepts of the language. Each topic was followed up with hands-on coding problems which helped to solidify what I was learning. My teacher Bill was not only approachable, but very excited about the language and his enthusiasm was contagious. I enjoyed that we talked about some of the lower level implementation details of Go which was something that I had found lacking from some books on the language. Overall I would highly recommend this workshop to anyone looking to learn Go quickly and effectively."


All material is licensed under the Apache License Version 2.0, January 2004.

gotraining's People

Contributors

ardan-bkennedy avatar bsreera avatar cheikhseck-ardan avatar codegangsta avatar corylanou avatar danicat avatar dayvson avatar dwhitena avatar egonzo avatar extemporalgenome avatar ffmiruz avatar forevermatt avatar freeeve avatar gingersnapz avatar harrisonbrock avatar jcbwlkr avatar lkysow avatar markbates avatar miraddo avatar mvanholsteijn avatar nathany avatar oppodelldog avatar sashamelentyev avatar sbinet avatar scottefein avatar superstas avatar tebeka avatar vaskoz avatar williamhanisch avatar xmchxup 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  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

gotraining's Issues

Add Linux and BSD to the install list?

The front page assumes attenders are using either Windows or OSX, I have been finding an increasing number of Ubuntu, and Linux generally, users on workshops. Often these people can trivially install using packaging. Sadly though sometimes this leads to using an old version of Go. I suspect similar situation ofr the BSD users. It would be good to give these people sensible installation instructions on a par with Windows and OSX users.

Remove println

Let's get rid of all usages of println and use the fmt versions. I have students copying and pasting from the examples that use it.

Are there any reasons to keep it in any examples? Like in the escape analysis code or something?

slices.Clip description

In the post - https://www.ardanlabs.com/blog/2023/08/golang-slices-clip-clone-compact.html

Figure 3 shows that after list = slices.Clip(list) new list slice has a different underlying array with size 1.

But according to this code this is wrong:

package main

import (
	"fmt"
)

func main() {
	var arr [10000]int
	fmt.Println("arr", &arr[0])
	fmt.Printf("Len(%d), Cap(%d)\n", len(arr), cap(arr))

	slArr := arr[:]
	fmt.Println("slArr", &slArr[0])
	fmt.Printf("Len(%d), Cap(%d)\n", len(slArr), cap(slArr))

	slArr = arr[:1:10]
	fmt.Println("slArr", &slArr[0])
	fmt.Printf("Len(%d), Cap(%d)\n", len(slArr), cap(slArr))

	sl := make([]int, 1, 10000)
	fmt.Println("sl", &sl[0])
	fmt.Printf("Len(%d), Cap(%d)\n", len(sl), cap(sl))

	sl = sl[:]
	fmt.Println("sl", &sl[0])
	fmt.Printf("Len(%d), Cap(%d)\n", len(sl), cap(sl))

	sl = sl[:1:10]
	fmt.Println("sl", &sl[0])
	fmt.Printf("Len(%d), Cap(%d)\n", len(sl), cap(sl))
}

Notice, address of &slArr[0] or &sl[0] doesn't change after changing the capacity.

Or did I understand smth wrong?

Could the `Hardcore Go` program be renamed?

Hardcore is a word associated with porn; although I'm sure it attracts some people, it alienates others. A new name might convey the rigor and thoroughness of the program, and also avoid images of violence and misogyny.

If the organizers and community are happy with the name, I'll close this issue. But I know people in the community who would like to create a more inclusive culture, and this could be a good step in that direction.

slice.Min() and slice.Max() don't account for nil or empty slices

maybe this complicates things but i think slice.Max() and slice.Min() should return an error.

there is no good way to return a value that is out of band (like -1 nor is there a NaN like with floats).

so the best way to signal an error like a nil or empty slice is via an error value.

the result is that if you pass a nil or empty slice, we immediately access an element in our slice that is out of bounds when we prime our max value.

also, i feel like the functions have a more general path -- instead having to check if the supplied slice has only 1 element, we can check if we're working on our first iteration in the inner loop by having range return the index.

[question]: Purpose of the file "topics/go/concurrency/patterns/advanced/logger/logger.go"

Hi there!

I want to ask about some inconsistency. There are two loggers in "patterns" section ( topics/go/concurrency/patterns ):

The only difference between their main.go files is using custom/stdlib logger, but "advanced logger" has empty package logger (https://github.com/ardanlabs/gotraining/blob/master/topics/go/concurrency/patterns/advanced/logger/logger.go) - https://www.diffchecker.com/5vcK6nKY
It seems "advanced/logger" isn't used.

Is it a valid package?
Thank you!

Rework Maps Section

@ardan-bkennedy I want to take the existing map examples, break them apart, and reorder the content. I get the feeling that when this material was written it was assumed that the student was already familiar with maps and we are just covering them to nail down some of the "gotchas" as well as the best practices. Consider that the first example right off the bat is jumping into iterating over a map and how it is in an undefined order. If you are just learning maps this is a confusing place to start.

Here is how I want to teach the materials at least for Go Fundamentals. Do you think this would work with Ultimate? It's still basically the same content (though I expand the coverage of zero value for non-present keys)

Example 1: Declare, write, read, and delete

Start with the basics.

  • Create a map with make: users := make(map[string]user)
  • Set individual values in the map. users["Roy"] = user{"Rob", "Roy"}
  • Read individual values from the map. roy := users["Roy"]
  • Delete values from the map. delete(users["Roy"])

Example 2: Reading a non-present key

We just talked about delete so it seems natural to move on to this.

  • Reading a non-present key gives zero value. u := users["Roy"]
  • Use two-assignment form if you need to know. u, found := users["Roy"]
  • Talk about how we can conveniently write scores["anna"]++ without checking for existence.

Example 3: Map key type restrictions

This could be last after the range stuff? It just needs to be covered before we're done.

  • Explain how/why a map's key type must be "comparable". Can't be a slice, map, or func.

Example 4: Map literal and range

  • Declare a map with predefined values
  • Range over it twice. Show how order is pseudo-random.

Example 5: Ranging in a specific order

  • Show the existing example4.go which covers one way to iterate a map in a defined order.

Rename Pillar

@ardan-bkennedy when I discuss decoupling and go through the whole Xenia -> Pillar exercise I find myself stumbling on the name "Pillar" because it sounds so similar to the interface "Puller". I think this also creates some "who's on first" kind of confusion for the students as well. Let's rename it.

Any Example for Event Based Architecture

Hi, I am taking your course from O'Rielly, We are developing Event based Microservices Architecture using Golang,

Any suggestion for Architecture Example With Golang(Micro-services)+Kafka?

[QUESTION] Why pass a global var as argument

func processor(complete chan<- error) {

Hi @ardan-bkennedy,

why you pass the complete var into processor function when actually complete is a global variable that processor function can access it directly without passing it as an argument to it.

I'm currently joining your course Ultimate Go Programming on safaribooksonline, and I don't know where is the right place to ask you a question so I land it here.

【about Nanosecond 】

Hi , according to ur blog , i write a test :
`
startingTime := time.Now().UTC()
time.Sleep( 1000 * time.Nanosecond )
endingTime := time.Now().UTC()

var duration time.Duration = endingTime.Sub( startingTime )

fmt.Printf( "%d \n", duration.Microseconds() )
`

the result is 1000

[simulations] Use rand with non-fixed seed.

The simulations under gotraining/topics/go/algorithms/simulations/ use rand with a fixed seed. Using a fixed seed will produce the same output on every run.

A better way would be to use a non-fixed seed:

var r = rand.New(rand.NewSource(time.Now().UnixNano()))

day := r.Intn(daysInYear)

Compile and lint issues

I was trying to use gorename from VSCode the other day, but was blocked by some code in my GOPATH that turned out to be in the gotraining repo. Now, I updated the repo and the problem went away, but even after updating it appears there are still some compile and lint issues that you may want to take care of:

% golint ./...
2017/09/04 10:00:32 topics/go/language/methods/example5/example5.go:4:1: expected 'package', found 'import' (and 1 more errors)
main.go:17:5: exported var Render should have comment or be unexported
topics/go/concurrency/channels/example5/example5.go:18:7: var timeoutSeconds is of type time.Duration; don't use unit-specific suffix "Seconds"
topics/go/design/composition/exercises/template1/template1.go:109:6: expected operand, found '{' (and 1 more errors)
topics/go/design/error_handling/example1/example1.go:24:1: comment on exported function New should be of the form "New ..."
topics/go/design/error_handling/example1/example1.go:26:23: exported func New returns unexported type main.error, which can be annoying to use
topics/go/language/exporting/example3/counters/counters.go:12:21: exported func New returns unexported type counters.alertCounter, which can be annoying to use
topics/go/packages/context/exercises/template1/template1.go:71:3: expected '}', found 'return' (and 1 more errors)

link broken in README.md

In gotraining/topics/README.md the following link is broken:

Go Challenges
Learn Go by solving problems and getting feedback from Go experts!

Project no longer go gettable after dep init

When dep was last ran against the project, it pulled in v1.1.0 of github.com/theplant/blackfriday which is broken (bad import for unicode/utf8). We should tweak the Gopkg.toml file to pull a good version, and then re-run dep.

Additional Book

I very much liked "Get Programming with Go"; but I found "Head First Go" (O'Reilly) even better; maybe you add it to the list?

Sharing variable up the call stack

@ardan-bkennedy, thank you for this amazing course and repository organization.

During decoupling and in interface pollution topic, you have fixed the pollution, but the New function is sharing the concrete value of the type up the call stack.

composition/README.md#L63 - Playground Example

I know this is a very popular design, but I can't understand why do we need to allocate memory here and share the value instead of returning a copy of the value?

Do we prefer that the caller will have easier access to methods with pointer receiver if we share the value up the call stack over memory allocation and the risk of memory leak?

Redirect from https://www.goinggo.net doesn't work

Hi there.

Just want to let you know, that redirect from https://www.goinggo.net doesn't work ( report http://r.h-t.co/en/3/6a52a920-cdd6-e811-8605-0003ff7328cc )
For example https://www.goinggo.net/2016/05/installing-go-and-your-workspace.html from Opening.md

But at the same time, http://www.goinggo.net works correctly ( as well as redirect to https://www.ardanlabs.com )

I've just sent a PR where found and replaced all www.goinggo.net -> www.ardanlabs.com/blog PR#277

Nevertheless, I suppose there might be links pointed to the previous domain.

Thank you!

UPD
http://www.goinggo.net/2016/05/installing-go-and-your-workspace.html redirects to https://www.ardanlabs.com/2016/05/installing-go-and-your-workspace.html ( without blog in the path )

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.