Sunday, August 6, 2017

Why My Next Software Product Will Be Windows VCL Only

I started this blog back in 2009 as I slowly emerged from a severe case of burn-out. From that first day I've been consistently saying I'm working on an update to one of my software products. And I'm still saying that today. I'm like the Rip Van Winkle of Delphi programming. I basically dropped off the face of the Delphi coding world, woke up from an 8 year technology nap, and have been in a learning fog ever since.

I have been procrastinating at every turn, about every tool, and every methodology. The bottom-line is... I can't make a decision. Check out this common theme among some of my posts going back quite some time.

How do you get past the Analysis to Paralysis when working on a new project?
https://softwareengineering.stackexchange.com/questions/155621/

What is The Best Database for Delphi Desktop Applications that Supports Stored Procedures?
https://stackoverflow.com/questions/1619887/

I Took A Little Walk-About - But I'm Back (Shit or get of the pot)
http://capecodgunny.blogspot.com/2011/08/i-took-little-walk-about-but-im-back.html

Last week I heard about Warren Buffett's 25-5 Rule.  I've never heard it put quite that way before. Anyway, it got me to change my attitude about decision making.

For example:

Should the new release of my Zilch software be Windows?
Windows and Mac?
Windows, Mac, iOS, Android?
What about the Web version?

ENOUGH!

I'm going Windows VCL Only! Period. I made the decision and it's final. Making decisions is so liberating.

  • I am the most proficient with Delphi VCL.
  • I have a distribution channel and payment gateway for Windows already in-place. 
  • I have 25 years worth of Windows customers I can market my software upgrade to.
  • I can use the current development tool chain I already have.

2017 is the 25th anniversary of my original product launch. I need to get busy working on the things that matter most and ignoring everything else if I hope to get it released this year.

I don't care if the Warren Buffett story is true or not. It's a good thing. I encourage all of you to have a look at it.

Cheers!

Semper Fi,
Gunny Mike





Saturday, August 5, 2017

Error: Cannot Restore Form State--No TRzRegIniFile Component Specified

It's been a while since I fired up Delphi, about three months. And you know, it's true what they say "If you don't use it you loose it". I love my Raize Components now called Konopka VCL Controls, they make a lot of things very easy. For example, automatically remembering the size and position of form windows. I've used this dozens of times. It's a no-brainer.

So today, I was playing around with the DBGrid, trying different things. I created a new project with a Form and a Data Module. Added a lookup field to the grid. Just having fun and experimenting with stuff. One of the things I wanted to do but haven't got around to yet, was save the column widths of the grid after they've been resized. I find it annoying always having to resize the columns every time a program runs. That will be for another day.

Anyway, I decided I wanted to start by saving the state of the Main form window, just like I've done in the past. Drop a RzRegIniFile component on the Data Module. Drop an RzFormState component on the Main form. Set the RzFormState.RegIniFile property to the DM.RzRegIniFile component. And Voila... Done! Right!

NOT!

I kept getting the following error: "Cannot Restore Form State--No TRzRegIniFile Component Specified".



I'm going back and forth like a madman, checking things on the Data Module and the Main form. I tried dropping and re-adding the components. Nope. I started googling the error... nothing. Then it hits me. It's got to be a timing thing.

Yup! I opened the source file for the project and sure as shit, the Data Module was being created after the Main form.
begin
  Application.Initialize;
  Application.MainFormOnTaskbar := True;
  Application.CreateForm(TForm4, Form4);
  Application.CreateForm(TDataModule5, DataModule5);
  Application.Run;
end.
I moved the creation of the Data Model before the Main form and bingo... works like a champ!
begin
  Application.Initialize;
  Application.MainFormOnTaskbar := True;
  Application.CreateForm(TDataModule5, DataModule5);
  Application.CreateForm(TForm4, Form4);
  Application.Run;
end.
I'm amazed how quickly I lost sight of this little detail. I was only away from Delphi for maybe three months. Gee Whiz.

Enjoy!

Semper Fi,
Gunny Mike

Saturday, May 13, 2017

Program to an Interface and not an Implementation

I have been struggling with trying to understand what it means to "Program to an interface and not an implementation." Nick Hodges said if he could teach new developers one thing it would be "program to an abstraction, not an implementation". This is the same thing. (wayback machine link)

