Info

Legacy Code Rocks

Legacy Code Rocks explores the world of modernizing existing software applications. Hosts Andrea Goulet and M. Scott Ford of Corgibytes are out to change the way you think about legacy code. If you’re like a lot of people, when you hear the words “legacy code” it conjures up images of big mainframes and archaic punch card machines. While that’s true — it only tells a small part of the story. The truth is, the code you leave behind is your legacy, so let's make it a good one.
RSS Feed
Legacy Code Rocks
2024
March
February
January


2023
December
November
October
September
July
June
May
April
March
February
January


2022
December
October
September
August
June
May
April
March
February
January


2021
December
November
October
September
August
July
June
May
April
March
February
January


2020
December
November
October
September
August
July
June
May
April
March
February
January


2019
December
November
October
September
August
July
June
May
April
March
February
January


2018
October
September
August
July
June
March
February
January


2017
November
October
September
August
July
May
April
March
February
January


2016
December
November
October
September
August
July
June
May


Categories

All Episodes
Archives
Categories
Now displaying: Page 2
Oct 17, 2022

We design software within a particular context. When that context changes, so should the software. But change is often difficult. 

Today we talk with João Rosa, an independent consultant focused on helping organizations to make strategic decisions when building software. João is one of the authors of Software Architecture Metrics, the curator of the book Visual Collaboration Tools, and the host of the Software Crafts Podcast

João tells us how to ensure that our software is evolving with the problems it is designed to solve and how can we evolve along with it. 

When you finish listening to the episode, connect with him on Twitter, visit his website and grab his book. 

Mentioned in this episode:

João on Twitter at https://twitter.com/joaoasrosa 

João’s website at https://www.joaorosa.io

Software Crafts Podcast at https://www.softwarecraftspodcast.com 

Software Architecture Matrics at https://www.oreilly.com/library/view/software-architecture-metrics/9781098112226/

Visual Collaboration tools at https://leanpub.com/visualcollaborationtools/

Jurgen Appelo, Management 3.0 at https://www.amazon.com/Management-3-0-Developers-Developing-Addison-Wesley/dp/0321712471

Jurgen Appelo, How to Change the World at https://www.amazon.com/How-Change-World-Management-3-0/dp/9081905112/ref=sr_1_1?crid=20PZS97XNXCVG&keywords=Jurgen+appelo+how+to+change+the+world&qid=1665953837&s=books&sprefix=jurgen+appelo+how+to+change+the+worl%2Cstripbooks%2C318&sr=1-1

Oct 3, 2022

If you try to fix broken things in JavaScript, you will probably break the Internet because the entire Internet expects those "mistakes" to be there. Today we talk with David Neal, a family man, geek, musician, illustrator, international speaker, software developer, and Microsoft MVP. David shares the quirkiest things he loves to hate in JavaScript and tells us about the most challenging aspects of working with legacy JS applications. 

When you finish listening to the episode, connect with David on Twitter and visit his website at https://reverentgeek.com. 

Mentioned in this episode:

David on Twitter at https://twitter.com/reverentgeek

David's website at https://reverentgeek.com

Sep 19, 2022

Legacy becomes legacy only when the memory of how the system works is gone. This is where observability kicks in. 

Today we talk with Hunter Madison. Hunter is the cloud architect for Instana, an observability platform for IBM. He has a decade of software development experience covering everything from e-commerce to database development. He tells us about the significance of observability for maintenance work, when using observability is most helpful, and how to adapt observability tools to match the needs of the system. 

When you finish listening to the episode, you can reach out to Hunter at hunter.madison@ibm.com

Mentioned in this episode:

Hunterr’s email at hunter.madison@imb.com 

Instana at https://www.ibm.com/cloud/instana

Sep 5, 2022

The world as we know it wouldn't exist without open-source software. We have learned to rely and depend on these free products that magically get maintained and updated by communities of volunteers. In our over commercialized world, the very plausibility of projects like Linux, Android, and Apache might seem incomprehensible to some. And yet, they make the world go round. 

Today we talk with Naomi Ceder. She helps us understand the longevity and impact of successful open-source projects. Naomi served as the Chair of the Python Software Foundation Board of Directors, and is the recipient of its Distinguished Service Award. Naomi is also a co-founder of the Trans*Code Hack Day - a coding event focused on the trans and non-binary community and its allies. 

