About
Life is what happens while you're building projects. Here are a few that stand out as I…
Articles by Cliff
Contributions
-
How do you create modular code that is easy to integrate and extend?
MVC is a particularly useful pattern, regardless of the application domain. Separating code along the model, view, and controller boundaries is easy to do, makes it obvious to new team members where things go, and has a big payoff if you're writing multiple apps that interact with the same data sources, since the model code is often reusable, say between consumer and admin apps. This is because, in the MVC meta-pattern, the model can send notifications to the other actors, but cannot "know" them. Controller logic will inevitably "know" the model in order to work with it, as will the View in order to display it.
-
You’re struggling to master a new programming language. How can you improve your skills?
Eliminate possible failure modes going in. You need to do something non-trivial with a new language to get a feel for it. So you need a project. Two possible failure modes: - project inception - project implementation You can’t control the latter, you just have to learn the language and solve the problems you’ve set for yourself. The former however, you have complete control of. Build something you’ve built before. You know the shape and scope of it. And how long it has taken to write before. Writing the same personal budget software (or whatever your thing is) over and over may sound like drudgery, but you rule out a whole host of potentially derailing issues from trying to figure out how a new thing should work in a new language.
-
What are the best ways to design modular and easily updatable applications?
Begin with the Domain Model Determining what the domain entities are - what business calls the things your app will be managing - is an important first step. It helps you reason about processes and use cases using language that business is comfortable with and ensures that developers have a clear understanding of the domain. Nailing down the actual names of things helps code to remain consistent as it grows. A red flag is when you see a codebase with multiple names for the same thing. It is symptomatic of a disconnect between developers and business.
Activity
-
Want to learn about a "reasonably secure OS"? Passionate about #cybersecurity? You should know about Qubes OS. I'm using it for many years now and…
Want to learn about a "reasonably secure OS"? Passionate about #cybersecurity? You should know about Qubes OS. I'm using it for many years now and…
Liked by Cliff Hall
Experience
Education
Licenses & Certifications
Volunteer Experience
-
Site Admin, Mentor
PureMVC.org
- Present 18 years 4 months
Science and Technology
Answer forum questions on all topics related to development with PureMVC. Advise on porting to new languages. Manage website, and over code 100 repositories.
Publications
-
Building on Ethereum: With Solidity and React
Futurescale, Inc.
In-App purchases represent an undeniably huge potential revenue stream for any game or application. Consider that Fortnite sold over 1 billion dollars worth of in-game purchases in less than a year from its inception. Most traditional game platforms are "walled gardens" where all the assets that gamers purchase come straight from the company who wrote the game. That's good for the company; they're the only source of magic swords. But for the players, frankly, it stinks. With Ethereum, those…
In-App purchases represent an undeniably huge potential revenue stream for any game or application. Consider that Fortnite sold over 1 billion dollars worth of in-game purchases in less than a year from its inception. Most traditional game platforms are "walled gardens" where all the assets that gamers purchase come straight from the company who wrote the game. That's good for the company; they're the only source of magic swords. But for the players, frankly, it stinks. With Ethereum, those assets could live on the public blockchain and actually be owned by the users, who could sell or trade them like CryptoKitties or any other ERC-721 Non-fungible Token (NFT). When a player tires of a game after a year or two, she could sell all her assets to other players to recoup her investment.
This is the vision behind the In-App Pro Shop, an application the author built and describes in detail in the book. The source code is available on GitHub, so you can download it and follow along, learning the Ethereum development ecosystem as you go.
Any developer seeking to learn Ethereum smart contract development will have many of the same questions:
- What language(s) should I use?
- What blockchain tech stack do I need to get started?
- What framework(s) will I use to build the UI?
- What should the project structure look like?
The answers to these questions lead to even more, and the options can seem overwhelming. This book covers most of them, as well as many of the the eventual problems you'll face once you're project is growing.
For instance, what happens when your contract reaches the maximum size and can no longer be deployed? Or, how can your contract get information from off the blockchain, like current Ethereum exchange rates? -
ActionScript Developer's Guide to PureMVC
O'Reilly Media
Gain hands-on experience with PureMVC, the popular open source framework for developing maintainable applications with a Model-View-Controller architecture. In this concise guide, PureMVC creator Cliff Hall teaches the fundamentals of PureMVC development by walking you through the construction of a complete non-trivial Adobe AIR application.
Through clear explanations and numerous ActionScript code examples, you’ll learn best practices for using the framework’s classes in your day-to-day…Gain hands-on experience with PureMVC, the popular open source framework for developing maintainable applications with a Model-View-Controller architecture. In this concise guide, PureMVC creator Cliff Hall teaches the fundamentals of PureMVC development by walking you through the construction of a complete non-trivial Adobe AIR application.
Through clear explanations and numerous ActionScript code examples, you’ll learn best practices for using the framework’s classes in your day-to-day work. Discover how PureMVC enables you to focus on the purpose and scope of your application, while the framework takes care of the plumbing in a maintainable and portable way.
* Get a detailed overview of the PureMVC process for developing your application
* Model the domain by designing the schema and creating framework-agnostic value objects
* Implement framework-agnostic View components that expose an API of events and properties
* Use the Proxy pattern to keep track of value objects and hide service interaction
* Facilitate two-way communication between a View component and the rest of the application
* Stitch the Model and View tiers together with command objects in the Controller
* Manage problematic View component life cycles, and learn how to reuse the Model tier
Patents
-
DYNAMIC IMAGE TILING
Issued US PCT/US2009/066029
A system and method of manipulating digital images to optimize for quick viewing of details, and is related to companion applications filed simultaneously, all of which are part and parcel to a method for browsing digital content and composing digital media and data, via dynamic interaction of tiled images, external video, audio, text, and multimedia resources to create smoother and faster response time to user request, managed by a level of detail system which expands the ability of user to…
A system and method of manipulating digital images to optimize for quick viewing of details, and is related to companion applications filed simultaneously, all of which are part and parcel to a method for browsing digital content and composing digital media and data, via dynamic interaction of tiled images, external video, audio, text, and multimedia resources to create smoother and faster response time to user request, managed by a level of detail system which expands the ability of user to create, manipulate, and interact with digital content and media via an application hosted in a browser or running on a desktop application which enhances user ability to dynamically position and zoom into and out of views within a larger canvas.
Other inventorsSee patent -
DYNAMIC LEVEL OF DETAIL
Issued US PCT/US2009/066028
A system and method of interfacing Levels of Detail ("LoD" being a means for providing access to progressively more detailed information of a three dimensional model or scene) with User Interface Components (UICs), and is related to companion applications filed simultaneously, all of which are part and parcel of a method for browsing digital content and composing digital media and data via dynamic interaction of tiled images, external video, audio, text, and/or multimedia resources to create…
A system and method of interfacing Levels of Detail ("LoD" being a means for providing access to progressively more detailed information of a three dimensional model or scene) with User Interface Components (UICs), and is related to companion applications filed simultaneously, all of which are part and parcel of a method for browsing digital content and composing digital media and data via dynamic interaction of tiled images, external video, audio, text, and/or multimedia resources to create smoother and faster response time to user request, managed by a level of detail system which expands the ability of the user to create, manipulate, and/or interact with digital content and/or media via an application hosted in a browser or running on a desktop application which enhances the user ability to dynamically position and zoom into and out of views within a larger canvas.
Other inventorsSee patent -
DYNAMIC NETWORK BROWSER
Issued US PCT/US2009/066026
A system and method of browsing digital content, and is related to companion applications filed simultaneously, all of which are part and parcel of a method for browsing digital content and composing digital media and data, via dynamic interaction of tiled images, external video, audio, text, and multimedia resources to create smoother and faster response time to user request, managed by a level of detail system which expands the ability of the user to create, manipulate, and interact with…
A system and method of browsing digital content, and is related to companion applications filed simultaneously, all of which are part and parcel of a method for browsing digital content and composing digital media and data, via dynamic interaction of tiled images, external video, audio, text, and multimedia resources to create smoother and faster response time to user request, managed by a level of detail system which expands the ability of the user to create, manipulate, and interact with digital content and media via an application hosted in a browser or running on a desktop application which enhances user ability to dynamically position and zoom into and out of views within a larger canvas.
Other inventorsSee patent
Projects
-
User Profile Management with Angular and Firebase
Open-source, HTML5 user profile management module and demo, supporting password and social sign-in from Google, Twitter, Facebook, and GitHub. I built this using Angular, Bootstrap, jQuery, and Firebase.
-
Page Fight
- Present
Page Fight is a gamified solution to collecting reader reactions to book marketing materials. While it is focused on helping authors and publishers determine the best titles, taglines, blurbs, and covers for their books before publishing, it also acts as a unique discovery service for readers.
I designed and built the HTML5 single-page application from the ground up with a mobile-first design using Angular, Bootstrap, jQuery, Firebase, and Node.js on Heroku.Other creatorsSee project -
Dart port of PureMVC
PureMVC is a lightweight framework for creating applications based upon the classic Model-View-Controller design meta-pattern. This Dart Version is a port of the AS3 reference implementation of the MultiCore Version. It supports modular programming through the use of Multiton Core actors.
-
Integrated Strategic Planning and Analysis Network (ISPAN)
Lockheed Martin's ISPAN is a net-centric mission planning and execution system. ISPAN will support the full spectrum of USSTRATCOM’s new responsibilities for global strike, missile defense and information operations, in addition to their traditional role of nuclear deterrence. I provided Adobe Flex architecture guidance for the user interface.
Other creators -
Matrix
-
Morgan Stanley's Matrix offering is a massive modular application for investment research, trading, and pre/post trade analysis. While many teams around the world contribute individual modules that enable the aforementioned capabilities, I maintained and extended the core application for desktop and web, and helped the team with their efforts to transition to gracefully HTML 5.
Other creatorsSee project -
CustomShow
-
CustomShow helps companies manage and deliver presentations globally. Benefits include collaboration, consistency, tracking, security, compliance, increased productivity, portability between devices, high quality visuals, streaming video. I provided Adobe Flex/PureMVC architecture and development for the web, desktop and iPad viewer applications.
Other creatorsSee project -
JavaScript port of PureMVC
-
PureMVC is a lightweight framework for creating applications based upon the classic Model-View-Controller design meta-pattern. The JavaScript Version is a port of the AS3 reference implementation of the MultiCore Version. It supports modular programming through the use of Multiton Core actors.
The JavaScript port contains additional functionality not found in other ports - lightweight JavaScript class-emulation. Use of this functionality is entirely optional; JavaScript "classes" may be…PureMVC is a lightweight framework for creating applications based upon the classic Model-View-Controller design meta-pattern. The JavaScript Version is a port of the AS3 reference implementation of the MultiCore Version. It supports modular programming through the use of Multiton Core actors.
The JavaScript port contains additional functionality not found in other ports - lightweight JavaScript class-emulation. Use of this functionality is entirely optional; JavaScript "classes" may be created using the class-emulation provided by other JavaScript frameworks.Other creatorsSee project -
CWCT - CDL Waveform Compliance Tester
-
Secure communications between UAVs (Unmanned Aerial Vehicles, or 'drones') and other UAVs or ground stations using the CDL (Common Data Link) specification is an extremely complex proposition. And testing that a vendor's CDL implementation actually meets all the criteria of the spec is even tougher. CWCT is a custom hardware and software solution for verifying standard CDL waveform interoperability between candidate platforms or terminals and network systems in both classified and unclassified…
Secure communications between UAVs (Unmanned Aerial Vehicles, or 'drones') and other UAVs or ground stations using the CDL (Common Data Link) specification is an extremely complex proposition. And testing that a vendor's CDL implementation actually meets all the criteria of the spec is even tougher. CWCT is a custom hardware and software solution for verifying standard CDL waveform interoperability between candidate platforms or terminals and network systems in both classified and unclassified environments.
JITC (Joint Interoperability Test Command) chose CVG/Avtec to build the CWCT hardware, and Futurescale was chosen to build the GUI for the CWCT. I provided the entire client-side architecture and development of the first shipped version of CWCT.Other creatorsSee project -
ChannelMaster ELS (Enterprise Lending System)
-
ChannelMaster ELS streamlines the way correspondent lenders manage loans as they travel through the pipeline from lead to funding. By organizing loans in a central hub, it allows loan agents, processors, underwriters, closers, funders and others involved in the mortgage origination process to work on multiple loan files at the same time. The system also features lifecycle recognition ability, ensuring the processor completes required actions first and prevents noncritical actions from causing a…
ChannelMaster ELS streamlines the way correspondent lenders manage loans as they travel through the pipeline from lead to funding. By organizing loans in a central hub, it allows loan agents, processors, underwriters, closers, funders and others involved in the mortgage origination process to work on multiple loan files at the same time. The system also features lifecycle recognition ability, ensuring the processor completes required actions first and prevents noncritical actions from causing a loan to stall. I provided Adobe Flex development in support of the ChannelMaster customization for Chase Manhattan Bank.
Other creatorsSee project -
Weight Watchers Online
-
Weight Watchers Online is a customized rich Internet application based on the Adobe Flash Platform using Adobe Flex and .NET Web Services. This application allows users to customize their weight loss plan completely online. Since this successful product launch, Weight Watchers' Internet revenues grew at an amazing compound annual growth rate of 27.4%.
Other creatorsSee project
Recommendations received
25 people have recommended Cliff
Join now to viewMore activity by Cliff
-
I should frame it .. original sticker from 1999
I should frame it .. original sticker from 1999
Liked by Cliff Hall
-
What's really going on in machine learning? Just finished a deep dive using (new) minimal models. Seems like ML is basically about fitting together…
What's really going on in machine learning? Just finished a deep dive using (new) minimal models. Seems like ML is basically about fitting together…
Liked by Cliff Hall
-
Here is an open-source, self-hosted AI starter kit. This Docker Compose template will bootstrap a fully-featured low-code development environment to…
Here is an open-source, self-hosted AI starter kit. This Docker Compose template will bootstrap a fully-featured low-code development environment to…
Liked by Cliff Hall
-
Aww yisss. Who's ready to ditch try/catch in #JavaScript? https://lnkd.in/dMFFsyAf
Aww yisss. Who's ready to ditch try/catch in #JavaScript? https://lnkd.in/dMFFsyAf
Shared by Cliff Hall
-
Very impressed with this. Open source image generation Flux and the brilliant imagination of @arnaudatchimon.
Very impressed with this. Open source image generation Flux and the brilliant imagination of @arnaudatchimon.
Liked by Cliff Hall
-
Fine-tuning is now available for GPT-4o and GPT-4o-mini but I need somebody to help me understand why would anyone use this? Fine-tuning is hard…
Fine-tuning is now available for GPT-4o and GPT-4o-mini but I need somebody to help me understand why would anyone use this? Fine-tuning is hard…
Liked by Cliff Hall
Other similar profiles
Explore collaborative articles
We’re unlocking community knowledge in a new way. Experts add insights directly into each article, started with the help of AI.
Explore MoreOthers named Cliff Hall in United States
-
Cliff Hall
Director of New Buisness Development
-
Cliff Hall
Product Support Engineer III
-
Cliff Hall
-
Cliff Hall
183 others named Cliff Hall in United States are on LinkedIn
See others named Cliff Hall