Menu Bar with Quit for a wxDialog or wxFrame-based app on OSX

I have some apps that I’ve tried porting to OSX off an on over the years, but some of them have never been quite right.

They’re written with wxWidgets, which is a multiplatform application development toolkit. However, documentation and fine details for macOS specifics is generally lacking.

For instance, I had an ongoing problem with making the “Quit” function in a menu work in a single-dialog application based on the wxDialog class. I originally asked the question on the forums back in 2011:

I have a wxDialog-based application on OSX that shows a single modal dialog window.

My understanding is that a dialog-based app cannot have a menu bar. However, I do get the default system menu bar on the app.

The Cmd-Q option (Quit) shows up on the default system menu bar, but it is grayed out. How can I modify my app to bind to that Cmd-Q option so I can treat it the same as clicking the red button at the top right of my dialog (which exits the app)?

The original post is here.

The answer from Tierra about switching to a wxFrame instead of a wxDialog was a part of the puzzle (thank you!), but the quit item still didn’t work. Once I had a wxFrame I could then attach the default menu items (in the constructor where all the dialog controls are being created):

wxMenu* helpMenu = new wxMenu();
helpMenu->Append(wxID_HELP);
helpMenu->Append(wxID_ABOUT);
wxMenuBar* menuBar = new wxMenuBar();
menuBar->Append( helpMenu, "&Help" );
SetMenuBar(menuBar);

I also had to connect those buttons to my functions in the event table (my dialog class is called wxKeyboard):

EVT_MENU( wxID_EXIT, wxKeyboard::OnExit )
EVT_MENU( wxID_ABOUT, wxKeyboard::OnInfo )
EVT_MENU( wxID_HELP, wxKeyboard::OnHelp )

Once that was done, I had an about menu item, a help menu item, and the quit item magically appeared and worked as intended. In addition, the “About” menu entry appeared under the application menu and not the help menu, but I had to add it to a menu in order for it to show up.

Silica Gel Packet Websites (Plus Favorite Packets)

For ages I’ve run websites that are image galleries of silica gel packets. You could say that I’m a pioneer in the field of silica gel packet collecting. It all started when a coworker gave me a silica gel packet with the word “candy” written on it.

In 2009, I bought the domain do-not-eat.com [Archive.org September 2010]. It was just a simple photo gallery with a dozen or so packets, but it managed to get some organic traffic. I sold the domain for something like $30 and the new owner kept the site up for a year or two.

In 2012, I bought the domain silica-gel.org. I built a Django site and added a bunch of packets, also linked by ink color, language, and manufacturer. I ad a packet now and then as I discover new and different ones.

Silica-Gel.org Website Logo

 

 

 

These are my favorite packets.

This one has a nice transparent blue flower that lets you see the silica gel balls.

This one has a phenomenal amount of text and has nice fonts and imagery.

I like this one just because it is orange. There are a few nice orange packets, especially ones from Topcod.

This is another nice orange packet and I enjoy the skull and crossbones.

That’s it for the highlights of my silica gel packet collection.

If you’d like to download a copy of the silica-gel.org website (including archived images), it’s available as open source on GitHub.

Vintage Live Dr. Kilpatient Recordings

I posted two Dr. Kilpatient live albums recorded in 2001 on YouTube.

The first is And The Key of Love, from the largest live lineup we ever head. With a larger lineup, we evolved from our industrial circus rock sound to more of an electronic funk band.

The second is Fuck Jason Champion, an album titled as a goodbye tribute to me because I was moving to New York City. I came back 4 months later. That place wasn’t my style.

Enjoy this glimpse into the history of Midwestern circus rock.

Chitika Didn’t Work For Me. Luckily They Died.

Chitika was one of the remaining few advertisers in my WbSrch advertising experiment.

A few days ago I received an email saying that they were shutting down, effective immediately.

Since they had a fill rate that never got higher than about 10-15%, that’s hardly a problem. I was going to remove them from my site when I had a free moment anyhow.

From January 7-April 10, a span of 94 days, I had 1,318 filled impressions and $0.000 revenue. On the best day ever, the CPM was $0.0007, or seven hundredths of a cent per thousand impressions. In any case, that was not enough to add up to a penny.

