January 16, 2019

Does the Facebook Page Plugin need an App ID or not?

Filed under: Social Media, Software Blog — marcstober @ 12:20 pm

A while ago I set up the official Facebook Page Plugin on a WordPress site I help manage for Beantown Jewish Gardens, a small nonprofit.

At the time, Facebook seemed to want me to sign up for an App ID to do this, so I did, even though adding some Facebook code to our site hardly felt like an “app”. The App ID is included in the code you add to the page to use the Page Plugin.

Recently, Facebook has changed their rules and requires Apps to go through a review process regarding use of personal data, privacy policy, etc. This morning, I got a developer alert from Facebook that they had removed permissions from the my app because it failed review. Of course, the things is failed review for was wanting to access personal information that I wasn’t accessing and didn’t want to access—I just wanted the Page Plugin to show up on our site. And the Page Plugin was still showing up on the site just fine.

Looking further at the documentation for the page plugin, I found some conflicting information. While the FAQs said that an App ID and review is not required, when I went to the place where you can grab the code to put in your page, it forced me to choose an App ID:

Eventually, I had the idea to open the same page to generate the code in a Private Window in Firefox, so Facebook wouldn’t know it was me. Behold, it now generated the without making me choose an App ID–actually, in this state you wouldn’t even know that was a possibility! (I’m also wondering if I was the Admin of the Facebook page if I might have had some different options while logged in.)

So, I guess I don’t need an App any more after all. It would be nice if Facebook could just keep this more simple and stable in the first place but I guess that’s not the world we live in. 😐

In the end, it was a one-line code change to remove the App ID. I also thought about going back to a WordPress plugin to handle this for us—there had been some reason I didn’t do that at one point in the past, but maybe there’s a good option now (this one?). (Note that while it’s called “Facebook Page Plugin” it’s not a “plugin” in the WordPress sense.)

Anyway, I didn’t find any information on this specific issue on the web so I figured I’d put these notes up on my blog in case anyone runs into the same issue.

August 20, 2018

We’re back, online at SiteGround

Filed under: Uncategorized — marcstober @ 12:39 pm

Hello! You may have noticed this site has been down for a day or so, and that you’ve gotten security errors in the past week or so. Ok, no one probably noticed that since this site gets little traffic.

Anyhow, my paid SSL certificate had expired. Also, some time ago, after working on a SiteGround-hosted site for Beantown Jewish Gardens, I jumped at an offer to buy some web hosting space at SiteGround. SiteGround also has great support for the free Let’s Encrypt SSL certificates. So, this week I finally moved this blog and Finding My Voice over to SiteGround.

Use this referral link if you’d like to use SiteGround, too.

Maybe blogging isn’t what it used to be but I still find value in having my own self-hosted presence on the ol’ World Wide Web. And I do hope to update Finding My Voice more this coming year!

October 9, 2017

Retiring the More Bookmarks Toolbar

Filed under: Software Blog — marcstober @ 9:46 pm

Once upon a time, when web browsers did a lot less than they did today, and Google Chrome wasn’t yet a twinkle in Alphabet’s eye, Toolbars were a thing. You could install a Toolbar (such as the Yahoo! Toolbar) into Internet Explorer and get features like a search box, notifications, the ability to store bookmarks in the cloud, and even tabs back before browsers did all these things.

A few years ago I built a Firefox extension to “scratch my own itch” and add a second row of bookmarks to the Firefox UI, and it used this same functionality the browser provided to allow adding a toolbar. I called it the More Bookmarks Toolbar. It has had a four-star review average, over 5,000 downloads and over 500 current users as of today. I was pretty proud of it.

Well, things never stay the same in technology. The current version of Firefox (56) broke the toolbar and the next version (57) is not going to support toolbars at all, in fact all of the add-on functionality that used to distinguish Firefox is being dropped in favor of a new extension API that is harmonized with other browser (i.e., Google Chrome). I guess this is what Mozilla needs to do, but unfortunately I’d need to do a completely rewrite of the Toolbar and it wouldn’t even be able to work the way it did before.

