Skip to content

Category: Technology

Compilers 109 – Linking and Wrap-up

The linker is not technically part of the compiler, but it is needed to make a completed app. The purpose of the linker is to combine (link) all the various bits and pieces of machine code created by the compiler along with the necessary information to create a runnable app for the OS.

This is the ninth and final post in our Compiler series. Previous posts:

Comments closed

Compilers 108 – Code Generation

Code generation is one of the last steps of the compiler. This is where the compiler emits actual machine code for the IR that was previously created.

This is the eighth post in our Compiler series. Other posts:

Comments closed

Compilers 107 – Optimizer Loop Unrolling

The last post covered optimization in general. In this post you’ll look at a specific optimization called “loop unrolling”.

This is the seventh post in our Compiler series. Other posts:

Comments closed

Unlock the all in one, low-code, cross-platform solution

Like his father, my teenage son loves video games. The single player games where you take a character through some kind of adventure are the ones I like most. These usually have a fair number of AI-controlled enemies that must be defeated. My son, on the other hand, prefers to play against other human beings. When I asked him why, he said, “The AIs are so predictable.” To prove this to me, he took over when I was having trouble defeating a particularly difficult enemy and quickly dispatched him, narrating his strategy as he went and barely being scratched in the process. My son is an elite player compared to me partially because he puts a lot more time into it than I do but also because he loves video games far more than I do.

Just as people have varying levels of skill and interest in video games, the same is true of app development. There are those that are happy to devote enormous amounts of time to learning everything they possibly can. They don’t care how long it takes. They want to have control over everything and are willing to do whatever is necessary to make that happen. I’m so glad those people exist because there’s a lot of great software that might not otherwise have been created without them. I’m not one of those people. I really want to focus mostly on what makes my application unique, abstracted from the nitty-gritty of app development.

That’s why I have always been attracted to tools like Xojo. I am a citizen developer. Of all the job titles I have had over the years, all of them in tech,  none have ever included words like programmer or engineer. I do some software development but it’s just a part of my job. It’s something I do to help me in my work or to help my co-workers.

Comments closed

Make It Your Way: XojoThemes

As developers, we often like to have things set up and configured in our own way and our favorite IDE itself, Xojo, is certainly no exception. Xojo allows you to customize it in lots of way but today I want to talk about theming the IDE, or specifically the code editor.

Xojo has always had the ability to customize colors of tokens in the code editor. For example, you can open up Xojo’s Preferences and change the colors of keywords, strings, comments and much more, as well as the font and font size. Other than making things look pretty, there are practical reasons for doing all of this. You may find certain themes are easier on your eyes, especially as you age. Or you may want to have one color scheme for daytime, such as a light background with bright colors for the tokens, and a different color scheme for late night coding, such as a dark grey background with more subdued token colors.

Comments closed

Compilers 106 – Optimizer

An optimizer “improves” the IR, but that can mean a lot of different things. Improve could mean “run faster” or “use less memory”. Or perhaps you want to optimize for memory access time because CPUs are so fast it is sometimes more efficient to repeatedly calculate something rather than calculate it once, store it and access it later.

This is the sixth post in our Compiler series. Previous posts:

Comments closed

We’ve Done This Before: A Net Neutrality Solution

As I’ve written before, the FCC’s claim that rolling back Net Neutrality will result in more competition (which presumably will be better for consumers) is flawed because of the cost of the last mile. What that means, in summary, is that over the last 30 years various cable and telecom companies have bared the cost of laying all the cable/wire necessary to bring internet service to most of the homes and businesses in US cities. They did this because city governments were more than willing to trade the enormous cost of creating a citywide network for the provider having (in most cases) an effective monopoly on providing internet access.

This isn’t the first time a service or utility has evolved in this manner in the United States. The railroads, the telegraph and later telephone service were all networks that were developed in much the same way.

Comments closed

Avoiding False-Positive Virus Detection in Windows Apps

Viruses continue to be a big problem on Windows. As a result, anti-virus software can be a bit over-zealous about detecting what it believes to be apps that have viruses embedded within them. We have had reports over the years that apps made with Xojo are sometimes falsely identified as being infected with a virus. This sometimes occurs because the 32-bit Xojo compiler puts executable code in a location where the anti-virus software doesn’t expect to find it. We’ve seen this occur even when users are debugging apps from the IDE. Fortunately in that case, there’s a fairly easy solution.

Comments closed