The Wiert Corner – irregular stream of stuff

Jeroen W. Pluimers on .NET, C#, Delphi, databases, and personal interests

  • My badges

  • Twitter Updates

  • My Flickr Stream

  • Pages

  • All categories

  • Email Subscription

    Enter your email address to subscribe to this blog and receive notifications of new posts by email.

    Join 717 other subscribers

Archive for the ‘Design Patterns’ Category

Many Computer Science concepts do not apply to Enterprise Applications

Posted by jpluimers on 2019/10/08

Old long read: [WayBack] EnterpriseApplication; Martin Fowler 24 March 2014

Via: [WayBack] Weekend Reader 2017.46 – reality-loop:

Characteristics of Enterprise Applications

It’s an old article but I like to come back to it from time to time: Martin Fowler describes the term “Enterprise Applications” and explains why some concepts from classical “Computer Science” are not applicable.

–jeroen

Posted in Design Patterns, Development, Software Development | Leave a Comment »

Design Patterns & Refactoring

Posted by jpluimers on 2019/07/16

Design Patterns and Refactoring articles and guides. Design Patterns video tutorials for newbies. Simple descriptions and full source code examples in Java, C++, C#, PHP and Delphi.

Source: [WayBack] Design Patterns & Refactoring.

And indeed a lot of examples in Delphi too; few sites have that: Delphi site:sourcemaking.com.

–jeroen

Via: [WayBack] I stumbled upon this yesterday, very informative, accessible and also with Delphi examples – among other languages. – Steffen Nyeland – Google+

Posted in .NET, C, C#, C++, Delphi, Design Patterns, Development, Java, Java Platform, PHP, Scripting, Software Development | Leave a Comment »

On my research list: Event Sourcing

Posted by jpluimers on 2019/04/23

On my research list: [WayBack] Event Sourcing

Capture all changes to an application state as a sequence of events.

I got there via a very interesting thread [WayBack] A foreword===Hello everybody, the two major things that were recently introduced into my software architecture which led to significantly better main… – Edwin Yip – Google+

–jeroen

Posted in Design Patterns, Development, Software Development | Leave a Comment »

The Fallacy of DRY – Entropy Wins

Posted by jpluimers on 2019/04/18

A must read post on why “Do Repeat Yourself” can be a good thing [WayBack/Archive.is] The Fallacy of DRY – Entropy Wins by Jeroen de Dauw (of WikiMedia Germany fame).

Ultimately, you want code to be easy to understand. This that when you apply the “Don’t Repeat Yourself” principle you need to ask yourself if the resulting code is still easy to understand.

He did some great talks too, for instance bit.ly/econ-cleancode, aan almost half our talk with open source slides which he [WayBack] presented during Source Code Berlin 2016

–jeroen

Read the rest of this entry »

Posted in Design Patterns, Development, DRY - Don't Repeat Yourself, Software Development | Leave a Comment »

architecture – How much is too much Dependency Injection? – Software Engineering Stack Exchange

Posted by jpluimers on 2019/04/02

Mark Seeman posted a great answer with insights into how to architect applications: [WayBack] architecture – How much is too much Dependency Injection? – Software Engineering Stack Exchange

Some topics covered:

  • small code bases
  • pure DI over DI container
  • cases for both coarse and fine-grained DI
  • favour functional programming over OOP
  • both functional and DI ports and adapters

It links to a ton of other good reads for a quiet long weekend as well:

–jeroen

via: [WayBack] Favour Pure DI – Linas Naginionis – Google+

Posted in Design Patterns, Development, Software Development | Leave a Comment »

Down on the Upside – Kevlin Henney – Medium

Posted by jpluimers on 2018/10/31

Interesting read: [WayBack] Down on the Upside – Kevlin Henney – Medium

Abstraction is a question of less over more. But is it also a question of high over low?

What developers call abstraction, is not the abstraction end-users mean. Being aware of that makes software development life a whole lot easier.

Via: [WayBack] Kevlin Henney – Google+

–jeroen

Posted in Design Patterns, Development, Software Development | Leave a Comment »

