DZone
Thanks for visiting DZone today,
Edit Profile
  • Manage Email Subscriptions
  • How to Post to DZone
  • Article Submission Guidelines
Sign Out View Profile
  • Post an Article
  • Manage My Drafts
Over 2 million developers have joined DZone.
Log In / Join
Refcards Trend Reports
Events Video Library
Over 2 million developers have joined DZone. Join Today! Thanks for visiting DZone today,
Edit Profile Manage Email Subscriptions Moderation Admin Console How to Post to DZone Article Submission Guidelines
View Profile
Sign Out
Refcards
Trend Reports
Events
View Events Video Library
Zones
Culture and Methodologies Agile Career Development Methodologies Team Management
Data Engineering AI/ML Big Data Data Databases IoT
Software Design and Architecture Cloud Architecture Containers Integration Microservices Performance Security
Coding Frameworks Java JavaScript Languages Tools
Testing, Deployment, and Maintenance Deployment DevOps and CI/CD Maintenance Monitoring and Observability Testing, Tools, and Frameworks
Culture and Methodologies
Agile Career Development Methodologies Team Management
Data Engineering
AI/ML Big Data Data Databases IoT
Software Design and Architecture
Cloud Architecture Containers Integration Microservices Performance Security
Coding
Frameworks Java JavaScript Languages Tools
Testing, Deployment, and Maintenance
Deployment DevOps and CI/CD Maintenance Monitoring and Observability Testing, Tools, and Frameworks

Migrate, Modernize and Build Java Web Apps on Azure: This live workshop will cover methods to enhance Java application development workflow.

Modern Digital Website Security: Prepare to face any form of malicious web activity and enable your sites to optimally serve your customers.

Kubernetes in the Enterprise: The latest expert insights on scaling, serverless, Kubernetes-powered AI, cluster security, FinOps, and more.

A Guide to Continuous Integration and Deployment: Learn the fundamentals and understand the use of CI/CD in your apps.

Core Badge
Avatar

Thomas Hansen

[Deactivated] [Suspended]
DZone Core CORE

CTO at AINIRO.IO

CY

Joined Jun 2017

https://ainiro.io/

About

Obsessed with automation, Low-Code, No-Code, and everything that makes my computer do the work for me.

Stats

Reputation: 6912
Pageviews: 1.7M
Articles: 56
Comments: 261

Expertise

Frameworks Expertise Icon

Frameworks

Testing, Tools, and Frameworks Expertise Icon

Testing, Tools, and Frameworks

  • Articles
  • Trend Reports
  • Comments

Articles

article thumbnail
Extend Your GPTs With C#
This article demonstrates how to create a GPT using OpenAI and extend it with your own C# code using AINIRO.IO Magic Cloud.
November 20, 2023
· 1,832 Views · 2 Likes
article thumbnail
Create a Low-Code GPT AI App in Five Minutes
By combining AINIRO with OpenAI's GPTs, you can wrap your entire database in a CRUD app in five minutes, using AI to interact with your database.
November 17, 2023
· 2,196 Views · 2 Likes
article thumbnail
Using C# as a Scripting Language
Dynamically compiling and executing C# on the fly has a lot of advantages. This article illustrates how to accomplish it.
November 13, 2023
· 1,485 Views · 2 Likes
article thumbnail
How To Avoid AI Hallucinations With ChatGPT
AI Hallucinations are often mentioned in the context of ChatGPT. This article describes how to 100% perfectly eliminate AI Hallucinations.
October 25, 2023
· 2,372 Views · 2 Likes
article thumbnail
Fear of AI Is Superstitious Mumbo Jumbo
Those fearing AI will kill us all are making the same mistake 200,000 years of religious superstitious mumbo jumbo has done.
July 18, 2023
· 2,287 Views · 2 Likes
article thumbnail
Creating a Better StackOverflow With ChatGPT
We became a little bit 'angry' by OpenAI turning off internet search in ChatGPT a week ago, so we decided to fix the problem.
July 11, 2023
· 2,611 Views · 3 Likes
article thumbnail
Disrupting the AI Scene With Open Source and Open Innovation
AI's destiny is to be overtaken by small and medium-sized companies leveraging Open Source and Open Innovation. Even Google and OpenAI agree!
June 19, 2023
· 3,846 Views · 2 Likes
article thumbnail
How We Made Our ChatGPT Chatbot 10X Faster
It's very tempting to include a ChatGPT-based website chatbot on your website, but ask yourself what's the cost. In this article, I show you how to reduce the cost.
June 14, 2023
· 1,965 Views · 3 Likes
article thumbnail
What I Learned From Crawling 100+ Websites
Over the last five weeks, I have crawled and debugged 100+ random websites. The websites were given to us by clients and leads. Here are my findings.
May 22, 2023
· 853 Views · 3 Likes
article thumbnail
GPT3.5-Turbo Versus GPT4
We tested GPT3.5-turbo against GPT4 in our website chatbot, and here are the results. TL-DR? GPT4 is better but not worth it.
May 15, 2023
· 2,167 Views · 3 Likes
article thumbnail
Have ChatGPT Scrape Your Website
A lot of people want to have ChatGPT scrape their website. In this article, I will explain how our ChatGPT website scraper works.
May 10, 2023
· 2,767 Views · 3 Likes
article thumbnail
How We Built a 1% Website in 3 Days for €7
We built a website in three days, and two days after launch, we've got 128 unique website visitors. Learn how we did it and how you can reproduce it.
April 18, 2023
· 1,814 Views · 3 Likes
article thumbnail
How To Create Your Own ChatGPT (Ish) In 5 Minutes
By intelligently using this API, you can actually create your own ChatGPT chatbot. This article will show you how!
February 20, 2023
· 5,197 Views · 3 Likes
article thumbnail
The Enterprise, the Database, the Problem, and the Solution
Low-code tools can help companies manipulate data quickly, efficiently, and accurately.
January 24, 2023
· 1,856 Views · 2 Likes
article thumbnail
Using AI and Machine Learning To Create Software
I started implementing OpenAI into Magic. It took me no more than two days to teach it Hyperlambda to an accuracy of 90%. What does this mean for our industry?
January 12, 2023
· 3,375 Views · 2 Likes
article thumbnail
HTTP-Based OOP, Inheritance, and Polymorphism
Is anything magical about polymorphism that requires OOP? Good old HTTP can just as easily apply polymorphism and inheritance - possibly even BETTER - than OOP.
October 18, 2022
· 4,029 Views · 3 Likes
article thumbnail
Become a Professional Software Developer in 20 Minutes
Learn the minimum knowledge required to learn before you can land a job as a junior software developer.
September 26, 2022
· 3,834 Views · 2 Likes
article thumbnail
How To Become a Super Human Software Developer
Becoming a superhuman software developer is actually incredibly easy. Do the same thing over and over again, and repeat it a bajillion times.
September 19, 2022
· 8,577 Views · 10 Likes
article thumbnail
Row Level Security in Hyperlambda and SQL
Row level security in Hyperlambda and SQL is a declarative feature when generating your CRUD backend. One simple dropdown list, and it’s done!
September 3, 2022
· 5,389 Views · 2 Likes
article thumbnail
Scheduled Tasks With Hyperlambda and Retry
Scheduled tasks imply repeatedly executing some piece of code according to some interval. Adding retry, implies retrying execution until it succeeds.
August 18, 2022
· 3,445 Views · 2 Likes
article thumbnail
What Software Developers Can Learn From Andy Warhol
Software development is in its infancy as a profession. Learn here how Andy Warhol can teach us a lot about simplifying our craft!
June 15, 2022
· 5,464 Views · 3 Likes
article thumbnail
2 Billion MySQL Records
Handling 2 billion MySQL records is actually possible. Sure, you'll need a monster server, and zero indexes or foreign keys during import, but it is possible.
March 30, 2022
· 7,923 Views · 7 Likes
article thumbnail
JWT Authentication and Authorization
JWT if done correctly is an amazing standard for applying authentication and authorization to your web apps.
March 16, 2022
· 6,347 Views · 7 Likes
article thumbnail
Teach Yourself Angular in 11 Minutes and 6 Seconds
When learning something new your primary obstacle seems to be that you'll often need to learn something *else* first. Magic eliminates this problem, at least parts of it.
March 8, 2022
· 5,312 Views · 2 Likes
article thumbnail
I Can Probably Hack Your Password in MINUTES!
An experienced software developer can probably hack most passwords in use on the planet in minutes. Read how current password strategy is fundamentally flawed.
March 6, 2022
· 19,108 Views · 6 Likes
article thumbnail
Mobile Software Development: Native or Web?
When you're about to create your next web app the natural follow-up question becomes: "Will you create the mobile version using native or web?"
March 2, 2022
· 5,534 Views · 2 Likes
article thumbnail
Instant DevOps
The reasons why DevOps is useful is because it gives us "instant feedback", and if it doesn't it's broken! In this article I propose "instant DevOps", implying getting completely rid of pipelines, deployments, and everything that slows the process down.
February 16, 2022
· 9,282 Views · 3 Likes
article thumbnail
Teach yourself Web Sockets in 5 minutes
Web Sockets is one of the most complex subjects that exists in software development. In this article I try to dumb it down as much as possible.
February 11, 2022
· 2,970 Views · 3 Likes
article thumbnail
NoSQL Support for Hyperlambda
NoSQL database systems is one of those things you simply can't ignore today. Simply because of handling huge amounts of data becomes impossible without it.
January 24, 2022
· 3,126 Views · 3 Likes
article thumbnail
Creating 5,000 background threads in my ASP.NET Web app
Threading is ridiculously complex to get right, and the idea of having 5,000 background worker threads is of course madness, unless you're using Hyperlambda, at which point it's just another Saturday
January 1, 2022
· 12,200 Views · 4 Likes

Trend Reports

Trend Report

Low-Code Development

Development speed, engineering capacity, and technical skills are among the most prevalent bottlenecks for teams tasked with modernizing legacy codebases and innovating new solutions. In response, an explosion of “low-code” solutions has promised to mitigate such challenges by abstracting software development to a high-level visual or scripting language used to build integrations, automate processes, construct UI, and more. While many tools aim to democratize development by reducing the required skills, others seek to enhance developer productivity by eliminating needs such as custom code for boilerplate app components. Over the last decade, the concept of low code has matured into a category of viable solutions that are expected to be incorporated within mainstream application development. In this Trend Report, DZone examines advances in the low-code space, including developers' perceptions of low-code solutions, various use cases and adoption trends, and strategies for successful integration of these tools into existing development processes.

Low-Code Development

Trend Report

Modern Web Development

The web is evolving fast, and developers are quick to adopt new tools and technologies. DZone’s recent 2021 Modern Web Development survey served to help better understand how developers build successful web applications, with a focus on how decisions are made about where computation and storage should occur.This Trend Report will help readers examine the pros and cons of critical web development design choices, explore the latest development tools and technologies, and learn what it takes to build a modern, performant, and scalable web application. Readers will also find contributor insights written by DZone community members, who cover topics ranging from web performance optimization and testing to a comparison of JavaScript frameworks.Read on to learn more!

Modern Web Development

Trend Report

Data Persistence

At the core of every modern application is an endless, diverse stream of data and with it, an inherent demand for scalability, increased speed, higher performance, and strengthened security. Although data management tools and strategies have matured rapidly in recent years, the complexity of architectural and implementation choices has intensified as well, creating unique challenges — and opportunities — for those who are designing data-intensive applications.DZone’s 2021 Data Persistence Trend Report examines the current state of the industry, with a specific focus on effective tools and strategies for data storage and persistence. Featured in this report are observations and analyses of survey results from our research, as well as an interview with industry leader Jenny Tsai-Smith. Readers will also find contributor insights written by DZone community members, who cover topics ranging from microservice polyglot persistence scenarios to data storage solutions and the Materialized Path pattern. Read on to learn more!

Data Persistence

Comments

Creating a Better StackOverflow With ChatGPT

Jul 17, 2023 · Thomas Hansen

When you're on a time schedule, you don't have time to "browse", but you need "fast information" - StackOverflow is better than WikiPedia here, but not optimal. WikiPedia is a hot smoking pile of garbage here ...

You Can Keep Your Job, but It Won’t Be the Same Job

Jul 17, 2023 · Jasper Sprengers

The title is spot on!!

Disrupting the AI Scene With Open Source and Open Innovation

Jul 13, 2023 · Thomas Hansen

Thx Michael :)

As to your question; I don't know? What do your startup do?

Creating a Better StackOverflow With ChatGPT

Jul 11, 2023 · Thomas Hansen

The source parts is a crucial part of its implementation yes ^_^

How We Made Our ChatGPT Chatbot 10X Faster

Jun 14, 2023 · Thomas Hansen

Thank you :)

How We Built a 1% Website in 3 Days for €7

Apr 19, 2023 · Thomas Hansen

Thank you, we are an amazing team yes :)

Getting Started With Low-Code in 5 Minutes

Dec 01, 2022 · Thomas Hansen

Did you fork Hasura ...?

How To Become a Super Human Software Developer

Sep 28, 2022 · Thomas Hansen

Hehe, I never did c64, my thing was Amstrad CPC464 ... :)

How To Become a Super Human Software Developer

Sep 28, 2022 · Thomas Hansen

Najs one, you really found your thing, just like me - And yes, it's really that "simple". For the youngsters out there, I can only reiterate what Sergio said; Keep on coding ;)

2 Billion MySQL Records

Apr 05, 2022 · Thomas Hansen

Interesting. I'd never dream of using anything but some distributed things such asCassandra for such things. Thx for the info ...

I Can Probably Hack Your Password in MINUTES!

Mar 26, 2022 · Thomas Hansen

Brute force intrusion is only one aspect of the problem. Google Rainbow Dictionary Attacks ...

I Can Probably Hack Your Password in MINUTES!

Mar 10, 2022 · Thomas Hansen

Well, the whole idea is kind of to get rid of rules and validators, to allow for people to create passwords with maximum entropy the way they see fit themselves - But yes, thank you :)

I Can Probably Hack Your Password in MINUTES!

Mar 09, 2022 · Thomas Hansen

The exponent becomes numbers of entities, the base your entities permutations. With a passphrase I assume stuff such as "foo bar howdy world hello barn" - At which point your base is "number of words in English language" and your exponent "number of words" (6 for my example) - Equalling 460,000 to the power of 6, becoming an *INCREDIBLY* large number, so yes a passphrase (assuming we agree upon what they are) would help here ... ^_^

