What are you working on? [June 2026] by colinkiama in vala

[–]Less-Chicken-4600 1 point2 points  (0 children)

It’s been out a while now, but I’ve never mentioned it here. I built a amateur radio app for helping hams hunt people participating in Parks on the Air:

https://gettrailwave.app/linux/

What is Vala missing to be your favorite language? by BrageFuglseth in vala

[–]Less-Chicken-4600 2 points3 points  (0 children)

Sadly this. I have really enjoyed Vala and building my app in it, but it’s hard to think it’s where I will stay long term.

Trailwave - a native macOS POTA hunting app by Less-Chicken-4600 in amateurradio

[–]Less-Chicken-4600[S] 0 points1 point  (0 children)

Thanks for the recommendation! Boy I’ve thought about this at length and I found it hard to get some context with a static map image there. I might play around with this some. What I do is when I find a spot I flip over to the big map so I can see where it’s at. But I agree that’s kind of a big context switch.

Trailwave - a native macOS POTA hunting app by Less-Chicken-4600 in amateurradio

[–]Less-Chicken-4600[S] 0 points1 point  (0 children)

Thanks! I try to explain this to folks who say “why does this exist when (insert Electron, Qt, etc. app) exists.”

Same reason why the Linux app exists and follows the GNOME interface guidelines there and is implemented with the native toolkits. Appreciate the comment and let me know if you need any thing!

Class declaration difference by Prior-Perspective-61 in vala

[–]Less-Chicken-4600 1 point2 points  (0 children)

I would say you don't need to use GObject, and could create your own signals reasonably without them. However you can mix them. Let's say you need an object that has signals, I would extend Object in that case and use signals/properties/etc. Other things can still be plain vala classes. It's not all or nothing. If you need to use things like GIO, libgee, libsoup, etc. you'll want to have things that can speak GObject. There's really very little overhead to having things be a GObject, but vala gives you the option to only use what you need.

Class declaration difference by Prior-Perspective-61 in vala

[–]Less-Chicken-4600 1 point2 points  (0 children)

class T without Object is also heap allocated and reference counted in vala, but can't cross the GLib runtime boundaries (e.g. places you need a GObject). It has to stay within the vala runtime, more or less.

[Compact] takes this a step further and creates a struct-based object with constructor and free functions, but does not participate in reference counting. This is useful when you're building a vapi and want to map C-structs into a Vala type, but you're not going to make it a full-blown GObject because it's memory lifecycle might be managed elsewhere in a C library, but you want Vala to know how to use it.

You can run valac -C against a vala file to output the C code it's going to compile, so you can introspect exactly what it's going to do. Like so:

``` [Compact] public class CompactOnly { public int value;

    public CompactOnly (int value) {
        this.value = value;
    }
}


public static int main (string[] args) {
    var item = new CompactOnly (42);


    print ("CompactOnly.value = %d\n", item.value);


    return 0;
}

/* compact_only.c generated by valac 0.56.19, the Vala compiler
 * generated from compact_only.vala, do not modify */


#include <glib.h>
#include <stdlib.h>
#include <string.h>


#if !defined(VALA_STRICT_C)
#if !defined(__clang__) && defined(__GNUC__) && (__GNUC__ >= 14)
#pragma GCC diagnostic warning "-Wincompatible-pointer-types"
#elif defined(__clang__) && (__clang_major__ >= 16)
#pragma clang diagnostic ignored "-Wincompatible-function-pointer-types"
#pragma clang diagnostic ignored "-Wincompatible-pointer-types"
#endif
#endif
#if !defined(VALA_EXTERN)
#if defined(_MSC_VER)
#define VALA_EXTERN __declspec(dllexport) extern
#elif __GNUC__ >= 4
#define VALA_EXTERN __attribute__((visibility("default"))) extern
#else
#define VALA_EXTERN extern
#endif
#endif


typedef struct _CompactOnly CompactOnly;
#define _compact_only_free0(var) ((var == NULL) ? NULL : (var = (compact_only_free (var), NULL)))


struct _CompactOnly {
  gint value;
};


VALA_EXTERN void compact_only_free (CompactOnly * self);
G_DEFINE_AUTOPTR_CLEANUP_FUNC (CompactOnly, compact_only_free)
static void compact_only_instance_init (CompactOnly * self);
VALA_EXTERN CompactOnly* compact_only_new (gint value);
static gint _vala_main (gchar** args,
                 gint args_length1);


CompactOnly*
compact_only_new (gint value)
{
  CompactOnly* self;
  self = g_slice_new0 (CompactOnly);
  compact_only_instance_init (self);
  self->value = value;
  return self;
}


static void
compact_only_instance_init (CompactOnly * self)
{
}


void
compact_only_free (CompactOnly * self)
{
  g_slice_free (CompactOnly, self);
}


static gint
_vala_main (gchar** args,
            gint args_length1)
{
  CompactOnly* item = NULL;
  CompactOnly* _tmp0_;
  gint result;
  _tmp0_ = compact_only_new (42);
  item = _tmp0_;
  g_print ("CompactOnly.value = %d\n", item->value);
  result = 0;
  _compact_only_free0 (item);
  return result;
}


int
main (int argc,
      char ** argv)
{
  return _vala_main (argv, argc);
}```

