Discussing, Learning, and Using Delphi and related technologies to create Great Applications!
procedure Meeting;
const
  MeetingTitle = 'Arduino Projects';
  MeetingMonth = 2019.06 ;
  { tags: #Arduino #Gene Juhos #2019 }
begin
  WriteLn('''
We have something a little different this month. Gene Juhos will bring a couple of Arduino projects he’s been working on: Pill dispenser for the Age(d)s Socket head screw safety wire hole deburring machine. We’ll probably have some left-over time, so if you have any hardware projects to add to the discussion, feel free to bring them and share with everyone. PRESENTER Gene Juhos has been working with Delphi since version 3.
  ''');
  MeetingDetails(MeetingTitle, MeetingMonth);
end;

procedure Meeting;
const
  MeetingTitle = 'Tech Talk';
  MeetingMonth = 2019.05 ;
  { tags: #2019 }
begin
  WriteLn('''
There is no specific talk or presentation planned tonight. We’ll just chat as friends and colleagues about whatever topics arise.
  ''');
  MeetingDetails(MeetingTitle, MeetingMonth);
end;

procedure Meeting;
const
  MeetingTitle = 'SMS and Missed Meeting Makeup';
  MeetingMonth = 2019.04 ;
  { tags: #Homer Jones #2019 }
begin
  WriteLn('''
We’ll have a short presentation of how to send SMS messages from a Delphi app. There isn’t much to it but might be interesting for some. We’ll fill the rest of the time by covering any previous topics that you’d like. If you’ve missed a recent ODUG meeting and would like to ask questions or see demos of things that have been missed, come to this meeting and we’ll dig stuff out of archives and get you caught up.
  ''');
  MeetingDetails(MeetingTitle, MeetingMonth);
end;

procedure Meeting;
const
  MeetingTitle = 'Client/Server Mobile App - Part 2';
  MeetingMonth = 2019.03 ;
  { tags: #2019 }
begin
  WriteLn('''
This month, we’ll continue exploring the client/server application we looked at last month, but we’ll concentrate on the client end. The end result is an Android app that communicates by sending JSON data via REST protocols to the Windows server. We’ll use Delphi 10.2 Tokyo and the Firemonkey framework utilizing both a Windows client for quick testing and then deploying to an Android phone. The app will demonstrate login/logout, multiple pages with navigation, using a barcode scanner, and capturing a signature.
  ''');
  MeetingDetails(MeetingTitle, MeetingMonth);
end;

procedure Meeting;
const
  MeetingTitle = 'Client/Server Mobile App - Part 1';
  MeetingMonth = 2019.02 ;
  { tags: #2019 }
begin
  WriteLn('''
We’re going to start off 2019 with a series of meetings that show you how to build a mobile application that talks to a server back-end. David will show a project built with Delphi 10.2 Tokyo that has two parts: 1) a Windows server console application that talks to an InterBase database and provides an API to which a client application connects; and 2) an Android app that connects to the server and communicates JSON data via REST protocols.
  ''');
  MeetingDetails(MeetingTitle, MeetingMonth);
end;

procedure Meeting;
const
  MeetingTitle = 'Delphi Chat';
  MeetingMonth = 2019.01 ;
  { tags: #2019 }
begin
  WriteLn('''
For anyone who wants to just chat about Delphi or related technical (or non-technical) topics, David Cornelius will be at the restaurant tonight at the regular time.
  ''');
  MeetingDetails(MeetingTitle, MeetingMonth);
end;

procedure Meeting;
const
  MeetingTitle = 'End-of-Year Technology Chat';
  MeetingMonth = 2018.12 ;
  { tags: #2018 }
begin
  WriteLn('''
Since our regularly scheduled meeting for November fell on the day before Thanksgiving and NO ONE would be there, we decided to move the meeting date forward a couple of weeks. We don’t normally meet in December, but we’ll make an exception because it’s early enough in the month that it shouldn’t conflict with any holiday/family plans. We won’t have a specific presenter but could start off the discussion with how the year went for everyone, touch on some of the interesting news highlights in the tech industry, and go from there.
  ''');
  MeetingDetails(MeetingTitle, MeetingMonth);
end;

procedure Meeting;
const
  MeetingTitle = 'Remote Access Through a Browser';
  MeetingMonth = 2018.10 ;
  { tags: #2018 }
begin
  WriteLn('''
This is Part II to August’s topic in a way because we will be looking at a different way to get your legacy applications to run through a browser. However, this time we’ll be looking at a different product from the same company that provided Thinfinity VirtualUI. There are cases where that scenario doesn’t quite cut it. Cybele Software provides another solution, Thinfinity Remote Desktop Server. There are many Remote Desktop clients and other ways to access remote desktops through a browser.
  ''');
  MeetingDetails(MeetingTitle, MeetingMonth);
end;

procedure Meeting;
const
  MeetingTitle = 'Run your Delphi VCL Applications through a Browser!';
  MeetingMonth = 2018.08 ;
  { tags: #2018 }
begin
  WriteLn('''
This month we will show how, by adding a simple library to your old Delphi code, your Windows VCL application can run through a web browser on any device that supports HTML5. No need to use WebBroker or convert it to IntraWeb or Firemonkey, just simply open up your project, add a unit, recompile, and it now is able to paint on an HTML5 Canvas–provided the Thinfinity VirtualUI server is running.
  ''');
  MeetingDetails(MeetingTitle, MeetingMonth);
end;

procedure Meeting;
const
  MeetingTitle = 'Chocolatey for Delphi';
  MeetingMonth = 2018.06 ;
  { tags: #automation #2018 }
begin
  WriteLn('''
If you’ve ever used Linux, you may be familiar with software package managers such as RPM or APT to easily install and update software along with their dependencies. A few years ago, someone decided that Windows should be able to enjoy this same ease of maintaining software packages and started Chocolatey, a package manager for Windows using PowerShell scripts and the NuGet infrastructure. Typically, when installing software, you need to look for them on the web, select a mirror to download from, go to your downloads folder, launch the installer, acknowledge licenses, then repeating for each program.
  ''');
  MeetingDetails(MeetingTitle, MeetingMonth);
end;

procedure Meeting;
const
  MeetingTitle = 'Dependencies';
  MeetingMonth = 2018.05 ;
  { tags: #Ron Grove #2018 }
begin
  WriteLn('''
We’ve talked a lot about the SOLID principles of software development over the last couple of months. The last letter, D, stands for Dependency Inversion. We’ll discuss this with examples and talk about the Spring library and how its Dependency Injection plays into this–if you do it right! PRESENTER Ron Grove will again lead the discussion, based in large part on his deep knowledge of the subject having read the book the SOLID principles were based on before the acronym was coined.
  ''');
  MeetingDetails(MeetingTitle, MeetingMonth);
end;

procedure Meeting;
const
  MeetingTitle = 'Be a SOLID Programmer';
  MeetingMonth = 2018.04 ;
  { tags: #Ron Grove #2018 }
begin
  WriteLn('''
This is a continuation of the discussion on SOLID programming principles we started last month. We’ll finish up our coverage of Single Responsibility and Open/Closed principles, then continue on with aspects of the other three: Liskov Substitution - objects in a program should be replaceable with instances of their subtypes without altering the correctness of that program, Interface Segregation - many client-specific interfaces are better than one general-purpose interface, and Dependency Inversion - one should depend upon abstractions, not concretions.
  ''');
  MeetingDetails(MeetingTitle, MeetingMonth);
end;

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;