In addition, the Toolbar is no longer a part of my daily workflow and I’ve changed focus to other things professionally both inside and outside of the software industry so I don’t have time to work on this. So, sadly, I’m going to retire the More Bookmarks Toolbar; I’m not planning any more versions and it’s not going to compatible with Firefox 56 or later.

The code has always been on Github so anyone who has the developer skills to make use of that it welcome to try to keep it working.

To all of you who have used, reviewed or commented about the Toolbar have been important, thank you for your support and I’m sorry to say goodbye.

January 20, 2017

Being the change you want to see in the world

Filed under: Politics, Social Justice — marcstober @ 9:48 am

If you pardon a little software engineering humor, I once had a colleague who had a sign, “be the diff you want to see in the code.” It was, of course, a nod “be the change you want to see in the world,” attributed (probably wrongly) to Ghandi and which I seemed to hear a lot of during the early Obama years (Obama did say, “You must create the change that you want to see“).

But you know what? I think we—democrats, liberals, centrists, people who voted for him—mostly just expected Obama to be the change we wanted to see in the world. We could go about our business knowing there was someone in charge who would, more or less, make the choices we wanted.

Today there’s going to be a new president. I’m not as alarmed as parts of my social media network. People have lived under all sorts of governments, often with leaders they didn’t chose and don’t like. For us Jews, especially, we’re pretty much defined by a history of surviving under less-than-ideal regimes. Yes, there was one that killed six million, but most didn’t, and the American Jewish community is second only to the Babylonian Exile at adapting itself. I didn’t vote for Trump, but he’s not Hitler.

But that doesn’t mean everything is going to be good for everyone. So I think, in this new world, a lot more is going to be up to us, to make sure we are doing things that make a difference: lobbying our government, helping people in need, standing up for those who are put down. Not just business as usual.

To start with, I’m going to be at the Boston Women’s March for America tomorrow. While I’ll admit it’s not completely coincidental it’s the day after inauguration (as much as anything, it’s that someone has organized a relatively safe protest on a day with no work or school, and while you could give me reasons not to go you can always find a reason for inaction), I’m not protesting the election results. Trump is legally the president. It doesn’t have to fair, but I don’t know that there is an absolute arbiter of “legitimate” or “qualified” beyond the electors and officials who have signed off. And this is actually my point: as much as we’d like a leader who makes us feel like everything is going to be okay (and for some, that leader is Trump), we have to make that world ourselves.

October 11, 2016

Trump Disrespects Men, and Yom Kippur

Filed under: Judaism, Personal Blog, Politics — marcstober @ 3:49 pm

What makes me really angry about things Donald Trump said isn’t that it disrespects women. It’s that it disrespects men.

When our country’s founders wrote “all men are created equal,” or Rabbi Soloveitchik wrote about Halakhic Man, or Hannah Szensh wrote about “the prayer of Man” (actually, in Hebrew, there are two words for “man” and she used adam, which conveys the deeper meaning more than the common word ish)—that language seems archaic now: it would be better to just say “people.” But the classical usage of “Man” also had a deeper connotation: a good, civilized human. A mensch. Donald Trump may have male chromosomes, but he’s not much of a man in this sense.

I’ve always been uncomfortable with “locker room talk.” Not just for the sake of (as the rhetorical trope goes) my mother/sister/daughter, but because it’s a challenge to being a man. Being a man means having testosterone-fueled energy and needing to find a way to sanctify it and to do the right thing. Bill Clinton has clearly struggled with this, and I’ll say to him what he said to us: “I feel your pain.” Mitt Romney has lots of children, so presumably he’s done the same stuff Donald Trump talked about—with his wife, when she consents. Teenagers may talk about this in locker rooms, but grown men are supposed to be better.

