Spillo for Pinboard

I’ve been using Pinboard to manage my bookmarks since 2010. It replaced del.icio.us, which, humorously, is now owned by the guy who runs Pinboard, and is read-only.

I like Pinboard a lot, but there are a few little annoyances with it. For one, the Firefox bookmarklet for Pinboard still doesn’t work for any page on github.com. (This is due to something called CSP, and also affects other bookmarklets.) I’d also like to have better searching and filtering capabilities. And the Pinboard site isn’t as reliable as I’d like it be; it’s often slow for me, and sometimes inaccessible. (I’m not sure if that’s Pinboard’s fault, or if it has something to with my ISP or VPN or whatever.)

So I’ve been looking at third-party Pinboard clients for macOS. I already use a third-party client for iOS, called Pushpin, and that’s pretty good (though I have a few issues with that too). The best third-party client for macOS seems to be Spillo. It costs $15, and has a 14-day trial. There are a few negative reviews on the Mac App Store, and it hasn’t been updated recently (last update was April 2017), but I decided to give it a try this weekend.

So far, I’m pretty happy with it, though it’s not everything I’d like it to be. I was hoping that the Firefox bookmarklet that comes with it would solve some of my problems with the official Pinboard bookmarklet. But the Spillo bookmarklet hasn’t been updated for Firefox Quantum, so it no longer works at all. (I’m not sure if the author is going to update it or not.)

If is definitely good for organizing and searching through your links, and can do a few things that Pinboard can’t do on its own. (Or at least I haven’t figured out how to do these things with Pinboard.) First, it can scan through all of your bookmarks and find dead links. When I ran it, it found about 1000 dead links (out of my 12,000 bookmarks). I spent some time deleting a bunch of those yesterday, and updating some of them to point to the correct current URL. To some extent, this is just busywork, and doesn’t really accomplish anything useful. Does it really matter if I have a bunch of dead links to old Lotus Notes and PowerBuilder content in my account? No, not really. But it feels good to clean that stuff up, and it does allow me to take a stroll down memory lane, and stumble across some cool defunct bands, for instance, like Omegalord or Hotrod Cadets, both of whom used to have their own web sites, but apparently don’t anymore.

Spillo also allows you create “collections” — basically a saved search that can have a combination of useful conditions. I’ve created one that will show me unread links from the NY Times, so I can catch up on Times articles that I’ve been meaning to read. I’m also going to want to create one for unread Bandcamp links, since I have a ton of those. (At some point, I’m going to go on a Bandcamp spending spree and buy a bunch of random CDs and/or MP3s.) I have a few other things like that in mind.

I’m also hoping Spillo might work as a way to add bookmarks to Pinboard when the Pinboard site itself is slow or down. I think it’s designed to cache stuff locally, then sync to Pinboard in the background, but I’m not sure if it works in practice, if Pinboard is actually unavailable.

So, overall, I’m finding it useful, though it doesn’t solve quite all of my problems. I’ll probably go ahead and buy it before my trial expires.

I last wrote about bookmarking in August, and got pretty philosophical about it, so there’s no point in doing that again here. It was zero degrees out this morning, so I may wind up spending a lot of time today sitting around in my apartment organizing bookmarks and drinking coffee. Maybe not the best use of my time, but not the worst one either. There’s a lot of stuff I want to do that involves going outside, but it’s really not a good day to do any of it.

Twelve Days of .NET: Day 9: Git and TFS

This post is part of my 12 Days of .NET series. This is a (not terribly ambitious) series of posts on .NET topics that came up while I was working on a recent C# Web API project.

At work, we have a TFS 2012 server for version control. We’re pretty much stuck with that, because the TFS integration in AX 2012 can be a little finicky, and we don’t have a really compelling reason to upgrade anyway. I know that recent versions of TFS (starting with 2013 maybe?) support hosting Git repos, but I think I’d be stuck with TFVC anyway, for a variety of reasons.

