Difference between revisions of "Tools & Resources"

From Chilipedia
Jump to: navigation, search
(AI / ML / DL)
(ChiliWisdom)
(35 intermediate revisions by the same user not shown)
Line 42: Line 42:
 
| style="border:1px solid grey;text-align:left;"|https://www.gimp.org/
 
| style="border:1px solid grey;text-align:left;"|https://www.gimp.org/
 
| style="border:1px solid grey;"|-
 
| style="border:1px solid grey;"|-
 +
|- style="border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;"
 +
| style="border:1px solid grey;text-align:left;"|Krita
 +
| style="border:1px solid grey;text-align:left;"|Open source painting program
 +
| style="border:1px solid grey;text-align:left;"|https://krita.org/
 +
| style="border:1px solid grey;"|AP tip
 
|- style="border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;"
 
|- style="border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;"
 
| style="border:1px solid grey;text-align:left;"|Pyxel Edit
 
| style="border:1px solid grey;text-align:left;"|Pyxel Edit
Line 52: Line 57:
 
| style="border:1px solid grey;text-align:left;"|https://www.vim.org/download.php
 
| style="border:1px solid grey;text-align:left;"|https://www.vim.org/download.php
 
| style="border:1px solid grey;"|Will make you shit bricks real good
 
| style="border:1px solid grey;"|Will make you shit bricks real good
 +
|- style="border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;"
 +
| style="border:1px solid grey;text-align:left;"|Sublimle Text
 +
| style="border:1px solid grey;text-align:left;"|Text editor for code, markup and prose
 +
| style="border:1px solid grey;text-align:left;"|https://www.sublimetext.com/
 +
| style="border:1px solid grey;"|Very versatile
 +
|- style="border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;"
 +
| style="border:1px solid grey;text-align:left;"|Audacity Audio
 +
| style="border:1px solid grey;text-align:left;"|Digital multi-track audio grabbing/recording/editing
 +
| style="border:1px solid grey;text-align:left;"|https://www.audacityteam.org
 +
| style="border:1px solid grey;"|Open source, dev in C/C++
 +
|- style="border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;"
 +
| style="border:1px solid grey;text-align:left;"|Tiled
 +
| style="border:1px solid grey;text-align:left;"|Flexible tiled map editor
 +
| style="border:1px solid grey;text-align:left;"|https://www.mapeditor.org/
 +
| style="border:1px solid grey;"|
 
|}
 
|}
  
Line 62: Line 82:
 
| style="width:15%;border:1px solid grey;"|What's so great?
 
| style="width:15%;border:1px solid grey;"|What's so great?
 
|- style="border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;"
 
|- style="border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;"
| style="border:1px solid grey;text-align:left;"|Compiler Explorer
+
| style="border:1px solid grey;text-align:left;"|Godbolt's Compiler Explorer
 
| style="border:1px solid grey;text-align:left;"|by Matt Godbolt
 
| style="border:1px solid grey;text-align:left;"|by Matt Godbolt
 
| style="border:1px solid grey;text-align:left;"|https://godbolt.org/
 
| style="border:1px solid grey;text-align:left;"|https://godbolt.org/
Line 89: Line 109:
  
 
== C++ Libraries ==
 
== C++ Libraries ==
 +
=== Library / package managers ===
 +
{| class="wikitable" style="border:1px solid grey;border-collapse:collapse;width:100%;"
 +
|- style="border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;"
 +
| style="width:35%;border:1px solid grey;text-align:left;"|vcpkg
 +
| style="width:30%;border:1px solid grey;text-align:left;"|For Windows, Linux, MacOS. Once installed, provides easy include access to many libraries
 +
| style="width:20%;border:1px solid grey;text-align:left;"|https://github.com/microsoft/vcpkg
 +
| style="width:15%;border:1px solid grey;"|Chili has a vid showing the installation for Visual Studio
 +
|- style="border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;"
 +
| style="width:35%;border:1px solid grey;text-align:left;"|NuGet
 +
| style="width:30%;border:1px solid grey;text-align:left;"|(NuGet Packet Manager is included with Visual Studio >= 2017)
 +
| style="width:20%;border:1px solid grey;text-align:left;"|https://nuget.org
 +
| style="width:15%;border:1px solid grey;"|Chili has a vid showing its use in Visual Studio
 +
|}
 +
 