Bidvertiser is still in the rotation and they’re doing about how I’d expect. I will probably report more later.

RevenueHits Didn’t Work For me

I’ve had to cut short another one of the alternative advertiser experiments that I’ve been running on WbSrch. This time it’s RevenueHits.

This one isn’t causing malware warnings, but it made my site unusable if I had ad blocking turned off. There were popup windows, auto-navigation, and tabs opening without my permission. None of this is OK.

It’s not much of a loss – I didn’t earn anything at all from them during the brief experiment. During the short test, I had 433 impressions, 5 clicks (1.155%), and $0.00 in revenue. Not even a fraction of a penny – eCPM was $0.00 across the board.

The experiment continues with Adcash, Bidvertiser, Chitika, and Adsterra remaining.

Rain Without End – Flickering Flames

I recorded and released a song called “Flickering Flames” in January. It’s an instrumental track with bass and three guitars. Here it is as a YouTube video:

The cover art is a painting I created the first time I tried abstract painting. The cover art for “Rolling Clouds” was created the same day.

If you’d rather listen on Spotify, it’s here.

Yllix Didn’t Work For Me

I’ve been experimenting with advertising providers on WbSrch to find one (or more) that works well.

Among the half dozen or so I was testing is Yllix.

Unfortunately, they’re causing my site to get malware warnings from Chrome. I’m sure Google is especially vigilant with flagging a competing ad service as malicious, so I’m dropping them from the test.

During the (shortened) test, I had 527 impressions, 4 clicks, and $0.01 in revenue, so it’s unlikely that they’d work out anyhow.

Rain Without End

I’ve been practicing bass and guitar more than I ever have this year thanks to being in Sasha and The Children, the hardest-working band in Portland.

In my non-band time I’ve been jamming with myself, recording a bass and guitar track and playing along. I’ve kept a couple of these and released them under the Portland-appropriate name Rain Without End. It’s fun, so I’ll probably create more as time permits.

It’s on all the streaming platforms if you’d like to listen. Here are a couple:

Rain Without End on Spotify

Rain Without End on YouTube

Sasha and The Children

Most of my creative time for the last eight months has been spent with a theatrical folk pop band called Sasha and The Children.

This group is pretty different from any of the other music I’ve been involved with. Everyone is incredibly talented and we work extremely hard, with four practices in a normal week.

I’ve been playing bass, doing live sound, recording engineering, and produced the first EP, Can’t Fall Asleep.

We’ve been playing live shows in Portland, at the Jade lounge, Local Lounge, The Big Legrowlski, EastSide Bar and Grill, and the Rose City Book Pub. If you’re in town, come see us play live. We’re pretty good.

We’re on all the streaming platforms, including Spotify.

Brian Eno Rage

I’ve spent the last few days listening to pretty much the full Brian Eno discography.

It has made me incredibly angry.

After all, he’s the “king of ambient”, and I was afraid that listening to his music would just be depressing since one important aspect of the music I create as Bloodless Mushroom is ambient and I knew I could never aspire to such greatness. So I just went on doing my own thing and generally avoided listening, but was still worried that I was just copycatting things (even without having heard them).

I’ve been afraid to listen to a few artists over the years, but I won’t go into that here.

But, in my own hyper-opinionated view, Brian Eno’s music is “just OK”. Some of it is really good, some of it is average, and some of it is not good, but it is not all overwhelmingly one way or another.

So I’m angry.

Why did I spend so much time being afraid of what I’d hear? Why was I worried I couldn’t reach that creative level? Why was I worried that everything I created could probably be boiled town to copycat-ism?

Must be brain damage.

In any case I have nothing to worry about. Just keep going and keep working on getting better at the things I do. It sounds how it sounds, and even if some parts share similarities with other artists, it is still very much its own unique thing.

WbSrch Online Again

A while back I open-sourced the code for the WbSrch search engine.

It’s online now in a much-reduced form at wbsrch.com.

It’s not the full search engine. Far from it. It’s just a tiny database of about 10,000 or so URLs to demo the source code, but it’s possible you’ll actually find what you’re looking for in even that tiny amount of data if your search is sufficiently simple.