For my current .NET project, for which I’m using VS 2017, I started out with a local Git repo, intending to kill it and switch to TFVC when it was ready to go into test. I’m liking Git enough, though, that I’ve stuck with it, and have come up with a somewhat kludgey workflow, where I use Beyond Compare to periodically copy changed code files from my “work” project to a copy of the project that’s bound to TFS. So I code and test locally in the Git version of the project, committing often. Then, when I’m ready to deploy to my test server I follow a workflow where I copy to the TFS project, check my changes into TFS, then deploy to our test IIS server. As I said, it’s a bit of a kludge, but it works for me.

I thought about trying to use git-tfs, but I didn’t want to go down any rabbit holes so I stuck with the simple (but ugly) solution. And I’d love it if we could just switch to VSTS, but I don’t think that’s going to happen either.

Twelve Days of .NET: Day 8: Async

This post is part of my 12 Days of .NET series. This is a (not terribly ambitious) series of posts on .NET topics that came up while I was working on a recent C# Web API project.

Since I’d been away from .NET for a while, I hadn’t really had an opportunity to dig into the new (to me) async stuff. Here’s a good article from 2016 that delves into it.

Six Essential Tips for Async on Channel 9 is also really good.

Trying Meditation

I worked from home yesterday, because of the snowstorm, and I called in sick today, because it was so cold this morning that I started losing feeling in my fingers and toes while I was trying to clear out the snow around my car. (I am legitimately getting over a cold. I’d probably be fine by now if not for all this weather…)

This leaves me with a whole day to just mess around, which has led me to try to knock a couple of “rainy day” projects off my list. One of those is something I’ve been meaning to do for a long time: trying meditation. I’ve been bookmarking (and occasionally reading) articles about meditation for some time now. I even downloaded a meditation app to my phone a year or two ago, but never got around to using it.

Well, long story short, I convinced myself to start using that meditation app today. The app is called Meditation Studio. When I first downloaded it, it was a paid app, but I got it for free via the old Starbucks app of the week thing (Which I guess is dead now. Oh well.) Anyway, I guess it used to be a paid app with (mostly) free content, but (as with many apps) they’re switching to a subscription model. But they’re allowing legacy customers to keep using it for free with all the currently available content, so that’s cool. The subscription price is a bit steep — $10/month (or $60/year). There’s a “holiday discount” going right now, which makes it a little more reasonable, but still not great. I did the first meditation in their starter series today, and my goal is going to keep going through that, one session per day for ten days, and see how that works out.

As I said, I’ve been thinking about meditation for a while now. It came back to the front of my mind recently, due to a few things. First, just thinking about New Year’s resolutions; I didn’t really make any this year, but it got me thinking about stuff I’ve been putting off. Second, I saw a few references to Dan Harris’ new book over the last couple of weeks. When he published the first 10% Happier book in 2014, I was kind of interested, but not enough to buy or read the book. The new one is called Meditation for Fidgety Skeptics, and is a follow-up to the first one. Third, the Note To Self podcast re-posted their episode with Chade-Meng Tan recently. After listening to that episode last year, I added his book Joy On Demand to my Amazon wishlist, but never got around to buying it.

I’m still somewhat skeptical about this whole meditation thing. My skepticism probably comes from looking at stuff like this astral projection video on YouTube that just makes me think of Doctor Strange. And it’s possible that it’s all just a plot to get us corporate drones to work harder, as this article (pretty much) asserts. On the other hand, here’s an article from HBR that makes a good case for meditation. And I should probably read this NY Times meditation guide that I bookmarked a long time ago; it seems pretty reasonable and practical.

I’ve also been giving the Breathe app on my Apple Watch another try. I disabled it pretty quickly after it first came out, because the reminders were a distraction, and I wasn’t convinced that it was at all useful. But now I’ve re-enabled the reminders and I’m giving it another chance. (Of course, the reminders seem to have stopped working now, so that’s something else to troubleshoot, which is only going to make me more stressed…)

 