=== Game tooling / engines ===
 
=== Game tooling / engines ===
 
{| class="wikitable" style="border:1px solid grey;border-collapse:collapse;width:100%;"
 
{| class="wikitable" style="border:1px solid grey;border-collapse:collapse;width:100%;"
Line 109: Line 143:
 
=== Productivity ===
 
=== Productivity ===
 
{| class="wikitable" style="border:1px solid grey;border-collapse:collapse;width:100%;"
 
{| class="wikitable" style="border:1px solid grey;border-collapse:collapse;width:100%;"
 +
|- style="border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;"
 +
| style="width:35%;border:1px solid grey;text-align:left;"|nlohmann/json
 +
| style="width:30%;border:1px solid grey;text-align:left;"|JSON for modern C++
 +
| style="width:20%;border:1px solid grey;text-align:left;"|https://github.com/nlohmann/json
 +
| style="width:15%;border:1px solid grey;"|Look & feel of an STL container (single header file)
 +
|- style="border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;"
 +
| style="width:35%;border:1px solid grey;text-align:left;"|pugixml
 +
| style="width:30%;border:1px solid grey;text-align:left;"|Simple XML parser for C++ with XPath support
 +
| style="width:20%;border:1px solid grey;text-align:left;"|https://pugixml.org/
 +
| style="width:15%;border:1px solid grey;"|
 
|- style="border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;"
 
|- style="border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;"
 
| style="width:35%;border:1px solid grey;text-align:left;"|fmtlib  
 
| style="width:35%;border:1px solid grey;text-align:left;"|fmtlib  
Line 135: Line 179:
 
| style="border:1px solid grey;text-align:left;"|boost your shit
 
| style="border:1px solid grey;text-align:left;"|boost your shit
 
| style="border:1px solid grey;text-align:left;"|https://www.boost.org/doc/libs/
 
| style="border:1px solid grey;text-align:left;"|https://www.boost.org/doc/libs/
 +
| style="border:1px solid grey;"|
 +
|- style="border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;"
 +
| style="border:1px solid grey;text-align:left;"|Lucid Index
 +
| style="border:1px solid grey;text-align:left;"|Searchable list of useful libraries (self hosted)
 +
| style="border:1px solid grey;text-align:left;"|https://lucidindex.com/cpp/browse
 
| style="border:1px solid grey;"|
 
| style="border:1px solid grey;"|
 
|}
 
|}
Line 195: Line 244:
 
| style="width:20%;border:1px solid grey;text-align:left;"|http://www.charleshouserjr.com/Cplus2.pdf
 
| style="width:20%;border:1px solid grey;text-align:left;"|http://www.charleshouserjr.com/Cplus2.pdf
 
| style="width:15%;border:1px solid grey;"|Standard work, rewritten for C++11. Approachable for beginners
 
| style="width:15%;border:1px solid grey;"|Standard work, rewritten for C++11. Approachable for beginners
 +
|- style="border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;"
 +
| style="width:35%;border:1px solid grey;text-align:left;"|Learn C++
 +
| style="width:30%;border:1px solid grey;text-align:left;"|by Alex
 +
| style="width:20%;border:1px solid grey;text-align:left;"|https://www.learncpp.com/
 +
| style="width:15%;border:1px solid grey;"|Good solid intro, very well done
 
|- style="border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;"
 
|- style="border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;"
 
| style="width:35%;border:1px solid grey;text-align:left;"|C++ Core Guidelines
 
| style="width:35%;border:1px solid grey;text-align:left;"|C++ Core Guidelines
Line 200: Line 254:
 
| style="width:20%;border:1px solid grey;text-align:left;"|http://isocpp.github.io/CppCoreGuidelines
 
| style="width:20%;border:1px solid grey;text-align:left;"|http://isocpp.github.io/CppCoreGuidelines
 
| style="width:15%;border:1px solid grey;"|Pure discipline, by the masters themselves
 
| style="width:15%;border:1px solid grey;"|Pure discipline, by the masters themselves
 +
|- style="border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;"
 +
| style="width:35%;border:1px solid grey;text-align:left;"|C++ Weekly
 +
| style="width:30%;border:1px solid grey;text-align:left;"|by Jason Turner
 +
| style="width:20%;border:1px solid grey;text-align:left;"|https://www.youtube.com/user/lefticus1
 +
| style="width:15%;border:1px solid grey;"|Hard core but very good
 +
|- style="border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;"
 +
| style="width:35%;border:1px solid grey;text-align:left;"|C++ Templates: The Complete Guide (2nd Edition)
 +
| style="width:30%;border:1px solid grey;text-align:left;"|by David Vandevoorde et al
 +
| style="width:20%;border:1px solid grey;text-align:left;"|
 +
| style="width:15%;border:1px solid grey;"|Cybotip
 
|- style="border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;"
 
|- style="border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;"
 
| style="border:1px solid grey;text-align:left;"|Programming Abstractions in C++
 
| style="border:1px solid grey;text-align:left;"|Programming Abstractions in C++
 
| style="border:1px solid grey;text-align:left;"|by Eric S. Roberts (2012), Stanford CS106B
 
| style="border:1px solid grey;text-align:left;"|by Eric S. Roberts (2012), Stanford CS106B
 
| style="border:1px solid grey;text-align:left;"|Google using filetype:pdf
 
| style="border:1px solid grey;text-align:left;"|Google using filetype:pdf
| style="border:1px solid grey;"|Solid and well thought through intro to C++
+
| style="border:1px solid grey;"|Solid and well thought through intro to C++. Excellent for understanding all fundamentals of data structures (incl. more advanced like graph, trees) and algorithms
 
|}
 
|}
  