Ralph Johnson: 22 years of design patterns – YouTube video of lecture

Posted by jpluimers on 2018/10/25

via [WayBack] Ralph Johnson: 22 years of design patterns. I thought you might find this interestinghttps://youtu.be/jhPLFLcxslM – Agustin Ortu – Google+ the below video.

Ralph Johnson is one of the Gang of Four: the authors of the famous Design Patterns: Elements of Reusable Object-Oriented Software book published October 21, 1994 and copyrighted 1995.

Google translated lecture announcement, slightly edited:

Ralph Johnson is world renowned for his high impact contributions to Software Engineering, particularly Object Orientation. His book “Design Patterns” has been best-selling in the history of computing (more than 500,000 copies sold in English and in translations into 13 languages). From his research group also emerged the first works on frameworks, patterns and refactoring. His students also created the first refactoring tool, the Smalltalk Refactoring Browser, on whose architecture all the refactoring tools of today are based.

His talk, “Twenty Years of Design Patterns,” will talk about the evolution of software patterns since its inception in 1994. Some have become common, and others have not. Some patterns have changed. Ralph Johnson will talk about several of the patterns that are more widely known, with a renewed understanding of what the book “Design Patterns” should have said.

Ralph moved from the Department of Computer Science at the University of Illinois to COO of Metaficient and many of his history is only at the WayBack machine, so here are some links to it:

  • Ralph Johnson: The Refactory is dedicated to helping organizations succeed with objects and design patterns. Principals include Ralph Johnson, an original member of the Gang of Four patterns.
  • Former Ralph E. Johnson homepage at the University of Illinois
  • Metaficient Management Team
  • 2016: 25 years of OOP Konferenz 2016 – Ralph Johnson
  • Ralph Johnson on Parallel Programming Patterns: Ralph Johnson, one of the four GoF authors, talks about the upcoming book “The Patterns for Parallel Programming”. He highlights the difficulties in dealing with discovering and writing down parallel programming patterns, how to choose and use such a pattern, and similarities with the initial Design Patterns book.
  • A Pattern Language for Parallel Programming: Ralph Johnson presents a pattern language that he and his colleagues are working on in an attempt to solve the hard issues of parallel programming through a set of design patterns: Structural Patterns, Computational Patterns, Parallel Algorithm Strategy Patterns, Implementation Strategy Patterns, and Concurrent Execution Patterns.

–jeroen

Read the rest of this entry »

Posted in Design Patterns, Development, Software Development | Leave a Comment »

How not to structure your database-backed web applications: a study of performance bugs in the wild | the morning paper

Posted by jpluimers on 2018/09/25

This is about Ruby anti-patterns, which is a good step to start investigating the own anti-patterns you use in your own development environment:

[WayBack] How not to structure your database-backed web applications: a study of performance bugs in the wild | the morning paper

How not to structure your database-backed web applications: a study of performance bugs in the wild Yang et al., ICSE’18 This is a fascinating study of the problems people get into when using…

Via: [WayBack] How not to structure your database-backed web applications: a study of performance bugs in the wild… – Adrian Marius Popa – Google+

–jeroen

Posted in Design Patterns, Development, Ruby, Software Development | Leave a Comment »

Cape Cod Gunny Does Delphi: Gunny Meets Uncle Bob – Part 1

Posted by jpluimers on 2018/08/16

I like how Michael Riley compares his learning quest of software development to things he learned in real life:

  • Gang of Four Patterns = Chess
  • POSA Patterns = Golf
  • SOLID = JJDIDTIEBUCKLE

Note that JJDIDTIEBUCKE is actually 14 parts of Marine Corps leadership.

Software development is all about learning and making connections. Like life: learn new things and relate them to existing ones each and every day.

Given Michaels military background, I understand the comparison and the reference that Eric Grange makes. I think good software development is finding the balance between guerrilla and traditional thinking. Don’t loose yourself into patterns and processes, pick the ones that fit you best at the time you use them. This requires reflection which is often neglected.

I also like the comment thread in the post, so I’ve extracted some really useful information below.