Twelve Days of .NET: Day 7: Json.NET

This post is part of my 12 Days of .NET series. This is a (not terribly ambitious) series of posts on .NET topics that came up while I was working on a recent C# Web API project.

Json.NET has been around for a long time, since 2006; I remember using it at my previous job. Since then, it’s become the default Json serializer/deserializer for .NET. I think there’s a way to deal with Json in .NET without it, but I can’t imagine why you’d do that. I don’t have much to say about Json.NET, just that it works great and I’m glad it exists.

Twelve Days of .NET: Day 6: Fiddler

This post is part of my 12 Days of .NET series. This is a (not terribly ambitious) series of posts on .NET topics that came up while I was working on a recent C# Web API project.

I can’t emphasize enough how useful Fiddler is for testing a REST API. My project is essentially a REST API calling another REST API, so Fiddler is doubly-useful for me. I can test my own API, and I can see what the external API is returning to me. I even went as far as buying Eric Lawrence’s Fiddler book. I’ve read about half the book so far, and I’ve learned a lot from it, both about Fiddler, and about HTTP in general.

I used to use curl for testing REST APIs, but Fiddler’s composer tab is much nicer. (Having said that, I’m still glad to hear that curl is going to be available in the standard Windows 10 install soon.)

Twelve Days of .NET: Day 5: Unit Testing

This post is part of my 12 Days of .NET series. This is a (not terribly ambitious) series of posts on .NET topics that came up while I was working on a recent C# Web API project.

I don’t actually have much to say here. I set up the standard unit testing project that’s built into the VS 2017 Web API project template, and went through the motions of setting up some tests for one of my controllers. (There’s documentation on that here.) But I didn’t get very far, since I don’t really have an effective mocking strategy for the external API that my API is calling out to.

I started looking at Moq, but didn’t get too far. So maybe this is something for the next project, or version 2 of this project.

Twelve Days of .NET: Day 4: Web API documentation

This post is part of my 12 Days of .NET series. This is a (not terribly ambitious) series of posts on .NET topics that came up while I was working on a recent C# Web API project.

If you’re going to create a REST API, it’s important to document it. For a project at my last job, I created a whole Drupal site to document our REST API. I wrote all the documentation from scratch! With the standard Web API template in VS 2017, you get documentation for free. (Well, almost free.) Here’s an article explaining how to set that up.

I also decided to create Swagger docs with a library called Swashbuckle. Swagger is pretty cool, and seems to be very popular right now. (If you want to use Swagger with ASP.NET Core, here’s a good post on that.)

New Year’s Day 2018

It’s New Year’s Day morning, and it’s 5 degrees out, with a wind chill making it feel a few degrees colder. So I guess it’s a good morning to stay inside and write my annual year in review / new year’s goals blog post. As I get older, I’m finding these little reviews to be pretty helpful.

Here are links to the last few:

2017 was a challenging year, on many fronts, most of them related (at least tangentially) to Donald Trump. Andy Zaltzman has a great 2017 year in review article up on the Guardian web site, and a very funny 2018 year in review article at iNews. It’s stuff like Zaltzman’s Bugle podcast that has kept me sane though the last year.

Weight and General Heath
Last year, I mentioned that I’d transitioned from losing weight to maintaining my weight. Well, I guess that’s not entirely correct, since I weighed 150 at the start of 2016, 146 at the  start of 2017, and 140 today. So I actually still seem to be losing around five pounds per year. It seems like I’m going to have to level off at some point and I honestly think that 140 is going to be it. I can’t see myself dropping to 135, but we’ll see. I’m still using LoseIt every day, and logging all my meals and snacks.

On the general health front, I had blood work done last month, and everything is looking pretty good. No major health crises in 2017, so that’s something, at least.