It probably won’t get any bigger — that’s about the size I can support “for free”, in that it doesn’t take enough resources on my inexpensive VPS to impact more important things. If you’re curious what the original WbSrch search engine was like, it’s a pretty good demo, at least visually.

2018 Is The Year That Twitter Ceases To Be Relevant

2018 is the year that Twitter ceases to be relevant.

It’s already stopped being relevant for me. I’ve stopped using it, and have deleted all of my tweets.

As a user, it’s just not worth it. It’s a miserable experience, made much worse by the userbase being made up primarily of Russian bots posing as MAGA idiots, actual alt-right MAGA idiots, and a small kernel of real people saying intelligent things that are drowned out by noise.

I’ve done (and still do) a lot of advertising on the web. For all of the different things I’ve been into, the worst ROI has consistently been via Twitter. Maybe some business types are viable via their ad platform, but none I’ve been involved in have been. It’s been a total waste of money. Mailing postcards would be a better value.

Most of the people I know in meatspace with accounts have stopped using it long ago. Some stopped in 2015, some in 2016, some in 2017. I can name maybe five people who use it regularly, and some of them echo their tweets to Facebook. I don’t have a huge circle of friends, but compare that to about 140 on Facebook with about 40% of them being active (50 or so people) and the order of magnitude population reduction makes it far less interesting. Facebook has its own problems, but it still manages to be relevant, unlike Twitter.

Even though Twitter is garbage to me, maybe it isn’t garbage to everyone else.

Nope.

There hasn’t been much recent coverage that I can find with about 15 seconds of effort, but these from last year don’t paint a rosy picture:

Twitter is now losing users in the U.S
http://money.cnn.com/2017/07/27/technology/business/twitter-earnings/index.html

Twitter revenues decline for first time as advertising falls away
https://www.theguardian.com/technology/2017/apr/26/twitter-revenues-fall-first-quarter-results-advertising

Library of Congress Gives Up Collecting All Tweets Because Twitter Is Garbage
https://gizmodo.com/library-of-congress-gives-up-on-twitter-because-twitter-1821581190

When Twitter finally dies, nearly nothing of value will be lost.

And if it doesn’t die, why care?

Microsoft: Fuck Off With Your Security Updates

I must be old. I come from a time where a computer would NEVER restart without my permission.

I just had a computer restart on me without saving my work. I lost about four hours of time spent scanning and editing images because some “genius” thought their security update was so important that it was worth forcing an unscheduled reboot without my consent and without saving and restoring what I was working on.

That’s right, the protection from some vague threat of some future loss of time or data has caused me to lose ACTUAL time and data. Good job, you’ve made the world a better place.

The cure is worse than the disease. Fuck off with that shit, Microsoft. This is not your computer.

Six Weeks of RCRDList – Screwups and Successes and More Screwups

On the first of the year I took over as curator of the RCRDList music discovery email list. It was created by my friend Zoe and she doesn’t have the time to maintain it because she’s in grad school. It’s presumably a temporary takeover, with me assuming she’ll want it back when school’s over, but we haven’t figured that out yet.

It was a bit of a rough start. I did well enough picking music, but there were a few bad links or mis-sized images here and there, but nothing terrible. It was obvious that I misunderestimated the phenomenal amount of work she put into it.

I also rewrote the MusicSrch search engine to fix a bunch of broken things and add some services that weren’t in yet but would be useful for RCRDList. That has been very helpful and has saved me a lot of time.

Then I got into a bit of a flow and managed to get a few days ahead fairly consistently. That’s how Zoe used to manage it — create a buffer big enough to absorb the fluctuations of day-to-day life. I think she was usually pretty far ahead, certainly more than two or three days.

Then life happened. My band Emergency Brunch played 3 live shows in January, with two in the same week. And my old band from 2004, Dr. Kilpatient, reunited for a brief show because the third member was in town. And, of course, those things require time and practice and hauling stuff all over the place, made even more complicated by riding public transit. Things became even more difficult as a wave of the winter blues overtook me and made me lazy/distracted/befuckited for a week or so.