When you finish listening to the episode, connect with Naomi on Twitter and visit her website at https://www.naomiceder.tech

Aug 22, 2022

Agile has become the mainstream in software engineering, and agile principles should feel natural to legacy code menders. 

Today we talk with Michael Toppa, the Senior Engineering manager at FastRuby.io. Michael has been a developer, product owner, and engineering director for over 25 years. He had worked for many organizations, including E-TRADE, Ask.com, the University of Pennsylvania, ActBlue, and many others. He is a passionate advocate of agile and lean practices, and today he tells us how to apply them when working with legacy code. 

When you finish listening to the episode, connect with Michael on Twitter or contact him via FastRuby.io

Jun 13, 2022

Imagine if you could refactor legacy code with a single CLI command? Well, you can, at least if you are working with PHP. 

Today we talk with Matthias Noback, a long-time web developer and the author of several programming books, including Rector - The Power of Automated Refactoring, which he co-wrote with Tomáš Votruba. Matthias tells us how to use Rector in your daily workflow, how it automates repetitive maintenance and refactoring tasks, and what is the potential of this approach for other programming languages. 

When you finish listening to the episode, connect with Matthias on Twitter, visit his website at https://matthiasnoback.nl, and grab his book Rector - The Power of Automated Refactoring

Mentioned in this episode:

Matthias on Twitter at https://twitter.com/matthiasnoback

Matthias’ website at: https://matthiasnoback.nl

Rector - The Power of Automated Refactoring at https://leanpub.com/rector-the-power-of-automated-refactoring/

The Mikado Method at http://mikadomethod.info

Corgibytes at https://corgibytes.com

May 30, 2022

There is a lot of buzz around Kotlin, a new Java-based programming language that many think might eventually replace Java. But is all this talk justified, and are the predictions of replacement realistic? 

Today we talk with Duncan McGregor and Nat Pryce, the authors of Java to Kotlin. They reveal to us all the advantages of Kotlin, why and when you would want to transition to it from Java, and how to facilitate the refactoring in a painless and efficient way.

When you finish listening to the episode, connect with Duncan and Nat on Twitter and check out their book Java to Kotlin

Mentioned in this episode:

Duncan on Twitter at https://twitter.com/duncanmcg

Mat on Twitter at https://twitter.com/natpryce

Kotlin to Java, 1st edition at https://www.amazon.com/Java-Kotlin-Duncan-McGregor-ebook/dp/B09CT5KZLM

Kotlin Programming Language at https://kotlinlang.org 

Joshua Bloch, Effective Java, 3rd Edition at https://www.amazon.com/Effective-Java-Joshua-Bloch-ebook/dp/B078H61SCH/ref=sr_1_1?crid=3CG84SQ8VU5ET&keywords=effective+java+josh&qid=1653917364&s=digital-text&sprefix=effective+java+josh%2Cdigital-text%2C260&sr=1-1

Corgibytes at https://corgibytes.com

May 16, 2022

We all want our code to be stable and resilient to future challenges. But we need to strike the right balance between testing our systems and the cost of failure. This is much harder to achieve than it sounds. 

Today we talk with Melanie Frank, Managing Vice-President of Cyber Engineering at Capital One. Her teams innovate boldly to secure the enterprise while obsessing over excellence. Before Capital One, Melanie worked at Honeywell at NASA Goddard Space Flight Center, where she tested software that conducted scheduling, command, and control for space network communication satellites. 

Drawing from her experience in the aerospace and financial industry, she tells us about the significance of testing and how to do it right for your product. 

When you finish listening to the episode, connect with Melanie on LinkedIn

Mentioned in this episode:

Melanie on LinkedIn at https://www.linkedin.com/in/melanie-frank-06b3675/ 

Capital One at https://www.capitalone.com 

NASA Goddard Space Flight Center https://www.nasa.gov/goddard 

Corgibytes at https://corgibytes.com 

Empathy in Tech at https://empathyintech.com 

May 2, 2022

We all strive to write an ideal code - easily readable, functional, and clean. We use many tools to achieve this. However, we often forget why we need our code to be tidy. 

Today we are talking with Samuel Taggart, President of GDevCon N.A. and the owner of SAS Workshops. Sam is a natural teacher, and he enjoys sharing what he learned with others. We talk with Sam about the tools and methods that make our code clean - refactoring, retrospectives, and style guides. While they are all meant to keep us and our code in check, we forget that these tools and methods also need to be under control. Sam reminds us of a crucial question that will help us do just that. 