Line 307: Line 371:
 
| style="width:20%;border:1px solid grey;text-align:left;"|https://github.com/norvig/paip-lisp
 
| style="width:20%;border:1px solid grey;text-align:left;"|https://github.com/norvig/paip-lisp
 
| style="width:15%;border:1px solid grey;"|Standard work, gotta love common lisp!
 
| style="width:15%;border:1px solid grey;"|Standard work, gotta love common lisp!
 +
|- style="border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;"
 +
| style="width:35%;border:1px solid grey;text-align:left;"|Artificial Intelligence: A Modern Approach
 +
| style="width:30%;border:1px solid grey;text-align:left;"|by Stuart Russell & Peter Norvig (Pearson Edu Ltd 3rd edition)
 +
| style="width:20%;border:1px solid grey;text-align:left;"|http://aima.cs.berkeley.edu/
 +
| style="width:15%;border:1px solid grey;"|Standard work
 
|- style="border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;"
 
|- style="border:1px solid grey;background-color:#667;color:#c1c1c1;text-align:center;"
 
| style="width:35%;border:1px solid grey;text-align:left;"|Deep Learning
 
| style="width:35%;border:1px solid grey;text-align:left;"|Deep Learning
Line 317: Line 386:
 
* Blender Guru [https://youtu.be/TPrnSACiTJ4 beginner series]
 
* Blender Guru [https://youtu.be/TPrnSACiTJ4 beginner series]
  
== ChiliWidsom ==
+
== ChiliWisdom ==
* "If you're building with warnings, you gotta re-evaluate your life choices" (I11hw)
+
* "If you're building with warnings, you gotta re-evaluate your life choices" (Int.11.hw)
 
* "Get your privates in order"
 
* "Get your privates in order"
* "For those of you who live in weird places that don't have Orios, I feel sorry for you. They look like this, and they are fucking delicious with milk." (B10)
+
* "For those of you who live in weird places that don't have Orios, I feel sorry for you. They look like this, and they are fucking delicious with milk." (Beg.10)
* "Everything on a computer is a motherfucking number" (HUGS 11)
+
* "Everything on a computer is a motherfucking number" (Hugs.11)
* "Don't turn yourself into a pretzel trying to fit all the STL components together to do everything in a single statement" (I16hw)
+
* "Don't turn yourself into a pretzel trying to fit all the STL components together to do everything in a single statement" (Int.16.hw)
* "You can't touch your parent's privates. Don't do it, it's weird" (I17.1 on inheritance)
+
* "You can't touch your parent's privates. Don't do it, it's weird" (Int.17.1 on inheritance)
 +
* “If you have someone’s address, you can fuck with them. Just ask any Twitch streamer” (Int.2 on pointers, tx DownUp)
 +
* "What do you think you gotta use? Say it with me... std::move()"
 +
* "With <code>noexcept</code>, the STL will now use your move constructor for great justice" (Int.22 on exceptions)
 +
* "At the end of this, I'm gonna have a vector of pointers to stationary poos and then over that range I can just randomly select an index and use that pointer to do something with that poo" (STD Gems [Copy/Filter] on std::copy_if)
 +
* "Unordered map is the college girl of associative containers; I keep getting older and older, they just stay the same age" (Int.24.2 on constant time performance)
 +
* "The other way to identify the mechanism of failure is the 'Bust Your Ass' method" (Advanced 3.2hw, talking about debugging strategies)
 +
* "SFML is a tool for babies" [because it uses degrees] (Advanced 4.1, going on a rant against the sexagesimal number system)
 +
* Chili's well researched but rejected proposal for an STL addition can be found [https://youtu.be/4EZVTNHmojc?t=223 here]
 +
* "It is working very sexily, powered under the hood by the matrix representation of transformations" (Adv.5.2)

Revision as of 05:20, 18 April 2020

Useful Tools & Resources (WORK IN PROGRESS)

How to contribute

These are all links to external and publicly available sources, no guarantees / responsibility inferred. If there are resources you like and would like to recommend, post them on the Discord and mention r_vdw.

Windows productivity apps

Name Description Link What's so great?
FrHed Versatile binary file / hex editor https://sourceforge.net/projects/frhed/
HxD Good freeware hex and disk editor https://mh-nexus.de/en/hxd/ Slidytip
ShareX Screen capture / file sharing https://getsharex.com/
Notepad++ Source code editor and Notepad replacement https://notepad-plus-plus.org/
Codeshare Handy tool to share code snippets https://codeshare.io/ Self destructs in 24 hrs
Gimp Cross-platform image editor (GNU/Linux,OS X,Windows,... https://www.gimp.org/ -
Krita Open source painting program https://krita.org/ AP tip
Pyxel Edit Pixel art editor (make tilesets, levels,animations) by Daniel Kvarfordt https://pyxeledit.com/ AP tip
Vim Source code editor, Notepad++ alternative https://www.vim.org/download.php Will make you shit bricks real good
Sublimle Text Text editor for code, markup and prose https://www.sublimetext.com/ Very versatile
Audacity Audio Digital multi-track audio grabbing/recording/editing https://www.audacityteam.org Open source, dev in C/C++
Tiled Flexible tiled map editor https://www.mapeditor.org/

Online compiling / testing / visualization

Name Description Link What's so great?
Godbolt's Compiler Explorer by Matt Godbolt https://godbolt.org/ Analyze and compare the way C++ code compiles across different compilers
Ideone Online compiler and debugger (~60 languages) http://www.ideone.com
Wandbox Online compilation service https://wandbox.org/
Data structure and algorithm visualization USFCA / CS / David Galles https://www.cs.usfca.edu/~galles/visualization/Algorithms.html see it and you'll understand
Active GitHub Forks See who forked (&last committed) out of date GitHub libs/projects https://techgaun.github.io/active-forks/index.html

C++ Libraries

Library / package managers

vcpkg For Windows, Linux, MacOS. Once installed, provides easy include access to many libraries https://github.com/microsoft/vcpkg Chili has a vid showing the installation for Visual Studio
NuGet (NuGet Packet Manager is included with Visual Studio >= 2017) https://nuget.org Chili has a vid showing its use in Visual Studio

Game tooling / engines

Name Description Link What's so great?
SFML Simple and Fast Multimedia Library https://www.sfml-dev.org/ Easy to use, good functionality. Chili grabs it in Intermediate 25 (I25)
Eigen C++ template library for linear algebra http://eigen.tuxfamily.org/ chilitip

Productivity

nlohmann/json JSON for modern C++ https://github.com/nlohmann/json Look & feel of an STL container (single header file)
pugixml Simple XML parser for C++ with XPath support https://pugixml.org/
fmtlib Open-source formatting library https://fmt.dev/latest/index.html fast/easy, Slidytip

AI/ML

DLib C++ toolkit containing machine learning algorithms http://dlib.net/

Categorized / aggregation sites

cppreference libraries As suggested by cppreference users https://en.cppreference.com/w/cpp/links/libs
boost C++ libraries boost your shit https://www.boost.org/doc/libs/
Lucid Index Searchable list of useful libraries (self hosted) https://lucidindex.com/cpp/browse

Reference sites

Name Description Link What's so great?
cppreference.com Most comprehensve reference site https://en.cppreference.com Hardccore
cplusplus.com Good reference site http://www.cplusplus.com Softcore
Stack Overflow Good reference site https://stackexchange.com/sites# Very active community
ISOcpp The home of standard C++ https://isocpp.org/ For those purists

Literature (books, blogs, papers, written shit)

Programming Fundamentals

Name Description Link What's so great?
Structure and Interpretation of Computer Programs by Harold Abelson et al. (2nd ed. 1996), MIT Press https://web.mit.edu/alexmv/6.037/sicp.pdf Just a classic
Clean Code by Robert C. Martin (14th ed. 2015), Prentice Hall https://ptgmedia.pearsoncmg.com/images/9780132350884/samplepages/9780132350884.pdf Sample chapter, then just buy it

C++ Fundamentals

C++ Primer, 5th Edition by Stanley B. Lippman et al http://www.charleshouserjr.com/Cplus2.pdf Standard work, rewritten for C++11. Approachable for beginners
Learn C++ by Alex https://www.learncpp.com/ Good solid intro, very well done
C++ Core Guidelines by Bjarne Stroustrup, Herb Sutter http://isocpp.github.io/CppCoreGuidelines Pure discipline, by the masters themselves
C++ Weekly by Jason Turner https://www.youtube.com/user/lefticus1 Hard core but very good
C++ Templates: The Complete Guide (2nd Edition) by David Vandevoorde et al Cybotip
Programming Abstractions in C++ by Eric S. Roberts (2012), Stanford CS106B Google using filetype:pdf Solid and well thought through intro to C++. Excellent for understanding all fundamentals of data structures (incl. more advanced like graph, trees) and algorithms

C++ Peculiarities

Exploring std::string Nice blog that looks under the hood https://shaharmike.com/cpp/std-string/ a tip from Slidy

Game programming

Game Programming Patterns by Robert Nystrom https://gameprogrammingpatterns.com Contains lots of different coding patterns and describes them in detail
Game Engine Architecture by Jason Gregory (3rd ed. 2018) https://www.gameenginebook.com/ Talks about various components that make up a game engine and how they tie together

3D Computer Graphics

The Book of Shaders by Patricio Gonzalez Vivo and Jen Lowe https://thebookofshaders.com (pdf can be generated)
Tricks of the 3D Game Programming Gurus by André LaMothe, 2003 Google using filetype:pdf lagout
Mathematics for 3D Game Programming and Computer Graphics by Eric Lengyel (3rd ed.) Google using filetype:pdf Need those math skills
Essential Mathematics for Games and Interactive Applications: A Programmer’s Guide by James M. Van Verth, Lars M. Bishop (2nd ed.) Google using filetype:pdf Math yo
Vector Math for 3D Computer Graphics Tutorial by Bradley Kjell https://chortle.ccsu.edu/vectorlessons/vectorindex.html Demon liked it
Computing Euler angles from a rotation matrix by Gregory G. Slabaugh http://www.gregslabaugh.net/publications/euler.pdf Chilitip
Coordinate geometry in 3D space by Nabla Ltd. http://www.nabla.hr/CG-CoGeometryContA.htm BhayanakMoth tip
D3D/OpenGL tutorial: A trip through the Graphics Pipeline by Fabian Giesen https://fgiesen.wordpress.com/2011/07/09/a-trip-through-the-graphics-pipeline-2011-index/
Learn OpenGL by Joey de Vries http://learnopengl.com Specific to OpenGL but well written and presented (Slidy)
Real-time Rendering by Tomas Akenine-Möller et al (4th ed. 2018) http://www.realtimerendering.com Good reference for learning about a wide variety of topics/techniques used in real-time rendering (Slidy)

DirectX

DirectX Developer Blog by msft https://devblogs.microsoft.com/directx/

Operating systems

Modern Operating Systems by Andrew S. Tanenbaum & Herbert Bos (4th ed. 2015) Google using filetype:pdf Standard work

AI / ML / DL

Paradigms of Artificial Intelligence Programming by Peter Norvig https://github.com/norvig/paip-lisp Standard work, gotta love common lisp!
Artificial Intelligence: A Modern Approach by Stuart Russell & Peter Norvig (Pearson Edu Ltd 3rd edition) http://aima.cs.berkeley.edu/ Standard work
Deep Learning by Goodfellow, Bengio and Courville (MIT Press 2016) http://www.deeplearningbook.org Solid intro into machine learning / deep learning

Other good shit

ChiliWisdom

  • "If you're building with warnings, you gotta re-evaluate your life choices" (Int.11.hw)
  • "Get your privates in order"
  • "For those of you who live in weird places that don't have Orios, I feel sorry for you. They look like this, and they are fucking delicious with milk." (Beg.10)
  • "Everything on a computer is a motherfucking number" (Hugs.11)
  • "Don't turn yourself into a pretzel trying to fit all the STL components together to do everything in a single statement" (Int.16.hw)
  • "You can't touch your parent's privates. Don't do it, it's weird" (Int.17.1 on inheritance)
  • “If you have someone’s address, you can fuck with them. Just ask any Twitch streamer” (Int.2 on pointers, tx DownUp)
  • "What do you think you gotta use? Say it with me... std::move()"
  • "With noexcept, the STL will now use your move constructor for great justice" (Int.22 on exceptions)
  • "At the end of this, I'm gonna have a vector of pointers to stationary poos and then over that range I can just randomly select an index and use that pointer to do something with that poo" (STD Gems [Copy/Filter] on std::copy_if)
  • "Unordered map is the college girl of associative containers; I keep getting older and older, they just stay the same age" (Int.24.2 on constant time performance)
  • "The other way to identify the mechanism of failure is the 'Bust Your Ass' method" (Advanced 3.2hw, talking about debugging strategies)
  • "SFML is a tool for babies" [because it uses degrees] (Advanced 4.1, going on a rant against the sexagesimal number system)
  • Chili's well researched but rejected proposal for an STL addition can be found here
  • "It is working very sexily, powered under the hood by the matrix representation of transformations" (Adv.5.2)