What does this have to do with Yom Kippur? In Jewish terms, we have good and evil inclinations, the yetzer ha-tov and the yetzer ha-ra. The little angel and devil on our shoulders, like in cartoons. We need both, and we wrestle to keep them in balance. On Yom Kippur, we check in with ourselves as to how we’re doing with that.

Such work is a big part of being (to quote Glenn Beck!) a “moral, dignified man” and Trump doesn’t seem to have any respect for that.

G’mar chatimah tovah.

July 22, 2016

Rambling thoughts on FOMO, email and the news of the world

Filed under: Media, Personal Blog, Technology — marcstober @ 4:44 pm

I have over 50 thousand messages in my inbox. Most of them unread.

Cheryl makes fun of me for it because she manages to keep pretty close to “inbox zero.” But I think she’s more the exception than I am.

It’s all FOMO. For example, I just deleted hundreds of message from Glassdoor. But I’m hesitant to completely unsubscribe. What if I missed the perfect job or bit of career advice? It could be like leaving money, or my happiness, on the table.

Heck, I don’t want to unsubscribe to coupons I might get. I just got an e-mail from a certain business and was reminded to use a $20 promotional gift card before it expired. Score! If I delete promotional offers what I end up needing what they’re promoting? Unsubscribing from Constant Contact with its “SafeUnsubscribe” is especially fraught. It make is hard for a company to add you back to a list, even if you want them to, without an extra opt-in. I suppose the one time it happened (that I wanted to restart getting news from a certain company) it worked out but….

Of course, the thing about FOMO is that it’s not humanly possible to keep up with everything. By definition, you are missing out on 99.99% of what is going on in the world. If you’re a big media junkie, 99.98%. (Not exact numbers, but you get the point.)

The interesting thing is that we ever think we weren’t missing out on most of everything. There is this expectation that we are supposed to be keeping up with everything. For my parents’ generation, that was watching the nightly news. Which has turned into having CNN on, all the time.

The usual fiction goes like this: there is normally nothing going on and if there is, then we hear about it and do something about it. For example, if there’s a murder or an accident in our community, we expect to turn on the news or open the paper and hear about it. And there’s a response, and then things would recover and go back to normal. I don’t think I’m the only for whom that’s the expectation of normal, even though I know that not every disaster in someone’s life is actually in the news.

Presumably there is some weird mash-up of human brains evolved to participate in communities of hundreds or thousands of people, and technology that makes a small world out of millions or billions of us. I may lead a someone privileged life, but in a community of thousands—a college campus, my office building, the public schools on my side of town—this pattern holds. Emergencies happen once in a while, and we notice them, and respond, and recover.

It is so hard not to apply that principle to the whole world. Something terrible happened somewhere, we’ll see it on TV or the Internet, respond, and things will go back to normal.

It is so hard to really believe that the world as a whole is so big. That the one-in-a-million event in a small community is a daily event in the world, and the pattern of news, response, and recovery doesn’t apply.

The irony is that fear of missing out on everything doesn’t mean I’m not missing out on something. How do I not miss out on what I really don’t want to miss out on?

July 14, 2016

Not .NET

Filed under: Personal Blog, Software Blog — marcstober @ 7:10 am

Yesterday I got an e-mail from a recruiter; I get these pretty typically:

I came across your resume in a file of ours…. I am not sure if you are looking around anymore or not but I just partnered up with the company searching for a .NET engineer…

I am long over identifying as a “.NET engineer.”

Let me tell you how I got into this business. First, I taught myself Perl from a book—back when Perl was cool! Then, I taught myself Microsoft Access from book, and also from learning relational databases from the academic side in graduate school. With that I became a citizen developer, learning the programming language that came with Access, Visual Basic for Applications (VBA). I leveraged that experience into jobs that required more serious development on the Microsoft stack, first in Visual Basic 6 and then in C# with the advent of .NET.

C# in particular is a great language and Microsoft despite all the criticism they’ve taken has made some great software. But while I’ve made actual money using Microsoft technologies, I’ve always envied the cool kids working on a LAMP stack or Plone or Django or Ruby on Rails. That is where this work becomes an art form. Or building iPhone apps.