In terms of exercise, I’m doing pretty good. I got my Apple Watch in April 2016, and I’ve been wearing it every day. My move goal has been set at 400 calories for probably all of last year, and I’ll hit that 3-5 times a week on average, I think (more often when the weather’s nice, and less often when it’s ridiculously cold, like right now).

As to sleep, that’s been a mixed bag this year. I mentioned last year that I might toss my mattress and get a new one, despite the fact that it’s not really that old. I didn’t do that, but I might do it this year. I had a run going for a while where I would wake up at 2am or 4am every night, for no obvious reason. I think it was due to some noise outside or something like that. I’m still generally waking up at 4am or 5am for no reason, looking at my phone to see what time it is, then rolling over and going back to sleep. I blogged about sleep back in October. I’m still using the Sleep Cycle app.

Blogging and Journaling
I wanted to check and see how many blog posts I’d written this year, but then realized that I can’t figure out how to get that number easily. (It’s probably somewhere in the site stats, but I can’t find it.) So I just counted then up on the 2017 archive page, and it looks like about 128. (I could probably write a SQL query to get that number, but it’s not worth the time.)

I didn’t write a ton of programming-related blog posts in 2017, but I’m trying to correct that with my “12 Days of .NET” series of posts.

As to journaling, I finished a five-year journal in 2016, and used Day One exclusively in 2017. Day One is working out OK for me. From their Mac app, I can see that I’ve written 363 entries in 2017, which is almost one per day. Most entries are very short; I’m keeping track of things like books, comics, and movies that I’ve read/seen in Day One. (I might have more to write on that subject later.)

Professional / Education
I will be hitting my five-year mark at SHI this month. I don’t think that gets me an extra week of vacation in 2018; I think that comes in 2019, when I start the year with more than five years on the job. (I could be wrong though.) I’m a little jealous of my brother in this area: he gets a lot more vacation time than I do. (But I’m sure he gets paid a lot less, since he’s working for a non-profit.)

My year-end performance review was very good. Interestingly, my boss told me that I rated myself lower on my self-review than anyone else in the department. Part of that, I guess, is humility. Part of it is probably imposter syndrome. But most of it is that I rushed through my self-review without thinking about it too much and just hit “3” on a lot of stuff (on a scale of 1-5). I also got a slight promotion in July, so I’m now a “Senior Application Developer.” So overall I’m doing fine at work, from my boss’ point of view.

Near the end of 2017, I started a new project that’s allowed me to do a good amount of .NET programming, using modern tools and techniques (for the most part), so I’m happy about that. I still do a lot of Dynamics AX work, and I’m a little worried about that, since Microsoft has really been pushing people into the cloud version of AX. (Which is annoyingly now called Microsoft Dynamics 365 for Finance and Operations, Enterprise Edition. Seriously. I wrote a whole essay on how annoyed I am about that name, but didn’t post it. But I digress.) We’re not likely to upgrade our on-premise install of AX anytime soon, so I have a little bit of worry about becoming a “legacy system” programmer. But my boss is aware of that, and has gone out of her way to try to get me involved in general .NET projects, whenever possible.

On the education front, I’m still subscribing to Pluralsight, and watched a handful of courses in 2017. I have a blog post on that scheduled as part of my “12 Days of .NET,” so I won’t say any more here.

Looking at my Goodreads history, I see that I managed to read several programming-related books this past year, including:

So I’ve really got nothing to be ashamed of there. A bunch of these were read via the Safari subscription that I get via ACM. That’s turned out to be a really useful benefit. I have a bunch of books in my queue there, and I hope I’ll be able to read a few of them in 2018.

Organization / Finance
Not much to say here. I’m still using Evernote for nearly all of my personal organizational needs. And I’m still on their premium plan, which should renew in about a week at $70/year. For me, it’s worth it. It’s still my best option for an organizational tool that works well across Windows, Mac, and iOS.