I Can Probably Hack Your Password in MINUTES!

Mar 06, 2022 · Thomas Hansen

Well, that's one example ...

Things We Still Do, Twenty Years Onward

Feb 11, 2022 · Jasper Sprengers

Luved it. I remember when I first read Joel's blog, and I so insanely disagreed with his conclusion I think a broke a couple of keys on my keyboard in the process. This is a much better middle ground I'd say :)

PostgreSQL vs MySQL Performance

Dec 15, 2021 · Thomas Hansen

Sorry, it was bought last year ...

PostgreSQL vs MySQL Performance

Dec 15, 2021 · Thomas Hansen

Offsets are 10, limits are 10, besides from that, the above is the exact queries. The "x, y, z" parts are every single column in the respective tables, in alphabetical order ...

PostgreSQL vs MySQL Performance

Dec 15, 2021 · Thomas Hansen

The queries are simple "select x, y, z from q offset w limit e". The first paging does an inner join on both referenced fields, and ads the first text column it finds from the joined table.

PostgreSQL vs MySQL Performance

Dec 15, 2021 · Thomas Hansen

You are correct, and I say these things out multiple times, both in the video, and in written text. However, to test millions of records, I'll need a database with millions of records. I don't have that database, especially a database that is the exact same in both PgSQL and MySQL. So doing such a test would be impossible for me.

When that is said, I would expect PgSQL to outperform MySQL if tuned correctly, with millions of records. However, I would also expect PgSQL to outperform MySQL in this test ...

To Save the DevOps World [Comic]

Nov 11, 2021 · Daniel Stori

Too funny, I just spent a couple of hours in a meeting with my Head of Development discussing this very subject ^_^

O2 a better OOP

Nov 07, 2021 · Thomas Hansen

This doesn't have anything to do with closure, although (some) of the function objects stored this way does use closure yes, but these are two different things. I'm not sure it has a name to be honest with you. However, as I wrote the MSDN/Microsoft article, I referred to these buggers a "symbolic delegates", since they share (some) traits with symbols in Lisp ...

It's a way to refer to function objects of generic character through strings, and that's it really ...

Ridiculously simple, and ridiculously powerful :)

O2 a better OOP

Nov 04, 2021 · Thomas Hansen

Well, there are a couple of reports referenced in Randy's book "The art of assembly programming" (CISCx86) - Where he makes a case for that assembly programming is superior, since it (only) results in +30% larger codebases ...

O2 a better OOP

Nov 04, 2021 · Thomas Hansen

"Emphatically disagree here."

This is really quite irrelevant, there's literally hundreds of research papers about the thing.

"That's like saying larger houses are harder to keep upright. Sure, it's true. But maybe you should work on the design, so it can stand on its own and not fall down."

Or maybe find some method to work smarter. 100 years ago people built cars manually. It took 18 months to assemble a car 100 years ago, and ~50 people manually working on it, 60 hours per week - I assume you understand where this is going ...

... just sayin' ... ;)

"Making the houses "smaller" doesn't solve the problem"

If this was true we'd all (still) be working in assembly code ...

O2 a better OOP

Nov 04, 2021 · Thomas Hansen

"If your point is that OO is not suitable for small scripts, I may even agree with you there."

There's been hundreds of studies about this, and they all conclude with the same, which is that number of lines of code decides workload required to maintain and develop your app. Implying, reducing LOC reduces resource requirements. If "small scripts" are more adequately rendered in non-OOP languages, than (almost) everything is more adequately rendered in non-OOP languages ...

Less code, less work, less resources, less expensive solutions. Less expensive solutions, higher ability to compete. Higher ability to compete, more profit! ^_^

O2 a better OOP

Nov 04, 2021 · Thomas Hansen

How can you do that with OO? And if you can, how can you do it securely? And if you can, how can you do it within a timeframe required for a micro HTTP request ...?

"If your point is that OO is not suitable for small scripts, I may even agree with you there."

Bingo!

"So is Magic an Enterprise Server with its own language then?"

I'm not sure what to refer to it as, but it simplifies your job. Cloud System, CRUDifier, automation tool - I've gone through the whole dictionary without finding an adequate category for it ... :/

If you've got suggestions, feel free to toss them into the debate ... ;)

O2 a better OOP

Nov 04, 2021 · Thomas Hansen

Not too far away from the truth, but of course the key give away here is automation, automation and automation - With the intention of making the end developer more productive ...

The thing is built in C# and .Net Core though, not Java ...

As to Nomads and Lambdas ==> https://www.youtube.com/watch?v=rrFrvrc0KYE

Now try to do this with OOP ;)

I created this video explicitly for you just now ...

O2 a better OOP

Nov 04, 2021 · Thomas Hansen

Psst, did you check out Magic ...?

Try it out, it's got Docker images, allowing you to install it and configure it in 5 minutes, at which point I'm fairly confident in that you'll see something you can't achieve with Java. As to Nomads, check out the "Crypto" menu item, allowing me to pass code to a 3rd party server, and have that code executed, in a secure context, without even in theory being able to execute malicious code ...

Then imagine having any random client on earth providing a Nomad object to your server, executing that code on your server, without any security risks ...

... without any compilation requirements, and without any particularly large overhead ...

And yes, it's real ...

O2 a better OOP

Nov 04, 2021 · Thomas Hansen

"functional languages had those first"

Actually, it means everything ... ;)

"I feel I can write better OO since lambdas are a thing in Java"

Lambdas are a part of Java, but not a part of OO ...

The problem I'm getting at is to stop thinking (exclusively) in terms of OO ...

O2 a better OOP

Nov 04, 2021 · Thomas Hansen

Hahaha - Too funny :D

You only need ONE design pattern

Nov 03, 2021 · Thomas Hansen

I am not equating OOP with SOLID, what I am claiming is that if you need best practices such as SOLID and Design Patterns, this is a symptom of that something else is wrong. Perfect things doesn't require a "manual", Design Patterns and SOLID is a "manual". However, yes it is a bit flamebait'ish in nature, and I don't honestly believe everything I say, but the problem I am trying to pinpoint is that OOP doesn't solve everything, and that sometimes it is required to think outside of the box. Too many believe OOP is the one stop shop to solving all their problems though, and an article such as this, might make them change their minds about it ...

... at least these were my hopes ...

You only need ONE design pattern

Nov 01, 2021 · Thomas Hansen

Interesting library. I see his first commit was the 19th of March 2014. This was 5 almost years after I first conceptualised Active Events in the (open source) project referred to as Ra-Brix. When I later got to write an article about it at MSDN magazine (2017), nobody had heard of it, to the extent of that Microsoft's editor had to write a "possible fruit cake warning" in order to publish the article, since "nobody" had seen it before ...

https://docs.microsoft.com/en-us/archive/msdn-magazine/2017/march/patterns-active-events-one-design-pattern-instead-of-a-dozen

An article that BTW was "destroyed" by its readers, proclaiming I was (more or less) crazy ...

Interestingly, all of you guys, every time you comment, seem to register your accounts the same day you comment on my posts may I add too ...

Hyperlambda Is Twice as Fast as Entity Framework

Oct 30, 2021 · Thomas Hansen

Psst ==> https://dzone.com/articles/you-only-need-one-design-pattern

Hyperlambda Is Twice as Fast as Entity Framework

Oct 28, 2021 · Thomas Hansen

No, best practices is to select Entity Framework's NuGet package in your references, for then to click delete on it!

Hyperlambda Is Twice as Fast as Entity Framework

Oct 28, 2021 · Thomas Hansen

Thank you, I am sure the developers over at StackOverflow doesn't know this. Go tell them please ^_^

Hyperlambda Is Twice as Fast as Entity Framework

Oct 28, 2021 · Thomas Hansen

Psst ==> https://www.youtube.com/watch?v=wksUdX59EDo

... ;)

Hyperlambda Is Twice as Fast as Entity Framework

Oct 28, 2021 · Thomas Hansen

"and telling that it sucks when they don't use it properly"

Great, now go tell the developers at StackOverflow they're wrong, and that their 15+ years of experience in these regards are wrong ...

Hyperlambda Is Twice as Fast as Entity Framework

Oct 28, 2021 · Thomas Hansen

Hyperlambda is Turing complete, and for the things you can't do with Hyperlambda, it's easy to create C# bindings to it. One attribute, one interface, with one method, and you're invoking C# code from Hyperlambda ...

Hyperlambda Is Twice as Fast as Entity Framework

Oct 26, 2021 · Thomas Hansen

Yet again, you can use EF this way. However, scattering your controllers with DbContexts is an "anti pattern", and what you would typically do, is to use for instance the Repository Pattern. If you wanted to, you could even do SqlQuery, or Connection.Execute, etc - However, then you're no longer using an O/RM library, you're using a very, very, very expensive SqlConnection and SqlCommand ...

StackOverflow had to throw out Entity Framework for these exact reasons ...

Hyperlambda Is Twice as Fast as Entity Framework

Oct 26, 2021 · Thomas Hansen

You're a great developer Atle, and you've obviously invested heavily in Entity Framework, and I must assume you know what you're talking about. I am sure you're a pride to your employer, and that you spend a lot of time trying to create great code, applying good architectural principles, leveraging your existing knowledge about subjects to the best of your abilities - Which are probably very high may I add ... :)

... however, there exists many ways to boil potatoes. Don't believe you know "the one and only best way to achieve the end result". I provide one (different) method here, which has some advantages, and some disadvantages. If you want to however, there's nothing preventing you from using EF in Hyperlambda ...

My piece of advice to you though is; Spend less time defending your existing "holy cows", less time quarrelling, and more time teaching yourself "alternative methods" to ensure the brightness of your future ... ;)

I've got 39 years of software development experience (from the age of 8), I'm not an idiot, and I might have a couple of good ideas for you, making you a better developer in the end - Which was my goal with this article ...

PS!
Jeg er også Norsk ... ;)

Hyperlambda Is Twice as Fast as Entity Framework

Oct 26, 2021 · Thomas Hansen

You provided an example where you opened the database connection once, saying that opening a database connection outside of the loop was wrong. I told you I am opening the database connection 1,000 times in both Hyperlambda and in EF. As to the read before update parts in EF, I have explained it thoroughly many times - Both in the article itself and in my original comment to you. If you don't believe this is the general patterns used to consume EF, I suggest you check out your own code in your own solutions, at which point I can pretty much guarantee you with 99% certainty that you will realise your own code is doing this itself!

... and if it is not doing this, you are violating best practices and architectural design patterns related to EF and O/RMs ...

Hint; It's not even possible in theory to use Repository Patterns (best practices) in EF without ending up with code like this ...

Hyperlambda Is Twice as Fast as Entity Framework

Oct 26, 2021 · Thomas Hansen

I am doing the same thing in Hyperlambda, so the comparison is correct. My reasons for doing 1,000 iterations is to make the overhead of the HTTP request itself irrelevant. As to your "UpdateFromQuery" parts, yes, this is possible to avoid selecting the object first, but rarely done, since people "wants to have the OO model", and "selecting the object first is so bloody convenient".

When we measure things, it's pointless to measure the best and optimised solution. What we need to measure is how people end up using it. I've seen hundreds of EF solutions, and they all end up having stuff such as DAL, Repository Patterns, etc, etc, etc - Typically resulting in having to select the object before updating it.

However, I am opening 1,000 database connections in the Hyperlambda version too, the exact same thing I'm doing in EF, and this is crucial to measure EF's overhead. If I hadn't done this, any differences would "drown" in the overhead of my HTTP invocations ...

So I AM measuring the same thing here, as in apples versus apples, simply because I am measuring the following two things ...

1. How to use Hyperlambda using its best practices, and how you'd typically end up using it in your own code.
2. How to use Entity Framework using its best practices, and how you'd typically end up using it in your own code.

Apples versus apples ...

Increasing Code Quality With Hyperlambda

Oct 23, 2021 · Thomas Hansen

No, Node is a graph object. It's the object representation of Hyperlambda. And it's not dependency injected.

Increasing Code Quality With Hyperlambda

Oct 23, 2021 · Thomas Hansen

Node is the input to the Signal method. It's a graph object, and the (single) object passed into all Signal invocations.

Increasing Code Quality With Hyperlambda

Oct 23, 2021 · Thomas Hansen

http.get:"https://x.com"
---headers
------X-Foo:Bar

Not sure how to figure out code view in comments. Replace "-" with SP ...

Hyperlambda, the Fastest Programming Language in the World

Oct 22, 2021 · Thomas Hansen

I think I am quoted in the C++ std, and I started coding in assembly 33 years ago, on an Amiga 500. There's a link on Bjarne Stroustrup's homepage to my GUI library as an example of "how to correctly create a GUI library for C++", and I have written 6 articles for Microsoft about C#. I think I know more about "levels" than you ...

... compared to Hyperlambda, C# and Java is the equivalent of CISC x86 machine code ...

Hyperlambda, the Fastest Programming Language in the World

Oct 22, 2021 · Thomas Hansen

Besides, you (probably) just proved me right in regards to "bad investment syndrome" ...

Hyperlambda, the Fastest Programming Language in the World

Oct 22, 2021 · Thomas Hansen

Most of my career I've been cleaning up over complicated, astro architected code, that was originally devised because of over complicated, way too flexible APIs, resulting in entangled spaghetti and garbage results, due to misunderstandings related to library consumptions and SDKs. Respectfully, but I think I am entitled to do a little bit of "self-entitled whining" ...

But yes, I am very passionate about bad code ...

Did you see the video? If so, feel free to prove e wrong though ...

The World's Least Popular Programming Language

Oct 18, 2021 · Thomas Hansen

Well, it's also about being honest too I think. I'm playing around with an article in my head that'll be named "How the slowest programming language became the fastest", etc ...

Thank you :)

The World's Least Popular Programming Language

Oct 18, 2021 · Thomas Hansen

Hehe, I thought you'd say "Pan Galactic Gargle Blaster", my favourite from the other side of the universe ... ;)

Getting Started With Low-Code in 5 Minutes

Oct 14, 2021 · Thomas Hansen

Almost 2,000 people read the article, at least one took the time to like it, and my GitHub repository got 5/6 additional stars due to it, so somebody obviously liked it. If you don't like Low-Code you are free to read something else here. Most Low-Code articles use it in their header, including this one, which makes it easier to scroll past it, and find other articles. I personally don't like Python for instance, but it's not a problem for me, I just avoid reading articles with Python in the header ...