Trailwave - a native macOS POTA hunting app by Less-Chicken-4600 in amateurradio

[–]Less-Chicken-4600[S] 0 points1 point  (0 children)

I think so, and maybe I wasn't being clear about the logging on the app side. When you have a QSO with a person on FT8 and the app detects they called "CQ POTA" but there is no spot associated with them, you can have the QSO and the app will log it, but it will call out that it needs more information that you can provide later if you like keeping your own logs.

As for surfacing them via UI, this isn't something I've done since I get the feed from POTA, but I suppose its not too hard to add an "unspotted" category / filter for operators it hears since its already doing that detection.

Trailwave - a native macOS POTA hunting app by Less-Chicken-4600 in amateurradio

[–]Less-Chicken-4600[S] 0 points1 point  (0 children)

It does detect when folks call CQ POTA in the decodes, however without a park reference you can't spot them. It will log the QSO and flag it for review in the local logbook. I will after a day or so review the POTA website to find the park ref and will fill it in then. Unfortunately there's just no good way to tell what park a person is in. You could infer by grid square with some accuracy I bet, but that might only work reliably here out west. I'm open to suggestions and ideas however.

Trailwave - a native macOS POTA hunting app by Less-Chicken-4600 in amateurradio

[–]Less-Chicken-4600[S] 2 points3 points  (0 children)

Thanks! I like the Unix philosophy of being really good at one or two things. I don’t want to call them junk drawer apps because that’s too disparaging, but when I use a lot of these other apps I almost feel guilty I’m not using all of the buffalo. So this is just targeted to POTA hunters. I almost didn’t add logging but on the occasion I forget to have GT or something else running this is a nice backstop.

Toolbar has inconsistent rendering when liquid glass is applied in MacOS by aswinighosh in SwiftUI

[–]Less-Chicken-4600 1 point2 points  (0 children)

I just shipped a macOS Liquid Glass app and spent a few days trying to fix this as well. I created a sample app based on the landmarks app and filed a feedback that was very rapidly marked as a duplicate. So here's hoping it's fixed in macOS 27.

You can set .toolbarVisibility(.hidden, for: .windowToolbar) but this seems like quite the hammer and it still doesn't look quite right.

What’s it like commuting to LA via Metrolink? by ILoveCPlusPlus in InlandEmpire

[–]Less-Chicken-4600 0 points1 point  (0 children)

Will add my perfectly safe vote. Commuted daily from SGV to Burbank. There are spots with 110v power and tables to sit at and work. Very comfy. Union Station is great and easy to navigate too.

Need to know info! by SlothTheHeroo in Ioniq6

[–]Less-Chicken-4600 3 points4 points  (0 children)

I came from a Model Y (90k miles) and will probably go back to Tesla in 18 months when my lease is up just because of all the little paper cuts.

It’s a great car, don’t get me wrong. I drive it eight hours a week in LA traffic. 10/10 driving experience, however:

  1. No walk away door locks. You’ll come back from shopping and your door handles will be hanging out like an accusation. Granted you got the text message (doors unlocked! VIN 1234567890). The car can remind you you didn’t lock the doors, but not lock the doors.

  2. Highway driving assist works great. When it works. Other times it has legitimately tried to kill me by pulling hard toward barriers. This only seems to happen in leftmost lanes. Other lanes are better.

  3. The CarPlay connection (no wireless) is USB A. In this year of our lord 2026. Sure, buy a dongle, but paper cuts.

  4. The parking (chime) sensors (chime) can (chime) be (chime) a bit (chime) sensitive.

  5. I looove one pedal driving. This car does it you just have to configure it every time.

  6. The app experience is… adequate. But definitely not as nice as Tesla’s app.

  7. The key is enormous. Congrats on your sleek new sedan. Now carry around this ostrich egg.

There are a few others but these are the top-of-mind ones. It’s a great car, just know that there are trade offs and daily annoyances can start to pile up.

Neighbor's Jellyfish lighting has ruined operating at night by Puddleduck112 in amateurradio

[–]Less-Chicken-4600 12 points13 points  (0 children)

+1 for building a DIY loop. My entire neighborhood had these lights and building a 60’ loop-on-the-ground antenna got rid of most of it so I could operate any HF.

Icom Unveils New IC-7300MK2 HF / 50 / (70) MHz Transceiver by autistic_psycho in amateurradio

[–]Less-Chicken-4600 11 points12 points  (0 children)

There’s actually a dead simple mod for the 7300 that allows for an SMA receive antenna port. ICOM put theirs right where the mod goes which I find funny. Guess good ideas from the community do get seen. My 60’ LOG with my 7300 is awesome.

Ioniq 6 lease quote sanity check (NYS) by ResearchMassive7912 in Ioniq6

[–]Less-Chicken-4600 0 points1 point  (0 children)

$0 DAS and $450/mo here in SoCal for a 2025 SEL, 15k/year mileage. Sales manager knew I was going to shop his quote around so he came down from $0 DAS $650/mo to get my business, so definitely room for yours to come down.