So I asked Hodges to explain this to me. Instead of trying to regurgitate some sort of answer that might come up short of what I was looking for, he sent me a link to a fascinating thread on StackOverflow (https://goo.gl/PNq7bY). This really is a great read. After reading it I was close to understanding but still not getting all of it.

I have recently started reading Head First Design Patterns by Eric Freeman & Elisabeth Robson. This book does an absolutely fantastic job of describing the GoF design Patterns that Uncle Bob so bluntly told me I need to understand. To be quite honest, I never would have bought this book solely based on the cover. (Not buying this book would have been a mistake.)



Amazon: https://goo.gl/MVybeZ

On page 11 of Head First Design Patterns they point out Design Principal #2: "Program to an interface and not an implementation." They do an excellent job of explaining what this means. My ability to understand what they mean... "Not so much". This is even after reading page 11 three times and reading the entire SO link Hodges sent me.

Why am I so dim?
How come everyone else gets it but me?

Ah ha, it hits me.

Each Delphi Unit has an Interface section and an Implementation section. In Delphi these sections are like Public Scratch Paper and Private Scratch Paper. (https://goo.gl/B7U5RR) All Delphi noobs are taught to stick stuff in the Interface section that you want to share with other units and stick stuff in the Implementation section that you don't want other units to have access to.

That is NOT what it means to "Program to an Interface and not an Implementation."

I had to unlearn what I had known about Interface and Implementation because of my 25+ years of Turbo Pascal/Delphi. And relearn that there are different meanings associated with Interface and Implementation. Sometimes it takes the light bulb a long time to go on

My end goal in all of this "new learning" is to understand Dependency Injection and how to put DI to use when I design/redesign software. I'm slowly getting there. Delphi's Interface and Implementation sections have different usage and meaning than the OOP Design Principle: Program to an interface not an implementation.

So, what does it mean to "Program to an interface and not an implementation"?

You have to figure this out on your own. I'm not trying to be a smart ass here. Once you get it, you'll get it. Asking someone for a quick 5 minute explanation won't do it. You'll have to dig and keep trying until it makes sense for you. In learning this concept some people use widgets. Some use sprockets. Some use ducks. I like chess.

Think about the simplest piece in a chess game. The Pawn.

What's the same about every pawn?
What's different about each pawn?
If you forget about color, how many different pawns are there? 8, 1, 3, 4 ?
What about the pawn to the far-left?
What about the pawn to the far-right?
What about the pawn that reaches the last row?
How many different moves does a pawn have?
Do all pawns have the same moves?

Trying to understand what it means to "Program to an interface and not an implementation" requires a different way of thinking.

Here is my completely oversimplified chess example:
+--------------------------------+
| PawnMovement (Interface)       |
+--------------------------------+

+--------------------------------+
| PawnMovementImplementations    |
+--------------------------------+
ForwardOne 
ForwardTwo
AttackLeft
AttackRight
EnPassant

So to me learning how to "Program to an interface and not an implementation" means making sure your pawn has movement not what the pawn's movement is.

Think this:
Pawn1.PawnMovement.ForwardOne
Pawn1.PawnMovement.ForwardTwo
Pawn1.PawnMovement.AttackRight
Pawn1.PawnMovement.EnPassant

Don't Think this:
Pawn1.ForwardOne
Pawn1.ForwardTwo
Pawn1.AttackRight
Pawn1.EnPassant

Enjoy!

Semper Fi,
Gunny Mike

Thursday, April 20, 2017

Gunny Meets Uncle Bob - Part 1

The last few days have been very interesting. It started when my friend Jon Aasenden posted a link to a you tube video called "SOLID Principles of Object Oriented & Agile Design" by some guy named Uncle Bob. This wasn't the first time I heard about Uncle Bob. Nick Hodges made a reference to something called SOLID in his book which is supposedly Uncle Bob's principles of object oriented design.

I bought Nick Hodges book "Coding in Delphi" over two years ago. I actually bought two copies. My first purchase was the printed edition. I went back and purchased the pdf version a couple months later after I decided I didn't want to type the examples if I could cut and paste them.

Anyway, I made it to page 28 and no further. I had a mental block about something and never worked through it. It's been sitting on my bookshelf unopened for over two years. It's amazing how fast time goes by. I have since learned that Nick has two more books. "More Coding in Delphi" and "dependency injection in delphi".

So after watching the Uncle Bob's video I decided to buy three of his books; "Clean Code", "The Clean Coder" and the yet to be released "The Clean Architecture".

I came home from work yesterday and "The Clean Coder" had been delivered. I was so excited. I couldn't wait to read Chapter 1.

BOOM!

I haven't felt this inadequate in a long time. Thank you Robert "Uncle Bob" Martin. In less than twenty pages you humbled this US Marine.

I went on Facebook and whined about how inadequate Martin made me feel. To my surprise a couple of highly respected friends mentioned they too had felt the same way after reading his stuff.  That was a little comforting but I still felt like crap.

According to Martin I'm supposed to give my employer 40 hours a week and then spend another 20 hours a week on my career. Learning, reading, practicing.

I'm also supposed to understand and describe the 24 patterns in the Gang of Four (GOF) book plus have a working knowledge of many of the patterns in the POSA books.

I scrambled around and googled for the 24 GOF patterns. Found a clean, concise 8-10 page pdf. Read it real quick. Check - That's done. I'll do the POSA stuff tomorrow. It's late. I'm tired. I'm going to bed.

Day Two:

I woke up this morning a little early because I had to pee. I came back to bed and tried to fall back to sleep. But I couldn't get Martin and what he said out of my head. I kept thinking, "I haven't got time for all this crap, I need to learn Dependency Injection. That's what started this whole thing anyway."

Then it hit me.

I started thinking about chess, and how Jimmy O'hara used to kick my ass every time we played chess back when we were both twelve years old. That was forty-six years ago. He'd take my queen within the first four to five minutes. Oh did I get pissed when that happened. I now had to play without my strongest piece.

Then I thought. Wow, chess was a really complicated game. It took a long time to learn how to move them 16 different pieces around. Wait a minute there aren't really 16 different pieces there are only 6 different pieces. I spent a lot of time learning how those 6 pieces moved.

Then it dawned on me.

If I want to be good at my craft I have to identify the chess pieces of my craft and learn how to move them. Wait a minute. Didn't Martin just tell me last night that I need to understand the 24 GOF patterns. He did. Aren't those the chess pieces of my craft? They are.

How can I expect to be good at my craft if I only give a casual glance at the chess pieces I need to use in my craft. I can't. Bingo.

Then it hit me again.

What about the POSA books and those designs?

I like to play golf. I started playing golf when I was twelve. Yup forty-six years ago. Learning golf was hard and it took a long time to get good at it and to learn how to use of each club. Hey wait a minute. I see a pattern here. Why can't I treat the patterns in the POSA books like golf clubs. If I want to be good at my craft I have to learn what each club does and how and when to use each one of them.

But wait there more. What about SOLID? Hey Gunny, how do you reconcile SOLID like you did using chess for GOF and golf for POSA?

JJDIDTIEBUCKLE The twelve leadership traits.

I spent twenty years in the Marine Corps. It's all about leadership and leadership traits. I lived, breathed, taught, and honed those twelve traits. I need to do the same thing with SOLID.

This works for me. You need to find a way to make it work for you.

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

This journey I'm taking with Uncle Bob is not in the least a passive journey. If I want to fully embrace my craft (software development) I need to dedicate myself to it the same way I did for chess, golf, and leadership within the Marine Corps.

Time to strap it on.

Enjoy!

Semper Fi,
Gunny Mike








Saturday, March 25, 2017

Google, Mobile, and You. Are You Good?

I put my Delphi development on hold a few months ago so I could work on creating a responsive website for my software. The hardest part for me was trying to find a layout I was happy with. I took a little inspiration from the Embarcadero Communty website. I settled on a Bootstrap 9 X 3 layout. And now it's done and I can move on.

It's only been a couple days but I have already seen a 300% increase in traffic to my website.

Dave Collins from Software Promotions has put together a 5 minute video that talks about Google's big shift toward mobile first indexing. I strongly encourage you to watch this video. Mobile-friendly isn’t necessarily mobile-friendly

I'm just an Independent Software Deveopler like many of you. I felt compelled to share what I have learned over the past three months. We all love Delphi and the opportunities it gives us to create software and apps. You can have the best software or app out there but if people can't find it, it's not a good thing. Don't let this happen.

I look forward to getting back at it. It feels good to know thay my development efforts will have a fighting chance.

Semper Fi,
Gunny Mike
zilchworks.com


Tuesday, December 6, 2016

EMBT Webinar: Overcoming Monetization Challenges Using Licensing

Embarcadero Technologies is teaming up with the Association of Software Professionals to bring you Jessica Dewell of Red Direction.

Calling all owners, founders, CEOs, and all leaders whose company has products for sale right now! You will receive actionable and immediately useful information to review, evaluate, and evolve your product catalog to stay competitive…and profitable.

When you finally figured out how to make your products fly into the hands of customers that want it … something changed, and what worked before no longer does. A very important, and often overlooked place to start is with the product catalog. (More)

Sign Up Today

Embarcadero Technologies Webinar:
Wed, Dec 14, 2016 9:30 AM - 10:30 AM PST
Wed, Dec 14, 2016 2:30 PM - 3:30 PM PST
Wed, Dec 14, 2016 5:30 PM - 6:30 PM PST?

Enjoy,
Gunny Mike

Friday, August 12, 2016

How to use the SET LOG MESSAGE Feature Within ElevateDB

The more I use ElevateDB the more impressed I get with this product. Last week I visited the ElevateDB support forum, most likely related to a syntax issue I was trying to resolve. As I read through some of the posts written by other users, I came across a very curious and interesting tidbit of information. A user mentioned the following:
"If you add a log message before the OPEN Crsr, you will see that the function is executed for each row."
This certainly got my investigative juices flowing. I had to find out what he meant. He was referring to the SET LOG MESSAGE statement. There were no pictures to show how to implement this log message feature so I began digging around and figured out how this works.

ElevateDB comes with it's own GUI called ElevateDB Manager. It's similar to the SQL Server Management Studio (SSMS) Microsoft distributes.

Here is a screenshot of a New.SQL script inside ElevateDB Manager


The SQL script is a simple loop from 1 to 100 that displays a log message each time X is a multiple of 7.



If you execute this script it tells you that "The script was executed successfully in 0 seconds". But where are the log messages?

You have to turn them on.



With the Explorer > Log Messages visible you see all the SET LOG MESSAGE statements. The log messages continue to accumulate each time you execute a script. There are two undocumented ventures available within the Log Messages pane: Save and Clear.

Simply right click anywhere within the log message pane you have an option to either Save or Clear the log messages.

I love the SET LOG MESSAGE feature and use it all the time. I find it extremely helpful and I hope you do as well.

Enjoy
Semper Fi
Gunny Mike

Sunday, April 24, 2016

A Better Way to Present and Organize Error Messages in Your Delphi Applications

I'm in the process of totally redesigning an application I wrote 25 years ago. Today, I decided to look for a better way to present error messages to my customers. In the past I simply littered my code with bunch of technical speak ShowMessage('bla bla bla technical speak bla bla bla'); code fragments.

With the help of Google, it didn't take long to find out that the best approach is to use "Apologetic" language in error messages. This has a positive effect on your customers.

http://ux.stackexchange.com/questions/31359/should-error-messages-apologize
http://www.faqoverflow.com/ux/31359.html
http://freshsparks.com/user-experience-tips-best-error-messages/

I've never liked the idea that the standard ShowMessage gets positioned centered on the screen. I'd rather have a messaged display centered on the window where the error occurs. I also don't want my error messages scattered all over the place. So, I set out to do two things;
  1. Display error messages that are centered on the form where the error occurs
  2. Centralize all the error messages in one place
I created a separate unit for the express purpose of managing and displaying error messages:



This makes it very easy to keep track of all the error messages. It also lets me easily create similar but slightly different error messages for any given situation. I can also group related error messages by using a simple number scheme.

I'm a big fan of code completion Ctrl+Space. When I need to include an error message I simply type zmsg Ctrl+Space and up pops the code completion window with all the available error messages that I can choose from.

zmsg Code Completion

Enjoy,
Semper Fi
Gunny Mike

P.S. As far as using "we" inside the error messages. I asked my wife if she was okay with an application giving this type of feedback and she said it was fine with her.

Sunday, February 21, 2016

Real World Justification for Purchasing Component Source Code

I'm working on a database project using Delphi 10S Update 1. The database I'm using is ElevateDB, which is written with Delphi. I licensed the ElevateDB VCL Standard version without source code back in 2011 and maintain my annual subscription. I'm very happy with this product.

I ran into an issue where inside the IDE both the 32-bit and 64-bit platforms display data in a grid when all the components are connected and active. However, when I run the application the 32-bit version works great but the 64-bit version gives me an Access Violation.

I read that the initial Delphi 10S had a problem with the 64-bit compiler. I figured that since I upgraded to Delphi 10S Update 1, I didn't have an issue with the 64-bit version of the compiler.

What I failed to realize and only realized after three or four days of frantic postings on the ElevateDB support form, was I was using compiled DCU's. These DCU's, both 32-bit and 64-bit versions, were compiled using the initial Delphi 10S release. Therefore, the 64-bit DCU's were built with the initial flawed Delphi 10S 64-bit compiler.

Shame on me for not understanding and realizing this in the first place. If I had, I would not have acted the way I did.

This brings me to the topic of this blog post. If I had purchased the source code version of these components I could have simply done a build all and the problem would have been solved. I don't remember my reason for not purchasing the source code version. Perhaps it was the added expense. Perhaps it was my thinking "I'm never going to monkey with the code and didn't need it".

The thought never entered my mind that I could wind up with flawed DCU's because they were built with a flawed Delphi compiler.

Lesson Learned!

Semper Fi,

Gunny Mike

Wednesday, February 3, 2016

Poll: What type of Delphi shop are you?

Back in November I conducted a poll to find out what kind of Delphi shop people belonged to. From these results 70% of the Delphi shops have 5 or less employees.

Here are the results:

Poll Results

Here is the link if you'd like to cast your vote.

Enjoy - Semper Fi
Gunny Mike

Saturday, January 30, 2016

A few minor "out of the box" tweaks for Delphi 10 Seattle

I recently upgraded to Delphi 10 Seattle Update 1. The first thing I noticed when I fired up the IDE was the font size of the Object Inspector and Tool Palette looked oddly larger. Then I remembered I had tweaked these settings a while ago when I first installed Delphi 10 Seattle. Of course I couldn't remember how I did this but I did remember there was a discussion about it somewhere.

The "out of the box" font setting for Delphi 10 Seattle is Segoe UI with a font size of 10. I prefer a font size of 9. Embarcadero has a nice wiki on how to change the initial settings.

http://docwiki.embarcadero.com/RADStudio/Seattle/en/System_Registry_Keys_for_IDE_Visual_Settings

I made one minor adjustment to EMBT's recommended settings:
Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Embarcadero\BDS\17.0\ModernTheme]
"FontName"="Segoe UI"
"FontSize"=dword:00000009
"MainToolBarColor"="clGradientActiveCaption"
The only other tweak I made was to the editor font. I prefer "Consolas" mainly because it formats zeros with a slash which makes them stand out from the letter "O". The editor font is located here:

Tools > Options > Editor Options > Display

Share your "out of the box" tweaks for Delphi 10 Seattle in the comments.

Enjoy - Semper Fi
Gunny Mike

Wednesday, October 14, 2015

Create Professional Installs for Mac OS X

I'm just getting started with learning cross-application development. One of the many issues that's crossed my mind has been how do I get the Mac OS X version of my software installed on a customers machine.

Well that question was answered yesterday during the "Prototyping an Object Pascal Code Editor with FireMonkey in Delphi for Windows and OSX" object pascal CodeRageX session.




Eli M. from Peacekeeper Enterprises, LLC presented a slide for a product that lets you create installs for Mac OS X. The product is called Packages and can be found at the below url:
http://s.sudre.free.fr/Software/Packages/about.html

I have not tried Packages yet. However, it appears similar to the Inno Setup tool for Windows.
http://www.jrsoftware.org/isinfo.php

Enjoy - Semper Fi,
Gunny Mike

Monday, September 28, 2015

FireMonkey Under the Hood: How FireMonkey Does What It Does

Here are two great videos from ITDevCon 2012 by Ray Konopka that talk about how FireMonkey does what it does. Ray gives an overview of the high-level differences between VCL and FMX. In part 2 he shows how to create custom FMX controls.

I love the way Ray gets frustrated. He's just like us.

Creating Custom FireMonkey Controls Part 1
https://www.youtube.com/watch?v=m0NeWCmKAnU

Creating Custom FireMonkey Controls Part 2
https://www.youtube.com/watch?v=ufCKmYAxyCA 

Update: 10/03/2015
I spoke with Ray and he gave me the link so we can download the source code he used in the demo. Thanks Ray!
http://www.raize.com/Sessions/CustomFMXControls.zip

Enjoy - Semper Fi
Gunny Mike

Sunday, September 27, 2015

Blaise Pascal Magazine: Complete Article Index

I subscribed to Blaise Pascal Magazine last year. I also purchased the complete back issue library which contains all previous issues of the magazine. Unfortunately the index that came with the Lib Stick didn't work. So I made my own index as a quick reference to help me find the articles I'm interested in.

Download Excel File

ArticleAuthorIssuePageTypeYear
Delphi 2007 HandbookFrans Doove14Book Review2008
Delphi Win 32 / .NET Component DevelopmentFrans Doove14Book Review2008
Representing graphics for math functionsPeter Bijlsma16Article2008
Client Dataset ToolkitDetlef Overbeek18Article2008
Website name checkingHenk Schreij19Article2008
Database normalisationHerman Peeren111Article2008
Delphi 2007 and VCL Component BuildingBob Swart113Article2008
WallpaperDetlef Overbeek116Article2008
Coding for two or more typesHenk Schreij117Article2008
Recipe for creating a cookbookTim Opsteeg121Article2008
Exploring Rave ReportsRik Smit125Article2008
Drawing on a changing backgroundDavid Dirkse133Article2008
Mini application: Opening filesDetlef Overbeek135Article2008
Rotating imagesDetlef Overbeek136Article2008
Delphi for PHP .2 new versionHerman Peeren23Article2008
Delphi 7 for Win 32 Development EssentialsFrans Doove26Book Review2008
Essential PascalFrans Doove26Book Review2008
Applied Mathematics for Database ProfessionalsFrans Doove27Book Review2008
Illustrated C# 2008Frans Doove27Book Review2008
Efficient Pascal – For-loopsHallvard Vassbotn29Article2008
Hack #1: Write access to a read-only propertyHallvard Vassbotn211Article2008
Resizing BitmapsDavid Dirkse212Article2008
Making right-justified EditsHenk Schreij214Article2008
Delphi 2007 VCL Component Building - IIBob Swart216Article2008
ClientDataset filteringMartin De Bont220Article2008
Binary HeapJulian Bucknall221Article2008
Intraweb and AJAXBob Swart225Article2008
Solving unknown variablesPeter Bijlsma228Article2008
Obfuscator?Rob van den Bogert230Article2008
Restricting Edits to numbersHenk Schreij232Article2008
Monitor aspectsJeremy North233Article2008
Euro symbol generation with the Alt keyHenk Schreij238Article2008
VCL Ribbon controlsJeremy North33Article2008
The Tomes of Delphi: Algorithms and Data StructuresFrans Doove35Book Review2008
Advantage Database Server, A Developer's GuideFrans Doove35Book Review2008
Combining visual components in an objectWim Zandt36Article2008
A simple component for color selectionDavid Dirkse39Article2008
Introduction to EnumeratorsPrimož Gabrijelcic310Article2008
Images in a DbGridHenk Schreij312Article2008
Change indication in a multiuser systemHenk Schreij315Article2008
Curve Fitting made easyPeter Bijlsma316Article2008
Advantage Database Server 9Rob van den Bogert319Article2008
VCL Property EditorsBob Swart321Article2008
Hack#2: Access to protected methodsHallvard Vassbotn326Article2008
Hack#1 updateHallvard Vassbotn327Article2008
Delphi Stream ClassesMarco Cantù328Article2008
TExpandButtonJeremy North330Article2008
Extending streamsJulian Bucknall332Article2008
Service Oriented ArchitectureFikret Hasovic336Article2008
Advanced EnumeratorsPrimož Gabrijelcic44Article2008
Text encryptionDavid Dirkse47Article2008
First In First OutFrank Dubbeld48Article2008
Delphi and the KeyboardDavid Dirkse49Article2008
RichEdit reportsHenk Schreij411Article2008
BookmarkStrHenk Schreij415Article2008
Continuation Curve Fitting made easyPeter Bijlsma417Article2008
Delphi 2009, Development EssentialsFrans Doove420Book Review2008
Delphi 2009 Language EnhancementsBob Swart421Article2008
Hacks3-Access to private fieldsHallvard Vassbotn426Article2008
Creating TView objectJeremy North427Article2008
Delphi Memory StreamsMarco Cantù430Article2008
SOA part twoFikret Hasovic433Article2008
Delphi 2009 HandbookFrans Doove54Book Review2009
Delphi 2009 Development EssentialsFrans Doove54Book Review2009
Specifying more than one shortcut keyHenk Schreij56Article2009
Solution for slow scrolling in DbGridsHenk Schreij57Article2009
The Xbitmap componentDavid Dirkse59Article2009
Painting framesDavid Dirkse512Article2009
Creating Stereographic ImagesPeter Bijlsma513Article2009
Dialogue boxesAdrian Kummerlaender515Article2009
The “Oracle” of DelphiThomas Pfister516Article2009
Advanced EnumeratorsPrimož Gabrijelcic519Article2009
Using TReader en TWriterMarco Cantù522Article2009
ASP.NET Web Services with Delphi Prism 2009Bob Swart524Article2009
Ceating a progress barJeremy North530Article2009
SOA part threeFikret Hasovic533Article2009
An Advantage for Delphi DevelopersCary Jensen65Article2009
Delphi RoadmapMarco Cantù68Article2009
A Twitter REST Client in DelphiMarco Cantù611Article2009
Resolving in “kbmMW”Fikret Hasovic622Article2009
JSDialog PackJeremy North631Article2009
Visual FormsJeremy North633Article2009
RemObjects Hydra: Win32 and .NET PluginsBob Swart636Article2009
Controlling the parallel portThiago Batista Limeira651Article2009
The Xbitmap class (part 2) Lines and EllipsesDavid Dirkse696Article2009
The Xbitmap class (part 3) PolygonsDavid Dirkse713Article2009
FastReport, A report generator for Delphi and .NETMarco Roessen718Article2009
When as var, const, out: or not to declareHenk Schreij724Article2009
Using Colours in DBGridHenk Schreij725Article2009
Writing Delphi Components: an IntroductionMarco Cantù727Article2009
Windows Communication Foundation with Delphi PrismBob Swart730Article2009
Datastore metadataFikret Hasovic734Article2009
using the Alt KeyFrans Dubbeid738Article2009
Delphi 2010 – what a feeling! GesturesBob Swart87Article2009
CountersDavid Dirkse811Article2009
Virus in Delphi?Nick Hodges814Article2009
Dezign for databasesMarco Roessen816Article2009
Customizing the T-Field data displayHenk Schreij818Article2009
Using Free Pascal and Lazarus to create applications for OSXJeremy North820Article2009
Writing Delphi Components IIMarco Cantù822Article2009
My Top Five Delphi 2010 New FeaturesPawel Glowacki824Article2009
Fast Graphic deformation by using ScanlinesPeter Bijlsma828Article2009
Wide Information Bus (Introduction)Fikret Hasovic833Article2009
Freehand Drawing (Introduction)David Dirkse836Article2009
The 3D spheres generatorDavid Dirkse95Article2009
What is kbmMW?Benno Evers97Article2009
Delphi 2010 Feature Highlight - Debugger VisualizersJeremy North912Article2009
Introduction to multithreadingPrimož Gabrijelcic918Article2009
Writing Delphi Components IIIMarco Cantù921Article2009
Talking DelphiHenk Schreij925Article2009
LCD Interfacing: Driving a HD44780 LCD in DelphiThiago Batista Limeira928Article2009
Exploring the inplace editing capabilities of TAdvStringGridBruno Fierens934Article2009
Remembering inputHenk Schreij106Article2010
Rotating photo cubePeter Bijlsma107Article2010
Non overlapping rectanglesDavid Dirkse1011Article2010
The Wide Information Bus part 2Fikret Hasovic1012Article2010
Library UnitHenk Schreij1016Article2010
Delphi Component writing part 4Marco Cantù1020Article2010
Delphi 2010 Delayed Dynamic Link LibrariesBob Swart1023Article2010
Four Ways to Create a ThreadPrimož Gabrijelcic1025Article2010
Delphi Advanced Tools:Michael Rozlog1030Article2010
DelphiControllerAnton Vogelaar1033Article2010
TWebUpdate & UpdateBuilderBruno Fierens1034Article2010
Debugger Visualizers Part 2Jeremy North1036Article2010
Synchronisation in a multithreaded environmentPrimož Gabrijelcic115Article2010
PacMan in Delphi/Lazarus Algorithm jungle - or how to get caughtJean Pierre Hoefnagel118Article2010
Moving from the BDE to ADS he End of the BDE?Bob Swart1111Article2010
Putting photographs on the internet A program using Indy FtpHenk Schreij1116Article2010
Shrinking of JPEGs Not small enough?Henk Schreij1120Article2010
An Introduction to theGoogle Docs API with Delphi Googling magic...Marco Cantù1122Article2010
Using TMS Poly List ControlsBruno Fierens1124Article2010
CodeHealer 2.6: fantastic toolkit or healer?Rik Smit1128Article2010
Drawing regular Polygons Make it look like a starDavid Dirkse1131Article2010
Database Workbench, productivity tool A fantastic ToolMiguel van de Laar1134Article2010
Programming FrogsDavid Dirkse1135Article2010
Introducing the Open Tools APIJeremy North1137Article2010
Design patterns Starting a web series of basic patternsHerman Peeren1139Article2010
Electronics Delphi Controller and Delphi Developer boardAnton Vogelaar125Article2010
RAD Studio XE PreviewDetlef Overbeek127Article2010
SQL produced by the ClientDataSetHenk Schreij1212Article2010
Introducing GoogleDocsApi_SecondPartMarco Cantù1216Article2010
The use of kbmMW components in a server applicationBenno Evers1218Article2010
Inter Process CommunicationPrimož Gabrijelcic1224Article2010
Peg Solitaire - a single player puzzleDavid Dirkse1227Article2010
Trans-continental travel using the great circlePeter Bijlsma1231Article2010
Creating gateways and other advanced topicsFikret Hasovic1234Article2010
Creating Office 2010 style VCL applications with TMS componentsBruno Fierens1237Article2010
Mini Course SQLMiguel van de Laar1310Article2010
Delphi JSON ViewerPawel Glowacki1313Article2010
Is Lazarus ready for writing commercial applications ?Zeljan1316Article2010
NexusDB exceptionaly good, a real surprise...Erwin Mouthaan1322Article2010
The TMS DataModelerBruno Fierens1327Article2010
Introduction to Databases Part 1Cary Jensen1331Article2010
First Look at Advantage Database Server® 10Cary Jensen1335Article2010
Real-time data collectionAnton Vogelaar1339Article2010
About Object oriented databasesDetlef Overbeek1345Article2010
Fastreport, whats up?Detlef Overbeek1352Article2010
Using ADS with Delphi Prism and ASP.NETBob Swart1359Article2010
A datawarehouse example using kbmMWKim Madsen1366Article2010
Multiplatform Windows CEJoost van der Sluis1373Article2010
Five Considerations for Choosing an Effective SQL Development ToolScott Walz1381Article2010
Pascal’s triangle byDetlef Overbeek148Article2010
Create an Index of your (backup) CD's/DVD's byPeter Bijlsma1410Article2010
Debugging multithreaded applications byPrimož Gabrijelcic1415Article2010
Using Amazon Simple Storage Service (Amazon S3) from DelphiMarco Cantù1419Article2010
A small spamming machine byDetlef Overbeek1422Article2010
Creating a Webserver in 5 minutes using kbmMW! byKim Madsen1424Article2010
Gadgets in your Delphi Windows application byHenk Schreij1428Article2010
Open Tools API (OTA) byJeremy North1430Article2010
Exploring the Async capabilities of TMS IntraWeb gridsBruno Fierens1437Article2010
Delphi XE Starter edition reviewedHoward Page-Clark157Article2011
Delphi XE Starter try: a littel MailserverJim Duff1513Article2011
ClientDataset: what to do if you dont have it?Detlef Overbeek1521Article2011
Introduction to Databases Part 2: Common Database ObjectsCary Jensen1528Article2011
Advantage Database Server and Delphi XE Starter EditionHoward Page-Clark1531Article2011
Moving /adding your components into the Delphi Starter EditionRik Smit1535Article2011
Delphi and UnicodePeter Prisman168Article2011
Anything to celebrate?Peter Bijlsma1610Article2011
The Xfont projectDavid Dirkse1612Article2011
Learning to use FastReport 4 for VCL, Part 1Sergey Lyubeznyy1619Article2011
Introduction to 64 bits on WindowsAlexander Alexeev1628Article2011
Creating iPhone/iPod/iPad web applications with Delphi & TMS controlsBruno Fierens1633Article2011
Introduction to Databases Part 3: TDataSetCary Jensen1639Article2011
64-bit Delphi programs are on the wayPrimož Gabrijelcic1643Article2011
Pascal Programing in the Android OSFelipe Monteiro de Cavalho1646Article2011
FieldByName alternativesHenk Schreij1654Article2011
The FlexCel components in actionSiegfried Zuhr1657Article2011
Writing new components in LazarusHoward Page-Clark174Article2011
Theme: Using Amazon S3 from Delphi (Part II)Marco Cantù1712Article2011
The calculation of expressions with complex numbers and/or three-dimensional vectorsAnne Meijer1717Article2011
Waiting for x64: WOW64Alexander Alexeev1721Article2011
Learning to use FastReport 4 for VCL, Part 2Sergey Lyubeznyy1724Article2011
Pascal's Triangle revisitedPaul Gellings1729Article2011
Introduction to Test-Driven-Development (TDD) in DelphiAlexander Alexeev1731Article2011
Theme: DataSnap and Android (Part I)Daniele Teti1738Article2011
Financial functions in DelphiPeter Bijlsma1743Article2011
Magic-Button Anti-PatternAlexander Alexeev1745Article2011
Tiles everywhere: introduction to TAdvSmoothTileListBruno Fierens1748Article2011
Introduction to Databases part 4: TDataSetCary Jensen1753Article2011
Writing New Components in Lazarus, Part 2Howard Page-Clark186Article2011
Delphi XE2 is the future - theme XE2Fikret Hasovic1813Article2011
Cylindrical anamorphosisPeter Bijlsma1817Article2011
Web Service Toolkit as a rich type framework for Plug-in developmentInoussa Ouedraogo1821Article2011
Polygon colouring and area calculationDavid Dirkse1824Article2011
Creating a Database program from scratch - 1Detlef Overbeek1829Article2011
An Android client for a DataSnap Server – Part 2Daniele Teti1834Article2011
Anti-freeze for the VCLAlexander Alexeev1839Article2011
Delphi XE2 New Features - theme XE2Bob Swart1846Article2011
Learning to use FastReport 4 for VCL - Part 3Sergey Lyubeznyy1853Article2011
Creating 64-bit applications with Delphi XE2 - theme XE2Jeremy North1864Article2011
kbmSQL – Structured Query Language for your memory tableKim Madsen1872Article2011
High Level MultithreadingPrimož Gabrijelcic1876Article2011
TMS Scripter Studio ProBruno Fierens1881Article2011
FreePascal vectorialFelipe Monteiro de Cavalho1890Article2011
The tale of the NigthtingaleDetlef Overbeek1896Article2011
Using the Advantage Database Client EngineMichael Van Canneyt18101Article2011
Introduction to Databases part 5: Configuring OLE DB Providers and ODBC DriversCary Jensen18107Article2011
Delphi XE2 LiveBinding - theme XE2Bob Swart18113Article2011
DataSnap connectivity for iOS using Delphi XE2 and FireMonkeyAnders Ohlsson196Article2011
Creating a simple webserver in LazarusMichael Van Canneyt1916Article2011
Using Amazon S3 in Delphi XE2Marco Cantù1921Article2011
Creating a Database program from scratch - 2Detlef Overbeek1929Article2011
Writing New Components in Lazarus, Part 4Howard Page-Clark1937Article2011
TMS MultiTouch SDKBruno Fierens1946Article2011
FireMonkey Containers and FramesBob Swart1953Article2011
Introduction to Databases Part 6: TClientDataSetCary Jensen1956Article2011
The new Lazarus for AndroidFelipe Monteiro de Carvalho204Article2011
Q&A Special Hint CueBannerHenk Schreij2014Article2011
The XFont ClassDavid Dirkse2015Article2011
3D geometry developmentBJ Rao2020Article2011
Q&A Determine the latitude and longitude of an addressHenk Schreij2023Article2011
Writing New Components in Lazarus, Part 4Howard Page-Clark2024Article2011
Creating a Database program from scratch - 3Detlef Overbeek2029Article2011
Introduction to Databases Part 7: dbExpressCary Jensen2039Article2011
Porting my Amazon S3 client to FireMonkeyMarco Cantù2045Article2011
Writing a component for iOS using Delphi XE2 & FireMonkeyAnders Ohlsson2049Article2011
TMS Instrumentation Workshop for FireMonkeyBruno Fierens2051Article2011
kbmMW Remote DesktopKim Madsen2055Article2011
Telnet in PascalFelipe Monteiro de Carvalho215Article2012
How to show formatted HTML text? And how to print?Henk Schreij2112Article2012
Developing an Outlook Social ProviderAndrey Terekhov2113Article2012
How to use the Format function?Henk Schreij2118Article2012
Creating a Delphi database application for Mac OS XTim Opsteeg2119Article2012
Working natively with ZIP archives in Windows using zipfldr.dllViacheslav Ryabinin2123Article2012
Using AnyDac in DelphiMichael Van Canneyt2132Article2012
VCL Custom Styles – Part 1Jeremy North2137Article2012
Introduction to Databases Part 8: dbExpress (continued)Cary Jensen2143Article2012
Introduction to DebuggingPrimož Gabrijelcic2150Article2012
Kinect or Xtion? GeNui !Simon Stuart2156Article2012
DLL Hell, part 1: DLL redirectionAlexander Alexeev226Article2012
Pump some Oxygene into your Android device with Oxygene for JavaBrian Long228Article2012
AnyDAC macros and scriptingMichael Van Canneyt2219Article2012
VCL Custom Styles – Part 2Jeremy North2224Article2012
Creating a Database program from scratch - 4Detlef Overbeek2230Article2012
One of the hotest topics: XML and lately JSON...Fikret Hasovic2234Article2012
Advanced debugging - Part 2Primož Gabrijelcic2239Article2012
Object-Relational Mapping with TMS AureliusWagner Landgraf2243Article2012
Using Excel functions in DelphiNikolay Bilfeld2249Article2012
Unit testing and ’TestGrip’Marco Geuze2250Article2012
How to create a simple About screen? Questions and AnswersHenk Schreij2259Article2012
Writing Cross-Platform CodeAlexander Alexeev238Article2012
Solving equations using Regula FalsiPeter Bijlsma2314Article2012
Data-Aware FireMonkey Controls using LiveBindingsCary Jensen2319Article2012
Advanced debugging Tips and TricksPrimož Gabrijelcic2326Article2012
Extending TListBoxItem to customize list box behaviourJeremy North2329Article2012
Pascal for InternetPrimož Gabrijelcic2334Article2012
Pascal scores high notesSiegfried Zuhr2339Article2012
Introducing TTMSFMXGridBruno Fierens2343Article2012
Delphi XE2, iOS and SQLiteBob Swart2349Article2012
Meaningful colours or is it all gray?David Dirkse2352Article2012
How to develop n-tier applications for iOS using kbmMWRoger Nyberg2355Article2012
Interview with Kim MadsenDetlef Overbeek245Article2012
Sending mails using LazarusMichael Van Canneyt2410Article2012
Interview with Dmitry ArefievDetlef Overbeek2419Article2012
Smart Mobile StudioJørn E. Angeltveit2429Article2012
Interview with Marco CantuDetlef Overbeek2433Article2012
FireMonkey in Delphi XE3: FM2Marco Cantù2436Article2012
HTML 5Bob Swart2449Article2012
Interview with Michael RozlogDetlef Overbeek2452Article2012
XE3 Style DesignerJeremy North2456Article2012
Burgler detection using LazarusMichael Van Canneyt2462Article2012
Supporting new android features in old android versions with OxygeneBrian Long2468Article2012
Delphi XE3 Helper TypesBob Swart2476Article2012
Interview with Marc HoffmanDetlef Overbeek2479Article2012
Introduction to Databases Part 9: Overview of DataSnapCary Jensen2483Article2012
Software taxes - storageAlexander Alexeev2487Article2012
Interview with David I. (Intersimone)Detlef Overbeek2496Article2012
The Delphi HistoryDetlef Overbeek24101Article2012
From Delphi to the cloudBruno Fierens24106Article2012
Interview with Bruno FierensDetlef Overbeek24111Article2012
kbmMW as a RTMP media serverKim Madsen24114Article2012
Lazarus and dabatasesMichael Van Canneyt24117Article2012
Match5, a self learning board gameDavid Dirkse2511Article2012
Programming in Smart: Application DesignPrimož Gabrijelcic2519Article2012
TMS FlexCel for VCL and FireMonkeyAdrian Gallero2526Article2012
Delphi IDE TipsBrian Long2531Article2012
DataSnap: DBX vs. RESTBob Swart2540Article2012
Crowd FundingBJ.Rao2543Article2012
Displaying video files using Free Pascal and LazarusMichael Van Canneyt2552Article2012
High performance virtual filesystems with kbmMWKim Madsen2558Article2012
Introduction to Databases Part 10: IP-Based DataSnapCary Jensen267Article2012
How to prune a treeDavid Dirkse2616Article2012
How to display a YouTube clip?Henk Schreij2622Article2012
Programming in Smart: Supporting Multiple ResolutionsPrimož Gabrijelcic2632Article2012
HTML5 Builder DataSnap ClientsBob Swart2636Article2012
Object serialization using kbmMWKim Madsen2652Article2012
Introduction to thread programming in LazarusMichael Van Canneyt274Article2013
Introduction to Databases Part 11: DataSnap Filters and SecurityCary Jensen2713Article2013
Electronic document processing tools for Delphi made by GnosticeGrish Patil2723Article2013
Use of the "absolute" function abs(..)David Dirkse2736Article2013
Development for lazarusJoost van der Sluis2741Article2013
What is polymorphism?Vsevolod Leonov2748Article2013
Creating and using kbmMW as an Ajax back-end serverBenno Evers2752Article2013
NEW AND ENHANCED FEATURES IN DELPHI XE4Editor284Article2013
Alternative datastreams (ADS) (better inifile)Jean Pierre Hoefnagel2814Article2013
First Look at FireDACCary Jensen2816Article2013
Writing UI-Independent Code with Anonymous MethodsMarco Cantù2818Article2013
Introduction to Databases Part 12: A DataSnap ClientCary Jensen2823Article2013
Programming in Smart: RefactoringPrimož Gabrijelcic2834Article2013
Development for lazarus part twoJoost van der Sluis2842Article2013
Delphi XE4 iOS DataSnap ClientsBob Swart2852Article2013
Intro to kbmMW connectivity package 'Spider'Fikret Hasovic2857Article2013
Polymorphism in practiceAlexander Alexeev294Article2013
The Raspberry Pi, Pi Vision and Lazarus/FPCBJ Rao2914Article2013
FPC Hackathon 2013Michael Van Canneyt2922Article2013
UniDAC — unique components for DB application development for iOSBoris Matkov2925Article2013
1. Pascal Fundamentals: TActionlist, TImagelist and Image editorMichael Van Canneyt2931Article2013
2. Pascal Fundamentals: How long is a pice of string: Short strings and Ansi stringsHoward Page-Clark2937Article2013
Smart Mobile Studio - Multiple categoriesPrimož Gabrijelcic2941Article2013
Developing a virtual worldCary Jensen2945Article2013
The TMS iCLBy Bruno Fierens2951Article2013
Serialization using kbmMWFikret Hasovic2955Article2013
Creating an IOS applicationJeremy North304Article2013
Introduction Database Development Part 13: Connecting to Data with FireDacCary Jensen3018Article2013
Pascal Fundamentals: Understanding components Part 3: The TListBox componentHoward Page-Clark3028Article2013
Smart Mobile StudioJørn Einar Angeltveit3041Article2013
Programming with the leap motionMichael Van Canneyt3047Article2013
Lazarus Closed Source PackagesMattias Gaertner3056Article2013
Support for Word and LibreOffice Text Documents - FPVectorialFelipe Monteiro de Carvalho3060Article2013
Delphi XE5 and FireMonkey for AndroidBob Swart3069Article2013
Sciencepalooza Fact: Man causes the earth heatingYuri Matteman3074Article2013
The kbmMW authorization managerKim Madsen3075Article2013
Designing an API: common mistakesAlexander Alexeev31/328Article2013
Newest Leap developmentsMichael Van Canneyt31/3221Article2013
3D PrintingBj Rao31/3226Article2013
Kinect ?!Michael Van Canneyt31/3233Article2013
Smart Mobile Studio 2.0Primož Gabrijelcic31/3241Article2013
A simple superscript text editorDavid Dirkse31/3250Article2013
Using GEO services in Delphi applications with TMS componentsBruno Fierens31/3257Article2013
Correcting a bad API design:Alexander Alexeev31/3265Article2013
The maXbox Pure CodeMax Kleiner31/3277Article2013
Programming Bitmap RotationDavid Dirkse31/3298Article2013
Introduction to Model, View and View Model (MVVM) and the Caliburn Micro for Delphi frameworkJeroen Pluimers31/32102Article2013
kbmFMX for XE5 (android)Fikret Hasovic31/32113Article2013
maXbox Starter 5 Start with DLL A Library for AllMax Kleiner335Article2014
Suite Rays componentsRik Smit3314Article2014
Steps in MindScape AppView Step-By-StepJeroen Pluimers3326Article2014
Programming Truth Table reductionDavid Dirkse3346Article2014
Databases for XE6Cary Jensen3359Article2014
Updating DotTapperJeremy North3353Article2014
Six new ready to use components!Fikret Hasovic3365Article2014
Ode To the CodeCary Jensen344Article2014
Animation Lab for AndroidBoin Mitov345Article2014
All about understanding the RTTI / Attributes / Functional ProgrammingDetlef Overbeek347Article2014
Raize Components Version 6PART II ContinuationRik Smit3418Article2014
QR (Quick Response) CodesMax Kleiner3424Article2014
Image CompressionDavid Dirkse3429Article2014
Review : Documentation Insight by DevJet SoftwareJeremy North3436Article2014
Introduction Local SQL with FireDACCary Jensen3441Article2014
Unit testing - test driven developmentMichael Van Canneyt3446Article2014
Serving an off the shelf Content Management SystemKim Madsen3453Article2014
Smart Mobile Studio: Where to use it and with what? CommentChristan Budde3516Article2014
Building simple native applications for WindowsChristan Budde3517Article2014
node.js on a Raspberry PiChristan Budde3519Article2014
Debugging Techniques in LazarusHoward Page Clark3523Article2014
Start with GEO MapsMax Kleiner3540Article2014
A 3D Tic-Tac-Toe gameDavid Dirkse3545Article2014
Blazing Performance with FireDAC Array DMLCary Jensen3552Article2014
Creating custom edit descendants in XE7Jeremy North3557Article2014
Leap Motion Version 2Michael Van Canneyt3562Article2014
KBMMW and messaging (the WIB)Fikret Hasovic3564Article2014
A WYSIWYG math editorDavid Dirkse3610Article2014
Blue ToothJeremy North3616Article2014
3D Printing Lab (maxbox)Max Kleiner3623Article2014
Converting Delphi to Lazarus and Vice VersaEditor3628Article2014
Differences between Delphi and LazarusEditor3628Article2014
Lazarus for beginners: Starting your first programHoward Page-Clark3635Article2014
TMS XData and TMS Aurelius – Learning ExampleWagner Landgraf3640Article2014
UpdateMode and FireDAC DataSetsCary Jensen3650Article2014
AMQP (Advanced Message Queuing Protocol)Fikret Hasovic3654Article2014
Cloning FDMemTable CursorsCary Jensen37/3813Article2014
Floating points? -David Dirkse37/3820Article2014
The Leap Motion VisualizerDmitry Boyarintsev37/3823Article2014
Creating Applications for Mobile: How to make money with appsMark Wilcox37/3831Article2014
Migration to FastReport: How easy can it be ?Denis Zubov37/3837Article2014
TIOBE Index for January 2015Editor37/3845Article2014
Apple’s Guidelines for Creating and PublishingEditor37/3848Article2014
Google’s Guidelines for Creating and Publishing Android AppsEditor37/3853Article2014
Google’s help for developers for AndroidEditor37/3855Article2014
Lazarus for beginners 3Howard Page-Clark37/3862Article2014
WYSIWYG formatted: text & images editor for VCL & FireMonkeyBruno Fierens37/3871Article2014
Regular Expression ReportMax Kleiner37/3878Article2014
Regular Expressions Explained / ProgrammingEditor37/3888Article2014
Getting Started with the Raspberry PiSiegfried Zuhr37/3889Article2014
Using Free Pascal to create Android applicationsMichael Van Canneyt37/38104Article2014
Having fun with Delphi and AMQPKim Madsen37/38112Article2014
ClientDataSets and FDMemTables Compared: Part 1Cary Jensen3911Article2015
Accessing Preferences and Databases in Android (FPC)Michael Van Canneyt3922Article2015
Painting 3D Lissajous figuresDavid Dirkse3931Article2015
Checking your Android device is ready for developmentStephen Ball3936Article2015
Interbase Change ViewsStephen Ball405Article2015
From Delphi to Delphi, overview of the Delphi historyEditor408Article2015
Delphi - the cityEditor4013Article2015
Why the name Delphi?Editor4014Article2015
Introduction to FlatBox2D for Delphi XE8Pawel Glowacki4016Article2015
ClientDataSets and FDMemTables Compared: Part 2Cary Jensen4024Article2015
Start with Function Testing (maXbox)Max Kleiner4031Article2015
Working with Bluetooth beacons in Delphi XE8Jeremy North4040Article2015
Security And Safety In ApplicationsAndrea Raimondi415Article2015
Beginning Of Time... The Water ClockEditor419Article2015
The New Lazarus 1.4Editor4114Article2015
Security In Applications: Password HandlingAndrea Raimondi4118Article2015
In Remembrance Of Alan TuringEditor4123Article2015
Rest Clients: Using The Google Apis In Free PascalMichael Van Canneyt4125Article2015
Arduino: The Visuino Project - Part 1Boian Mitov4137Article2015
Working With Google Merchants Rating Data Using kbmmwKim Madsen4143Article2015
Quantum ComputingEditor425Article2015
Thales Of Miletus - A Pre-Socratic Greek PhilosopherEditor429Article2015
Arduino: The Visuino Project - Part 2Boian Mitov4214Article2015
Getting Started With The TMS Planner For FiremonkeyBruno Fierens4222Article2015
Mapping Using DelphiPeter Van Der Sman4228Article2015
Log, Debug And Audit The kbmmw WayKim Madsen4233Article2015
Free Pascal Compiler 3.0 In PreparationMichael Van Canneyt436Article2015
Overview Of Delphi To Delphi HistoryEditor438Article2015
Pythagoras Of Samos, Not The Inventor Of The A^2 + B^2 = C^2Editor439Article2015
Arduino: The Visuino Project - Part 3Boian Mitov4312Article2015
Fast Reports VCL In A NutshellJohn Kuiper4330Article2015
Brand Your Own Remote Desktop SolutionKim Madsen4340Article2015
Overview Of Delphi To Delphi HistoryEditor446Article2015
EuclidesEditor447Article2015
An Agep UzzleDavid Dirkse448Article2015
Arduino: The Visuino Project - Part 4Boian Mitov4412Article2015
Database Workbench 5Peter Van Der Sman4428Article2015
Tips And Tricks With KBM MemtableKim Madsen4439Article2015
Overview Of Delphi To Delphi HistoryEditor45/468Article2015
Plato And Platinic SolidsEditor45/469Article2015
A Simple Editor For In-Line HelpDavid Dirkse45/4612Article2015
FindFirst/FindNext And The Power Of HabitsHeiko Rompel45/4618Article2015
Android Programming In Free Pascal Networking External Code And ThreadsMichael Van Canneyt45/4620Article2015
Rad Studio 10 Seattle IntroductionEditor45/4629Article2015
Using Azure Translator Services With DelphiStephen Ball45/4644Article2015
How To Use Fmx: Tframestand Easily Use Tframe(S) In Fmx ApplicationsAndrea Magni45/4654Article2015
Delphi Building Blocks - Advanced CollectionsBoian Mitov45/4662Article2015
Maxbox Starter 18 Start With Arduino Programmingv 3.1Max Kleiner45/4672Article2015
Archimedes Editor475Article2015
Installing Lazarus On Mac Os XMichaël Van Canneyt478Article2015
Using “Raspberry Pi” As A Flexible BeaconDanny Wind4712Article2015
The Towers Of HanoiDavid Dirkse4719Article2015
Presenting A Fast & Feature-Rich Multicolumn Treeview For DelphiBruno Fierens4723Article2015
The Enhanced Rtti (Runtime Type Library)Boian Mitov4729Article2015
Getting Things Done At Time, Every TimeKim Madsen4737Article2015
A Microseconds Counter Component In DelphiDavid Dirkse485Article2015
Watch Your Calories Using The Nutrition Monitor!Peter Bijlsma487Article2015
Custom Forms In DelphiMichaël Van Canneyt4819Article2015
Installing Lazarus On Linux MintMichaël Van Canneyt4826Article2015
Connect Iot With The Cloud Using Tms Lcl Cloud PackBruno Fierens4830Article2015
Time Is On My Side - MaxboxMax Kleiner4836Article2015

Enjoy - Semper Fi
Gunny Mike