If you could inform me exactly what is bad about Magic I would appreciate it though, such that I could have the chance to fix it ^_^

Some other guy told me about 4 things he was missing in Hyperlambda, 10 hours later all his features was in its GitHub repository :)

Top 6 Time Wastes as a Software Engineer

Sep 22, 2021 · Lipsa Das

Lovely writeup, but you should have added not automating repetetive tasks, possible to automate ...

Software Engineering is a Loser’s Game

Sep 20, 2021 · Tyler Hawkins

Very interesting read!

Teach Yourself Scrum in 5 minutes

Sep 10, 2021 · Thomas Hansen

Hmm, I am (vaguely) acquainted with Shoi Sjiba (did I spell that right?) and Lean as used by Toyota, but I haven't heard about Lean Startup - Sound of me googling ... ;)

No worries, if most people were only half as polite as you in their constructive (and accurate) criticism, I'd see world peace easily within grasp of a couple of weeks ... ;)

Teach Yourself Scrum in 5 minutes

Sep 10, 2021 · Thomas Hansen

Better ...? ^_^

Refresh the page and check out the initial disclaimer ...

Teach Yourself Scrum in 5 minutes

Sep 10, 2021 · Thomas Hansen

I removed CI/CD from the checklist at the bottom though. Thx ^_^

Teach Yourself Scrum in 5 minutes

Sep 10, 2021 · Thomas Hansen

Well, the idea with the article wasn't really to teach Scrum, something I'm fairly honest about I'd say - But rather to be as pragmatic as possible, mentioning some parts of Scrum, and doing as little of it as makes sense. In a way the article is an argument against dogmatic behaviour, which our industry unfortunately is full of. Scrum is nice, a good process, but I spent half my day at one of my former jobs in "standups" and "grooming sessions" ...

And yes, I know it's not the way standups or grooming sessions are supposed to be executed, but unfortunately it's the way it often is implemented ...

Clouds are mentioned for two reasons

1. My own "political views" about them
2.With only GitHub we have no real "boards", only a "TODO list", which kind of makes it impossible to correctly implement backlogs, sprints, user stories, etc ...

I didn't mean to cause any harm towards Scrum though, and I am sorry if it came across that way, it was not my intention. Thank you for wishing me good luck - The same back to you :)

Low-Code and Open Source as a Strategy

Sep 03, 2021 · Dan Lines

Thx Dan, always ^_^

The Woody Allen Way of Coding

Aug 29, 2021 · Jasper Sprengers

"Yet I enjoyed every minute of weaving that basket while it lasted"

Beautiful ending ^_^

The Woody Allen Way of Coding

Aug 29, 2021 · Jasper Sprengers

Hehe, najs one, but I don't really like Woody ... ;)

Nobody Asked You to Code Like Kubrick

Aug 24, 2021 · Jasper Sprengers

Well, Dali did it to show his opinion about Andy's piece, from his usual artistic directions my I add though - But yes, art today is arguably based upon "the bigger fool's theory".

I saw some researchers trying to mimic Jackson Pollock once. They could never get "the swing" quite right, until they dragged a dead drunk homeless guy off the street. It showed how "the swing was in the whiskey", quite literally ...

Nobody Asked You to Code Like Kubrick

Aug 24, 2021 · Jasper Sprengers

Interesting edge and a very good article. I tend to refactor again and again and again in my open source projects, in an attempt at carving out "the perfect code". However, when it comes to art, I often use Andy Warhol as an analogy for what I'm trying to do with things such as Magic Cloud. I presume you "get it" without me explaining it ... ;)

However, one of my favourite stories is about the relationship between Warhol and Dali. Warhol once gave Dali one of his artistic paintings. Dali zipped up his pants and pissed on it in public. One can only wonder if the thing gained more or less value afterwards ... ;)

Andy of course was laughing as Dali was doing this for the record ^_^

The idea was that art isn't really art if it can be Xerox copied. So to Dali the thing was garbage. Today Andy's stuff sells for 100 times as much money as Dali's stuff ... ;)

How much time does Low-Code save you?

Aug 22, 2021 · Thomas Hansen

Here's the app demonstrated on an iPhone, which (obviously) is a pre-requisite ... ^_^

https://www.youtube.com/watch?v=_upqXBkJcNk

How's it going? You should be having most of this done soon I presume ...?

How much time does Low-Code save you?

Aug 21, 2021 · Thomas Hansen

"Let me know when you're done, and we can compare our projects "

It's Saturday today, go for it - I assume you'll be showing me your product then on Monday sometime ^_^

The database can be found at MySQL's website. It's called Sakila ... ^_^

How much time does Low-Code save you?

Aug 21, 2021 · Thomas Hansen

"You claim that an average developer writes 750 LoC"

This is the TOP figure. Check out the science yourself if you mistrust my figures ...

https://dzone.com/articles/programmer-productivity

It also echoes my experience in general having worked for 20 years, managing dozens of developers myself. Sure, some projects are producing more LOCs per month, and some people are producing more. Especially initially in projects. But these are the official numbers, found by doing research over thousands of projects, ranging from all different industries, with hundreds of different programming languages ...

"bootstrap, and I believe that I could come up with it on the weekend"

Good luck. Here's the site in production for comparison reasons ^_^

https://sakila.servergardens.com/

Here's the GitHub repository if you want to see how it's wired together.

https://github.com/polterguy/sakila

Features assumed ...

* Secure login, securely storing passwords, using slow hashing, and individual per record based salts

* Audit logging in the database, allowing the user to peek into errors and other types of log entries

* 27,000 LOC of Angular code, with authorisation guards, a login form, and an individual Material Table for each CRUD entity in the database

* Referential integrity for all fields having such

* Etc, etc, etc ...

Let me know when you're done, and we can compare our projects ^_^

What is No-Code and Low-Code?

Aug 16, 2021 · Thomas Hansen

Maybe your words would carry meaning if your name wasn't "hello world" and your bio "test, test" - Just sayin' ... :/

What is No-Code and Low-Code?

Aug 15, 2021 · Thomas Hansen

Ford was obsessed with time, standards, and speed. If I'm to succeed with this, I need to keep that same focus. I've got 3/4 jobs in my pipeline currently, that all are great fits, although "stretching" the platform. However, the way they stretch it, is that the give me ideas for additional plugins and modules, I can reuse in future projects - Which is another scary place in such a regard, since over time, this implies that Low-Code gains more and more land. If it will ever end, I am not 100% certain of to be honest with you ...

... hence my former article about the idea ... :/

What is No-Code and Low-Code?

Aug 15, 2021 · Thomas Hansen

The primary inspiration for me personally doesn't come from software, but is Henry Ford. He famously said; "You can have Ford in any colour you wish, black or black". This was because black paint dried in half the time, so he refused to paint his cars in other colours. Using the process for something it's not intended to be used at, only results in very, very, very bad results ...

If somebody comes to me and asks me to create "something that looks like their existing system", I hope I have the courage to tell them; "Good luck, over there is our 'competitor'" ...

What is No-Code and Low-Code?

Aug 15, 2021 · Thomas Hansen

Well, the average (human) software developer can create between 325 and 750 lines of code per month according to research in the subject. Magic, and I presume also other similar scaffolding tools, reading meta data resulting in code, can produce 750,000 lines of code per second.

Of course, the comparison is not entirely correct, but even if you accept the notion of that this simplifies the development process by 50%, the time savings are obvious - Typically, according to my experience in the subject, it eliminates more than 80% of the job - At least for the type of work we do, and every time I add another feature, the portion of automation increases.

I just wrote an article about an example use case, where I break down the numbers for a specific use case, arguably illustrating how Magic is 38,543,995 times faster than a human software developer. All other factors set aside, that becomes 7 orders of magnitudes faster.

https://servergardens.com/blog/we-are-10x-on-everything/

Yet again, as I also admit, exclusively focusing on these numbers is not correct, since "Low-Code" still implies manual work afterwards by a human developer, increasing the Time2Market.

However, I am certain enough about the figures having (obviously) used Magic myself for a long time, that I can guarantee that we're 10 times faster, delivers 10 times higher quality, for 1/10th of the price that others can deliver - ASSUMING the software our clients wants lends itself to a Low-Code type of process. And if it's not, we advise our clients to seek help other places.

However, if you're about to create a database centric software system, where CRUD is a large part of your problem domain, we guarantee you that we (Low-Code that implies) can deliver it 10 times faster, with 10 times higher quality, 10 times more secure, for 1/10th of the price, 10 times faster. This includes manual work after the automated process has done its parts. This is exactly one order of magnitude on every single measurable parameter.

But yet again, the process doesn't lend itself to all software projects, only a specific range of projects - Typically CRM system, backend administration apps, database centric apps, etc ...

... which just so happens to be 80% of the "space" I have historically been working with as an enterprise software developer ...

In Norway IBM ran a project for half a decade for the government. The project cost the Norwegian government 340 million EUROs, and in the end the project was scrapped, because IBM couldn't deliver. This was a database centric application (EPJ, Electronic Patient Journal). If I had started out the project as a BDUF project, designing the database model up front, assuming I was able to get the database model correct - I could have delivered the project in 5 seconds ...

For some domains, the advantage is simply too large to ignore ... :/

Go Low-Code or go Extinct

Aug 15, 2021 · Thomas Hansen

I see your point, and yes, I could definitely do a better job at explaining what it cannot be used for. The above "FUD" though, is not special for Magic, but all Low-Code systems - At least in theory ...

Realise, a typical Low-Code component is reused in hundreds of different systems, implying the resource requirements to extend upon it can be shared to a much larger extent than a similar component created explicitly for a single software project.

It's the same argument as "library code". Typically library code is 1,000 times better on quality than a custom solution rolled out for one product. So it's much less "FUD'y" than you think.

What is No-Code and Low-Code?

Aug 15, 2021 · Thomas Hansen

Hmm, I see your point, but it wasn't intended as a product placement, but rather a general idea about Low-Code. The video illustrates this to some extent though ...

Thank you :)

Low-Code Application Development and Its Importance for Businesses

Aug 13, 2021 · Kevin Montalbo

Very clear explanation. Luv it ^_^

Psst, follow my profile to see my thoughts, and tools in this space :)

SEO Writing 101 Guide

Aug 13, 2021 · Lauren Forbes

Thx mate, I try ^_^

Go Low-Code or go Extinct

Aug 13, 2021 · Thomas Hansen

Respectfully, but you missed the point. A decade ago I saw figures concluding with that there was roughly 26 million software developers in the world. Although the number has probably increased since then, I suspect the ratio is similar, and the ratio was that 21 million of these were "enterprise software developers", who's jobs were 80% delivering backend administration types of apps, such as custom CRM systems, custom ERP systems, CMS backend systems, etc - This job can now be done in 2 seconds, implying 22 million software developers needs to look for alternative tasks, or be considered "redundant".

As to your question; No, you cannot develop a kernel using my product, and I have no plans to create such features in the future either. You cannot create a plugin for FireFox either, and neither can you create a computer game, etc, etc, etc, etc. In fact, there are 4 million things you cannot create with my system, and I will probably never implement support for solving these tasks either - Which doesn't change the facts that there are still 21 million things you can create with my system ...

As to legacy apps? Why keep legacy apps around at all if you can replace them with a modern code base, a good architecture, applying 100 times better security, scalability, and performance in 5 seconds ...?
... and use the existing database ...?

I have worked most of my career on "legacy apps", and my yearning for burying these things, due to garbage code base, applied by sub-optimal developers, having hacked away for decades, in multitudes ranging in the hundreds - Often started by junior developers, with absolutely no knowledge about how to correctly create software, was actually my primary motivation to creating Magic ...

There is nothing "magical" about legacy code, granting it "the right" to exist ...

Things have justified lives because of "function". Once there is no more function, there is no more existence ...

Magic, and hundreds of other systems, eliminate this "function" ...

SEO Writing 101 Guide

Aug 13, 2021 · Lauren Forbes

Bookmarked to use for future references. I was surprised by content length ... :)

Demo: How to Build a No-Code to-Do App With UI Builder

Aug 12, 2021 · Chris Fanchi

Congratulation on your release - Amazing product :)

Will Low-Code Platforms Replace Developers?

Aug 12, 2021 · Kostas Karolemeas

"The platform shouldn’t lock them into proprietary technologies"

One of many items showing an amazing insight into the problem domain - Najs writeup!

5 Lessons That Software Developers Can Learn from Kanye

Aug 12, 2021 · John Vester

As usual, pure brilliance from the humble guy, refusing to take credit, always staying to the facts ^_^

Go Low-Code or go Extinct

Aug 12, 2021 · Thomas Hansen

100% of the project is Open Sauce - Including "magic.core" - Which doesn't exist, and never has existed - However, I assume you refer to "magic.signals" which was closed source, but became 100% Open Sauce roughly 6 months ago ...

Go Low-Code or go Extinct

Aug 12, 2021 · Thomas Hansen

And, while we're at it; One person created Facebook, one person created Google (Larry) and one person created Microsoft (DOS that was originally named QDOS) and one person created Apple. One of these are already retired, another is unfortunately dead (Jobs), but their legacy is still kicking last time I checked ^_^

Facts are; "One man" arguably created EVERYTHING you adore so much ...

Like it or not, it's the truth ... :/

And none of them chose "the middle of the road" solutions of their times ...

Go Low-Code or go Extinct

Aug 12, 2021 · Thomas Hansen

"One person" created Linux, its adoption rate makes MSFT look like "noobs" ... ;)

"One person" also created cURL, it's got some 1 billion installations around the world or something ...

"One person" also created GIT, which 99% of all source code is managed through ...

Just sayin' ... :/

Code or NoCode?

Aug 11, 2021 · Ugur Kadakal

I agree, and obviously it depends upon your perspective - I just felt the need to apply mine ... :)

Go Low-Code or go Extinct

Aug 11, 2021 · Thomas Hansen

I wouldn't be so bold as you are, but yes, I see your point here ^_^

However, the stuff I'm doing in Magic today, and that I'll release a couple of days down the road, most people would say "it's impossible" in regards to a few years ago ... ;)

"Change is the only constant" ...

Code or NoCode?

Aug 11, 2021 · Ugur Kadakal

Great writeup - However, what type of project depends upon your tool of choice. The one I created was exclusively created for backend administration type of apps, such as CRM systems, etc ...

You should check out my profile about it ^_^