Source: [WayBack] Cape Cod Gunny Does Delphi: Gunny Meets Uncle Bob – Part 1

From the comments

Note I don’t agree with everything, but I they make me think about my profession.

Joseph Mitzen:

Don’t give in to the conventional thinking about “design patterns”. Design patterns are language smell. They’re a sign of places where a language is broken. They’re not some sort of gospel truth. Most of the patterns don’t even exist in languages like Lisp.

Google’s Joe Gregorio emphasized this point in a talk in 2009:

You don’t need to understand 24 patterns for a language you don’t program in to be a good programmer.

Embrace Joe Gregorio, Dr. Peter Norvig, and Paul Graham… become the anti-Hodges!

Michael Riley:

+Joseph Mitzen I agree when Martin says, “Your system architecture should be as ignorant as possible about how it is to be delivered. You should be able to deliver it as a console app, or a web app, or a thick client app, or even a web service app, without undue complication or change to the fundamental architecture.”

I agree when Martin says at a minimum software professionals should be able to describe the GoF patterns and have a working knowledge of the patterns describe in the POSA books.

…

My pursuit to learn Dependency Injection is taking me in directions I didn’t know about and didn’t expect I be going.Hodges is my fallback position because the only mainstream language I know is Pascal. When I see the code examples he uses I understand them… it’s the concepts I’m having a hard time with.

I just now today am learning Java. This time around it is very exciting and fun. I’m totally amazed at the NetBeans IDE. I’m very impressed with JavaDocs. At this point I’m finding myself question why I should continue to pursue Delphi.

The bottom line is this: I want to make the next release of my software able to support mobile customers, web customers, windows customers and mac customers.

I feel like I’ve been given a chance to go back to high school and start over again.

Michael Thuma:

It’s not Java that confused you. It’s the combination of the Class Library and Framework. Object Orientation simply starts with using Objects. No one needs to go further beyond, which is the original idea.

There is no such a ‘dumb’ Delphi developer for example who just uses components or the classes provided. The programming world is not divided into programmers or not. Those who define classes and provide them share a common space with those who simply use (Framework). You need to play first and play it loud.

Different example from the relational world. A DB design has nothing to do with Entity Relationship which is maybe the dominating approach. The relational model is capable of a lot more than this tiny but widely used subset.

Thinking in terms of E/R limits the scope of taking opportunities. The same way you limit yourself to one specific paradigm when it comes to programming languages. All the others make up the difference.

The Java framework is heavy. It was redesigned about 15 years ago with design patterns in mind. Design patterns were introduce to extend or put the focus on reusability which does come for anything but free even in the object oriented world. That’s why these patterns became integral part of software architecture.

Eric Grange:

All good points, but one key difference with military is that in development, Rambos routinely trounces whole armies, and not just in movies. And guerilla tactics usually win over more formal armies and approaches.

IOW shops with established methodologies are regularly overtaken by startup proof of concepts, and experienced teams are all too often outsourced by management that think they’ve found a (cheaper) guerilla team.

Don’t let that stop you from learning, but it’s a wholly different battlefield…

The comment thread also reminded me that  the GoF patterns in Delphi has moved since I wrote GoF Patterns in Delphi | Implementations of the famous Gang of Four Design Patterns in Delphi language – via Nick Hodges, so I learned this:

–jeroen

via: [WayBack] Lars Fosdal – Google+

Read the rest of this entry »

Posted in Dependency Injection, Design Patterns, Development, Inversion of Control / IoC, LISP, Software Development | Leave a Comment »

GDPR for database professionals and DBAs. Poster.

Posted by jpluimers on 2018/05/17

A poster showing how to prepare your Oracle database for GDPR. Wait for the email download link by visiting GDPR for database professionals and DBAs. Poster (they mention to be GDPR compliant in [WayBack] their policy), or look at the WayBack machine to download it now.

One takeaway for me: you also need to scrub backups when removing someone your records.

Via: [WayBack] sqldev.tech/gdpr_poster – Michael Thuma – Google+

–jeroen

Posted in Communications Development, Database Development, Design Patterns, Development, Software Development | Leave a Comment »