When you finish listening to the episode, connect with Sam on LinkedIn and Twitter and visit the SAS Workshops website at www.sasworkshops.com

Mentioned in this episode:

Samuel Taggart on LinkedIn at https://www.linkedin.com/in/taggartsam/

Samuel Taggart on Twitter at https://twitter.com/sasworkshops

GDevCon N.A. at https://gdevconna.org

SAS Workshops at https://www.sasworkshops.com

Mikado Method at https://understandlegacycode.com/blog/a-process-to-do-safe-changes-in-a-complex-codebase/

Legacy Code Rocks - Living Documentation with Cyrille Martraire at https://www.legacycode.rocks/podcast-1/episode/2fd0fdeb/living-documentation-with-cyrille-martraire

Zettelkasten Method at https://zenkit.com/en/blog/a-beginners-guide-to-the-zettelkasten-method/

Corgibytes at https://corgibytes.com 

Apr 18, 2022

Imagine if you could compare concepts side-by-side between a programming language you know and one you don't. Well, now you can!

Today we talk with Sarah Withee, a polyglot software engineer, international tech speaker, and robot tinkerer. Sarah is also the author of Code Thesaurus, the polyglot developer reference tool. She tells us about the reasons behind the creation of the thesaurus, its continuous development, and what you can do to make the thesaurus even better. 

When you finish listening to the episode, connect with Sarah on Twitter and LinkedIn and check out the Code Thesaurus project on GitHub. 

Mentioned in this episode:

Corgibytes at https://corgibytes.com 

Sarah in Twitter at https://twitter.com/geekygirlsarah 

Sarah on LinkedIn at https://www.linkedin.com/in/sarahwithee/ 

Sarah’s website at https://geekygirlsarah.com 

Code Thesaurus at https://codethesaur.us 

Code Thesaurus project on GitHub at https://github.com/codethesaurus/ 

Apr 4, 2022

Coders spend most of their time reading rather than writing code. Yet, when you look at the undergraduate programs, boot camps, and conferences, everything seems to be dedicated to code production. 

Today we talk with Felienne Hermans. Felienne is an associate professor at the Leiden Institute of Advanced Computer Science at Leiden University and the author of the book The Programmer's Brain. She also developed Hedy, a new programming language that makes it easier for kids to learn textual programming. She tells us how to help young programmers better understand both the code they are working with and their own cognition. 

After you finish listening to the episode, connect with Felienne on LinkedIn and Twitter, visit her website at https://www.felienne.com, and make sure to check out her book

Mentioned in this episode:

Felienne on Twitter at https://twitter.com/Felienne 

Felienne on LinkedIn at https://www.linkedin.com/in/felienne 

Felienne’s website at: https://www.felienne.com 

Hedy Programming language at https://hedycode.com 

The Programmer’s Brain at https://www.manning.com/books/the-programmers-brain?utm_source=felienne&utm_medium=affiliate&utm_campaign=book_hermans2_programmers_12_8_20&a_aid=felienne&a_bid=d7c7c538

Empathy in Tech at https://empathyintech.com 

Mar 7, 2022

Some of the biggest risks for cyber security frameworks come from employees meant to maintain them. The reason for that is simple, and it couldn't be more human - people who don't feel well don't perform well. 

Today we talk with Nyota Gordon, the founder, developer, and all-around do-gooder at Transition365, a cyber resiliency firm that helps cybersecurity professionals increase their leadership and life skills.

Nyota digs deep into the intersection between cyber security, resiliency, and personal wellness. She shares with us some mental health strategies that will improve our well-being and, as a consequence, our work performance. 

When you finish listening to the episode, make sure to connect with Nyota on LinkedIn

Mentioned in this episode:

Nyota on LinkedIn at https://www.linkedin.com/in/nyotagordon/

Transition365 at https://transition365.com

Brené Brown, Shame Resilience Theory at https://journals.sagepub.com/doi/10.1606/1044-3894.3483

Symantec Cyber Resiliency White Paper at https://informationsecurity.report/whitepapers/symantec-white-paper-the-cyber-resilience-blueprint-a-new-perspective-on-security

