Discussing, Learning, and Using Delphi and related technologies to create Great Applications!
procedure Meeting;
const
  MeetingTitle = 'S is for SOLID';
  MeetingMonth = 2018.03 ;
  { tags: #Ron Grove #2018 }
begin
  WriteLn('''
It’s time to get into some coding practices. This is the first in a series exploring the SOLID principles of software development. This month, we’ll concentrate on the Single Responsibility Principle. As time allows we’ll start looking at the “O” which stands for the Open/Closed principle. Many of us have probably used these principles even though we may not have had fancy terms like this in mind at the time. Hopefully we can help one another think about how we can make use of common sense principles like these in our own work.
  ''');
  MeetingDetails(MeetingTitle, MeetingMonth);
end;

procedure Meeting;
const
  MeetingTitle = 'Tech Talk';
  MeetingMonth = 2018.02 ;
  { tags: #2018 }
begin
  WriteLn('''
Due to the weather, we’ll postpone the start of our SOLID discussion until March. For those who would like to join tonight anyway, we’ll have a small gathering at the usual space and time and let the conversation lead us where it may!
  ''');
  MeetingDetails(MeetingTitle, MeetingMonth);
end;

procedure Meeting;
const
  MeetingTitle = 'Delphi 10.2.2 and Group Planning';
  MeetingMonth = 2018.01 ;
  { tags: #2018 }
begin
  WriteLn('''
For the discussion tonight, we’ll briefly touch on the latest update to Delphi which was 10.2.2. Since it’s the first meeting of 2018 we will also focus on what we’re all doing with Delphi (if anything) and what kinds of discussions would be best to focus on this year. I don’t want to spend too much time talking about features that are hardly even marginally useful to any of us and focus on what is useful.
  ''');
  MeetingDetails(MeetingTitle, MeetingMonth);
end;

procedure Meeting;
const
  MeetingTitle = 'XAF';
  MeetingMonth = 2017.10 ;
  { tags: #2017 }
begin
  WriteLn('''
There’s a pretty cool framework in .NET from DevExpress called XAF. We’ll start out with some tech talk and see if there’s anything Delphi related that we’d like to discuss. Then demonstrate some of the cool features XAF has to offer and why some of the things it’s trying to do may become the norm over time in software development.
  ''');
  MeetingDetails(MeetingTitle, MeetingMonth);
end;

procedure Meeting;
const
  MeetingTitle = 'Tech Talk';
  MeetingMonth = 2017.09 ;
  { tags: #2017 }
begin
  WriteLn('''
Tonight, we’ll just hang out and talk. If someone would like to demo something they’ve been working on lately that would be wonderful. If nothing else we can fire up Delphi and play with the new REST features they’ve been adding. It might be fun to have a small database and just explore questions we might have about this technology together.
  ''');
  MeetingDetails(MeetingTitle, MeetingMonth);
end;

procedure Meeting;
const
  MeetingTitle = 'Pivot Tables - Part II';
  MeetingMonth = 2017.08 ;
  { tags: #2017 }
begin
  WriteLn('''
The interest in Pivot Tables was high. We saw demos last month and talked about concepts. This month we’ll see some real-life examples. Additionally, you might just see a hover-craft as a side-line interest!
  ''');
  MeetingDetails(MeetingTitle, MeetingMonth);
end;

procedure Meeting;
const
  MeetingTitle = 'Discussion on Pivot Tables';
  MeetingMonth = 2017.07 ;
  { tags: #Ron Grove #2017 }
begin
  WriteLn('''
Ron will lead a discussion on Pivot Tables and show some examples with the DevExpress Pivot Table. It allows you to dump data so your customers can create them using Excel’s Power Pivot feature. PRESENTER Ron Grove has been in the IT Services area for many years but has become a superb programmer with a strong interest in a broad spectrum of technologies including Delphi, .NET, and mobile.
  ''');
  MeetingDetails(MeetingTitle, MeetingMonth);
end;

procedure Meeting;
const
  MeetingTitle = 'Delphi Surprise!';
  MeetingMonth = 2017.06 ;
  { tags: #Ron Grove #2017 }
begin
  WriteLn('''
This month, among other subjects, we’ll be looking at RAD Studio 10.2 Tokyo. There’s a possibility of other subjects being brought to the table, but you’ll have to be there to find out! PRESENTER Ron Grove has been in the IT Services area for many years but has become a superb programmer with a strong interest in a broad spectrum of technologies including Delphi, .NET, and mobile. His career has recently taken an interesting turn for the better.
  ''');
  MeetingDetails(MeetingTitle, MeetingMonth);
end;

procedure Meeting;
const
  MeetingTitle = 'March is for Makers';
  MeetingMonth = 2017.03 ;
  { tags: #2017 }
begin
  WriteLn('''
Have you ever heard the phrase, March is for Makers? With the rise of inexpensive and easy-to-use micro computers, people are enjoying the hobby of making all kinds of gadgets themselves. Arduino and Raspberry Pi are two of the most popular names in the maker space. So what does this have to do with Delphi? Nothing necessarily. However, some of our members have shown how to connect and control small devices with a Delphi program.
  ''');
  MeetingDetails(MeetingTitle, MeetingMonth);
end;

procedure Meeting;
const
  MeetingTitle = 'DevArt Database Libraries';
  MeetingMonth = 2017.02 ;
  { tags: #Homer Jones #Ron Grove #2017 }
begin
  WriteLn('''
DevArt Software is once again sponsoring our meeting and will offer the standard 20% discount and one product license give-a-way to a randomly chosen attendee. We will have a discussion about their Data Access Tools, or DAC for short. I will show some demos, some prepared by DevArt, some written by myself. They will cover SQLServer, SQLite, VirtualTable, and MySQL database connections. We will also have some audience participation to cover Firebird support through IBDAC and will touch on Oracle considerations.
  ''');
  MeetingDetails(MeetingTitle, MeetingMonth);
end;

procedure Meeting;
const
  MeetingTitle = 'Metafiles and TeeChart';
  MeetingMonth = 2016.11 ;
  { tags: #Homer Jones #2016 }
begin
  WriteLn('''
This month, we have a couple of topics to cover. The first presentation will cover manipulating meta files, including reading them from a database, displaying them properly on various sized screens, and preparing them for printing. The really cool thing is a metafile permits consistent quality report printing regardless of monitor resolution, aspect ratio, or user selected enlargement (125%, 150%, etc.). They can be used with any report writer that supports a TImage equivalent.
  ''');
  MeetingDetails(MeetingTitle, MeetingMonth);
end;

procedure Meeting;
const
  MeetingTitle = 'Quality Management Principles';
  MeetingMonth = 2016.09 ;
  { tags: #Jonathan Eaton #Quality Assurance #2016 }
begin
  WriteLn('''
The official title of this month’s meeting is, “An Overview of Quality Management Principles as Applied to Software Development.” That’s may look like a lot to swallow, but it’s important to differentiate Quality Management from Quality Assurance, and this talk will be specifically geared to you, the software developer. Finally, since we only have an hour or two, it’ll be just an overview–this topic could consume a large amount of time.
  ''');
  MeetingDetails(MeetingTitle, MeetingMonth);
end;

procedure Meeting;
const
  MeetingTitle = 'Tech Talk';
  MeetingMonth = 2016.09 ;
  { tags: #2016 }
begin
  WriteLn('''
This month, we’ll have a general tech session, discussing whatever subjects happen to come up while we eat and catch up on what’s been going on over the summer.
  ''');
  MeetingDetails(MeetingTitle, MeetingMonth);
end;

procedure Meeting;
const
  MeetingTitle = 'SecureBridge';
  MeetingMonth = 2016.07 ;
  { tags: #2016 }
begin
  WriteLn('''
This month, we have a short demonstration of SecureBridge, another great product by DevArt. This small set of components makes setting up SSH and SFTP client and server connections a breeze and the latest version supports all the new security-enhanced protocols required by today’s increased standards. DOOR PRIZE! Once again, DevArt, a database component and tools vendor for Delphi and .NET, is sponsoring our meeting! One lucky attendee, picked at random from those who submit their name and email, will be eligible for one free license of either SecureBridge or a Delphi Data Access Product from the DevArt Store!
  ''');
  MeetingDetails(MeetingTitle, MeetingMonth);
end;

procedure Meeting;
const
  MeetingTitle = 'Show Me The Code!';
  MeetingMonth = 2016.05 ;
  { tags: #Gene Juhos #Homer Jones #2016 }
begin
  WriteLn('''
This month is going to be a “show and tell” with three different applications: an Android application using Delphi and FireMonkey, a insurance management program incorporating compiled resources, a back-end integration using plug-in modules, REST APIs, and UniDAC accessing SQLite and MySQL. The goal is to show, again, the variety of software that can be produced with Delphi. Hopefully, it will inspire questions and provide insight into topics that might be of interest for future meetings.
  ''');
  MeetingDetails(MeetingTitle, MeetingMonth);
end;

procedure Meeting;
const
  MeetingTitle = 'Photo Kiosk Project';
  MeetingMonth = 2016.05 ;
  { tags: #2017 }
begin
  WriteLn('''
This month, we’ll take a look at a project that involved multiple technologies. A church requested a touch-screen enabled member photo display in their lobby. After some research and looking at options, it was decided the display would be built in HTML5 using jQuery libraries to provide picture zooming and layout control and so that it could work on multiple devices with varying screen sizes. The list of member names and picture filenames was maintained in two spreadsheets, one sorted by last name and one sorted by first name.
  ''');
  MeetingDetails(MeetingTitle, MeetingMonth);
end;

procedure Meeting;
const
  MeetingTitle = 'Tech Gab Session';
  MeetingMonth = 2016.03 ;
  { tags: #2016 }
begin
  WriteLn('''
This month we’ll just have a tech gab session, if that’s alright with everyone. We could discuss further last month’s topic, contemplate the meaning of Idera’s purchase of Embarcadero and what to make of their recent announcement to focus exclusively on developer tools, show off a latest gadget you might have, or just brainstorm on what the next killer app might be.
  ''');
  MeetingDetails(MeetingTitle, MeetingMonth);
end;

procedure Meeting;
const
  MeetingTitle = 'Spring4D';
  MeetingMonth = 2016.01 ;
  { tags: #Ron Grove #2016 }
begin
  WriteLn('''
Spring4D is an open-source code library for Delphi 2010 and higher. It consists of a number of different modules that contain a base class library (common types, interface based collection types, reflection extensions) and a dependency injection framework. We will go over the basics, covering the most useful parts with the broadest appeal, especially concentrating on lists and all the cool things you can do with them. A discussion about the main reason Spring4D came into existence, Inversion of Control, and what Dependency Injection really means will also be addressed.
  ''');
  MeetingDetails(MeetingTitle, MeetingMonth);
end;

procedure Meeting;
const
  MeetingTitle = 'Home Automation with FireMonkey';
  MeetingMonth = 2015.11 ;
  { tags: #2015 }
begin
  WriteLn('''
One of our members has been diving into the FireMonkey framework and has written his first Android app. This is not a formal presentation–he will simply share some of the journey he undertook as he used FireMonkey and REST services in both a Windows and an Android app to control home automation devices with Delphi XE7. PRESENTER Mike Shkolnik is a Project Manager in the Portland area and while he’s been “using Delphi since it was Turbo Pascal on a CP/M card in an Apple II,” he is completely self-taught and does not consider himself an expert.
  ''');
  MeetingDetails(MeetingTitle, MeetingMonth);
end;

procedure Meeting;
const
  MeetingTitle = 'Five Years of Updates';
  MeetingMonth = 2015.09 ;
  { tags: #2015 }
begin
  WriteLn('''
Many Delphi developers have not upgraded in quite some time. Some say Delphi 7 was the last great IDE, others got up to Delphi 2007 but never jumped into Unicode. There were some great language enhancements in Delphi 2010, but then the XE line started and the update rate increased dramatically adding 64-bit, FireMonkey, FireDAC, add-on tools, cross-platform capabilities, REST and JSON support, and many other things. For some, the updates were considered little more than paid bug fixes.
  ''');
  MeetingDetails(MeetingTitle, MeetingMonth);
end;

procedure Meeting;
const
  MeetingTitle = 'Developer Tools';
  MeetingMonth = 2015.07 ;
  { tags: #2015 }
begin
  WriteLn('''
Recently, the OCCA’s monthly meeting was on My Favorite App. It was a roaring success and sounded like a good idea for this group. So this month, our topic will be on a similar vein, but with a focus on developer tools. This will be an open forum led by David Cornelius but with the hope that each attendee will have something to share. To help generate some ideas, tools could cover (but are not limited to): source control, code compare, deployment management, script editors, macro libraries, search tips, programming aids, keyboard short-cuts, IDE plugins, or database analyzers.
  ''');
  MeetingDetails(MeetingTitle, MeetingMonth);
end;

procedure Meeting;
const
  MeetingTitle = 'Shared Projects in Oxygene - Part 2';
  MeetingMonth = 2015.05 ;
  { tags: #2015 }
begin
  WriteLn('''
In March, we introduced the concept of Shared Projects using Oxygene, a Pascal compiler that works inside Visual Studio and generates applications for all the major platforms–including Windows Phone. This month, we’ll continue that exploration by branching away from the Windows desktop and take a look at how the same shared classes we used previously can also help us build ASP.NET web sites and Android apps. CODE The code for everything demonstrated during both parts of this presentation is on GitHub.
  ''');
  MeetingDetails(MeetingTitle, MeetingMonth);
end;

procedure Meeting;
const
  MeetingTitle = 'Tech Talk';
  MeetingMonth = 2015.04 ;
  { tags: #2015 }
begin
  WriteLn('''
There is no formal presentation for this meeting. We will meet as friends in the programming industry and talk about whatever geeks will tend to discuss when they get together!
  ''');
  MeetingDetails(MeetingTitle, MeetingMonth);
end;