Not only did I miss a day, I missed a few. And some weeklies. A whole group of very important people was left in the dark.

Zoe, I failed to feed your baby. More than once. I’m sorry. I will do better.

I also haven’t spent enough effort on descriptions and headlines. In the mad rush to get emails out, many of the descriptions were pretty uncreative. It was enough that RCRDList friend Trixie pointed that out on Twitter. Thank you for caring enough to say that, Trixie. You’re absolutely right.

I thought about asking for help. And I might at some point, especially for the genres that I find hard to listen to — country and folk. The trouble is that getting someone new up to speed on the selection and editing criteria would be a serious time investment on its own. RCRDList is far more detailed than “pick and random thing and email it”. But, even having help with just the selecting would make life easier. I listen to about 4 hours of music for every band that’s featured, and finding time for that is not always easy. The day job gives me some time to listen while I work most days, at least.

As I write this, I’m a day ahead and working on the next and I have enough time to finish Monday’s weekly. There are problems with the workflow that I need to solve, with the most obvious being that I have to enter every URL twice — once for the dailies and once again for the weeklies. I can copy and paste from the daily emails, but it’s still a manual process. The thing with computers is that you should only ever have to enter a piece of data once. Anything else is extra work. I have an idea that involves saving links from a MusicSrch search and using them to generate (at least partially) a daily email and save those links toward a weekly, but I’m sure I’ll need to do a significant template redesign and many hours of codemonkeying to make it work, but it will pay for itself in time savings if I do.

I’ve also done some work toward growing the list.

It’s the same amount of work whether an email going to 1500 people or 15,000. As it is, when a band finds out they’ve been featured it’s more of a morale boost than anything that really moves the needle for them. You can’t pay the rent by selling an extra 1-2 copies of an album. I’d love for it to make a meaningful difference for a band to be featured by RCRDList. Sometimes it does. With more than 1000 features by now, the odds are good that at least one musician who was ready to give up decided to keep going because they were on the list. I’d really like it to make a meaningful difference every time an email went out.

I used a Facebook ad to grow the following there a little. It wasn’t much, just enough to change the “seen by 3 people” post average to “seen by 5 people”. It’s still a tiny following — less than 100 people. It was enough to figure out how much it costs to grow the audience. 76 cents per like with a really basic ad. If I had a better ad it would be a little less, but that still means increasing the reach is no small (or cheap) task.

Twitter has also grown a little. I made it official policy to follow a featured band. Sometimes they follow back. It’s also useful for the “have we already featured them?” check, and it might also be neat to do a “where are they now” for featured bands in the future.

So far the thing that has made the biggest impact for the smallest expense is Project Wonderful. It’s an ad network that lets you target specific sites with specific bids. It doesn’t have that many music sites in the network since it’s geared more toward webcomics, but there are a few that have been really effective for growing the list. It’s grown by about 3% in the past month. That’s not amazing, but the ability to hypertarget ads means that each new subscriber costs less than 10 cents to add. I started by using a terrible ad that I made and then switched to a few nice ones made by a talented graphic designer in Venezuela. I always hate contributing to the race to the bottom in wages that a place like Fiverr causes, but the alternative would be my horrible programmer art, which probably has a greater long-term negative effect on the world.

Even though RCRDList includes some affiliate links, during its lifetime it has still made less in commissions than I’ve spent on ad experiments in the past six weeks. That’s OK. Money isn’t the point of this thing. It’d just be a nice side-effect if it took off. Even if it is a labor of love, nobody wants to work for free if they don’t have to.

I’ll never understand people who are bored. My problem is and always will be running out of day.

New Bloodless Mushroom Album – Omphalotus

I’ve released a new Bloodless Mushroom album called Omphalotus. It’s 9 chiptune-esque postmodern classical instrumentals.

This new album hovers close to the line between EP and LP. I call it an album because it’s one complete concept that delivers the full odd electronic experience.

It’s available for streaming on all the major platforms:

Spotify

Deezer

iTunes

Google Play

YouTube

Writing Lyrics, But Do I Have Anything To Say?

I’m working on a new musical solo project, pretty unlike Bloodless Mushroom (my long-running experimental instrumental electronic music project that you probably know about by now).