Amy C. Edmondson, The Fearless Organization at https://www.amazon.com/gp/product/B07KLT8RKM/ref=dbs_a_def_rwt_hsch_vapi_tkin_p1_i0

Charles Feltman, The Thin Book of Trust at https://www.amazon.com/Thin-Book-Trust-Essential-Building/dp/0988953862/ref=tmm_pap_swatch_0?_encoding=UTF8&qid=1646648424&sr=1-1

Empathy in Tech at https://empathyintech.com

Feb 21, 2022
Agile is all about the speed of iteration and execution. One of the things that often gets neglected is the business impact of the code we are shipping. Today we talk with Prabhjot Singh, serial entrepreneur and the president and CEO of Pyze. He tells us how taking time to better understand the system we are mending can speed up our work and yield much better results. 

When you finish listening to the episode, connect with Prabhjot on Twitter and LinkedIn and visit Pyze's website at https://www.pyze.com.

Mentioned in this episode:

Prabhjot on LinkedIn at https://www.linkedin.com/in/psinghsf/

Prabhjot on Twitter at https://twitter.com/psinghsf

Pyze at https://www.pyze.com 

Feb 7, 2022
We frequently discuss compassion, empathy, and kindness on this podcast. What we rarely focus on, however, is being kind and compassionate to ourselves.  

Today we talk with Clare Sudbery. Clare is a lead engineer at Made Tech, and she is the host of the Making Tech Better podcast. Clare tells why it is so important to be compassionate to ourselves and shares with us some techniques on how to achieve this. 

When you finish listening to the episode, connect with Clare on Twitter and dive deeper into the subject of empathy in tech by joining our new community. 

Mentioned in this episode:

Clare on Twitter at https://twitter.com/ClareSudbery

Making Tech Better Podcast at https://podcasts.apple.com/us/podcast/making-tech-better-made-tech/id1558845124

Made Tech Academy at https://www.madetech.com/careers/academy/ 

Self-Compassion by Dr. Kristin Neff at https://self-compassion.org

Empathy in Tech at https://empathyintech.com 

Jan 24, 2022

Everyone wants their software system to be resilient - to continue carrying out its mission-critical tasks in the face of disruption or adversity. But resiliency has its cost, and not just in a material sense. With resiliency, your system becomes more complex and harder to maintain. That is why we always have to balance our resiliency requirement with other non-functional requirements around the system. 

Today we talk with Briana Augenreich, a Senior Software Engineer at HubSpot. Briana wears many hats in the software engineering world, but she officially calls herself backend and infrastructure engineer. Briana has extensive experience working with large and complex mission-critical systems. This gives her unique insight on finding the right measure while striving for resiliency. 

When you finish listening to the episode, connect with Briana on LinkedIn. 

Mentioned in this episode:

Briana on LinkedIn at https://www.linkedin.com/in/briana-augenreich-93b4a191/ 

David Woods, The Theory of Graceful Extensibility at https://www.researchgate.net/publication/327427067_The_Theory_of_Graceful_Extensibility_Basic_rules_that_govern_adaptive_systems 

Jan 10, 2022

We all get excited about that new, shiny code, but more often than not, our company can live without it. On the other hand, some old and boring lines of code laying around are usually the backbone of our entire business system. And while inventors tend to get all the praise, those who keep the wheels running smoothly are content with, well, the wheels running smoothly. 

Today we talk with Tramaine Darby, a Senior Manager of Content, Subscriptions, and Insights Engineering at Red Hat. She tells us how to manage teams responsible for maintaining the systems that make companies run and how to defend these systems from hard-cuts and radical changes. 

When you finish listening to the episode, connect with Tramaine on LinkedIn and Twitter.

Mentioned in this episode:

Tramaine on LinkedIn at https://www.linkedin.com/in/tramainedarby/

Tramaine on Twitter at https://twitter.com/tdarby4

Red Hat at https://www.redhat.com/

Dec 27, 2021

Making widespread changes to a codebase can be hard! Your team starts a long-lived branch that is difficult to maintain and often impossible to merge; you and your team-mates agree to improve the code slowly over time, but you all forget this agreement, and the improvement never happens. But what if there were a tool that keeps you on track to steadily improve your code without making you feel like losing control over these improvements?