Low-Code Enterprise Application Development: The Future of Technology

Aug 10, 2021 · Pallavi Sengupta

Awesome article Pallavi. You should follow my profile, to see my thoughts about this ... :)

Go Low-Code or go Extinct

Aug 10, 2021 · Thomas Hansen

The Linux is already written. 99.99999999999999% of all software developers do not work on the Linux kernel, they work as enterprise software developers.

A NoCode Micro Service AppStore to avoid Technical Debt

Aug 06, 2021 · Thomas Hansen

When non-DotNet developers asks me if .Net is good, I answer; "Very good, but your primary task as you start using it, is to figure out which parts NOT to use" ... ;)

There's a LOT of garbage out there - I assume the same is true for Java ... :/

A NoCode Micro Service AppStore to avoid Technical Debt

Aug 06, 2021 · Thomas Hansen

Hehe :D

The problem is that typically it's the "junior guys" who starts the projects, due to budgeting issues. Only once it's slightly successful people like me and you come in, at which point it's often too late to salvage, because the thing has turned into a "living porridge monster" ... :/

As to "generic versus specialised problems"; Most of the stuff I have done in my "day jobs" are generic problems, industry segment here is almost completely irrelevant. Now of course, I've been an enterprise developer most of my life, but I've seen hundreds of different email sending services, translation services, registration services, authentication services, etc, etc, etc - And they ALL have one thing in common; Garbage code!

For instance, I once ran the most popular .Net based OAuth2 project through SonarQube, and it reported thousands of security issues ... :/

(None mentioned, none forgotten)

Having security issues such as the above in your authentication and authorisation code, implies you HAVE NO security, which I assume you agree in regards to ...

A qualified guess is that 80% this code could easily be shared, without needing to know anything about business logic or special requirements. And even if the numbers aren't 80%, they're definitely so large that they're useful to pursue from a financial perspective ...

Reinventing the wheel is status quo, at least in my parts of the world, and it's quite frankly a ridiculous thing to do. I assume you agree here ... :)

A NoCode Micro Service AppStore to avoid Technical Debt

Aug 06, 2021 · Thomas Hansen

First paragraph - Hahahaha, I was taking "the polite" direction. I see you're not ... ;)

Second paragraph. Yup, there's a lot of garbage out there. I'm not a Java developer, but I can testify similar effects in the .Net space.

Third paragraph - Maybe, but most people are NOT you!

Fourth? I have no idea what you're talking about, but it sounds like a garbage implementation of IoC and dependency injection in the .Net space, which actually is one of its incredibly beautiful parts ...

Last paragraph - Yup, but people don't have the time. Create your own logging framework, as your CEO is pounding on your head asking for the latest "deposit module", and come back and tell me "it was a success" ...

It's about TIME, and that's WHY software becomes garbage. Eliminate the time aspect, and everything becomes beautiful. My company know how to do that, because our business is common commodity modules, all projects needs, but few have the time to implement ...

5 Questions to Ask Before Launching Your Citizen Development Strategy

Aug 06, 2021 · Andre Lee-Moye

Love it Angela, if you follow my profile, you'll see we might have some synergies related to this field ^_^

The Origins of Technical Debt

Aug 05, 2021 · Thomas Hansen

As to Time2Market. The entire notion of the article is to reduce it, without compromising quality ...

The Origins of Technical Debt

Aug 05, 2021 · Thomas Hansen

The "resume driven development" is a real thing. I can testify to that :/

Another problem is that initially it's typically the juniors starting the project, while after a while as the company can justify the costs more senior devs takes over. This is purely logically 100% madness from a code quality perspective, since it's reverses the way things SHOULD be - Which is that the seniors starts the project, and the junior takes over afterwards ...

A “Preach to the Choir” About Low-Code/No-Code and Legacy Application Modernization

Aug 05, 2021 · Bob Markowitz

Amazing arguments, if you follow my profile, you'll quickly realise we simply HAVE to talk ^_^

The Origins of Technical Debt

Aug 02, 2021 · Thomas Hansen

Great points, but the idea wasn't as much to use Micro Service architecture as using pre-existing micro services, sometimes commercial modules. If you don't have to maintain the code, technical debt isn't even possible in theory. Technical debt originates from code. No Code, No Problem ;)

Reducing Your Cloud Costs by 90%

Jul 21, 2021 · Thomas Hansen

Really, Clouds are "fancy web servers" at the end of the day, ignoring some of their scaling features. However, both Jelastic and DigitalOcean allows you to scale up on demand, making much of the scalability issue also a mute point. There are always free alternatives, for instance MongoDB or CouchBase instead of Dynamo and Cosmos, etc, etc, etc. If you exclusively choose the open path, migrating is quite easy :)

I don't agree you "have to accept lockins" ...

