CodeRage XII – Best Practices Track

by Nov 6, 2017

These are the 20 sessions in the Best Practices track for CodeRage XII. Register today and you can watch them on Embarcadero Academy.

  • The Clean Coder with Robert C. "Uncle Bob" Martin
  • Scheduled: Tue 7th @ 7:00 AM
  • Level: All (General information for everyone)
  • [Watch during CodeRage] [Add to Gcal] [Add to Outlook / iCal]
  • Description: How to start writting some code using C++Builder from Embarcadero. How to handle connections using JSON + PHP + CPP… the other way.
  • Zen and the Art of Software Extensibility with Bob Calco
  • Scheduled: Tue 7th @ 10:00 AM
  • Level: Advanced (For experts who want to dive deep)
  • [Watch during CodeRage] [Add to Gcal] [Add to Outlook / iCal]
  • Description: This session ponders the success of VBA in Office, elisp in Emacs, and other real-world examples of letting customers take full control of their ROI in the software they embrace. Based on this historical retrospective, we propose a number best practices and design patterns for software extensibility and automation that will give you, oh humble Delphi/C++ Builder developer, specific and decisive competitive advantages in this dawning age of Big Data and IoT.

    Included in this careful elaboration of the black art of API design will be a domain use case in healthcare leveraging Apex's new and improved Apex Athena compiler technology (formerly known as the PAX Compiler).

    We will demonstrate scenarios using Apex Athena, a dual scripting and native code run-time that features familiar imperative languages like Object Pascal, Basic, JavaScript, and now "C Minor," a reinterpretation of ANSI-C inspired by C#.

    We will also provide a sneak preview of Apex Muse, Athena's dynamic and functional scripting language doppelganger, to be released in early 2018. Apex Muse will support scripting in the popular JavaScript, Lua, and, perhaps most interestingly, Clojure(Script) languages.

    Don't stay on the sidelines! Dive head-first into the ongoing "Cambrian explosion" of programming language and computational run-time innovation from the comfort and repose of your favorite Embarcadero language and technology stack today! And while you're at it, empower your customers to adopt and extend your software in ways you never imagined!

  • VCL Layout Techniques with Ray Konopka
  • Scheduled: Tue 7th @ 12:00 PM
  • Level: Intermediate
  • [Watch during CodeRage] [Add to Gcal] [Add to Outlook / iCal]
  • Description: Computers running Windows 10 utilize a wide variety of display sizes including High-DPI displays and 4K monitors. Developers rely on layout techniques to create a responsive user interface that can handle varying display sizes. This session focuses on the various VCL layout techniques available in RAD Studio. Traditional layout techniques such as the Align and Anchors properties and the TPanel control are briefly covered, but more emphasis is given to more recent additions like the Windows 10 inspired TRelativePanel and the brand new TStackPanel and TCardPanel.
  • Preventing and Fixing Coupled Code with Cary Jensen
  • Scheduled: Tue 7th @ 5:00 PM
  • Level: All (General information for everyone)
  • [Watch during CodeRage] [Add to Gcal] [Add to Outlook / iCal]
  • Description: Code coupling, or inter-unit dependencies, are an essential part of our everyday applications. However, if not managed properly, coupled code can lead to a tangled mess of dependent units that unnecessarily bloat executables with unwanted content and prevent code reuse. In this talk I explain the dangers of code coupling, and share with you techniques for preventing or removing these unwanted dependencies.
  • Managing Technical Debt with Steve McConnell
  • Scheduled: Wed 8th @ 12:00 PM
  • Level: All (General information for everyone)
  • [Watch during CodeRage] [Add to Gcal] [Add to Outlook / iCal]
  • Description: Steven is an author of software engineering textbooks such as Code Complete, Rapid Development, and Software Estimation. This session covers what technical debt is, when to take it on, how to manage it and why it’s important to both technical and business leadership.
  • Modernizing your VCL application with Danny Wind
  • Scheduled: Thu 9th @ 7:00 AM
  • Level: Intermediate
  • [Watch during CodeRage] [Add to Gcal] [Add to Outlook / iCal]
  • Description: In this session we will be spicing up an existing Delphi VCL application. After the session the application will look smart and act even faster, and it will connect with what end-users have come to expect from a modern application. It starts with a simple but functional application. We'll move code that lets the user wait into TTasks, we will brush up the GUI with new VCL (Win10) controls, and using new techniques we will significantly speed-up the existing code (e.g. using TDictionary) and as an extra we'll use Interbase Change Views to add even more responsiveness to the mix.
  • Implementing 2-Step Authentication with Nirav Kaku
  • Scheduled: Thu 9th @ 8:00 AM
  • Level: Advanced (For experts who want to dive deep)
  • [Watch during CodeRage] [Add to Gcal] [Add to Outlook / iCal]
  • Description: 2-Step authentication is a mechanism of generating a secure random number on both the client and the server based on a shared secret. Then this number can be used as a one-time password to validate that both sides know the shared secret. Google Authenticator is an example of 2-Step authentication and it is a great way to add an extra layer of security to your client server applications.
  • Demystifying OOP with RAD Studio and ORMBr with Juliomar Marchetti
  • Scheduled: Thu 9th @ 9:00 AM
  • Level: All (General information for everyone)
  • [Watch during CodeRage] [Add to Gcal] [Add to Outlook / iCal]
  • Description: ORMBr demystifies OOPs and SGDBs. The programmer will continue to program Object Oriented without worrying about SQL, leaving the ORMBr in charge of data persistence.
  • Unit Testing and User Interface with Ruhollah Akbarzadeh
  • Scheduled: Thu 9th @ 9:00 AM
  • Level: All (General information for everyone)
  • [Watch during CodeRage] [Add to Gcal] [Add to Outlook / iCal]
  • Description: How to use RAD Studio as a rapid development environment and yet making a quality app with unit testing.
  • FixInsight: Finding Bugs with Static Code Analysis with Roman Yankovsky
  • Scheduled: Thu 9th @ 10:00 AM
  • Level: All (General information for everyone)
  • [Watch during CodeRage] [Add to Gcal] [Add to Outlook / iCal]
  • Description: Roman Yankovsky shows how you can use FixInsight's static code analysis in Delphi to find bugs in your code before your customers do.
  • GitHub and Git Foundations with GitHub
  • Scheduled: Thu 9th @ 10:00 AM
  • Level: All (General information for everyone)
  • [Watch during CodeRage] [Add to Gcal] [Add to Outlook / iCal]
  • Description: Everything you need to know about Git, GitHub and distributed version control. Covers the command-line, web and GUI interfaces.
  • The Delphi Parser – Automatic Migration Tool with Oren Aviram
  • Scheduled: Thu 9th @ 11:00 AM
  • Level: Advanced (For experts who want to dive deep)
  • [Watch during CodeRage] [Add to Gcal] [Add to Outlook / iCal]
  • Description: The Delphi Parser Automatic Migration Tools can easily analyze your code on any given Delphi version and quickly upgrade your Legacy Borland Delphi to compile and run using the Newest RAD Studio 10.2 Tokyo – and make your legacy Delphi code – A Legend, once again.
  • Single Sign-On and Two-Factor Authentication with Facebook and Google Authenticator with Olaf Monien
  • Scheduled: Thu 9th @ 1:00 PM
  • Level: Intermediate
  • [Watch during CodeRage] [Add to Gcal] [Add to Outlook / iCal]
  • Description: Supplying a username and a password has been standard for many years to grant access to protected applications. This works reasonably well, yet there are issues that you may want to address with your applications:
    – shared passwords between apps, because it is easier to remember only a few passwords, than one password per application
    – too easy to guess, non-strong passwords
    – keeping your users passwords in a safe location
    – missing protection for sensitive account actions

    Facebook offers an API, that allows any application (desktop and mobile) to authenticate against Facebook account information, which basically implements single sign-on on a broad scope. A Facebook user only needs to create and keep track of his Facebook credentials. This password can be selected in a complex way as it is the only one that users need to remember, which makes it harder to guess. Facebooks also provides infrastructure and staff that actively protects their user database against any sorts of cyber attacks.

    For sensitive actions, such as editing payment information etc, sending an additional authorization request to a different device or through a different communication channel is what is called "two factor" authentication. Google offers its "Google Authenticator" API for any application.

    In this session I will demonstrate how to implement both APIs in your Delphi application. Both techniques can be used independently in desktop and mobile applications. Sample code will be provided on my blog:
    developer-experts.net/blog

  • Plurals, Genders and Abbreviated Numbers with Delphi with Jaakko Salmenius
  • Scheduled: Thu 9th @ 2:00 PM
  • Level: All (General information for everyone)
  • [Watch during CodeRage] [Add to Gcal] [Add to Outlook / iCal]
  • Description: If you processed one file you might write “One file was processed”. In the case of two files you might write “2 files were processed”. If John will bring his skis you might say “John will bring his skis”. However, if Jill will bring hers you say “Jill will bring her skis”. As almost any language English has singular, plurals and genders. Depending on the number of objects or gender you need to use different grammar. Some languages such Japanese do not use plural at all. Some languages such as Polish use three variants: singular, paucal and plural. Paucal is used when number is from two to four. Some languages such as Arabic use six different forms. Some languages use three genders, etc.

    This all makes it difficult two generate dynamic message strings and localize them. This session will introduce an open source Delphi library that elegantly implements plural and gender enabled Format function. The library uses the standard Delphi resource string to store multiple patterns and introduces a special version of Format function that depending on the plural/gender rules of the active language uses the right pattern of the string. At very little effort you can finally produce grammatically correct message that can easily be localized and still having grammatically correct. You no longer have to write “%d file(s) were processed” that barely works in English and is impossible to localize for many languages.

    In addition of plurals and genders we will study how to show abbreviated numbers such as 1kB, 10M, 100G, etc in a locale independent way. Not all languages use the same abbreviation rules as English. In fact, almost all language has its own variant. For example, in Japanese the grouping does not go by thousands but in ten thousand. The session will introduce an open source library to generate abbreviated numbers at any language.

    By following the guidelines shown on this session you start writing international code making your application available for everybody in the world.

  • Design Consideration for Multi-Platform Applications with Sarina DuPont
  • Scheduled: Thu 9th @ 3:00 PM
  • Level: All (General information for everyone)
  • [Watch during CodeRage] [Add to Gcal] [Add to Outlook / iCal]
  • Description: In this CodeRage Session, Senior Product Manager Sarina DuPont covers the Dos and Don’ts of multi-device application development, common UI and UX paradigms, an overview of the FireUI Designer and how to create a modern settings and user profile screen, complete with native and custom theming.
  • IDE Tips and Coding Shortcuts with Alister Christie
  • Scheduled: Thu 9th @ 4:00 PM
  • Level: All (General information for everyone)
  • [Watch during CodeRage] [Add to Gcal] [Add to Outlook / iCal]
  • Description: This is a fast paced look at short-cuts, customization, configuration, and tips to make your life within the Delphi IDE happier and more productive.
  • All you need know to developer for Windows 10 with Ricardo Boaro
  • Scheduled: On-demand
  • Level: All (General information for everyone)
  • [Watch during CodeRage] [Add to Gcal] [Add to Outlook / iCal]
  • Description: My idea is to create a standard session speaking about all resources we have on Delphi to developer for Win10. Components, Tips etc.
  • CAD with RAD, master your OOP skills for multi-plat development with Vsevolod Leonov (Seva)
  • Scheduled: On-demand
  • Level: All (General information for everyone)
  • [Watch during CodeRage] [Add to Gcal] [Add to Outlook / iCal]
  • Description: The session presents the project at Moscow Polytechnic Institute, when a group of students use C++Builder as a RAD tool to make a CAD system. The project is discussed both from methodical, and technical viewpoints. Main focus is made on how C++ skills can be applied to solve the practical tasks. The session is great for students and training course authors, Delphi/C++Builder developers to master OOP skills, and for hobbyist, as 3D programming is always big fun.
  • Customising DataSnap Method Output with Bob Swart
  • Scheduled: On-demand
  • Level: Advanced (For experts who want to dive deep)
  • [Watch during CodeRage] [Add to Gcal] [Add to Outlook / iCal]
  • Description: DataSnap Server methods return output in a way that DataSnap Clients expect. A TDataSet returns JSON in a specific format, and so does a TFDJSONDataSets type. Ideal for DataSnap Clients, but sometimes less ideal for developers using other tools to consume this JSON output. And perhaps you want to return output in XML format instead of JSON?
    This session demonstrates how we can use the TDSInvocationMetadata class to fully customise the output of DataSnap Server methods, returning the JSON you want or even XML or any other output format you need.