If you need strong security, then any Google Pixel starting from Pixel 8 (The Pixel 8's chip includes ARMv9 architecture, which supports MTE and Branch Target Indicators (BTI) for enhanced memory safety that provides protection from entire class of exploits). Get one with unlocked bootloader (available starting from $250 on ebay). Flash the Graphene OS - not really "fun" but the most secure option if that is what you need.
The most practical option is probably to get Google Pixel 9/9A and use it as is with the latest Android, Google AI, etc. Also having an option to flash something else (like Graphene OS) if needed
It's gotten inoperable on AT&T recently, and the Graphene team doesn't seem to care because RCS isn't completely E2EE (due to Apple dragging their feet) and therefore not a priority
Delphi was so ahead of its time (a mandatory remark)... I've used Delphi 1 to 4 then moved on to other things. Using .NET since 1.0 beta, and it still remains my favorite stack. The project I am currently building is a software infra for building E2EE applications, and it requires a little bit of everything - mobile apps for key management, desktop/cli apps/client libraries for actually encrypting data, sometimes a web based app, and a zero trust backend. Using Xamarin/MAUI for mobile apps, Blazor WASM for Web, Blazor Hybrid / MAUI / Avalonia UI for Desktop. All of the frameworks have their quirks, so it may take a bit of time to learn your patterns, build your base classes, but after that you pretty much enjoy the productivity of a modern high level language.
- What programming languages and frameworks are popular for desktop apps?
- for me - Blazor Hybrid / MAUI / Avalonia UI / WinForms
- Are there any go-to IDEs, build tools, or libraries that make development easier?
- I use MSVS 2022, VSCode for .NET, IntelliJ for $$$ at work. There are of course UI control libraries, I am using MudBlazor for Blazor WASM / Hybrid, other than that I use built-in controls that come with each framework. I try to use as little as possible of 3rd party libraries b/c my apps are security-sensitive.
- Do the above answers change if you care about code performance or efficiency (whatever that means to you)?
- in my case no, I am able to find what I need in .NET ecosystem. Modern .NET supports ahead-of-time compilation compiling to native code, and that helps to reduce start-up time which is important for Desktop / CLI. Ironically, for a long running processes, like a web service, the just-in-time compilation sometimes produces code running faster than ahead-of-time compilation, b/c it learns most common execution paths at runtime, and is able to recompile on the fly, optimizing for most frequent execution paths, giving a non-trivial performance boost in some cases
- Is native desktop app development still viable as a career, or are most greenfield projects shifting to web-based alternatives
- depends on the app/use case. For my project, desktop is the first class citizen, but I am building E2EE apps, i.e. end-to-end-encryption apps, aka client-side encryption, and native / Desktop / CLI is a better fit for E2EE in most of the cases compared to web apps. For those Web apps that I have it is still E2EE but in the browser (still client side encryption)
Turbo C++/Borland C++ (with Object Windows library) was the best C++ IDE on MS-DOS in the early/mid 90's. All their tools were excellent. They were leading the industry in the usage of C++ on PCs and should have built upon that advantage; but then they lost it all to MS Visual C++ (with MFC library) when Windows came along.
It was one of the earliest and best textbook case of management screwing up a technical company.
I went to a talk by MS Visual C++ product manager, years ago. IIRC he said that Borland did all sorts of really difficult stuff to make their C++ compiler better and more standard compliant, whereas MS concentrated on easier and more marketable stuff like wizards.
Congrats! Nicely done! Conway's Game of Life was my first attempt at assembly programing for a self-soldered ZX Spectrum's Z-80 CPU clocked at 3.5 Mhz. Compiled to 383-byte long binary, managed to do about 100 generations per second for a 3-cell blinker oscillator. My friend did a naive BASIC version brute forcing every single pixel on the screen, doing about 1 generation per 2 minutes. I started from BASIC version doing about 1 generation per 3 seconds. The main algo optimization was to have a list of active cells and only processing directly adjacent cells, and ignoring the majority of unpopulated white space. The next optimization was moving cells processing to assembly (the 383 bytes module). It was also toroid-shaped field, exactly like in your implementation. We had a lot of fun watching all those oscillators and guns producing gliders.
Encryption is only mentioned 4 times. Also this is just wrong: Do not accept serialized objects from untrusted sources, and if you must send one yourself across a network, encrypt it first with a private key, then decrypt it on the other end to ensure its integrity before deserializing it
Congrats to AvaloniaUI team! I’ve done both MAUI and Blazor Hybrid desktop apps development recently. MAUI is ok for mobile and simple desktop, but lacks Linux support. Blazor Hybrid is ok for all platforms but it is a bit too heavy, ui controls lifecycle is weird and takes time to get used to, and some security critical apps could be better off without WebView2 . So I am looking forward to redevelop some of my apps with Avalonia UI in the coming weeks! Thanks guys you are doing a great job!
I am working on QRID.com - encrypt your data via QR code.
Build E2EE applications that encrypt data on the client-side without using passwords. Instead of entering passwords, use QRID app to scan QR code displayed by the E2EE application. Got mobile apps for both iOS and Android. Also developed some cross-platform E2EE applications like Password Manager, E2EE Notes, Vault (encrypts files and directories into .vault file), and some command line tools to encrypt/decrypt files, environment variables. Few other things I am really excited about are in the works.
I've recently built "native" Windows / macOS Password/Secret Manager application using Blazor Hybrid with MudBlazor UI library (.NET8). That Password Manager application must be used together with the accompanying IOS/Android mobile app (Xamarin now migrated to MAUI) that manages master keys (KEKs) and wraps/unwraps data encryption keys (DEKs) used by the Password Manager application.
To be honest, Blazor UI controls / object model / lifecycle takes some time to get used to. However, MudBlazor library does help here, as well as finding your own patterns and just building on top of your own base classes.
With the same stack i.e. Blazor Hybrid / Blazor WASM / MudBlazor, I've also build Secure Mail Client, Notes, File Encryption application, and also a number of CLI utilities related to encryption via QR codes.
Overall, I do recommend Blazor Hybrid for a cross platform desktop application with simple to medium UI complexity.
I would strongly recommend joining all technical meetups in Toronto, like TechTO and others. Go to meetup dot com website and see what is available in Toronto area. Another events website worth checking might be eventbrite dot com. Go to those events, meet people, strike conversations. It is a lot of fun, sometimes free drinks and pizza, and it will definitely put you face-to-face with people who are IT professionals, and some may be hiring. Also, do not ignore recruiting agencies. Randstad.ca used to be one of the best for IT talent. Good luck in your job search!
Otherwise, for purely "fun" option, I would get smth like Google Pixel 3a (about $150) and install Ubuntu Touch on it https://devices.ubuntu-touch.io/device/sargo/ .
The most practical option is probably to get Google Pixel 9/9A and use it as is with the latest Android, Google AI, etc. Also having an option to flash something else (like Graphene OS) if needed
reply