Clouds are the "new ActiveX"` of the 21st Century ...

Are you guys still coding?

Jul 14, 2021 · Thomas Hansen

Which was exactly my point ...

DZone Shoutout Thread - Friday, July 9, 2021

Jul 10, 2021 · Blake Ethridge

Ohh, I just realised I was supposed to shout out about other writers here ... :/

I can't pick one, so just make sure you read DZone every day, and like articles and comment, such that you encourage everybody to write more ^_^

DZone Shoutout Thread - Friday, July 9, 2021

Jul 09, 2021 · Blake Ethridge

Jo guys and gals - I write about lockins in an attempt to try to make sure you avoid them - I'm almost at 1 million page views so far, so I would appreciate some shares and likes peeples ^_^

I Declare War Upon AWS, Azure, Silicon Valley, and Every Single Government on Earth

Jun 25, 2021 · Thomas Hansen

I'm pretty sure DZone has enough servers to hold off a DOS attack ... ;)

It's arguably the largest software development website on the planet ...

I Declare War Upon AWS, Azure, Silicon Valley, and Every Single Government on Earth

Jun 25, 2021 · Thomas Hansen

Interesting, but try posting something critical about your government of choice. You've got a "narrow interest field", which isn't really that interesting for "the masses". If you had a "wider" field of interests, such as (neutral) research related to Korona, or a debate about Direct democracy versus representative democracy, etc - My guess is you'd find it difficult to get your words out - Not because people don't agree with you, or at least want to listen to you - But rather because of that the "existing power structures" don't want you to speak your mind in regards to these things ...

I still find it cute that such places to some extent still exists. I guess the lesson learned is that "life will find a way", which comforts me to be frank ... ^_^

I Declare War Upon AWS, Azure, Silicon Valley, and Every Single Government on Earth

Jun 25, 2021 · Thomas Hansen

Thank you for having courage to speak the Truth <3

I Declare War Upon AWS, Azure, Silicon Valley, and Every Single Government on Earth

Jun 25, 2021 · Thomas Hansen

If you've got .Net 5 CLI and Angular, you can also run it straight from its zip file. Slightly more cumbersome, but I can do it on a virgin machine in 5 minutes myself ...

I Declare War Upon AWS, Azure, Silicon Valley, and Every Single Government on Earth

Jun 24, 2021 · Thomas Hansen

Did you see the video ...? ^_^

I Declare War Upon AWS, Azure, Silicon Valley, and Every Single Government on Earth

Jun 24, 2021 · Thomas Hansen

Well, you certainly won't find it at Reddit ...

I Declare War Upon AWS, Azure, Silicon Valley, and Every Single Government on Earth

Jun 23, 2021 · Thomas Hansen

You can download or clone the project directly from its GitHub repository, and natively compile it, assuming you've got .Net 5 CLI, MySQL/MS SQL, etc - So it does have a distribution that's significantly closer to "the iron" than Docker. Docker is just a convenience distribution currently for developers to play around with it, in addition to being a potential long term VPS delivery mechanism for VPS providers, etc ...

Not sure which other distribution mechanisms I could really apply to it? Suggestions ...?

I agree with your Jubilees argument, insanely too for the record. Not sure I agree that Ted was "all there" though, even though he raised (some few) "valid concerns", if I am to be "nice" to him. However, with an IQ of 190+ something, I'm fairly confident he could have chosen alternative paths to influence its future movement, resulting in a more lasting (positive) impact than the "delivery mechanism" he chose, which I personalyl believe is more closely related to the fact that he was incel rather than an "idealist" as he tried to project himself as. Although Ted's story obviously is a very sad story (MK ULTRA stuff at Harvard, etc), I don't want to give him anymore credit than I think he deserves, which is (almost) zero in my book ...

As to choosing less Biblical references in regards to names of modules in the future; Noted! However, for the 3 ones currently in place, I don't think I'll change their names, to avoid confusion. BabelFish is anyway a funny story for those having read "The Guide" ... :)

Anyways, there's a lot of smart guys on the planet, you (obviously) being one of them. If we all do what we used to do in the mid 90s (pull slightly more than our part), without fear of repercussions, which is (kind of) the idea in this article - I'm fairly confident in that we can reach Ted's goal, without blowing stuff up - Which kind of was my argument here ... ;)

I Declare War Upon AWS, Azure, Silicon Valley, and Every Single Government on Earth

Jun 23, 2021 · Thomas Hansen

Which is exactly why I wanted to use it. The way I see it Silicon Valley is the tower of Babylon, and by distributing it evenly across the world, giving others an opportunity to reproduce its value proposition locally, it's being "scattered around the world", kind of like the same way the Biblical story tells us the story of Babylon.

In a way what is being attempted in Silicon Valley is to try to become "gods", or omniscient, especially once you add surveillance to the mix, such as Snowden revealed. Personally I really think that is a sin. So for me Babylon as an analogy is a very good way to describe what Silicon Valley actually is ...

Teach Yourself DDD in 5 Minutes

Jun 22, 2021 · Thomas Hansen

Sorry man, I couldn't quite help myself - Hopefully you'll take it as a sport :)

https://dzone.com/articles/turning-cqrs-into-a-checkbox

I Declare War Upon AWS, Azure, Silicon Valley, and Every Single Government on Earth

Jun 22, 2021 · Thomas Hansen

Thank you Joseph :)

I Declare War Upon AWS, Azure, Silicon Valley, and Every Single Government on Earth

Jun 22, 2021 · Thomas Hansen

Kind of, until you understand the EEE strategy ...

However, if we're to replace lockin with open tech, we need to deliver what people want. As to .Net, this thing is .Net 5, which is 100% Open Sauce from the bottom and all the way up. MS SQL is in such a regard a better argument, but I provide 100% transparent "migration" (more or less) from MS SQL to MySQL. In fact, these are "radio button select widgets" during the CRUDify process ...

But I see your point, but my point is to create a "bridge" from lockin to open space tech - At which point I have to provide solutions to where people are today - Which is in the lockin space unfortunately ...

Good question though, but 50% of it is "out of date" (the .Net 5 parts) ...

I Declare War Upon AWS, Azure, Silicon Valley, and Every Single Government on Earth

Jun 20, 2021 · Thomas Hansen

Awesome Amber. There are millions of Python developers on the planet. These too will need open tools, allowing them to migrate their software if needed. It's not about specific frameworks, libraries, or languages - It's a mind set first and foremost. See my comment to Rohit above.

The task at hand is to provide open alternatives for all "convenient" lockin technology. Parts of that task needs Python developers, parts of it needs Java developers, parts of it needs Angular and .Net developers. If we all do our part here, the open tech space may very well become even more convenient than the lockin tech space :)

I Declare War Upon AWS, Azure, Silicon Valley, and Every Single Government on Earth

Jun 20, 2021 · Thomas Hansen

Great Rohit, there is a lot more work to be done. Some things are also simply education, such as teaching people that choosing "too convenient tools" has a cost later down the road. For instance, regardless of what people think about Parler, it's important we never allow anybody to forget the lesson it taught us, the next victim might be anyone of us, or our employer - What do we do then? Teach people to avoid using lockin tech. Build instead on top of tech you can move around. Use such tech yourself, and evangelise it. One doesn't have to be an expert programmer to do the right thing :)

I Declare War Upon AWS, Azure, Silicon Valley, and Every Single Government on Earth

Jun 19, 2021 · Thomas Hansen

It's not a threat to them. Try posting something that is critical towards the official agenda related to Covid19, and you'll very clearly and rapidly understand "who controls the world" my friend ... :/

Micro Management

Jun 09, 2021 · Thomas Hansen

Interesting ...

I've just discovered "traits" in Scala myself, which are more functional in nature ...

However, with Scala I suspect I'd miss interfaces ... :/

Micro Management

Jun 09, 2021 · Thomas Hansen

I agree, parts of OO I love, and I think you adequately summed up which parts more or less ...

Micro Management

Jun 09, 2021 · Thomas Hansen

Of course you're right, but when OOP was "sold" to us in the 1980s, the selling point was inheritance and polymorphism. Then we had to spend the next 40 years telling developers to avoid inheritance, and prefer composition. Your example with GWT below is just one example of how the idea as implemented currently is fundamentally broken. It was a bad idea, always was, and always will be.

Ignoring interfaces, which we (ofc) should use to separate implementation and contracts, 90% of OO is stuff you should try as hard to avoid as you possibly can, almost regardless of the situation. I think I can count on one hand how many times I've used polymorphism the last year and it actually made sense for instance ...

The fact that 19 out of the original GoF Design Patterns makes no sense in for instance LISP is just one way of seeing this. In fact, when (any) programming language needs "design patterns", it's often to bypass fundamental flaws in the language itself. Your factory example above for instance, could instead be provided as follows using functional constructs ...

run (Func<IRunnable> creator)

At which point you've eliminated (at least) one type dependency between your constructs (the AbstractRunnableFactoryImpl)

But I suspect we agree for the most parts ...

Micro Management

Jun 09, 2021 · Thomas Hansen

LSP for instance, the natural and intuitive way to think about a square is to think of it like a special case of a rectangle. In OO, following SOLID, more specifically the L parts, this is impossible. OO bends and twists your brain in ways that are not natural in regards to how it really is ...

"Verbs" are a much more natural way to think about (whatever) problem you're trying to solve than "classes". Verbs are more naturally applied in FP, and also computing in general, since computers are first and foremost the "modelling of processes". Methods on the other hand is associated with a class. For instance "run" is a verb that applies to both dogs, humanoids and cats. So we might be tempted to associate it with our "mammal" class, except for those darn dolphins ...

If you were to model a class hierarchy mirroring zoology, where would you put "run"? Or for that matter, any other method ...?

I could probably come up with dozens of more examples, but I think you get the point. I could go on for hours, but I suspect you get the point ...

Thinking in terms of classes artificially divides things into categories that are rarely if ever relevant to the problem we're really trying to solve.

Micro Management

Jun 09, 2021 · Thomas Hansen

It's impossible to model anything resembling the problem you're trying to solve, because OO requires you to think in black and white. Nothing is black and white ...

Micro Management

Jun 09, 2021 · Thomas Hansen

FYI, OO segregates your brain into absolutes, and categories, that rarely if ever have any truly existing basis in the "real world" ...

In a way, it's the equivalent of "systemic prejudice for system developers" ...

Hence, if you need one word, use "tech-prejudice" ^_^

Micro Management

Jun 09, 2021 · Thomas Hansen

Well, ish kind of - Check out the babel link above to see how it combines CRUD with other BL aspects, such as SignalR, Web Sockets, etc ...

Your database cannot do that, but I see your point, and I don't disagree ...

Micro Management

Jun 09, 2021 · Thomas Hansen

Hehe, you are right, but everything has its place (somewhere) - As to CRUD, you might want to checkout this baby of mine - https://polterguy.github.io/

(My project)

When that is said, I rarely actually use it myself the way it was intended to be used, something you can see here, where I arguably apply CQRS, in addition to (some) CRUD ofc - https://github.com/polterguy/babel

I guess my take on it is as follows; "If all you do is CRUD, why not let the computer create it anyway, at least that way you can throw it away, without loosing more than 1 second of work" ... ;)

Micro Management

Jun 09, 2021 · Thomas Hansen

"Any fool with a keyboard can make something work, but design shines long term"

I've been known to say this as follows; "If you're a developer, your primary task is to create something other people can understand. Whether or not it works, is of secondary importance" ...

"You will not see that it costs 3x-4x as much to develop new features because there is just no reference for comparison"

I am a fanatic believer in "the big rewrite" so these are words I can agree with ...!!

Personally, I'll dumb down things to the extreme to such an extent that anybody having read books about DDD and such will scream out BLASPHEMY!

Check out the comments I got on this bugger for references :D

https://dzone.com/articles/teach-yourself-ddd-in-5-minutes

Micro Management

Jun 09, 2021 · Thomas Hansen

I can tell you what reuse in OO is; "You want the banana, and you get a gorilla, holding a banana, in the rain forrest" ... ;)

I once wrote an article here called; "This is your brain on OO" where I destroyed the idea - So I don't disagree with you ...

See my (other) comment to Robert for more details ...

Micro Management

Jun 09, 2021 · Thomas Hansen

"you producing maintainable code to be *despite* trying to use SOLID, not because of it"

Hehehe :D

Notice how I don't disagree with you here ... ;)

I work (mostly) in functional programming languages, where it makes little sense. However, when I work with OO, I tend to try to follow it as much as I can where it makes sense. Read the article I am linking to, to get a slightly more "nuanced perspective" of what my perspective in regards to SOLID is ...

"Also, ironically, if you as my manager would throw SOLID at me, I would consider that micro-management"

Interesting edge :)

I'd probably throw SOLID at you, yes, probably even during a job interview, but my edge would probably be "Tell me 5 bad things about SOLID" ...

But SOLID is like the original 23 GoF design patterns, it makes sense within a the context it was created within. I once saw a guy proving how 19 of the original 23 design patterns were completely useless in LISP, because LISP had mechanisms rendering them completely obsolete - Which is kind of weird, considering LISP is 50 years older than the GoF book ... :/

Interesting comment. Personally I don't believe in "silver bullets" or "holy books" the way others do. I'll read them every now and then, to make sure I don't miss out on something - But typically I'll end up finding flaws in them also, more often than not. There is a balance in there somewhere ...

We need to talk about Job Interview Questions

May 31, 2021 · Thomas Hansen

98% of React's beauty, if you agree it is beauty, is composition, class hierarchies, and function design - I should know, I have built half a dozen frameworks and "low level libraries" down these allies. As to "logical/mathematical process", I'd argue respectfully that you couldn't be further away from the target. 99% of coding is art, as in making things beautiful, such that reusability and understanding of the code later down the road comes natural.

If you'd like to see an example of the latter, you might be interested in my own baby ==> https://polterguy.github.io/

Which I believe exemplifies all of the above ...

We need to talk about Job Interview Questions

May 25, 2021 · Thomas Hansen

My point exactly ... ;)

We need to talk about Job Interview Questions

May 22, 2021 · Thomas Hansen

Hehehe :D

Did you ever need to remember how to implement (any) sorting algorithm later ...?

50 Great Job Interview Questions

May 21, 2021 · Thomas Hansen

I edited the caching question

50 Great Job Interview Questions

May 20, 2021 · Thomas Hansen

I agree with the caching parts of your comment, and I should probably have further abstracted it, and for instance "explain the different ways to cache in an HTTP Web API" for instance, at which point the answer should contain some mention related to server side caching, and one mention in regards to client side caching, being able to explain pros ond cons with both methods. With bonus points if the candidate speaks about Cache-Control and If-Modified-Since, in addition to (.Net) IMemoryCache, Redis, etc ...

50 Great Job Interview Questions

May 20, 2021 · Thomas Hansen

I tried using "candidate" instead of "he" in some places, but after a while it became simply too long sentences, but I do see your point - I'll become better :)

We need to talk about Job Interview Questions

May 19, 2021 · Thomas Hansen

Thx Jeff, I've had it "in my mind" for years actually, but you don't want to stir the pot too much, until you can no longer avoid to do it ... ;)

We need to talk about Job Interview Questions

May 18, 2021 · Thomas Hansen

That is probably a wise refusal ...

Docker Image Tutorial

May 11, 2021 · Lauren Forbes

"over at ," - Typo, somewhere around paragraph 2 :)

Your Job Is Not to Create Software, It Is to THINK!

Apr 30, 2021 · Thomas Hansen

Great insight man :)

Your Job Is Not to Create Software, It Is to THINK!

Apr 15, 2021 · Thomas Hansen

Haha, no comment ... ;)

Magic Cloud is now 100% Open Source

Apr 05, 2021 · Thomas Hansen

Sorry, I published the article before the YouTube video was finished processing. If it's got bad quality, just come back 15 minutes from now or something to watch it again ... :/

The Materialized Path Technique: Tree Structures for Relational Database Systems

Mar 11, 2021 · Melissa Habit

Psst, I try ^_^

The Materialized Path Technique: Tree Structures for Relational Database Systems

Mar 03, 2021 · Melissa Habit

Maybe, loved child has many names. I've only heard about it as materialised path though ...

Azure Cosmos DB: Use Cases and Trade-Offs

Mar 02, 2021 · Abhishek Gupta

Here's one of the tradeoffs described fairly well - https://dzone.com/articles/database-synchronisation-techniques-the-good-the-b

Effectively making it 10 times more difficult to avoid race conditions and synchronising updates to the database ... :/

Microsoft, are you listening ...? ;)

What Being a Musician Taught Me About Being a Programmer

Mar 02, 2021 · Michael_Gates

Love it :)

I play 5 instruments myself, and I tend to explain it such that it "keeps my brain balanced", being a right hemisphere activity, allowing me to wind down after long periods of coding ...

The Death of Freedom by Software

Feb 28, 2021 · Justin Albano

Decentralisation is the only solution, combined with fragmentation of cloud vendors. Supporting (small) cloud vendors, in non-US parts of the world, combined with making sure your software runs on stuff such as Raspberry PIs, etc, for "guerrilla" speech ... :/

I have been thinking a *lot* about this, for almost a decade, ever since I started publicly supporting Assange and WikiLeaks, and was more or less crucified for my opinions ...

Connecting Angular to an SQL database

Feb 22, 2021 · Thomas Hansen

Not very convincing, wax harder ... ;)

Your NoSQL Database Has an Implicit Schema

Dec 04, 2020 · Thomas Hansen

Yes exactly! And the result is that you end up with temporary projection code, in both your database, and your business logic code, resulting in spaghetti solutions after a while - Especially since phone numbers are merely one example. And in a mature application, you typically end up with hundreds of such changes after a while.

But yes, everything is solvable - Though some solutions tends to create more problems than the number of problems they solve ;)

Why Am I Coding?

Oct 28, 2020 · Thomas Hansen

Once a coder, always a coder my friend ... ;)

Teach yourself AES cryptography in 7 seconds

Oct 27, 2020 · Thomas Hansen

This is the same persistence mechanism used in for instance BCrypt for .Net, that is using individual salts + blowfish. The idea is that you don't need to know the password, you only need to have an algorithm that once applied to the salt+hash in one side of the equal sign, and a password on the other side, produces a yes/no type of response, indicating if it's a match or not.

However, hashing the same string twice using BCrypt (and PBKDF2) produces two different resulting hash values. I need to be able to reproduce the exact same hash value, given the same input - Since it's used as a symmetric key to encrypt/decrypt the AES encrypted package. Hence, for this particular use case, it's useless. At best, the hashing algo itself could in theory be used without a salt. But that wouldn't give any benefits, since a rainbow dictionary attack could still be applied, only creating the dictionary would require more time, due to the slow hashing.

But once you have the dictionary for all permutations of possible password, given a specific workload, you could reuse it on everything.

I need the exact same hash produced given the same input. Implying PBKDF2 would be useless for this scenario ... :/

Teach yourself AES cryptography in 7 seconds

Oct 25, 2020 · Thomas Hansen

I started looking into PBKDF2, and it seems to be requiring a salt, and hence works similarly to BlowFish and other "password generator algorithms", which seems to make it useless for generating a 32 bytes long key from a string for my AES purposes, since the whole idea is that the AES algorithm requires the exact same array of bytes during decryption as encryption. Hence, I cannot use something that could generate a different set of bytes the next time it's run.

The way I see it, PBKDF2 is perfect for password storing in a database, for instance for your users table and similar things, where you don't need the exact same password being generated twice, if you provide a random salt. Notice, I am using BlowFish for storing my passwords already for users authentication mechanisms and such - However, I'm not sure how it could help to generate a key from a password for AES, since I would need the exact same set of bytes every time I invoke it, which implies I'd have to use a static salt (at least), kind of defeating its purpose ...?

I see the point with slow hashing and key stretching for the record, but I'll need the exact same set of bytes on consecutive runs here, which PKBDF2 cannot, or at least should not generate ...

Am I missing something here ...?

Teach yourself AES cryptography in 7 seconds

Oct 24, 2020 · Thomas Hansen

Thx, I found lots of hits :)

Teach yourself AES cryptography in 7 seconds

Oct 24, 2020 · Thomas Hansen

I have been thinking about what you wrote, and although the password feature will probably in practice be rarely used, I still should have some "slow hashing algo" to generate a 256 bit key from the specified password. Do you have anything to suggest for .Net Core ...?

Teach yourself AES cryptography in 7 seconds

Oct 24, 2020 · Thomas Hansen

Interesting Arnaud, and thank you for the info :)

Though, when I use AES internally, to encrypt/sign/and transfer packages, I use SecureRandom to generate a key. The string/password feature is only intended as a "convenience method", for users wanting to use a passphrase to symmetrically encrypt something. I never use it internally in the other methods. I will still investigate your alternatives to make sure I'm doing this as secure as possible.

Please feel free to look through its code for more "holes" if you wish :)

.Net's HttpClient is a hot smoking pile of garbage

Oct 11, 2020 · Thomas Hansen

You create an overload accepting a dictionary - You can read the continuation, leading you to a wrapper class I created myself here. Here's its interface, giving you an idea of how to wire things together.

Whether or not you want the JWT token overload or not, is a matter of taste I guess. It's just a convenience method, created because it's the thing I care the most about myself, which of course will add default headers being application/json for content negotiation.

.Net's HttpClient is a hot smoking pile of garbage

Oct 10, 2020 · Thomas Hansen

You're right, I'll edit it, and remove it :/

C# business logic is applied brain damage

Oct 10, 2020 · Thomas Hansen

Half of these answers are down the alley of 'never'. Most of those answering never, give sound arguments, good reasoning, and seems to be intelligent people ...

As for me, I've worked with it for 2 years myself, and I passionately hate it, the same way I started hating Logic Apps after a couple of months of being exposed to them ...

C# business logic is applied brain damage

Oct 10, 2020 · Thomas Hansen

Reflection, XML, GUI blocks to design conditions/variables/flows - Need I continue. I might be the first guy to state it as bluntly as I did, but I'm not the first guy to propose it's garbage. Google MWF and see what others are saying about it mate ... :/

Seriously, OOP sux!

Oct 10, 2020 · Thomas Hansen

Psst, check this out ^_^

Seriously, OOP sux!

Oct 10, 2020 · Thomas Hansen

You're right that the number is probably much larger than 50%. I just wanted to give a conservative estimate. For instance, HTTP is at its very core stateless, it's the way it was designed. OO is by its very nature arguably a state machine. Hence, in the entirety of the HTTP space, OO becomes like using chewing gum to fix an airplane - It might work, but it's not the right tool.

Each HTTP endpoint is at its core a "function". Starting out your function invocations with object instantiations, is simply wrong ...

Seriously, OOP sux!

Oct 09, 2020 · Thomas Hansen

Hehe, I wish I understood half of what you were talking about. Being an honest guy though, I'll avoid the temptation of pretending - Though in "the real world", 50% of the time, having a simple function, seems to create much more easily maintained code, than having a class, or 100+ classes for that matter. For instance, what's the cost of instantiating a class, and how much garbage field/property decoration will it perform? I can give you dozens of examples, but I assume it would be superflous at this point ...

C# business logic is applied brain damage

Oct 09, 2020 · Thomas Hansen

> For example a financial application

FinTech happens to be my industry, and I can give you dozens of examples where compiled business logic is in fact pure madness, and arguably the equivalent of "computing psychosis". As an example, imagine a ForEx trader. These types of companies are normally regulated in half a dozen jurisdictions; CySec, FCA, Bahamas, Cayman Islands, ASIC, etc. Each jurisdiction has its own separate laws, in regards to especially KYC processes, margins, etc - Which makes these apps arguably end up as more or less completely "different applications".

However, each "installation" needs the devs to follow the regulations, meticulously, as if it was religious dogma. On top of this, each jurisdiction often seems to apply new regulations, and changing laws every 6 months - In addition to that business even more frequently comes with change requirements such as for instance; "We need to support MLM Introducing Brokers", etc. Not to mention the fact that these systems are often created by some subsidiary, which is serving up to 6-12 different daughter companies, owned by the umbrella company - Often times, each with its own separate marketing department, business departments, etc - Assuming the same app can serve all of these buggers, for cost reasons (duh!)

The whole thing becomes a big ball of mud if you try to "compile it". If you dynamically orchestrate it though, loosely coupled, such that each jurisdiction has its own separate set of "script files", the problem becomes quite maintainable in fact.

Historically, in the .Net space, this problem have been solved using different Microsoft Workflow Foundation implementation files, which of course is a hot smoking pile of garbage, even ignoring the fact that it can't even run on the .Net Core stack - Probably because Microsoft realised the same as I did, which is that MWF is garbage - Hence, you arguably have no solution today, unless (of course) you're willing to look in the proprietary segment of .Net Core.

Hence, FinTech is the primary example of that compiled BL is a psychosis waiting to unfold - Which I'd be the firs guy to testify towards, having exclusively worked in FinTech for a lot of years, in multiple different companies ...

Seriously, OOP sux!

Oct 09, 2020 · Thomas Hansen

MWF ==> Hot smoking pile of garbage. If you're looking for an alternative btw ...

https://polterguy.github.io/tutorials/task-scheduler/

Seriously, OOP sux!

Oct 09, 2020 · Thomas Hansen

Amen :/

BTW, Serverless Architecture is a hot smoking pile of garbage piece of crapware. It's the new ActiveX of the dev space ... :/

Seriously, OOP sux!

Oct 09, 2020 · Thomas Hansen

> Yes, it is a piece of crap, I admit. And then trying to make it better with HttpClientFactory

Psst, if they had used a functional language ... ;)

For God's sake, implementing input/output in a functional language, is a no-brainer - Something I arguably proved myself.

For the man with only OOP, everything looks like an object :D

Seriously, OOP sux!

Oct 09, 2020 · Thomas Hansen

> I feel like all of ASP.NET Core is a huge improvement over everything MS has done to date for the web. Way better than WebForms and MVC

I agree

> I think they've generally done a great job and missed the mark on a few

Agree

> But why would you do that if expressing it as a function makes so much more sense? I don't understand your point

The point is that unless you can easily explain something, without starting to wave your arms around, and spend 15 analogies, and 50 days, before you come to its core - It's probably not worth explaining, and it's probably wrong in the first place. Seriously, input/output - That's what created the computing industry. Everything else is "dogmatic superstition" ... :/

> because a tool doesn't work in a particular situation doesn't make it totally useless

To a man with only a hammer, everything looks like a nail

I don't honestly believe what I'm writing, I just want to create a bit of cognitive dissonance, to make room for more tools ;)

And I'm tired of noobs believing in that "tool xyz is the best thing since sliced bread", and then you try to teach them about its inferiority, and they go like "you suck". I figured it was payback time :D

Seriously, OOP sux!

Oct 09, 2020 · Thomas Hansen

Psst, believe me - I know OOP :)

Seriously, OOP sux!

Oct 09, 2020 · Thomas Hansen

> I also wouldn't be so naive as to blame problems I have with those on OOP either

Actually, I disagree here. For instance, HttpClient implements IDisposable, which you're never supposed to invoke - Right? This again is a violation of LSP, Liskov Substitution Principle. In addition, it mutates, due to having all those "Default properties", allowing you to set default values, used if the HttpRequest doesn't explicitly override the default HTTP headers, etc, etc, etc. HttpClient is a primary example of the header of the article, since when not even Microsoft's best developers can get this right, who're we to think we can get it right? All of the above problems are related to complexity relating to OOP. FYI - HttpClient is the lousiest piece of crap class ever created and architected, that ever came out of Redmond, and it was created by some of the smartest OOP guys on the planet - Its interface and implementation is in fact the best argument for my case ... ;)

> Yet, those who really know it can express some pretty powerful things beautifully, but certainly it is not just f(x)

e=mc2 has implications that are far more complex than the original equation, but the fact that the equation can be explained with 3 components, is what makes it the truth, and beautiful, and easily understood. Sure, functional programming languages are more than just f(x) - But try to devise a similar equation around OOP, and see where that brings you ... ;)

> Again, your article screams more of not wanting to actually learn your craft and have tons of abstractions provided for you than anything

Believe me, I know my craft ... ;)

I could show you half a dozen of (really advanced) C# Architecture articles I wrote for Microsoft, which are still publicly available on Microsoft's website. I could show you a GUI library written in C++, with multiple inheritance, and some really interesting template class hierarchy, inheriting from the template class, using partial template specialisations, etc. I could show you how I started using C# back in the times of BETA1, when their ASP.NET WebForms pages used to be ending with ".asp+" - But that would only make me come across as a dick, so I'll refrain from that. After all, I'd much rather want to discuss the topic, than to compare the sizes of our "xxx" ...

But I can tell you this much. It takes somebody really knowing their craft, to objectively scrutinise it, and criticise it. If I didn't know OOP, I would probably not raise my voice in regards to it ...

> And then I'd say to the builder, I guess we don't need you any more. I can figure out the door

You summed it up my friend :)

Seriously, OOP sux!

Oct 09, 2020 · Thomas Hansen

> This is the article was written in the worst way possible

Psychology have scientifically researched the reasons for why you feel the way you do decades ago. And it's called "cognitive dissonance". It results in a feeling of discomfort, when the brain is confronted with something it feels unpleasant, due to that it contradicts existing knowledge. For the record, I do agree that it could have been written better. The reasons for that, I explain in another comment further up. However, even though I only spent 10 minutes writing it, I spent almost 4 decades researching the ideas, culminating in my conclusion. The conclusion, which is the important parts, is solid as rock!

A famous artist once spent 4 minutes on a painting, and was asked "Why did you ask 5 million dollars for a painting you spent only 4 minutes creating". The artist answered; "I spent 40 years and 4 minutes". This "painting" is one of those places ...

Seriously, OOP sux!

Oct 09, 2020 · Thomas Hansen

> In my experience, automagical things are recipes for serious disaster because as soon as you step one foot out of the blessed boundary, you go from 2 lines to 2000 just to do what you want

This part dictates you can never use HttpClient, Database connections, garbage collectors, or Logging libraries - Because they might result in that you at some point in the future experience bugs, due to leaking abstractions. You don't even believe this yourself. If you did, you'd be coding in assembly, never using libraries, and you'd have to create your own network drivers, file drivers, garbage collector, etc ...

> Bad OOP or bad functional or bad any other paradigm usually roots from bad design by the programmer

Great designs, dictates great code and modularity. To learn OOP requires arguably a decade worth of studying. Learning a functional programming language requires understanding the following.

f(x)

Needless to say, but the equivalent "equation" explaining OOP, requires books, if not libraries of written text. e=mc2 is beautiful because it's simple, if it had ben e=gf4x/78^24 - Einstein would still be working as a patent clerk ...

Seriously, OOP sux!

Oct 08, 2020 · Thomas Hansen

Parts of your comment is intelligent, and the reasons are most of us write in our spare time, and we don't get paid to write. As to the arguments quality, I'd like to emphasise that if they were so bad, you'd be easily able to counter them. The arguments are solid as gold ^_^

Prove me wrong ... ;)

Seriously, OOP sux!

Oct 08, 2020 · Thomas Hansen

BTW, I think this one is better, though arguably rewritten from Erik Naggum, a Norwegian brilliant LISP programmer, who passed away almost a decade ago, way too early ... :/

"The unexperienced programmer had a problem, so he said "I'll just use OOP". The unexperienced programmer now had TWO problems"

Seriously, OOP sux!

Oct 08, 2020 · Thomas Hansen

Hehe, go for it ^_^

Thank you :)

Seriously, OOP sux!

Oct 08, 2020 · Thomas Hansen

> even if "successful" by some metrics

McDonalds is also successful, so are cigarettes, heroin, and nuclear rockets. It doesn't mean it's healthy, productive, or a sane pursuit ;)

> Programming is a profession, you'll have to learn things

I agree, but e=mc2 is beautiful, not because of its complexity, but because of its simplicity, and how this simple equation explains the most complex processes in our universe. If the truth had been e=mc2xhg4^78/24 - Einstein would have been an unknown patent clerk, and we wouldn't have had satellites, the internet, GPS, or moon rocks to play with ... ;)

But yes, I will walk through *everything* our industry takes for granted as "best practices", and utterly do my best at completely ravaging and pillaging the thing, to deconstruct assumptions, in an attempt at trying to make people think - Which this article is one example of. Next on my "hit list" are NoSQL database. Then I'm gonna do Micro Services. Later, I will murder CQRS, etc - And if I still are alive at the end of my series, maybe - Just maybe - I might have created a couple of new ideas in people's minds ^_^

Have database need new and modern Web app?

Oct 06, 2020 · Thomas Hansen

Hahaha, TTYL mate ^_^

Have database need new and modern Web app?

Oct 06, 2020 · Thomas Hansen

I got an email about a new comment on my article, and I went to check, and it was gone - Weird ;)

CQRS Is an Anti-Pattern for DDD

Sep 24, 2020 · Hristiyan Pehlivanov

CQRS, and for that matter Micros Services, are the single most abused design pattern and architectural principles, ever created. It sometimes feels that developers are trying to "fill up their CV", and hence overcomplicates things into absurdity, when a good old simple CRUD solution would suffice ...

95% of all apps I've seen that implemented Micro Services, and/or CQRS, only became more complicated, and never needed it in the first place :/

The Big Rewrite

Sep 24, 2020 · Thomas Hansen

Hehe, I rest my case :D

Psst, Magic generates an Angular frontend for you too. Not that I think you care, but others might read these comments ^_^

The Big Rewrite

Sep 24, 2020 · Thomas Hansen

Great work :)

As to if this is an infomercial? Yup! But it also contains valuable general information. Did you checkout Magic BTW?

Neutral Quality metrics for your code

Sep 18, 2020 · Thomas Hansen

Not sure what environment you're in, Java ...?

But can you apply "inheritdoc" ...?

In .Net such things exists ...

As a general rule, I apply "inheritdoc" for all methods implementing interfaces, etc ...

But yes, some of the things it flags, are arguably a bit stupid'ish ... :/

The Boy Scout Software Development Principle

Sep 15, 2020 · Thomas Hansen

Actually, many organisations, also larger and more mature organisations, have this as a policy. In some organisations your pull requests won't even be accepted if the reviewers find "dirty code" over or beneath your changes - As in code you're not even responsible for yourselves.

I'm not saying you're wrong, I'm just saying there are different approaches to these issues, and it all depends upon which philosophy the company is using to create code ...

I'm an architect myself, handling some 3-4 different projects, with a total number of 10-15 developers and PMs, Scrum masters, etc - And this principle is one of the core code quality processes I am currently implemented - Combined with what I'm to write up about next of course ;)

The Boy Scout Software Development Principle

Sep 03, 2020 · Thomas Hansen

Most of these things would be simple, and probably easily implemented using ReSharper, or something similar, making it impossible to apply semantic changes for its runtime behaviour. Renaming variables from e.g. "clienIdt" to "clientId", etc - Cannot not even in theory apply runtime changes, if it's a variable inside a method, etc ...

Creating a JWT auth server in 1 second

Jul 13, 2020 · Thomas Hansen

Go for it :)

SOLID code, the Silver Bullet

May 16, 2020 · Thomas Hansen

Well, you can count the number of cross project references your project has, that would give you one metric. You can count the number of arguments requiring concrete classes instead of interfaces as arguments, that would give you another metric. There are ways to measure the amount of "SOLID" you are implementing, and quantify it, but I agree, it is a blurry topic ... :)

SOLID code, the Silver Bullet

May 16, 2020 · Thomas Hansen

Thank you :)
Measure and check what? Unit tests ...?

I love measuring and static analysis, but I am not sure I understand what you want to measure ... :)

Invoking HTTP REST APIs With a Single Line of C# Code

May 09, 2020 · Thomas Hansen

Adding NuGet package "magic.http" should resolve both of these. If not, add Newtonsoft.JSON too :)

"magic.http" is created by me, and technically not licensed as MIT, but I'll probably end up doing it at some point, as I have the time - Feel free to use it under the terms of the MIT license until I do :)

5 Practices to Eliminate Bad Code

Feb 21, 2020 · Blake Ethridge

@Charles - The article was intended to be easily digestible, with easily remembered punchlines. But I like your suggestions too. Feel free to write your own article, maybe link to this one ...?

@Bas - My "favourite" is "we are too busy". There's a popular meme with some stone age men dragging a cart with square wheels, while saying "we don't have time to change to round wheel, we're too busy". This one perfectly describes the problem it I think :)

BlowFish, the Only Way to Secure Your Passwords

Feb 21, 2020 · Thomas Hansen

BlowFish, the Only Way to Secure Your Passwords

Feb 21, 2020 · Thomas Hansen

@Keith - Interesting what you say. However, when you say "getting the parameters right" - I have to admit I'm getting Elliptic Curve flashbacks here. Who's "selling" this thing ...?

Checksum [Comic]

Feb 18, 2020 · Daniel Stori

Hahahahaha :D

Actually, the English pronunciation of the "bash" literally translates into English as "poop" ... :)

What if We Merge HR and IT?

Feb 17, 2020 · Thomas Jardinet

Interesting idea, and I can completely agree with the basic assumption of your thoughts here. Definitely IT and HR have overlapping goals. Not sure if it's possible to implement practically though ...

... but interesting idea :)

5 Practices to Eliminate Bad Code

Feb 12, 2020 · Blake Ethridge

@Tugce - Not sure about the others, but I've got 37 years of experience creating software. In between us, I'm pretty sure we're not too far away from 100 years of combined experience - So I'd say confidently that these are things you can be pretty sure about works yes ... ;)

BlowFish, the Only Way to Secure Your Passwords

Feb 12, 2020 · Thomas Hansen

BlowFish, the Only Way to Secure Your Passwords

Feb 12, 2020 · Thomas Hansen

@M K

The underlying principle of the article is to teach developers about the importance of hashing passwords, the importance of using individual salts, some of the reasons for doing it (Rainbow Dictionary Attacks), and provide the user with an easy to use library to apply these principles into their own code.

Which "fishing" algorithm to use in such a regard, becomes less interesting, and the header of the article hence an exaggeration, not to be taken literally - However, thank you for providing the reader with alternatives, some would imply are better.

5 Practices to Eliminate Bad Code

Feb 11, 2020 · Blake Ethridge

Creating a JWT Authentication Web API in 5 Minutes

Feb 03, 2020 · Thomas Hansen

Since the reply parts of the comment system here doesn't seem to work Ravee, I wanted to post this here to make sure you hopefully see it.

https://www.youtube.com/watch?v=8xO9H-2Fejc

So my answer is "Yes, if you only consider the backend parts of Magic" ... :)

Automate CRUD Operations and Focus on What Matters

Jan 30, 2020 · Thomas Hansen

Automate CRUD Operations and Focus on What Matters

Jan 23, 2020 · Thomas Hansen

Creating a JWT Authentication Web API in 5 Minutes

Dec 28, 2019 · Thomas Hansen

Creating a JWT Authentication Web API in 5 Minutes

Dec 28, 2019 · Thomas Hansen

Creating a .Net Core Web API in 40 Seconds

Nov 07, 2019 · Thomas Hansen

Some of my paragraphs were slightly messed up, and are not phrased the way they are supposed to be phrased. I know CRUD is not related to neither SQL nor HTTP, but both HTTP and SQL is definitely related to CRUD. In fact, both SQL and HTTP is for the most parts only CRUD. If you don't agree, I do give lessons in the subject ;)

https://msdn.microsoft.com/magazine/mt833461

SQL and HTTP (REST) are arguably specialized implementations of CRUD in fact.

As to Django, and/or Magic, I can pretty much guarantee you that you'll end up more productive than you would be hand rolling the same.

https://www.youtube.com/watch?v=B8DVg_nqC_g

As to Entity Framework. EF is nice, even though probably some 2-3 times slower than Magic. But it does not take care of authentication, authorization, HTTP caching, logging, or wrapping your classes in HTTP endpoints for that matter - In addition to that it's probably some 2-5 times slower than Magic, even though I don't have data to backup this claim at the moment.

The last time I checked, EF does neither have a dynamic rule based engine, and is not Turing Complete - Magic is all of these, and more.

But if you adore EF, there is nothing preventing you from using it (in Magic).

https://www.youtube.com/watch?v=VwQGK4RD1rI

BTW, Magic is (at least) 2.5 times fasther than Python, and hence Django - Probably much more, in fact probably up to one order of magnitude ...

https://gaiasoul.com/2019/11/02/magic-2-5x-faster-than-pythons-django-and-5-5x-faster-than-phps-laravel/

Creating a .Net Core Web API in 40 Seconds

Nov 06, 2019 · Thomas Hansen

Of course. In fact, I've got a Raspberry Pi at home - I'll probably end up deploying it there, and writing something about it. It'll have Ubuntu though, so the process will be the eaxct same :)

Psst, I'm working with a scheduler. With the DZone moderator's grace, one of my future articles will probably be named "Schedule your C# method to execute next Thursday" ;)

Invoking HTTP REST APIs With a Single Line of C# Code

May 15, 2019 · Thomas Hansen

For those interested, there's a slightly improved version of this class over here, since the class was improved upon after the article was published.

github.com/polterguy/magic/blob/master/modules/magic.http/magic.http.services/HttpClient.cs

If you'd like, you can simply remove the interface implementation, change the class' namespace, and make all public methods static/non-virtual, since there's no "state" in the class, beyond the static state that HttpClient from .Net keeps around ...

Teach Yourself DDD in 5 Minutes

Apr 21, 2019 · Thomas Hansen

Does humor belong in Software Development?

Teach Yourself DDD in 5 Minutes

Apr 07, 2019 · Thomas Hansen

A lot of commenters here have been saying that this is only for creating CRUD apps. I don't want to argue with them, since it's impossible to argue with somebody who have already made up their mind about something, for whatever reasons they have for having done that. However, in case you actually believe them, I just created the following video to prove their arguments wrong ...

https://www.youtube.com/watch?v=Xn459G1WaXc

Teach Yourself DDD in 5 Minutes

Apr 06, 2019 · Thomas Hansen

"The theory of relativity tells us that there is always somebody out there bigger than you. If you bully those smaller than you, those who are bigger than you will bully you" - At which point I have taught a 5 year old child everything he or she needs to know about the Universe, Life and Everything ...

Paradoxically, for reasons I cannot entirely understand myself, this seems to be comment number 42 ...

... but maybe I'll understand it as I grow up ...? :D

Teach Yourself DDD in 5 Minutes

Apr 06, 2019 · Thomas Hansen

Hahahahaha :D

I'd love to point you in the general direction, but unfortunately I heard it on a BBC documentary, so I can't even link to it :)

Teach Yourself DDD in 5 Minutes

Apr 05, 2019 · Thomas Hansen

Believe it or not, but Marx apparently had a wealthy beneficiary, whom he corresponded with, and who sponsored his works. In one of their private letters, Karl literally finishes the letter with that exact sentence ... :D

What can I say? Life imitates art ...? :D

Teach Yourself DDD in 5 Minutes

Apr 05, 2019 · Thomas Hansen

Psst, only way I know to play. Either I play well, or I avoid playin' ... ;)

https://www.youtube.com/watch?v=9nAVSaVJZgU

Teach Yourself DDD in 5 Minutes

Apr 05, 2019 · Thomas Hansen

Thx :)

Teach Yourself DDD in 5 Minutes

Apr 05, 2019 · Thomas Hansen

No! I don't want you to do that. Unfortunately most others would want you to do it, otherwise they won't care. Most people (today) have the attention span of gold fish. Hence, if I can teach them seomthing valuable in 5 minutes, by exaggerating and playing on humour, I'll do it! And I ain't sorry either ... ;)

Teach Yourself DDD in 5 Minutes

Apr 05, 2019 · Thomas Hansen

And thank you for doing that. Unfortunately, too many developers today, require information digestible within 5 minutes. I refer to them as the "McDonalds generation of developers". If I can teach them something valuable (DRY for this article), by making an "interesting read", with a "humorous touch", I'll do it. And I ain't sorry either ... ;)

However, when they're done reading my article, they can move onwards to Greg Young's book about DDD, hopefully "filling in the blanks", I couldn't teach them in 5 minutes. Now hopefully with a motivation to dive deeper into the subject ...

(Greg commented further down, so I chose him as an example, but I could also have used Martin Fowler, etc ...)

Teach Yourself DDD in 5 Minutes

Apr 05, 2019 · Thomas Hansen

Look at the code. It answers that question ;)

Teach Yourself DDD in 5 Minutes

Apr 04, 2019 · Thomas Hansen

I could tell you, but then I'd have to invoice you 100K ;)

Would you prefer Solace, or something else, maybe something custom built ...?

Teach Yourself DDD in 5 Minutes

Apr 04, 2019 · Thomas Hansen

I have to admit, it's like almost impossible to not actually going through the process of downloading more RAM at that site, to the point where I even caught myself staring at the Youtube video at the end in fascination and awe for such a beautiful idea :D

Teach Yourself DDD in 5 Minutes

Apr 04, 2019 · Thomas Hansen

Hahahaha :D

Looks like my kind of guy yup :D

Teach Yourself DDD in 5 Minutes

Apr 04, 2019 · Thomas Hansen

Hahahaha :D

You are right, it does show CRUD and an HTTP REST web API. However, if you look carefully, you'll also notice that I am showing services (separation of business logic and presentation). I am illustrating how it is using Dependency Injection and interfaces to access the business logic layer (service layer). I am also illustrating how I am modeling my database model using classes and relationships between these, never even bothering about the undelaying database implementation at all.

I am also illustrating how the thing is 100% perfectly modularly architected, with zero cross module dependencies. In addition to that everything is super-testable, even the controller endpoints you yourself create, by using SQLite as a "mock database", 100% transparently - Which facilitates for Continous Integration.

All of these are common techniques and ideas when it comes to Domain Driven Design. Of all the ideas presented in Eric Evan's publicly available PDF document about DDD, it implements most of the ideas that are possible to implement in a framework using code ...

... of course the communication parts is difficult to implement for reasons that should be fairly obvious at this point ... ;)

However, even though you are technically right, you're also technically wrong, because you didn't see "in between the CRUD and HTTP REST parts" ...

Teach Yourself DDD in 5 Minutes

Apr 03, 2019 · Thomas Hansen

My next article will be named "HOWTO download DDD in 0.1 seconds" :D

Teach Yourself DDD in 5 Minutes

Apr 03, 2019 · Thomas Hansen

But I am pretty certain there is some kind of "article gains visibility according to most comments" feature on DZone. So feel free to keep on peeing on my article :D

Teach Yourself DDD in 5 Minutes

Apr 03, 2019 · Thomas Hansen

I find it interesting that so many ridicule my article, yet cannot avoid commenting still. Did you have something else to add my friend ...? :D

Psst, you might want to read up on my "Andy Warhol vs. Salvador Dali" comment above ...

Teach Yourself DDD in 5 Minutes

Apr 03, 2019 · Thomas Hansen

And CRUD is 5% of what's illustrated in the article, library, and video ...

Teach Yourself DDD in 5 Minutes

Apr 03, 2019 · Thomas Hansen

Isn't it fascinating to realise that any noob can simply download a 15KB zip file from the internet, to apply something you've spent a decade, reading 100,000+ pages of documentation to teach yourself ...?

When Andy Warhol painted the picture in the article I use (Mao painting), he used to socialise in the same coffee shop as Salvador Dali. He went casually over to Dali and gave him a painting he (Andy) had created. Dali zipped up his zipper, and peed on Andy's paiting, without even standing up from the chair he was sitting in, and not even looking at Andy's art, whom he thought wasn't art, but rather ridiculous Xerox copy based rubbish. Today Andy's art is worth 10x as much as Dali's art at Christies ...

The article was "clickbait" yes. But not in the way you think it was. I was waiting for somebody to comment like you did, to effectively prove me right ...

The paradox is that by "peeing on my code", you've paradoxically probably made it become 10 times as much worth ... ;)

Teach Yourself DDD in 5 Minutes

Apr 03, 2019 · Thomas Hansen

From Evan's book:

1. Institute a process of merging all code and other implementation artifacts frequently, with automated tests to flag fragmentation quickly ==> DONE!

2. Isolate the expression of the domain model and the business logic, and eliminate any dependency on infrastructure, user interface, or even application logic that is not business logic ==> DONE!

3. When a significant process or transformation in the domain is not a natural responsibility of an entity or value object, add an operation to the model as a standalone interface declared as a service ==> DONE!

4. Choose modules that tell the story of the system and contain a cohesive set of concepts ==> DONE!!

Facts are, I could go through every single paragraph in Evan's book, and illustrate exactly where in the code I have implemented every single part of his ideas that are possible to implement, and also how I have provided a framework for others to hook into, to allow for them to continute the process in their own projects.

That you and Francisco chose to focus on the fact of that I (also) happened to have solved the "problems of CRUD", and believe it was the only problem solved, is on your account ...

But you are right, I don't actually "teach DDD". Simply because after starting consuming the ideas manifested into Magic, actually learning it is no longer required, because one ends up with an intuitive approach to it, that allows one to actually do it, without requiring having to "read entire libraries of acronyms" in order to understand it ...

Have a nice day ,)

Teach Yourself DDD in 5 Minutes

Apr 03, 2019 · Thomas Hansen

Everything that's not possible to explain to a child, 5 years of age, in less than 5 minutes, is fundamentally broken. We (developers) have many fancy words and acronyms, created to shelter us, in our white ivory towers of dogmatic logos. In the end, they're just that, dogmatic ivory towers of faulty logos ...

If you can't see the connection between this and DDD, you won't ever understand DDD ...

Teach Yourself DDD in 5 Minutes

Apr 03, 2019 · Thomas Hansen

Then explain it to me please, preferably without pointing at books (or libraries) - At which point you've explained my whole point ... :D

Teach Yourself DDD in 5 Minutes

Apr 03, 2019 · Thomas Hansen

For the record, even though you are 100% correct, DDD is one of those things everybody has heard of, yet few are able to intelligently explain, at least without doing a lot of hand waving, and using a lot of "errh", "duuh", and "kind of" words - Which is a paradox considering one of its primary goals is to simplify "talking about software".

When that's said, "talking about software with 'domain experts'" requires being able to first possess a common language for communicating. The structure of what you call "Magic CRUD", happens to facilitate for this common language "automagically", since it breaks down the different components of a system into understandable constructs, from both the client's perspective, and the developer's perspective.

For example, a client might say "we need an email module". This translates into a folder, with a service, contract, and controller project, inside of the "modules" folder for the developer, which all might start out with the name "magic.email". The client might say "we need to be able to send, read and delete emails". This translates into a "CrudController" and "CrudService" for the developer, overriding the "create" parts, to use an SMTP service, to actually send the email. Etc.

1. Send emails

2. Read emails

3. Poll emails from POP3 account periodically

4. Delete emails, etc ...

All of a sudden the (non-technical) client, and the (uber-technical) software developer, have a common ground, for easily communicate with each other without misunderstanding each other.

Hence, even though I never taught anybody anything about DDD in this article, the "natural side effects" of the article (or the structure the framework provides to be accurate), becomes a process of Domain Driven Design, solving everything required to implement DDD, without anybody even having any ideas what so ever about what DDD actually is ...

Kind of like the way Andy Warhol created "art" using a Xerox copier!

So the joke is still on me ... ;)

Teach Yourself DDD in 5 Minutes

Apr 03, 2019 · Thomas Hansen

Of course :D

Teach Yourself DDD in 5 Minutes

Apr 03, 2019 · Thomas Hansen

Psst, just realised - If you'd like to see some "extreme measures" of private implementation and encapsulating, you'd like to check out the "signals & slots" implementation in the Magic Core project. It allows two modules to communicate without even having to as much as share an interface or POCO type between them.

It allows you to so stuff such as:

_signaler.Signal("foo.bar", new JObject { /* ... data ... */ });

Then catch this in a completely different module using code such as:

[Slot(Name = "foo.bar")]
class FooBar : ISlot
{
public void Signal(JObject input) { /* ... do stuff with input here ... */}
}

When the "signal" is raised in the first piece of code, all "slots" subscribing to the signal with the "foo.bar" name will be evaluated, getting access to the JObject data passed in by the signaler ...

No shared types, not even a shared POCO type, and no exposed interfaces - Zero dependencies between the signaler and the slot ...

So hence the "signaler" and the "slot" doesn't need to know anything about each other, and can be implemented in two completely differen assemblies, assuming they run in the same AppDomain, without a single reference between them in any ways ...

I'll probably write something up about it later ...

Teach Yourself DDD in 5 Minutes

Apr 03, 2019 · Thomas Hansen

It's a painting by Andy Warhol. As I created the YouTube video, I realised I was doing a lot of copy and pasting, and I also realised that even though copy and paste is considered "bad development", I realised this was not "bad development". That painting by Andy Warhol was something he created during his "Xerox copying art period", which made him famous for creating art using a Xerox copier. It was an attempt at being funny on my own account I guess, insinuating "copy and pasting can be art too".

Teach Yourself DDD in 5 Minutes

Apr 03, 2019 · Thomas Hansen

You're right. Things are pretty well encapsulated though I'd say.

Open Source DIY Is Open Source Wrong

Sep 18, 2018 · Andre Lee-Moye

I am the author of Lizzie, which I guess to some extent examplifies your article's main thesis here. However, I authored it such that I would have a (safe) language, where I could safely transmit code over the network, to facilitate for passing code over the network for evaluation on another machine. Out of curiousity, does there exist something similar out there? Or have I fallen into the "not invented here syndrome", or does Lizzie have a place in modern computing ...?

Making Sense of Thread Synchronization in C#

Sep 10, 2018 · Thomas Hansen

"If thread 1 acquires a read lock just before thread 2 tries to acquire a write lock, an exception will get thrown"

There might be issues with this proposal, but in the above scenario, thread 2 will simply have to wait until thread 1 has releases its read lock, and no exceptions will be thrown ...

However, your use case provides an excellent example of why I created this class, since the complexity of multi threading is often daunting and difficult to understand, also for experienced developers. By encapsulating the synchronization mechanisms inside a delegate that hides the complexity, mult threading becomes much more easily consumed, also by those who struggle with understanding its nuances ...

Thank you for your interest and your comment :)

Polymorphism in C# Without Classes

Jul 26, 2018 · Thomas Hansen

NP, glad I could help :)

What Are Microservices? An Introduction to Microservice Architecture

May 30, 2018 · DZone_karap

What did you use to create those diagrams ...?

Misunderstanding OO Programming

May 09, 2018 · Duncan Brown

Well, you're right - But OOP has been taught for a very long time that it's a "silver bullet", and it simply isn't. FP is simple superior to OO, and much more closely resembles the way our mind works, and such creates a more correct mapping between our code, and the actual problems we're trying to solve.

PS!
Yup, it's built in OO, but there's not a single shred of OO in Hyperlambda, which most of its code is created in. And in fact, the reason why it was conceived in C# (OO), was to make sure it was as "compatible as possible" with existing toolchains, and libraries ...

Hint, I should know, I created it ...

Misunderstanding OO Programming

May 09, 2018 · Duncan Brown

Here's what I am using (almost) exclusively these days. 100% FP, and barely contains typing at all ...

Two simple syntactic elements(colons and double space), and I created this with it.

Sorry, I don't know how to say this without being blunt, so I'll have to be blunt about it - OOP suxx ...

Misunderstanding OO Programming

May 09, 2018 · Duncan Brown

There doesn't exist "silver bullets". However, rubber bullets are never the right solution, and such bullets do exist. Say no more ... (OO, coff,coff!)

Misunderstanding OO Programming

May 09, 2018 · Duncan Brown

Thank you Sir!!

Misunderstanding OO Programming

May 09, 2018 · Duncan Brown

"Since when did just learning design patterns become a negative?"

Since it became a requirement. It is the equivalent of having to read the manual when driving your car, in order to find its breaks ...

Unless the language is "self contained" in its feature set, and requires a decade of "advanced experience", it is not good ...

Misunderstanding OO Programming

May 09, 2018 · Duncan Brown

I am sorry for disagreeing with you here, but how much OO experience do you really have? I've got about 20+ years of OO experience, and my conclusion after all those years, is that OO is fundamentally broken!!

To the point where I decided to completely bypass it in this thing.

Classes for one, doe not mimick our reality. Inheritence is close to useless. 23 Design Patterns before you can even refer to yourself as an Architect. Seriously ...?

Creating a Web Operating System in C#

May 05, 2018 · Thomas Hansen

Thx, God bless you too :)

Psst, you can easily develop on Windows, and deply to Linux, on a completely Open Stack on the server side ...

In fact, I use a Mac myself as my development machine, but I test the source download on windows machines before each releae, and I deply the release (binary build) on a Linux server before I publish them ...

Creating a Web Operating System in C#

May 05, 2018 · Thomas Hansen

It runs on Mono/Linux/MySQL/Apache

Mono == MIT licensed for the most parts

Linux == GPL (2 I think?)

MySQL == GPL (3 I think, but is also binary compatible with MariaDB if you don't like Oracle)

There's as far as I know not a single closed source of line that is necessary to execute to run Phosphorus Five ...

Open Source "enough" ...? :)

PS!
I run it myself on an old discarded laptop, which I have converted into a "guerilia Linux server", running Ubuntu Server. There's a script ("install.sh") in the download/releases section which automatically configures everything on a Linux Ubuntu server 100% automatically for you ...

This even installs an SSL certificate (for free), sets up Apache, MySQL, etc, etc, etc ...

In fact, a funny fact is that for the most parts, that ".Net Framework" now arguably runs better on Linux than it does on Windows. Although sadly this is a little known fact. Thx to the Mono project of course ...

Thx for the feedback, and for keeping me on my toes, if I should ever stray away from the Open Sauce path ... ;)

Diverting Blame Effectively in Software Development

Apr 06, 2018 · Duncan Brown

Hehe, reminds me of "the dog ate my homework" :)

At the End of the Day, We Are All (Polyglot) Programmers

Jan 18, 2018 · Tim Spann

It's about time somebody gives software developers a "kick in the nut". Way too much ego, and belief in that we're "Gods" ...!! :P
Thxfor the nice writeup ... :)

How I Created an AngularJS/MySQL TODO App in 0.649 Seconds

Jan 12, 2018 · Thomas Hansen

"And still a security nightmare."

Agree, which is why I didn't build an "ORM" ...

Hint; https://github.com/polterguy/hyper-core#authentication-and-authorisation

And; https://github.com/polterguy/hyper-core#security

How I Created an AngularJS/MySQL TODO App in 0.649 Seconds

Jan 12, 2018 · Thomas Hansen

OK, I see your point.

Yet still, it arguably solves the same problem. Besides, the RPC returns JSON, which (obviously) are JavaScript "objects". And since the acronym of ORM implies "Object Relational (database) Mapping", and JSON definitely are "objects" and MySQL definitely is a "relation database" - It arguably fulfills the criteria, according to its linguistic definition.

So just because you are right, doesn't imply that you're not wrong ... ;)

But of course, according to the traditional interpretation of what "ORM" implies, you *are* correct Sir :)

Psst, https://github.com/polterguy/hyper-core#creating-your-own-extension-methods

How I Created an AngularJS/MySQL TODO App in 0.649 Seconds

Jan 08, 2018 · Thomas Hansen

Do you have a tip for where I can get a (trusted) CDN for version 5.x ...?

How I Created an AngularJS/MySQL TODO App in 0.649 Seconds

Jan 08, 2018 · Thomas Hansen

Hehe, good point :) - I am not really an Angular developer, feel free to create a "patch" (you can edit the files in the "/test/" folder here)

How I Created an AngularJS/MySQL TODO App in 0.649 Seconds

Jan 08, 2018 · Thomas Hansen

For the record, Hyper Core and Hyper IDE has now been released, so the AngularJS template I created for this article, can be reproduced locally, by simply downloading Phosphorus Five. I have also created support for directly linking to code files, such as this example illustrates.

How to Create Reactive Forms in Angular

Jan 07, 2018 · Jordan Baker

Nice writeup, but I think you might benefit from "outsourcing" the viewing of the code, to make the article more easily read. Which you could easily accomplish, byt having a web based IDE, where you allow "guest" accounts access to read the code. Check out an example of how to do that here.

How I Created a Web-Based IDE in 7 Days

Jan 07, 2018 · Thomas Hansen

For those interested, you can check out a tutorial where I make an AngularJS app, with a MySQL backend here - https://gaiasoul.com/2018/01/07/creating-your-first-angularjs-and-mysql-app-video-tutorial/

You can browse the code online here - https://home.gaiasoul.com/hyper-ide?path=/modules/todo/index.html

And test the app here - https://home.gaiasoul.com/modules/todo/index.html

UX, You Only Need One Button

Jan 02, 2018 · Thomas Hansen

Hehe, it actually is a simple menu/navbar thing. Speaking to it is actually optional, since you can also navigate it by simply clicking its items ...

But, point taken ... ;)

PS!
Speech recognition only works in Chrome (for the moment)

UX, You Only Need One Button

Jan 02, 2018 · Thomas Hansen

It starts a voice recognition engine, which you can use to speak natural English to your computer,which again is "translated" into some code snippet, that performs some sort of action :)

In this video, I even create code by using the above construct - https://www.youtube.com/watch?v=I8lhryXiDlk

"My brain may be running slow after my nice, long, Christmas vacation" - Hehe :)

Top 5 Best Open Source JavaScript Chart Libraries

Dec 24, 2017 · Raghuraman Kesavan

ChartJS and Chartist was impressive, especially considering their size. 10KB in total, and simple to use. Thx for the links :)

UX, You Only Need One Button

Dec 21, 2017 · Thomas Hansen

Thx Jordan :)

UX, You Only Need One Button

Nov 08, 2017 · Thomas Hansen

So what's happening with this one, will it be published or not ...? :)

Speech Recognition Software Has Caught Up with the Future

Oct 27, 2017 · N A

Hi, you should check out this thing. Maybe you'll get some ideas :)

https://gaiasoul.com/2017/10/27/watch-me-discuss-my-code-with-my-computer/

Become 10,000 Times More Productive With Intentional Programming

Oct 17, 2017 · Thomas Hansen

Good point, and of course relational data schemas are on my TODO ... ;)

Thx though for a good point :)

Setting Up Your Own Linux/.NET Home Web Server

Aug 25, 2017 · Thomas Hansen

PS, for thos interested, this link leads to my home web server -

Beginning to Doubt Object-Oriented Programming

Jul 22, 2017 · Grzegorz Ziemoński

Thank you, exactly my point, slightly exaggerated possibly. OOP has enjoyed a God like status for almost 50 years. It's not the only paradigmout there. I guess we largely agree ...

Beginning to Doubt Object-Oriented Programming

Jul 21, 2017 · Grzegorz Ziemoński

Facts are, we should put posters warning kids about OOP along the highways. They could say stuff like "This is your brain, this is your brain on OOP" ...

Beginning to Doubt Object-Oriented Programming

Jul 21, 2017 · Grzegorz Ziemoński

I seriously doubt you have more experience in regards to OOP than me. Claiming that I prematurely "jump to conclusions" (your quote) is assumptious at best, ignorant at worst. To believe I am proposing FP too, is also assumptious. OOP has enjoyed a status similar to the Catholic Pope, ever since its mainstream adoption about 10 yearsafter Simula was invented. It has never deserved that position.

I wrote this article, which indirectly sums up my conclusions about OOP - https://msdn.microsoft.com/en-us/magazine/mt795187

My next article was amongst the all time most 5 read articles at MSDN Magazine, so clearly I touched people with it. If you wonder about my "OOP credentials", realize I did more than 10 years ago - http://smartwin.cvs.sourceforge.net/viewvc/smartwin/SmartWin/include/smartwin/widgets/WidgetButton.h?revision=1.29&view=markup


So clearly I "know what I am talking about" when it comes to OOP (the last link demonstrates diamond inheritance, privrat inheritence, and multiple inheritence from template classes)

I also have experience with literally dozens of other OOP languages, such as C#, Java, JavaScript (prototype inheritence), etc - Co clearly I am not "prematurely jumpting to conclusions".

OOP sucks, it's a fact, and I spent 10 years learning OOP, and further 8 more years realising I wasted my years ...

OOP is a problem, this is a solution - https://gaiasoul.com/2017/07/21/hyperlambda-lambda-contracts/

Here's another thing you could only dream of accomplishing in a traditional OOP language - https://gaiasoul.com/2017/07/21/two-really-cool-active-events/

Beginning to Doubt Object-Oriented Programming

Jul 21, 2017 · Grzegorz Ziemoński

Does this imply me too? See my comment above for clarification ...

Beginning to Doubt Object-Oriented Programming

Jul 21, 2017 · Grzegorz Ziemoński

OOP sucks, truly! Big time! Its creation emphasized all problems it was intended to solve, by orders of magnitudes. It's a dead end, with no future, forcing us to classify things into absolutes, which does not in any ways mimick the way things are in real life!

I Wrote My Own Database!

Jun 28, 2017 · Grzegorz Ziemoński

Nice one, I did that once too. Memory based, super fast, based upon "lambda expressions", which to some extent resembles XPath :)

Introducing Micro - A microscopic Ajax and CSS framework

Jun 28, 2017 · Thomas Hansen

Thx guys :)

Pathologies of Unencapsulated Code

Jun 20, 2017 · Grzegorz Ziemoński

The problem with encapsulation seems to be that almost nothing can be safely created such that it doesn't violate the Liskov substitution principle. Hence creating truly Object Oriented Software, becomes that of trying to constantly sqeeze in a square into a round hole - It simply cannot be done.

There exists one solution to the LSP problem though, which is to realise that all objects are in fact fundamentally the same type.

Zen and the vanishing LSP

The Hidden Costs of Slow Websites

Jun 20, 2017 · Sarah Davis

Finally a believer :)

It goes beyond only "websites" though I'd argue, and the same is true for applications, and also web apps. I wrote up (shameless plug) blog about the comparison between P5 and Infragistics, concluding with that the difference in size, could at least in theory, increase load time of a web app, from 1 second to 3 minutes and 40 seconds.

https://gaiasoul.com/2017/06/19/infragistics-ignite-ui-ajax-tree-control-performance-versus-p5/

User has been successfully modified

Failed to modify user

ABOUT US

  • About DZone
  • Send feedback
  • Careers
  • Sitemap

ADVERTISE

  • Advertise with DZone

CONTRIBUTE ON DZONE

  • Article Submission Guidelines
  • Become a Contributor
  • Core Program
  • Visit the Writers' Zone

LEGAL

  • Terms of Service
  • Privacy Policy

CONTACT US

  • 3343 Perimeter Hill Drive
  • Suite 100
  • Nashville, TN 37211
  • support@dzone.com

Let's be friends: