Discussing, Learning, and Using Delphi and related technologies to create Great Applications!
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;

procedure Meeting;
const
  MeetingTitle = 'Shared Projects in Oxygene - Part 1';
  MeetingMonth = 2015.03 ;
  { tags: #2015 }
begin
  WriteLn('''
A little over a year ago, we discussed one application in several different languages covering Delphi, C#, Oxygene and even JavaScript. It’s very unusual that a company would want to do this in real life given they’d have to support several different languages, but it made for some interesting discussions and comparisons. Usually, a company attempts to minimize the number of supported environments to prevent fractured development teams and keep support costs down.
  ''');
  MeetingDetails(MeetingTitle, MeetingMonth);
end;

procedure Meeting;
const
  MeetingTitle = 'Tech Talk';
  MeetingMonth = 2015.01 ;
  { 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;

procedure Meeting;
const
  MeetingTitle = 'Tech Talk';
  MeetingMonth = 2014.11 ;
  { tags: #2014 }
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;

procedure Meeting;
const
  MeetingTitle = 'Hydra';
  MeetingMonth = 2014.09 ;
  { tags: #2014 }
begin
  WriteLn('''
Are you yearning for capabilities or libraries that you see available for .NET but have a solid Delphi application that you don’t want to throw away? Would you like to start a new .NET application and utilize large sections of code or a third-party library you have in Delphi? Or what if you just want to add a plug-in architecture to your application (either .NET or Delphi) that allows for the eventual possibility of incorporating the other environment?
  ''');
  MeetingDetails(MeetingTitle, MeetingMonth);
end;

procedure Meeting;
const
  MeetingTitle = 'Last Supper';
  MeetingMonth = 2014.06 ;
  { tags: #2014 }
begin
  WriteLn('''
We don’t usually meet during the summer months of July or August, and with the future of ODUG still uncertain, this will be the last meeting for a while. We may pick back up in the fall depending on who’s in the area and the interest level. In the absence of a specific topic, we may continue or follow-up on last month’s discussion about more frequent upgrades to Delphi and the uproar over the price.
  ''');
  MeetingDetails(MeetingTitle, MeetingMonth);
end;

procedure Meeting;
const
  MeetingTitle = 'The Future of ODUG';
  MeetingMonth = 2014.04 ;
  { tags: #2014 }
begin
  WriteLn('''
A few years ago, David Cornelius, coordinator for this group, threatened to leave the Portland area and move to California. Indeed, he had a job there and traveled there quite often, but never really left. Well, once again, David has accepted a job in another state, this time in Washington. It’s more likely this time that his move is imminent and will be permanent. Thus, coordination of these meetings will necessarily fall to those who remain and are interested in seeing it continue.
  ''');
  MeetingDetails(MeetingTitle, MeetingMonth);
end;

procedure Meeting;
const
  MeetingTitle = 'The Modern Delphi IDE';
  MeetingMonth = 2014.03 ;
  { tags: #2014 }
begin
  WriteLn('''
This month’s meeting will be a group effort, with various people at the wheel (or rather the keyboard). Delphi 7 was arguably the best Delphi IDE ever. It had the old and fast help screens (with examples!) and was complete enough to build robust database applications on Windows for several years. But time marches on and there are new language features, new technologies to support, and enhancements in the IDE. (Some people don’t consider the changes to the IDE to be enhancements, but that’s a discussion for a different forum.
  ''');
  MeetingDetails(MeetingTitle, MeetingMonth);
end;

procedure Meeting;
const
  MeetingTitle = 'Delphi XE5 - Second Look';
  MeetingMonth = 2014.02 ;
  { tags: #2014 }
begin
  WriteLn('''
We’ll explore Delphi XE5 a little more this evening and have a general chat on all things programming! One idea is to explore some of the new VCL enhancements as noted in David I’s blog. Does anyone have experience using Delphi’s Live Bindings? I’d like to see how that compares with some of the XAML/WPF stuff I’ve been dealing with. PRESENTER David Cornelius is a full-time Delphi developer and has been programming since the 1980s.
  ''');
  MeetingDetails(MeetingTitle, MeetingMonth);
end;

procedure Meeting;
const
  MeetingTitle = 'RAD Studio XE5 - First Looks';
  MeetingMonth = 2014.01 ;
  { tags: #Doug Ausmus #Gene Juhos #2014 }
begin
  WriteLn('''
Two of our regular attendees have upgraded to Embarcadero’s latest version of Delphi and in fact, the whole RAD Studio suite. This month, we’ll crack open the packages and take a look with them. Doug Ausmus will show us his version of a “Hello World” which involves calling an external DLL to talk through a USB port to electronic circuit boards and watching LEDs blink. Gene Juhos will show us what all we get when we start a new Android app from one of the several built-in mobile app templates.
  ''');
  MeetingDetails(MeetingTitle, MeetingMonth);
end;

procedure Meeting;
const
  MeetingTitle = 'One Application, Many Different Development Environments - Part II';
  MeetingMonth = 2013.11 ;
  { tags: #2013 }
begin
  WriteLn('''
Oxygene for WPF and WinRT In September, we took a look at a simple application and how it was written using several different programming environments. We started with what we’re all familiar with, Delphi for Win32, moved to C# for WinForms which had a different language and IDE, but used similar window controls, then kept the language the same and built the app in C# using WPF, and finally used Oxygene, a Visual Studio plug-in compiler with the Pascal syntax.
  ''');
  MeetingDetails(MeetingTitle, MeetingMonth);
end;