Today we talk with Craig Spence, a senior engineer at Spotify and a creator of Betterer - a tool that helps with incremental improvements of big codebases and legacy systems. Craig tells us how Betterer works, how it differs from other debugging tools, and what are the plans for its improvements. 

When you finish listening to the episode, connect with Craig on LinkedIn and Twitter, and be sure to check out Betterer on GitHub

Mentioned in this episode:

Craig on LinkedIn at https://www.linkedin.com/in/craig-spence/

Craig on Twitter at https://twitter.com/phenomnominal

Betterer on GitHub at https://phenomnomnominal.github.io/betterer/docs/introduction

Touca at https://touca.io 

Dec 13, 2021

Kubernetes with James Sturtevant

As applications grow to span multiple containers deployed across multiple servers, operating them becomes more complex. While it is possible to maintain these growing applications manually, most will reach out to an orchestrator to help them with the tasks. As applications grow to span multiple containers deployed across multiple servers, operating them becomes more complex. One of such orchestrators is Kubernetes

Today we talk with James Sturtevant, Principal Software Engineering Lead at Microsoft. James is a coauthor of the book Kubernetes for Windows. He helped blaze the trail for Windows support in upstream Kubernetes for enterprises, and now he helps us understand how Kubernetes work and why you would want to use it. 

When you finish listening to the episode, connect with James on LinkedIn, visit SIG-Windows and Kubernetes channels on Slack and grab a copy of Kubernetes on Windows

Mentioned in this episode:

James on LinkedIn at https://www.linkedin.com/in/jamessturtevant/

Jay Vyas, James Sturtevent, Kubernetes on Windows, at https://www.manning.com/books/kubernetes-on-windows 

SIG-Windows Channel on Slack at https://kubernetes.slack.com/?redir=%2Fmessages%2Fsig-windows

Kubernetes Channel on Slack at https://slack.k8s.io 

Nov 29, 2021

The power of software is enormous, but the code can only be as good as the humans who write it. Despite popular belief, "being good" has nothing to do with character predisposition. It is a product of an intentional effort to nurture care and compassion. 

Today we talk with Liz Acosta, a software engineer and a developer advocate at Stacklet. Liz's past professions as a copywriter, social media manager, and odd job freelancer give her a unique perspective on software development and enables her to help teams collaborate with empathy. 

When you finish listening to the episode, connect with Liz on LinkedIn or find her on Stacklet

Mentioned in this episode:

Liz on  LinedIn at https://www.linkedin.com/in/lizacostalinkedin/ 

Liz on Stacklet at https://stacklet.io/blog/author/liz-acosta 

Exercism at https://exercism.org 

Empathy in Tech at https://empathyintech.com 

Nov 15, 2021

Building useful software requires more than just knowing how to write code. It demands curiosity to understand the problem which the software is supposed to resolve. It also requires the willingness to understand the people - not only those who will use it but also those who are building this software with you! 

Today we talk with Dawn Ahukanna, the design principal and front-end architect at IBM. She leads an integrated and consistent user-focused design across enterprise software focused on data analytics and cognitive user experiences. She shares the methods and the tools she uses when figuring out how people work - an essential piece of knowledge if you want to create the best user experience. 

When you finish listening to the episode, make sure to connect with Dawn on Twitter and LinkedIn

Mentioned in this episode:

Dawn on Twitter at https://twitter.com/dawnahukanna

Dawn on LinkedIn at https://www.linkedin.com/in/dawnahukanna

Dawn’s website at http://dahukanna.net 

Nov 1, 2021

Working together in a team requires a lot of emotional intelligence, adaptability, and empathy. Bringing two teams working together after acquisition and a merger might seem like requiring superpowers on top of that. 

Today we talk with Matt Dixon, the founder, and CEO of Front Range Systems. Matt is a tech executive helping newly acquired technology businesses create a unified culture within their workplaces. Matt gives us a sneak-peak into his practices of helping teams develop a growth mindset, adapt to new technological challenges, and become high-performing. 

When you finish listening to the episode, check out the Front Range Systems website at https://frontrangesystems.com, and connect with Matt on Twitter

Oct 18, 2021

TypeScript has been around for quite a while, and its popularity speaks for itself.  It has never been more important to understand how to gradually and sustainably shift to TypeScript within the existing code-base. 

