Hacker News Books

40,000 HackerNews book recommendations identified using NLP and deep learning

Scroll down for comments...

An Introduction to Statistical Learning: with Applications in R (Springer Texts in Statistics)

Gareth James , Daniela Witten , et al.

4.8 on Amazon

72 HN comments

Mastering Regular Expressions

Jeffrey E. F. Friedl

4.6 on Amazon

72 HN comments

Game Programming Patterns

Robert Nystrom

4.8 on Amazon

68 HN comments

Steve Jobs

Walter Isaacson, Dylan Baker, et al.

4.6 on Amazon

67 HN comments

Machine Learning: A Probabilistic Perspective (Adaptive Computation and Machine Learning series)

Kevin P. Murphy

4.3 on Amazon

66 HN comments

The Cuckoo's Egg: Tracking a Spy Through the Maze of Computer Espionage

Cliff Stoll, Will Damron, et al.

4.7 on Amazon

61 HN comments

Programming: Principles and Practice Using C++ (2nd Edition)

Bjarne Stroustrup

4.5 on Amazon

58 HN comments

Ghost in the Wires: My Adventures as the World’s Most Wanted Hacker

Kevin Mitnick, William L. Simon, et al.

4.6 on Amazon

55 HN comments

Modern Operating Systems

Andrew Tanenbaum and Herbert Bos

4.3 on Amazon

54 HN comments

Head First Design Patterns: Building Extensible and Maintainable Object-Oriented Software 2nd Edition

Eric Freeman and Elisabeth Robson

4.7 on Amazon

52 HN comments

The Singularity Is Near: When Humans Transcend Biology

Ray Kurzweil, George Wilson, et al.

4.4 on Amazon

51 HN comments

The Everything Store: Jeff Bezos and the Age of Amazon

Brad Stone, Pete Larkin, et al.

4.6 on Amazon

51 HN comments

Compilers: Principles, Techniques, and Tools

Alfred Aho, Monica Lam, et al.

4.1 on Amazon

50 HN comments

Test Driven Development: By Example

Kent Beck

4.4 on Amazon

45 HN comments

Patterns of Enterprise Application Architecture

Martin Fowler

4.5 on Amazon

43 HN comments

Prev Page 2/16 Next
Sorted by relevance

lawnonJuly 29, 2021

I really loved Game Programming Patterns and I'll definitely need to check this out too.

The way you made your book(s), from making them available online for free to the excellent layout of the printed version, was a huge inspiration for me to write my own book. Thank you.

donquichotteonAug 5, 2021

I bought Robert's book "Game Programming Patterns", and although it is a bit OOP-heavy for my taste, I have enjoyed it and the illustrations are excellent.

Also, cool to see him pull a Knuth and writing his own typesetting and build system for the book!

shortercodeonSep 27, 2019

Writing an Interpreter in Go and it's sequel Writing a Compiler in Go by Thorstan Ball are both excellent reads.

Also enjoyed Game programming patterns by Bob again, but that has already been mentioned.

vanderZwanonMar 20, 2017

He also wrote the excellent Game Programming Patterns, which you can read here:

http://gameprogrammingpatterns.com/

leksakonJuly 25, 2017

Game Programming Patterns - without a doubt. Own it in print, but usually only read it online. To me it's a more exciting read than the GoF book

http://gameprogrammingpatterns.com/contents.html

leksakonOct 15, 2016

I think Game Programming Patterns is an excellent read for learning patterns

toshonMay 17, 2015

I always find munificent's essays super insightful and entertaining. Perfect weekend reading material.

Somewhat (un)related: check out his book on Game Programming Patterns (http://gameprogrammingpatterns.com/). Great read of software design and patterns (not only for game developers).

munificentonJuly 19, 2021

And Game Programming Patterns, which has a chapter on the performance effects of contiguous data:

https://gameprogrammingpatterns.com/data-locality.html

:)

criddellonJuly 10, 2018

Bob Nystrom is a fantastic writer. If you like this book, then I would highly recommend his previous book Game Programming Patterns. Even if you don't write games, there's a lot of great stuff in here. He's a very good teacher.

cameronbrownonJuly 2, 2019

Off-topic, but I noticed in your bio you wrote Game Programming Patterns. Was a great read!

stirfishonJuly 20, 2021

Game Programming Patterns is one of my favorite books btw