The whole point of this is to have something to perform live at open mic nights. I love playing, but I also love going to them to see the other performers. This will give me an excuse to do both. There’s also something on my bucket list — play in two different bands in the same show (and a solo act counts). And hey, Emergency Brunch definitely plays open mic shows.

There’s a problem. Not that I can’t sing – that can be cured with practice and lessons and effort. If that doesn’t work I can do spoken word, chanting, yodeling, or farm noises.

No, the problem is that I don’t really know whether I have anything worth saying. Sure, I have plenty of opinions and things I care deeply about, but does the world need to hear about them? Or should I just leave them inside my head? Does anyone actually want to hear about Spanish cheese and punching fascists and how much Google sucks?

The last time I even wrote a song with lyrics was about 23 years ago, and that was some not-very-good comedy-punk that I never recorded (the band name was Dead Cement). Or 17 years ago if you count drunken NWO jam session improv.

The name Bloodless Mushroom originated with the word “bloodless”, and I chose that as a word that reflected my watery spine toward the idea of writing and performing music with words (before that I played grunge-punk as “Navy Blue Fred”, based on a Flintstones t-shirt I used to own).

I had a good reason for dodging words altogether. Most of the songs I grew up listening to were dreadfully stupid, with the most common words being “ooh” and “baby”. The last thing the world needed was another dumb rock bombast-bro talking about his dick.

So here’s where I try the thing. I’m new. And a bit scared. And may fail. And don’t know what will come of it. But it’s time.

I know I’ll be my harshest critic, and don’t know if anything will make it past my “this sucks” filter, but I hope it does. And one of the nice things about open mic shows is that they’re a good place to try and refine new things, discarding the ones that don’t work. Even when they’re strangers, it’s normally a friendly and supportive audience, and that helps.

If you see a new Bloodless Mushroom album it doesn’t mean I’ve given up. There are three finished albums in the publishing pipeline right now, with one releasing Thursday.

Dr. Kilpatient – The Prototype IV Soundtrack

My old band Dr. Kilpatient re-released an album we recorded in 2000, the Prototype IV Soundtrack.

It’s the soundtrack to an imaginary science fiction film and was the combined songwriting effort of myself and Tomasz Kordowski (The Doctor Himself). Marc Haney also played guitar on a few of the songs. It was a blast to create, and I’m glad it’s out in the world again.

It’s an instrumental fractal surrealist circus rock album.

It’s available for streaming online:

Spotify

Deezer

YouTube

Tidal

Zeta Centauri Windows App Revenue Postmortem

Now that I’m no longer selling the Zeta Centauri apps, I decided to add up sales of Windows desktop apps over the years and see how much it was.

2010: $261.25
2011: $160.44
2012: $69.24
2013: $0*
2014: $109.26
2015: $50.08
2016: $95.58
2017: $36.42

Total: $781.27

Overall I’d estimate that I’ve spent about 3500 hours developing apps for Zeta Centauri. This works out to about 22 cents per hour.

This does leave out 2008 and 2009 that I don’t have records for, but I think it was about $35 total each year.

This also leaves out my brief experimentation with installer-based advertising (that spamware/crapware stuff that tries to trick you into installing a useless toolbar). That made about $50, and I feel bad about even trying it.

This also leaves out selling Ubuntu versions of some of these apps, which was about $35 total.

In any case, it’s less than $1000 total.

During the 6 months or so I was building webOS apps (before the platform was murdered), I brought in about $700. That was a much better return on my time. I managed to port one of those apps to Android and made about $7 with it. I really hated working on Android and using the Eclipse tools, so after that one I was done. Never tried iOS (always had a mild dislike of Apple).

It was an interesting experiment, and I tried nearly everything I could think of to make it work. If I’m going to make it in this world, it won’t be with desktop audio software.

The only thing that I didn’t try was adding VST support, and that would have made a significant difference. I’m guessing 4x sales. I mean, I did try adding VST support, but didn’t succeed in implementing it. I could never get it quite right.


* Technically sales happened this year, but not enough to hit the $25 payout threshold, so they’re counted in 2014.