Over the past few years I’ve gotten back to what first got me into technology in the ’90’s, web development. And, finally, I’m at a job where I’m not at all a Microsoft developer; I’m still running IIS but, conspicuously, without ASP.NET.

So no, I’m not interested in your old resume on file that says I’m a .NET Developer. Besides which if you can’t even look me up on LinkedIn and see what I’ve been doing since I talked to your agency ten years ago you’re not a very good recruiter anyway.

Oh, and that first database was to track custom imprinted B’Kol Echad orders. So that I was ever a Microsoft-stack developer was all caused by that other domain I am still passionate about.

March 6, 2016

Compiling aacgain (an exercise in Open Source software archaelogy)

Filed under: Software Blog — marcstober @ 12:07 pm

So I found a lecture that had been recorded and posted online that I wanted to listen to.

The only problem, is, it was very, very, quiet. I had to turn up the volume all the way to hear it all all, and still could barely hear it; not to mention that I almost damaged my ears when I changed to listen to something else.

So, being me, I went looking for an open-source tool that could modify the volume of an audio recording. I found some references to mp3gain, but this was an M4A file which is (basically) an AAC file. It also turns out there is something called aacgain. But what I was finding was source code, which I don’t usually bother with.

Nevertheless, I downloaded and tried to compile it. I was able to compile mp3gain easily, so I was encouraged. aacgain, which I really needed, was more complicated. But, I dug in, and after downloading various things from SourceForge and Google Code, and combining that with an existing copy of the core mp3gain code to Github, I was able to get aacgain up and running.

I say this is an exercise in software archaeology because this useful software was written several years ago and hosted on sites that are no longer the go-to places for open source code. There was a bit of fiddling required to get them running on a modern system. In the end, though, this is one of the promises of Open Source; you’re free to find something useful that no one is actively maintaining and get it working again yourself. It’s not just about the cool new stuff–something old and unmaintained, if Open Source, can still be valuable.

I’ve placed all the source code I cobbled together back in a Github repository for the benefit of anyone else who can use it.

Now off to listen to that lecture!

January 7, 2016

grunt.file.match and grunt.file.isMatch Do Not Access File System

Filed under: JavaScript, Software Blog — marcstober @ 10:05 am

While trying to improve my team’s grunt scripts, I spent a while stuck trying to figure out why grunt.file.isMatch wasn’t working.

I was expecting this to be like a fancy “file exists” check, that would take some pattern and looking in the current directory and subdirectories (as specified by my globbing pattern) to tell me if the file exists. And I couldn’t figure it out, especially since there were two arguments, “patterns” and “filepaths”.

Ultimately, I looked at the source code and figured out I’d gotten in all wrong. Despite being methods of the file object, “match” and “isMatch” don’t look at anything in the file system. They’re just string pattern matching operations: completely deterministic functions that match “patterns” against”filepaths”.

What I’d really wanted to do was something like:

if (grunt.file.expand(“my-dir/**/*.js”).length > 0) { …

Posting this so hopefully the next person searching the web for a solution to the same problem finds this and doesn’t get stuck like I did!

July 13, 2015

Renovation Update

Filed under: House Blog — marcstober @ 7:27 am


We’ve just finished week 12 in our home renovation project.

People always ask how long it’s going to take. It’s a way to make conversation but it’s not what I want to talk about. It’s like kids asking “are we there yet?” on a car ride instead of think about the fun things you’re going to do on the vacation. We’ve been planning this since we bought the house nine years ago and hope to live here for at least as long again, so I’m not focused on the temporary disruption.

Maybe what people really want to ask is how much it costs. Let’s get that out of the way: We crossed the six-figure mark a few weeks ago, about halfway through the project. I’ll leave it at that.

The Process

We hired an architect, Peter Sachs, to design the project, and a builder who he recommended. You can renovate a single-family home without an architect, but it was a good investment. Thanks to his advice, we’ve avoided some mistakes and done things that will add to the home (and it’s value if we sell it) more than raw square feet. Some people hire design-build firms–one company that handles the architectural design and construction–so they won’t design something you can’t afford. I wanted to design what we needed first and then figure out how to afford it.

We’re paying our contractor on a time-and-materials basis. This goes against the conventional wisdom, Theory X, win-lose viewpoint I’ve encountered, where you’re supposed to have a contract and then get argumentative about sticking to it. Maybe I’m idealistic, but that doesn’t seem fair and or even realistic. Maybe some people just like the intellectual challenge of contract law more than the craftsmanship of their house. I’d rather trust the people working for me. Time-and-materials carries risk, but only in the economic sense that greater risk leads to greater reward. Since I’m not buying “insurance” against a change in plan, I save money if the contractor does. If things cost more, it is what it is, nobody “loses.”

And one of things we’ve gotten from our contractor is a lot of value engineering, saving us money by following the architect’s plan on the whole while finding more cost-effective solutions in specific areas. For example, using an in-wall toilet that takes up less space to avoid moving the entire wall, or buying a different name-brand window that he was able to get at a better price.

Our architect has been less involved in the construction phase of the project. From what I’ve heard, some architects choose paint colors and lighting fixtures and every detail, and while I’m sure ours would have us good advice in these areas if we needed it, he’s let us work these things out with the builder and other vendors, which is fine because I like picking out these details.

The Decisions

The first parts of the project were major but not needing a lot of decisions. I mean, having a giant excavator and cement mixer visit your house is pretty impressive. But, it’s a hole in ground filled with concrete, I’m not ruminating on the details. Now we’re into things where getting the details right now really matter: exactly where a door or outlet is going to is something that we need to get right now or we’ll be living with the repercussions for years to come. I’m telling myself, “you can do it this way, or that way”–sometimes, I need to let go of the idea that there is one right answer and I’m going to get it wrong.

I tend to obsess about the electrical stuff. I like a lot of light, but I’ve never liked the heat incandescent light generates, and I like bluish fluorescent light when I have to stay alert after dark and traditional warm yellows when I need to relax. Fortunately LED’s have made amazing progress in the past 10 years; they were too unusual and expensive when building the kitchen just 8 years ago but it’s easier to find LED’s now than the halogen bulbs we used then. Maybe I should have obsessed about windows more instead, but in all these years of thinking about lighting I’ve never given much thought to windows other than whether they’re double-pane or drafty. I’ve been researching online about home automation. It’s seems to in the same expensive-novelty-but-might-have-potential phase LED lights were 8 years ago. I want to try and experiment with it, but not until after the “real” construction.

On the other hand, a big part of this project is being able to delegate these decisions to your architect and builder. I think that comes naturally to some people–they have “a guy” they trust and don’t even want to think about the details. But not to me; professionally, I’m a “leaf node” about the details: business people and UX designers give me a concept and I’m the one who actually puts every bit and pixel in place and chooses the specific code. And on smaller home project, I’m a DIYer and enjoy working out the details myself, too. But on this project I’m the owner at a high level, and not the one who places every stud and screw, so it’s just the opposite of the role I play at work.


The Big Build

I’ve called this project the Big Build, because it’s for our family what the Big Dig was to Boston: it changes everything. (We were in Boston last night and events were going on on the Greenway and in the Seaport area–it really has changed things!) When we first moved into the house, we talked to a couple architects, both of whom gave us advice to do a larger project that we couldn’t then afford rather than improving the house piecemeal. We renovated the kitchen, but deferred almost all other major improvement and maintenance. People seem surprised how big the project is. It’s not that big in an absolute, McMansion sense; we’ll end up with around 2,000 square feet, maybe a little under. But our project is changing every room in and side of the house to some degree; even the rooms that aren’t changing much physically will be used differently.

While there are mornings I don’t relish contractors showing up at 7:00 a.m. I’m thankful that the dream I’ve had since childhood of a custom house is coming true!

Next Page »