On the Finance front, I did a quick year-end review yesterday, and I’m looking pretty good. The stock market has been crazy this year. I’ve done well, but I’m a little worried about the possibility of a crash in 2018. I haven’t really done much in the way of review this year; I’ve mostly just kept everything where it is and let it ride. I feel like maybe I should move some money out of stocks this year and into bonds.

And I still have to figure out what to do about the fiduciary duty rule. I have a document from Merrill somewhere listing the options I have on my various retirement accounts. But I’m not sure where any of this stuff even stands now, since this is one of many things that Trump and the Republicans want to roll back. There was a lot of talk about it back in February (see here and here), and a little in May (here), but I haven’t heard much lately. The whole thing is giving me a headache.

Comics and Books
I set a fifty-book goal in Goodreads for 2017, and read 115 books total, according to my year in review page. Some of those are short stories, and a lot of them are graphic novels, so that’s a highly-exaggerated number, but I still feel like I got a lot of reading done this past year. Highlights would probably include finishing Warren Ellis’ Transmetropolitan, re-reading Philip Pullman’s His Dark Materials trilogy, and reading Seveneves by Neal Stephenson.

On the comic book front, I’m still visiting my local comic book store once a week and picking up a handful of new comics. I started doing that in mid-2016, when DC’s Rebirth started. I’m still reading a number of the titles that started up then, though I’ve dropped a few. And I’m not really reading any Marvel books right now, though I picked up Ed Piskor’s X-Men: Grand Design, which looks really amazing. (Marvel has had a pretty bad year, overall.)

I’ll probably keep going into the comic shop every week, if DC keeps publishing a few good books. But if they go off the rails at some point this year, then I’ll probably stop and go back to just reading an occasional trade paperback and random stuff from Comixology.

Art and Entertainment
I’ve gotten a good bit of use out of my Met and MoMA memberships in 2017. But I haven’t been to either in a while, largely due to the cold weather.  I did see the Rodin exhibit at the Met, but I haven’t seen the Hockney, Munch, Michelangelo, or Leonardo to Matisse exhibits. I’d like to go next weekend, but it looks like we’ll have a high of 11 on Saturday and 21 on Sunday, so that’s not looking too good. There’s less going on at MoMA; I’d like to get in and see The Long Run, but that’s going to be there until November, so I’ve got plenty of time.

I got out and saw a few good concerts in 2017, including Paul McCartney in Newark. I went to NYCC. And I went to the Star Trek set tour in Ticonderoga with a couple of friends!

I have a pretty full schedule for 2018 already, including U2, Weird Al, the Harry Potter Cursed Child play, and a repeat visit to the Star Trek tour (with a William Shatner appearance). I’m actually wondering if I’m going to make it to all of these. I hope my health holds up, but I do have a tendency to get sick at the most inopportune times. (I’m still mad that I had to miss the Spinal Tap Unwigged concert back in 2009.)

Summary
I started writing this post just after breakfast, and now it’s almost lunch time. And the word count on this post is almost at 2000, which is pretty darn lengthy, for a self-indulgent year-in-review post. But I think these posts are really helpful for me, and if they’re interesting to anybody else, great. (If not, I’m not forcing anybody else to read them.) The temperature outside is crawling upward, and is now at 14 degrees. That’s better than the 5 degree reading when I started writing, but still not warm enough for me to want to go out for a walk or anything like that. (And I’d really like to be able to go out for a walk right now. I may bundle up and force myself to. At least as far as Starbucks and back.)

Twelve Days of .NET: Day 3: Logging

This post is part of my 12 Days of .NET series. This is a (not terribly ambitious) series of posts on .NET topics that came up while I was working on a recent C# Web API project.

On past .NET projects, I’ve generally used log4net to handle logging. I like the rolling file appender and generally use that. For this project, I decided to look at what else was out there. I found Serilog, and decided to give that a try. It worked out really well. I think I’ve found my new default .NET logging library. It has a rolling file sink similar to log4net. And it’s very flexible and configurable.