Today we talk with Sam Lanning, an independent software contractor in the humanitarian sector with many years of experience at GitHub and Semmle. Sam's vast experience in using TypeScript to speed up coding, eliminate debugging, and reduce technical debt helps us see the benefits of this popular programming language and foresee how to transition to it. 

When you finish listening to the episode, find Sam on GitHub and connect with them on Twitter and LinkedIn.

Mentioned in this episode:

Sam on Github at https://github.com/s0 

Sam at LinkedIn at https://uk.linkedin.com/in/smlanning 

Sam at Twitter at https://twitter.com/samlanning 

TypeScript at https://www.typescriptlang.org 

Oct 4, 2021

We often use real-life metaphors to make software development concepts more approachable and understandable, especially for the people just entering the field. Sometimes, however, the reverse approach could help a seasoned coder to cope with the real world. 

Today we talk with Casey Watts, the author of Debugging Your Brain, a clear applied psychology, and a concise self-help book. The human brain is buggy, just as any legacy code is. Casey tells us about techniques that can help us refactor our thinking, speed up our thought processes and ultimately debug our brains. 

When you finish listening to the episode, connect with Casey on LinkedIn and Twitter, visit his website at https://www.caseywatts.com and https://www.debuggingyourbrain.com, and check out his book Debugging Your Brain

Mentioned in this episode:

Casey on LinkedIn at https://www.linkedin.com/in/caseywatts/

Casey on Twitter at https://twitter.com/heycaseywattsup

Debugging Your Brain at https://www.amazon.com/Debugging-Your-Brain-Casey-Watts/dp/0578755033?

Debugging Your Brain Website at https://www.debuggingyourbrain.com

Casey’s Website at https://www.caseywatts.com

Cognitive distortions at https://www.debuggingyourbrain.com/distortions/

Sep 20, 2021

Many programming concepts seem too complex and intimidating to outsiders. That is perhaps the main reason why writing code remains such an exclusive profession, even in the age where virtually everything depends on a written code! But does everything have to be so complicated? 

Today, we talk with Sy Brand, Microsoft C++ Developer Advocate, and a specialist for compilers and debuggers for embedded accelerators. Sy is also known for their YouTube Channel - Computer Science with Sy's Cats - where they explain programming and computer science concepts with household objects and cats. After watching only a few of Sy's videos, you will feel that programming can, and should, be much more approachable and inclusive. 

When you finish listening to the episode, connect with Sy on Twitter, start following their YouTube channel, and check out one of their live coding sessions at Twitch

Mentioned in this episode:

Sy Brand on Twitter at https://twitter.com/TartanLlama

Computer Science with Sy’s Cats at https://www.youtube.com/c/SyBrandPlusCats/featured 

Sy Brand on Twitch at https://www.twitch.tv/tartanllama

Ivan Čukić, Functional Programming in C++ at https://www.amazon.com/Functional-Programming-programs-functional-techniques/dp/1617293814  

Writing Error Messages for Humans at https://www.flutterwave.design/writing-error-messages-for-humans/ 



Sep 6, 2021

Imagine if you could perform static analysis, find bugs, and enforce code standards in more than seventeen languages with a single tool. Imagine if you could scan your code with more than 1,000 community pre-written rules and if you could easily add your own rules to match your code perfectly. Imagine if you could then flag the issues and get results in pull requests, Slack, or anywhere else without as much as a click of a mouse. 

Well, it appears that you can do all of this and more. Today we talk with Isaac Evans, an MIT alumnus, a former computer scientist at the US Department of Defence, and a founder and CEO of r2c. His company, r2c, stands behind Semgrep, a lightweight, offline, open-source, static analysis tool that profoundly improves software security and reliability to safeguard human progress. 

When you finish listening to the episode, see how Sengrep can improve your code at https://semgrep.dev, or visit https://r2c.dev if you need enterprise solutions for large businesses. 

Mentioned in this episode:

Isaac Evans on LinkedIn at https://www.linkedin.com/in/isaacevans/

Semgrep at https://semgrep.dev

r2c at https://r2c.dev

Brian Foote, Joseph Yoder, The Selfish Class at http://www.laputan.org/selfish/selfish.html

Richard Dawkins, The Selfish Gene at https://www.amazon.com/Selfish-Gene-Anniversary-Landmark-Science-dp-0198788606/dp/0198788606/ref=dp_ob_title_bk

1 « Previous 1 2 3 4 5 6 7 Next » 7