Aqua_GeekonApr 30, 2020

His book, "Game Programming Patterns," is great as well: http://gameprogrammingpatterns.com

TehShrikeonAug 4, 2019

It's not finished yet, but you probably want https://craftinginterpreters.com/

I loved his "Game Programming Patterns" book, and this new book is looking totes spiffy

DanPristupovonJune 26, 2017

I just want to thank Bob for the amazing "Game Programming Patterns" book. I can't recommend it highly enough. And since I'm also interested in compilers, I will buy "Crafting Interpreters” without a hesitation.

fapjacksonMar 20, 2017

I've got a book called "Game Programming Patterns" by Robert Nystrom which goes into this. It's not advanced, but it's very good.

laurenbeeonJuly 7, 2014

Bob Nystrom's Game Programming Patterns is an engaging, informative book about design patterns that are commonly used in games but are relevant to non-game software too.

http://gameprogrammingpatterns.com/

rednabonJuly 29, 2021

That's going to look awesome next to my copy of Game Programming Patterns! ... What do you mean "Temporarily Out Of Stock", amazon.co.uk!?

ArtWombonDec 4, 2020

Not a book. But if you are .NET / Azure centric I have found the team at MS Paterns and Practices to be very accessible ;)

http://aka.ms/mspnp

Game Programming Patterns is another resource that is quite clear

https://gameprogrammingpatterns.com/

yoodenvranxonApr 6, 2018

I have nothing to discuss but I wanna say that I loved Game Programming Patterns and I am really looking forward to read Crafting Interpreters!

jcritesonJuly 6, 2014

Folks who enjoyed this article might also like the book Game Programming Patterns: http://gameprogrammingpatterns.com/ - also written by the author Bob Nystrom.

imdsmonApr 7, 2018

Looking forward to reading through this. Thoroughly enjoyed Game Programming Patterns, in particular your style of adding comments to the side.

ShaneWiltononFeb 18, 2018

It's not a tutorial, per se, but Game Programming Patterns is a free online book that explores common design patterns in game development: http://gameprogrammingpatterns.com/

As a non-game developer, it's been one of the most invaluable resources I jump too when trying to optimize something.

otterproonJune 19, 2018

I also recommend Robert Nystrom's book Crafting Interpreters (http://www.craftinginterpreters.com/) for learning about interpreters. While it is still work-in-progress, the quality is great, and it is free to read online. The author also wrote one of my favorite book, Game Programming Patterns (http://gameprogrammingpatterns.com/)

no-bugsonJan 18, 2016

Thanks! And BTW Nystrom's Game Programming Patterns is one of a few great books on game programming, so I take comparison as a compliment :-)

mrspeakeronSep 27, 2019

Do you have the back cover ready for this book? The back of Game Programming Patterns makes me happy every time I see it.

danielbarlaonMar 19, 2018

Unrelated to Wren, but I felt that Bob's book "Game Programming Patterns" ([1] and a free web version [2]) was excellent, and a very down to earth treatment of the topic. All of the examples were relevant and pretty hard hitting.

I know patterns (especially "design patterns") have become a bit of a swear-word, something which hints at severe engineering malpractices, especially along the lines of introducing unnecessary complexity for seemingly its own sake. I think that view oversimplifies the topic greatly, so hopefully people don't dismiss it at face value.

[1] http://gameprogrammingpatterns.com/
[2] http://gameprogrammingpatterns.com/contents.html

vanderZwanonSep 27, 2019

Bob Nystrom (aka munificent)'s previous book "Game Programming Patterns"[0] is really nice, and there's lots of things in there that work outside of a game context.

[0] gameprogrammingpatterns.com

benrbrayonDec 2, 2020

Check out Game Programming Patterns (https://gameprogrammingpatterns.com/) and the Architecture of Open Source Applications (http://aosabook.org/en/index.html).

elcapitanonJan 19, 2017

> # Game Programming Patterns

This is also available on the authors website: http://gameprogrammingpatterns.com/contents.html

formalsystemonApr 5, 2020

The author's previous book Game Programming Patterns is 1000x better than the Gang of Four book.

Really looking forward to going through this.

springogeekonJuly 10, 2018

The same was true of the author's previous book, Game Programming Patterns, which is now complete and fully published.

yoodenvranxonJune 2, 2017

Yes, I can second this! Game Programming Patterns is one of my favorite programming books of the last few years.

panzaglonJuly 18, 2021

Every time someone posts a book on here someone shows up to bitch about the format and modernization- you should see the crap the 'Game Programming Patterns' guy gets.

wly_cdgronJuly 19, 2021

You should have just said "Look guys, trust me, I am going to write Game Programming Patterns one day"

s3cur3onApr 6, 2020

Agreed. I got a lot out of Game Programming Patterns. My notes, if anyone wants a summary, are here:

https://tylerayoung.com/2017/01/23/notes-on-game-programming...

fitzwatermellowonSep 14, 2016

Check out Robert Nystrom's Game Programming Patterns:

http://gameprogrammingpatterns.com/contents.html

alien1993onMar 5, 2019

He's the same guy that wrote the book Game Programming Patterns.
http://gameprogrammingpatterns.com/

captaincrowbaronJan 2, 2015

For those who don't know, this is from Robert Nystrom, author of Game Programming Patterns: http://gameprogrammingpatterns.com/

https://news.ycombinator.com/item?id=7634734

ryanisnanonApr 24, 2020

A very good pattern book that I've found to be incredibly well written is Robert Nystrom's Game Programming Patterns. I'm a huge pattern advocate, and have consulted the Gang of four pattern book many times, as well as Christopher Alexanders' A Pattern Language. Still, Nystrom presents some new patterns with very concrete examples. Even though they are presented within the domain of game development, with a little creativity their utility can be imagined elsewhere.

koonsoloonJan 7, 2020

My most popular blog post was 'deWiTTERS game loop', which ended up with plenty of links referring to it, including the "game programming patterns" book.

I wrote it because there was nothing else like it.

So if you're researching something, but have to combine various sources and figuring out stuff, because there is no easy blog post, write that easy blog post yourself.

anon1385onOct 29, 2013

For reference the author is Bob Nystrom: http://www.stuffwithstuff.com/bob-nystrom.html , user 'munificent' on HN: https://news.ycombinator.com/user?id=munificent not that it should matter who he is.

Since I'm talking about him I'll say I think his Game Programming Patterns book is great: http://gameprogrammingpatterns.com

TeMPOraLonSep 23, 2020

That's one hell of a story! Myself, I only got as far as implementing a CMS with a virtualized filesystem with symlinks (and I think it was even rudimentarily distributed); lots and lots of pointless wheel reinvention, but I've learned tons of stuff and ultimately managed to use it to skip a subject at university. What I didn't manage to do is to use it to build my website (ended up keeping my Wordpress blog, later replaced by a DIY static site generator).

I've seen you around here a lot and enjoyed your comments, but until now, I never realized you're the author of "Crafting Interpreters" and "Game Programming Patterns"! These are some of the best resources I've ever read on-line! Thank you for doing those!

trevynonMar 11, 2018

On this topic, one of my eye-openers was Game Programming Patterns: http://www.gameprogrammingpatterns.com

It’s classic software architecture patterns, only seen through the lens of performance and design iteration speed, which is the way I see the world even though I don’t make what most people would consider games.

danschulleronOct 9, 2016

I'm using Gumtree for payment and distribution, it's worked very well for me.

As for marketing, I've just replied earlier in the thread with a little more detail.

For a site with tutorials on game development, most of your readers will be using adblocking software. Therefore most popular monetization methods are: selling a book, a course or locking off content behind a paywall.

Here's an example of premium content:
http://aigamedev.com/premium/interview/dying-light/

Here's an example where the author sells the source code for his articles
http://www.wildbunny.co.uk/blog/

This blog is about all sorts of tech stuff but he sells his book "Game Programming Patterns" (which is very good!) in the side bar.
http://journal.stuffwithstuff.com/

wsc981onMay 31, 2016

You probably already found it, bit the Game Programming Patterns[0] website is a great read. I bought the book, but all content is available on the site.

Also nice is this archived post[1] on getting started as game programmer.

I am making my first real game this year, also using SpriteKit.

[0]: http://gameprogrammingpatterns.com

[1]: http://web.archive.org/web/20051104034215/http://www.lupineg...

formalsystemonMay 16, 2020

This is the book that finally helped me grok software design patterns. Gang of four reads like a dictionary while the examples of Game Programming patterns have stayed with me.

If I'm rendering a forest of course I don't want to copy the data for trees a 1000 times so of course I need to use the flyweight pattern

The decoupling patterns chapter is particularly good and will help you understand how to turn each entity in a game into a server which sends events to other entities. That way you end up with many small pieces of a code as opposed to a single giant game loop. The entity component system (ECS) is one of the main reasons why programming games in Unity is so pleasant.

If it wasn't obvious by now, this is not a book about game programming patterns it's the best book on software design patterns that I've ever read. Most software design books seems to think I'm only interested in designing accounting or banking software, why not a game?

agentultraonDec 24, 2015

Yeah... if you disagree with his objections to object-oriented programming and design-by-abstraction you're going to have a hard time getting through the series.

If design patterns are comfortable and understandable for you then check out Game Programming Patterns[0]. It's a decent book.

However I agree with Casey's philosophy and the wider data-oriented design approach to programming. C++ is not a great language. Zero-cost abstractions are a myth. We should be thinking about the data and not about how to write clever, abstract code.

[0] http://gameprogrammingpatterns.com/

shortcordonFeb 10, 2019

I’ve been reading Game Programming Patterns off and on. Not a game developer, but it’s a pretty light read and interesting to see how design patterns apply to making video games.

Next up after that I’m gonna finally finish Practical Object Oriented Design in Ruby by Sandi Metz. I started this one after reading 99 Bottles of OOP.

Longer term project is to read through The Little Schemer and the other books in that series like The Reasoned Schemer, The Little MLer, etc.

seibeljonJune 2, 2017

I haven't had a chance to dive into this book, but I just want to say that Game Programming Patterns[0] is one of the finest programming books I have ever read, 100% worth reading even if you never intend to create a game. Very readable, funny, and full of wisdom. You are the man!

[0] http://gameprogrammingpatterns.com/

dansoonMar 15, 2017

I'm a long ways from the days when I got into programming because I thought I wanted to be a gamedev but I'm buying Game Programming Patterns just based on how impressed your current book is right now. I'm about to start writing myself and was planning to use Sphinx. Not sure if you're actually using Sphinx for your site, but your design is exactly what I would want for mine.

munificentonMay 24, 2020

Yes, me.

My self-published book "Game Programming Patterns" has made me a lot more money every year for the past six years than I ever expected. It's not enough to live off of, at least not in an expensive city while raising a family, but it's nothing to scoff at either. I could probably make quite a bit more if I put time into marketing, supplementary materials, etc. As it is now, I just let the checks from Amazon etc. roll in and treat it as a nice bonus to my day job income.

If I lived somewhere cheaper, wrote full time, and made some adjustments in my lifestyle, I could probably get by on just my writing.

munificentonSep 27, 2019

Ha, this has definitely come up for discussion.

My original plan was to have a photo with me and both of my dogs with the implication that each later book must feature yet another additional dog.

Unfortunately, Ginny, the dog in the photo on the back of Game Programming Patterns died earlier this year. (This makes it even more meaningful to me that she is immortalized on the book. You'd be surprised how many strangers have asked me about her.)

So, I don't have any firm plans, but I might just try to do a new photo with me and my other dog, Benny. He's getting pretty old too, though, so I guess the pressure is on for me to finish the book.

stepvhenonJuly 24, 2016

In other literature the answer to inheiratance is "composition" or "components" rather than "delegate and contain." A nitpick, but I think it better captures the meaning of the method.

Bob Nystrom wrote a very good chapter on composition in his Game Programming Patterns book [1] and is worth reading if you want to program in the OO paradigm.

[1] http://gameprogrammingpatterns.com/component.html

coldteaonApr 26, 2021

>that was written by someone who probably, ironically, hasn't read all of those actually-seminal papers is more than a bit frustrating.

For completeness and curiosity maybe. Otherwise one doesn't have to read the "actually-seminal papers" if they already know the concepts from the 40 to 20+ years that followed.

Do physicists need to read the original Einstein or Maxwell if they had read tomes of subsequent course and academic books on the subject, plus modern papers for the later developments?

In any case, I'm pretty sure the author of that post [1] had read at least the CSP papers -- he works on the Dart language team, and has written Game Programming Patterns and Crafting Interpreters, both quite popular books, which have been discussed (as in first page) more than 3-4 times in HN in the past years.

[1] https://journal.stuffwithstuff.com/2015/02/01/what-color-is-....

antjanusonJuly 27, 2018

I usually recommend a few different books:

Clean Code: A Handbook of Agile Software Craftsmanship

http://amzn.to/2vcRcgU

This book really helped me focus on code organization and seeing maintainable code as an overall goal whilst building long-term applications. I'd say that one of the reasons why the work I've done 3-4 years ago can still be used, expanded, and maintained today is because of this book. Short functions, code organization, and naming conventions all stuck with me.

I'd say that unlike other programming books, this one focuses on the "art" and "organization" rather than syntax and other aspects of programming.

The Pragmatic Programmer: From Journeyman to Master

http://amzn.to/2vfeUaT

This book tackled real-world application building and practices. I'm still reading it. I liked how it tackled not only some basics of programming (resource management practices) but also project management to a certain extent. Eg. how to use prototypes, how to use "trace bullet" programs, etc.

Game Programming Patterns

I think one of my favorites has been "Game Programming Patterns" http://gameprogrammingpatterns.com/ which is free online or you can get an ebook/print version http://amzn.to/2veRdiO

The book introduces several basic design patterns, it explains WHY they're used, how to implement them, etc. in the best way I've read so far. No CS book or online article has been able to explain these patterns as this book did.

And I'm not even a game developer.

Also, check out this post on dev.to -- https://dev.to/ben/what-are-the-most-interesting-readable-so... it has some good answers! :)

michaelx386onMay 14, 2015

Bob Nystrom wrote a blog post[0] about self-publishing his book, Game Programming Patterns[1]. He used Kindle Direct Publishing and compares it against sales from CreateSpace, Smashwords and iBooks.

[0] http://journal.stuffwithstuff.com/2014/11/20/how-my-book-lau...

[1] http://gameprogrammingpatterns.com

mreomeonJan 28, 2019

Thank you very much for all your work on "Game Programming Patterns." It's an amazing resource. I was not aware of "Crafting Interpreters" before now. I can't wait to start digging into it.

I've come across very few Design Patterns, and Software Engineering topics in general, that couldn't be taught/explained from the perspective of game development. I'm surprised that it isn't used as a teaching-tool more often then it is. It's an inherently complex domain that most audiences are already quite familiar with; the "why" behind things is either immediately obvious or easily explained. If someone doesn't know what the requirements are for something like an employee record databases, and how such a system might be used, using that as a context for teaching is not much more useful then "class Widget" and "Foo.Bar()".

adrianoconnoronDec 20, 2016

Have you seen the Game Programming Patterns book (http://gameprogrammingpatterns.com/). It was originally a blog that later become a book, and I think you can browse most of the content online. It's full of interesting lessons and patterns and deals with coupling and state management. It won't have the answers to copy and paste, but it gives you a lot of food for thought and it's really well written.

I'm not a game programmer by trade, but I'm interested in that stuff and I really enjoyed it all the same. It made me rethink some stuff about enterprise patterns too.

DanAndersenonApr 23, 2014

Thank you so much for writing this! As someone working to transition from webdev and enterprisey CRUD app development to something that, if not gamedev itself, deals more with simulation and modeling worlds, it's been difficult to deal with the true change in mindset that's needed. Over the past few weeks I've had "read a chapter of Game Programming Patterns" as a recurring to-do item, and it's opened my eyes greatly.

erikbyeonOct 26, 2017

Don't think there is any such book specifically for UE and its source. But there's a lot of good books on realtime rendering and graphics programming in general.

GPU Gems, Shader X and GPU Pro are good series for learning specific graphics programming techniques.

https://developer.nvidia.com/gpugems/GPUGems/gpugems_pref01....

http://www.realtimerendering.com/resources/shaderx/

For a general game engine overview: Game Engine Architecture by Jason Gregory (Naughty Dog)

Game Programming Patterns: https://www.amazon.co.uk/Game-Programming-Patterns-Robert-Ny...

Realtime rendering overview: https://www.amazon.co.uk/Real-Time-Rendering-Third-Tomas-Ake...

Related math: https://www.amazon.co.uk/Math-Primer-Graphics-Game-Developme...

Other recommendations:

http://mrelusive.com/books/books.html

http://fabiensanglard.net/Computer_Graphics_Principles_and_P...

It's fun to explore the source though, and NVIDIA has some cool experimental branches of the engine with their stuff integrated.
https://github.com/NvPhysX/UnrealEngine

shortercodeonJuly 25, 2019

Looking forward to seeing it complete! I got into programming languages after reading Game programming patterns, and I'm absolutely hooked. When I saw you were working on this book I worked through the first half of it in a week using JS, loved it.

I started the second half in Rust about a week ago, I don't have enough vacation days to work through it at the pace I did the first half. Finding it a bit harder so far, but I think that's just because I'm still new at Rust.

You may have already mentioned this but will you be publishing a physical copy when your done? I'd love to get one for the shelf.

munificentonJuly 25, 2019

> You may have already mentioned this but will you be publishing a physical copy when your done?

Yes. Just like with "Game Programming Patterns", once the chapters are done, I'll put together a print edition, eBook, Kindle, etc. Based on the length, I may end up doing it as two separate volumes, which is crazy to think about.

shadowmintonMar 11, 2018

I’ve commented at length about this book before; really, just don’t bother. It’s not very good at patterns, not comprehensive, not clear on how to use them for games or why you might want to use them at all.

Google search “design pattern book”. Right, now take any of those books.

If you want game related stuff try “game programming gems”.

This book is free... that’s literally all it has going for it. Wikipedia has better stuff that you know... actually compiles, etc.

If you got any value out of Game Programming Patterns, I cannot strongly enough recommend you go and read an actually good book on design patterns; you’ve probably been mislead by its vague hand waving and incoherent discussion of the various topics.

lucaspilleronAug 9, 2015

I think the author doesn't want to scare people away, but on the other hand if nobody knows how to buy... A book with a similar business model Game Programming Patterns [1] also does this poorly, I think a simple "Like this? Buy our print edition and support the author" link at the end of each chapter would be fine.

[1] http://gameprogrammingpatterns.com/architecture-performance-...

hertzratonDec 16, 2020

It pays off in interviews to drill that stuff. If you want to be good at your job though, you just need to write a lot of code and understand design and architecture. The best book on this I read recently was “game programming patterns.” Ive had cause to use about a third of the patterns in the book in the last year alone, and my code base got simpler and easier to modify each time. Big payoff. Don’t read it start to finish though, use it as a resource for when you get stuck

http://gameprogrammingpatterns.com/

demircancelebionJune 5, 2017

I have been reading Game Programming Patterns lately. It explains the design patterns with examples from games, and it is really well written by an engineer at Google (Bob Nystrom): http://gameprogrammingpatterns.com/

After I complete this book, I think I'll read his other book: Crafting Interpreters. This one teaches about implementing a programming language from scratch, once in Java and a second time in C.

ArjunaonMay 9, 2017

Hello... this is a topic I'm interested in, because I'd like to write one day. Anyway, I thought you might find these resources useful:

1. Nathan Barry has written extensively about his success with self-publishing. Essentially, his method (I'm simplifying here) is to 1. position yourself as an expert in your field via blogging, then 2. directly market to your audience via email using a 3. tiered pricing model (i.e., multiple packages at increasing price-points). He wrote a book about his methodology entitled "Authority."

Authority:

http://nathanbarry.com/authority

Nathan Barry’s Lessons Learned Selling $355,759 on Gumroad:

http://blog.gumroad.com/post/73421524134/nathan-barrys-lesso...

2. Bob Nystrom has written about his experience writing and marketing "Game Programming Patterns."

http://journal.stuffwithstuff.com/2014/04/22/zero-to-95688-h...

http://journal.stuffwithstuff.com/2014/11/20/how-my-book-lau...

A comment he wrote regarding publishing:

https://news.ycombinator.com/item?id=13878280

3. Advice and insight on the topic of traditional publishing from Patrick McKenzie:

https://news.ycombinator.com/item?id=12118914

4. Thread entitled "Ask HN: Has anyone here self-published a book? Any advice?"

https://news.ycombinator.com/item?id=6052075

5. Self-publishing success comment involving multiple pricing tiers:

https://news.ycombinator.com/item?id=13878266

6. Self-publishing success story entitled "How I Made $70k Self-Publishing a Book about Ruby on Rails."

https://news.ycombinator.com/item?id=13876514

All the best!

Built withby tracyhenry

.

Follow me on