Title photo
frugal technology, simple living and guerrilla large-appliance repair
Tue, 18 Apr 2017

How to 'hold' a package in Ubuntu and prevent it from being updated

I am using the unison in Ubuntu 14.04 (Unison 2.40) in my Windows Subsystem for Linux-supplied Ubuntu 16.04 (which updated the package to Unison 2.48) because my server is running Unison 2.40, and I forgot that an apt upgrade will replace the .deb I downloaded from the 14.04 repository with whatever is in 16.04.

When I tried to do a unison sync, I got an error.

How do you put a package "on hold" in Ubuntu? It's easy.

First I removed the "new" unison:

$ sudo apt remove unison

Then I installed my "old" one (which I had previously downloaded from the Ubuntu archive):

$ sudo dpkg -i unison_2.40.102-2ubuntu1_amd64.deb

Now I put the package "on hold":

$ sudo apt-mark hold unison

That's it.

Here is the output now for sudo apt update:

$ sudo apt upgrade
[sudo] password for steven:
Reading package lists... Done
[sudo] password for steven:
Reading package lists... Done
Building dependency tree
Reading state information... Done
Calculating upgrade... Done
The following packages have been kept back:
  unison
0 upgraded, 0 newly installed, 0 to remove and 1 not upgraded.
Mon, 17 Apr 2017

I reinstalled the Windows Subsystem for Linux, got a new Ubuntu LTS and now have my scripts back

After a Windows 10 update hosed my laptop and took the Ubuntu/Bash command line (aka the Windows Subsystem for Linux) and all of my scripts along with it, I restored Windows 10 from the laptop's backup partition, and activated the Windows Subsystem for Linux (aka WSL).

This time around I got Ubuntu 16.04 rather than 14.04, which is overall better because there are some really, really old packages in 14.04, including a super-old nodejs. Unfortunately, the old unison in 14.04 matched what is on my server (and unison versions across computers must match, or they don't work).

Luckily I was able to download a 14.04 package from the Ubuntu archive and install it in the 16.04-powered WSL. I restored my scripts, including one I made that is very WSL-specific: It takes all of the files in a Windows directory (usually images, sometimes text documents, but it could be anything), copies them into a working directory in the WSL and uses chmod to change their permissions to 644. That way I can download images while in the web browsers of the Windows world, create text files, working on all of them with Windows tools, and then transfer those files into the Linux side, where I can sync them to the server's filesystem with unison.

Aside: It's not impossible to get a Unix-style ssh program that works from the Windows command line, but it's not at all easy, either. That makes the Windows version of Unison less than useful for working with remote servers.

Now I have scripts in the WSL to:

  • Transfer and apply proper permissions to image and text files from Windows to the WSL
  • Update this Ode blog using unison to sync files and then reindex the blog via Ode's Indexette
  • Create [a static blog archive[(http://stevenrosenberg.net/documents/archive.html) by using a custom Ode theme and a query to return all posts, using curl to bring the html down to the laptop, then copying it into the local Ode filesystem, and then syncing with the server via unison.

I have a feeling I've written about most of these scripts before, and if/when I find those entries, I will link them here. If not (or if there have been updates), I will write them up in the near future.

Why Unison? Unison is a file-synchronization tool. While files can be synced from one system to another with rsync, which I use for backups, the situation with this Ode blog is different. Anthor way to synchronize two filesystem is to use git, the version-control tool.

What unison enables me to do is make changes locally, or on the server, and then reconcile those changes across both systems. So if I write or edit a post on my local filesystem, or make any kind of change on the server, running unison ensures that I have the latest files (and versions of files) on both filesystems. If I used rsync, making changes on the server but running rsync on the client wouldn't work. Git would be great, except that it only reconciles changes in the filesystem that have been checked in. Changes on the server are generally not checked in, and even if I scripted that on the server, Ode (through its Indexette and EditEdit addins) itself makes changes to the filesystem and doesn't check them in. So git wouldn't work.

I came up with unison because it's the easiest. Another alternative csync2 looks a lot harder to figure out. But I do recommend csync2 if you're doing something heavy-duty with more than 2 servers.

When I started looking for this kind of tool, I knew what I needed was a kind of Dropbox for servers. I'm sure there are people who have hacked Dropbox to work on a non-GUI server. Actually that would be a pretty good solution.

The difference with unison is that you have to "consciously" run it to sync the two filesystems. You could run it as a cron job, or somehow set it up as a daemon (which might be how Dropbox works), but for the purposes of this particular blog, syncing when needed works fine.

Using the WSL has provided me the opportunity for the first time in quite a while, to set up unison. It's a great thing to run unison -batch and have the entire blog filesystem copied to an empty directory on my laptop in about a minute. (And then any changes I make on either laptop or server can be synced with another unison -batch, or just unison for a more interactive session. Plus, never underestimate software you can install yourself, on your own computers, and use as you wish. I pay for my shared-hosting service, but otherwise I run whatever software I wish without paying any monthly fees for any of it.

Are there other ways to keep two or more filesystems in sync? I'd sure like to know if there were.

Sun, 16 Apr 2017

Sharpening my Vim skills in the Windows Subsystem for Linux

I've always been able to get around in Vim, and before that vi. But it hasn't been my primary editor (except in college, where it was my only editor).

In my Linux systems over the last many years, I've gravitated toward Geany and Gedit, mostly using Geany, and using the terrific Notepad++ on Windows.

Now that I am using the Windows Subsystem for Linux (aka Bash command line supplied by Ubuntu), I have the full range of editors available in the Linux console. For whatever reason or reasons, I'm not an emacs person, and I'm not afraid of modal editing, so Vim it is.

This gives me the opportunity to really learn Vim. Already I'm figuring out things in Vim's command mode, like w taking you from word to word and stopping on the first letter of each word, with e doing the same except stopping on the last letter.

Typing gg in command mode gets you to the top of a file, and G (and also L) gets you to the top of the final line. G$ gets you to the end of the final line.

x deletes a single character, dw deletes a word, dd deletes an entire line and d$ deletes from the cursor to the end of the line.

It's nothing like a "standard" GUI editor, but a lot of it falls right under the fingers. While I have used an adm3a terminal, it's been long enough that I didn't know the reason for using the esc key to change from insert to command mode was the placement of the esc key on the adm3a -- where the "modern" tab would be.

To make it easier to change modes, I don't want to remap tab as esc but could try remapping caps lock as esc, or using ctrl-[, ctrl-c or alt-space as esc alternatives. Thus far it doesn't look like remapping caps-lock in the WSL is all that easy.

Tim Berners-Lee, Inventor of the Web, Plots a Radical Overhaul of His Creation

Tim Berners-Lee, Inventor of the Web, Plots a Radical Overhaul of His Creation https://www.wired.com/2017/04/tim-berners-lee-inventor-web-plots-radical-overhaul-creation

Fri, 14 Apr 2017

Windows 10 update hoses my laptop

I ran Fedora from F18 through 25 and never had a problem getting my laptop to boot and run. But in my first month as a Windows 10 user, an upgrade has already hosed my laptop, causing me to restore it to its original state and reinstall my applications.

I'm not sure what the update was supposed to do, only that it was big and would require a lot of time and a number of reboots.

After a bunch of those reboots and a lot of time, I was left with a black screen and a cursor. That's it.

I could ctrl-alt-del and get a prompt to shut down, but I couldn't do anything else. I think the updates "broke" the video driver.

So since I only had a month "invested" in the OS, I could have wiped the entire thing and put Fedora on the laptop. But I decided to give Windows 10 another chance. I liked having the Ubuntu command line, even though it was the ancient 14.04 instead of 16.04. And I had my blog set up to deploy from that Bash command line.

I opted to reinstall the system and keep my user files, which is one of the options available on this HP Envy laptop. I assume it's the same (or nearly so) on most PCs. There is a "restore" partition that contains a copy of the original OS files, and that is what is used to reinstall the system software.

That operation took a long time, but at the end of it I had a working Windows 10 laptop once again. All of my user files were intact. But as promised, my applications were all gone. I did get a handy HTML list of them, mostly with links to the project web sites. However, I did have the install files for all of them in my Downloads file, and all I had to do was reinstall.

I did lose lots of configuration files.

I still have Vim and Gvim WITH configuration files because I elected to use the binaries from my Downloads file and not "install" them the usual Windows way. So when my laptop came back, the only application icons on my desktop were vim and gvim.

In a more grim note, the Windows Subsystem for Linux, aka the Ubuntu command line, aka the Bash command line, is NOT in any user account, nor are the files I created in Bash. That means when I did the reinstall I lost the WSL and everything in it. Pro tip: Back up your WSL files!!

I can re-create what I did in the WSL, though I won't be happy about it. And I have no idea if the laptop now has the update that broke it yesterday, or if it's coming down the pike in the days or weeks ahead. I'm certainly not going to go to the Windows Update screen and click anything that reads "update now," or whatever it says.

I have heard about this black screen issue here and there, but it doesn't seem to be widespread enough to cause any kind of massive panic. And while I'm sure there is some slick way to fix what was broken, I couldn't figure that out, and doing the restore (while keeping my user files) was the quickest, easiest way to get going.

And to elaborate on what I say at the top, if you "keep your nose clean" in Linux, meaning not try to use proprietary video drivers or do anything stupid with dodgy packages, it's pretty hard to unknowingly kill a working Linux installation. I thought the same was true for Windows, but now I know otherwise.

Update: I reinstalled the Windows Subsystem for Linux, and this time I got Ubuntu 16.04 and along with it a much newer node.js (good because 14.04's hella old) and a newer Unison (not so good because now I have to find this same version for the CentOS server I use to host this site). The Unix gods, they giveth, they taketh.

Caveat Emptor: Windows 10 is not a beta, but the Windows Subsystem for Linux is. Back up everything. All the time.

Windows Subsystem for Linux and Unison update: My "old" WSL was Ubuntu 14.04, which has Unison 2.40.102 in its repository. I have Unison 2.40.102 on my CentOS server, so that worked out. Unison requires the same version on both "sides" (i.e both servers/computers) to work. My "new" WSL is Ubuntu 16.04, and that offers Unison 2.48.3.

My choices were to a) get Unison 2.48.3 for CentOS 6, or attempt to compile it on the server (or a CentOS 6 desktop, which I don't have) or b) find Unison 2.40.102 for Ubuntu 14.04.

I thought that it would be easier to compile on the server. I got the source of Unison 2.48.3, but I ran into problems pretty quickly because I needed a newer ocaml. I was already getting in the weeds.

So I switched gears. Could I download a .deb package from the Ubuntu repository into the WSL and install it?

I got the Unison 2.40.102 from the Ubuntu 14.04 repository. Then I used apt to remove the Ubuntu 16.04 version of Unison.

Then I used dpkg -i to install the .deb. I ran unison -version. It was working, and provided the output I wanted: Unison 2.40.102.

$ wget http://mirrors.kernel.org/ubuntu/pool/universe/u/unison/unison_2.40.102-2ubuntu1_amd64.deb
$ sudo apt remove unison
$ sudo dpkg -i unison_2.40.102-2ubuntu1_amd64.deb
$ sudo apt-mark hold unison
$ unison -version

I had already restored my .prf file in the .unison directory (I call it ode.prf to sync this blog), and I ran the command I use for the first sync when all the files are on the server and none on my laptop:

$ unison ode -batch

The -batch switch lets unison sync all of the files without asking you to OK every single one.

I love that I can get a new computer, or start a new directory and use Unison to mirror what's on the server. More on Unison in my next post.

Wed, 12 Apr 2017

The Node in the Windows Subsystem for Linux is so old, I installed Node for Windows

I want to run Node, so I figured that I would install the package from the Ubuntu LTS in the Windows Subsystem for Linux and just use it from the Ubuntu commmand line in Windows 10.

But I soon learned that the nodejs in the WSL is v0.10.25. That is hella old. Early 2014 old. No ES6 old.

I don't want to mess with the WSL environment too much, and I have no idea what kinds of binaries from outside the WSL will even work (if any of them will). But I wanted a newer -- a much newer -- Node.

So I installed the Windows version of Node -- the Current version -- which is v7.9.0.

That is a lot newer.

I'm not building major web applications with Node. I'm mostly using it to learn Javascript and even do some traditional scripting that I might otherwise do in Ruby or Bash.

Now I'll be doing that in the Windows command line and not the Windows Subsystem for Linux (until I can no longer hold out without a full, "modern" Linux distribution like Fedora on this laptop).

Update: Node v.0.10.25 in the Ubuntu Trusty LTS is super, super old. For comparison's sake:

Ubuntu Trusty: Node v0.10.25
Ubuntu Xenial (newer LTS): Node v4.2.6
Ubuntu Zesty: Node v.4.7.2
Debian Jessie: Node v0.10.29
Debian Stretch: Node v4.7.2
Debian Sid: Node v4.8.2
Fedora 25 and 26: Node v6.10.2

Even Debian Jessie has a slightly newer nodejs than the Ubuntu LTS in the Windows 10 WSL. There is a way to update the Ubuntu in the WSL from 14.04 to 16.04. Might be worth a look for me.

Mon, 10 Apr 2017

Rediscovering PuTTY in Windows

Been a long time since I used PuTTY in Windows to ssh into a server. Using it again and looking into plink.

Fri, 07 Apr 2017

This is what happens when you create a file in the Windows Subsystem for Linux and try to edit it with a Windows application

As I experiment with the Windows Subsystem for Linux (aka the Bash shell provided by Ubuntu for Windows 10), I am trying to figure exactly what I can and can't do.

To that end, I created a file with Vim in the WSL. Then I tried to open it with a text editor in Windows. I get this popup that says I can't do it:

In case you're not seeing the image above (and because Google), the Error dialog reads:

Error saving file. Error renaming temporary file: Permission denied

The file on disk may not be truncated!

I also tried to use the Windows file manager to drop the above image, created in Windows, into the WSL portion of the disk. That file "shows" in the Windows file manager, but it doesn't appear at all in the Bash shell. I had to use Bash to copy it from the Windows side to the WSL/Linux side: That's what works, in case you were wondering.

I really need an easy drag/drop between Windows and the WSL ...

Update: This issue is addressed in a very interesting bug report with a lot of links I need to explore.

Also, in the image file I copied from Windows into Bash on Windows (as Microsoft seems to like to call it), the .jpg file was too wide open on permissions. It was 777, and I wanted 644. I made the change in Bash and am syncing with the server.

Wed, 05 Apr 2017

Managing Ode with Unison via the Windows Subsystem for Linux

Update: While it seems fairly easy and routine to create and edit files on the Windows side of the filesystem using both Windows and WSL/Linux applications, when I tried to use the WSL-based Unison to sync files onto the Windows filesystem, I got a ton of permission errors and a failed sync. So the "dream" of maintaining a Windows system with WSL utilities probably won't happen. The two solutions for this particular problem are a) use Windows utilities on the Windows side and b) use Linux utilities on the WSL side.

The original entry begins here:

Now that I have my new HP Envy 15-as133cl laptop running Windows 10 and have added the Windows Subsystem for Linux, I'm exploring just how many of my regular Linux tasks I can do in this Ubuntu-supplied Bash shell, what I can do with similar programs compiled for Windows, and what really needs a dedicated Linux partition (or full computer).

Chief among these tasks is updating/syncing/backing up my Ode-generated blog (the one you're reading right now).

The first thing I learned about the Windows Subsystem for Linux (WSL for short) is that you can access the files you create in the WSL via the Windows file manager, but any modifications you make on the Windows side will not, I repeat WILL NOT be reflected in what you can see on the Linux side.

Read the rest of this post

Tue, 04 Apr 2017

Make a website with Ember - great introduction to a framework

I really like the idea behind Less than *ambitious* websites with Ember.js, in which author sheriffderek goes through the steps required to create a simple web site with the Ember JavaScript framework.

Easing into a framework -- that's the way I want to do it.

Thu, 30 Mar 2017

React-Redux links by Mark Erikson

React-Redux links by Mark Erikson https://github.com/markerikson/react-redux-links -- an excellent list that also covers learning JavaScript

Learning to code when you’re busy

Learning to code when you’re busy https://medium.com/the-odin-project/learning-to-code-when-youre-really-dang-busy-e223a7f84758

Wed, 29 Mar 2017

Using highlight.js for code syntax highlighting on your web site

I first learned about highlight.js while trying out the Go-based Hugo blogging system, where it is a popular choice for adding syntax highlighting to blocks of code displayed on web pages.

Another solution is Pygments, but I didn't want to wade into Python, and a pure JavaScript solution like highlight.js seemed easier all around.

I had already used highlight.js successfully in a couple of Hugo themes, one in which I did the installation myself and another that had it built-in.

So it was only a small leap to do the same on this Ode site.

The instructions are clear (and easy), and the highlight.js developers allow you to create a custom download via check-boxes to include only the languages and markup you want to use on your site. That same page has info on using two separate CDNs (content delivery networks) to deploy highlight.js on your web site, but I opted to create my custom bundle and host it on this site as part of my main Ode theme.

Once you have the Javascript and CSS on your site and are calling it into your web pages, everything between <pre><code> and </code></pre> will benefit from highlight.js' syntax highlighting.

And as you can see, it works.

The only time this kind of syntax highlighting gets problematic is when displaying HTML, where you need to replace < with &lt;, > with &gt; and so on.

Here's a small bit of Ruby so you can see what the syntax highlighting looks like without leaving this post:

Dir.glob("X16*") do |file|
 File.delete(file)
end

Eloquent JavaScript - Chapter 2 exercises - Fizz Buzz

I'm not saying I will make it through all 22 chapters of "Eloquent JavaScript," by Marijn Haverbeke, but enough people I respect have recommended the book that I'm doing my best to absorb what I can from it.

To that end, I am doing the exercises in the back of each chapter, and I plan on presenting my solutions here.

This entry also serves as a test of the Highlight.js JavaScript library, which I just added to this Ode site for syntax highlighting of code. I'm using the zenburn CSS.

Back to "Eloquent JavaScript." If you don't want any hints, don't go past the blog index. I will only start showing my code after the "read more" portion of each entry.

Before maybe a year ago, I'd never heard of Fizz Buzz, where you write a program that outputs the words Fizz, Buzz or Fizz Buzz depending on whether a number is divisible by 3, by 5 (and not 3) or by 5 and 3.

Fizz Buzz is supposedly used as a programming test in hiring. I was surprised when it was given as the second exercise in Chapter 2

Read the rest of this post

Thu, 23 Mar 2017

Coming over to the dark side

I recently received a too-expensive birthday present: a new laptop.

For the women in my life, seeing all those keys pop off was too much I guess.

The HP Pavilion g6-2210us is still kicking as it nears the 4-year mark. That's a modern record for me. My previous laptop, the Lenovo G555, died just after its second year of service. I still have a second replacement keyboard still on the way from China for the HP Pavilion.

Once I get this new laptop fully set up, at some point I'll pop a new hard drive into the old HP. The current drive has a lot of bad sectors. A lot. Then I'll run it as a full Linux system with no Windows partition.

So what about the new laptop?

It's an HP Envy 15-as133cl 15t with Intel Core i7, 1080p resolution, 16GB of RAM and a 1TB spinning hard drive.

The case is all metal, which is quite an upgrade from my previous all-plastic laptops.

It has Windows 10. The first thing I did was install the Windows Subsystem for Linux so I could have Bash in the terminal and access to thousands of console-based applications from the Ubuntu archive.

Read the rest of this post

Sun, 12 Mar 2017

Read all of Manton.org

Read all of http://manton.org. Deep thoughts on the social and personal web.

Mon, 06 Mar 2017

I install a Netgear AC750 WiFi Range Extender

I install a Netgear AC750 WiFi Range Extender http://stevenrosenberg.net/hugo/post/2017_0304_wifi_range_extender

Wed, 01 Mar 2017

Whiteboard interviews ensure biased hiring in tech, and programmers are calling them out

Whiteboard interviews ensure biased hiring in tech, and programmers are calling them out https://theoutline.com/post/1166/programmers-are-confessing-their-coding-sins-to-protest-a-broken-job-interview-process

Tue, 28 Feb 2017

WordPress WordAds revenue expectations are depressing

I've been going through the excellent WP Tavern blog on WordPress news today, and I stumbled across this post on how much bloggers can expect to earn from the Jetpack-powered WordAds platform.

tl;dr: Not very much. But the numbers are all over the map. One thing WordPress tells you: better content, more money.

Linked from the article above, a blog that makes about a month from WordAds on 2,600 to 16K page views.

WP-CLI is so very, very cool

At the moment, I only have two WordPress sites for which I have shell access, so WP-CLI shouldn't be a big deal for me. But it is.

The whole idea of managing WordPress.org sites in the console (and being able to avoid the WP Dashboard) is such genius, I wonder why nobody thought of it before now.

The possibilities, especially when WP-CLI is combined with traditional shell scripting, are many. From updating the software, installing and managing plugins, this drags WordPress into a realm where sysadmins can really get things done and save a lot of time doing it.

I still have blogs littered all over the place

I wrote into two blogs that I rarely think about:

Gathering up all of my blog entries from everywhere and putting them under one site has always been in the back of my mind. I have taken steps to do this, especially grabbing entries from WordPress sites en masse, but I have yet to write and deploy the scripts that fixes the metadata and image links to really make it happen.

My "old" WordPress blog is pretty deep in terms of content. It was active from 2005 through 2009ish. Combine that with my Daily News-hosted tech blog, active from 2006 through 2011 (with a smattering since then) and my other Daily News-hosted personal blog, active from 2006 to maybe 2009 with a trickle since then, you have a lot of blog posts.

Even though I wrote three WordPress posts today, I'm still a lot more interested in writing for the blogs that use "flat" files like this Ode system or my new, experimental Hugo site.

If and when I do get the ability to take the output from WordPress data dumps and turn it into text and image files that can work in flat-file blogging systems, then I'll have a huge archive of everything, however dubious it may be.

Mon, 27 Feb 2017

I finally replaced my HP Pavilion g6 keyboard

I had a new keyboard, and my "n" key on the old one broke again (the replacement was never as good as the original key), so I decided to pull the laptop apart and install the new keyboard.

While putting it all together, I did get one little screw wedged in a plastic hole (I'll extract that one later and replace it), but an old laptop can get along with many fewer case screws than it ships with. If you've ever had a used or otherwise repaired laptop, you know what I'm talking about.

The keyboard replacement wasn't too hard. I probably took out a lot more screws than needed to make it happen. I could have just removed the back panel, unscrewed the keyboard-retaining screw (that's the wedged-in-plastic one) and popped the keyboard out from behind/below by aggressively pushing on the proper spot with an eraser-tipped pencil.

I tried that, and it wasn't happening. I knew the keyboard was held in "tight" due to the last time I tried to replace it when I had the wrong part.

So I took out a bunch more screws and then tried again. The extra screws probably didn't need to be removed, but at that point I was more confident in the amount of pressure I was putting on that eraser-tipped pencil to push the keyboard out through the top of the laptop's plastic case.

I got the keyboard out and pulled the ribbon cable.

Inserting the new keyboard's ribbon cable wasn't instant. It took me a couple of minutes to figure out how it snapped in. But I got it done, snapped the keyboard itself into the case and closed everything up.

It all works, and now I have a new keyboard on this laptop that will be 4 years old in a couple of months.

This keyboard isn't a "springy" as the other replacement keyboard I bought a few months back that didn't quite fit, but it'll do the job and give this laptop some more useful life.

My last laptop, a low-priced Lenovo G555, only lasted 2 years before it went to sleep and never woke up. This also-cheap HP Pavilion g6-2210us is still running at nearly 4 years old, but not without effort.

It just underscores my contention that you can't really get 5 years of service out of a laptop. If they don't fail mechanically or electronically, they'll be ancient in some other way. I'm no longer saying "don't pay more than $500 for a laptop," because I see real differences between the $500 and $700-900 laptops being offered these days. But I will say that no matter how much you pay, if you're beating the hell out of it like I do, don't expect more than two trouble-free years.

* Pictured above is the new keyboard before I put it in. After removing the hatch at the bottom of the laptop and removing a retaining screw, there is a little hole on which you can push at the keyboard from below with an eraser-tipped pencil and loosen its plastic grip with the case enough to start unsnapping it the rest of the way around for replacement.

Fri, 24 Feb 2017

'Big Bang Theory's' Stuart wears Ubuntu T-shirt

Am I the only person to notice that comic book shop-owning Stuart (Kevin Sussman) on the "The Big Bang Theory" is wearing an Ubuntu T-shirt on the episode airing Thursday, Feb. 23, 2017? (It's Season 10, Episode 17, if that information helps you.)

The T-shirt appearance isn't as overt as Sheldon's mention of the Ubuntu Linux operating system way back in Season 3 (Episode 22, according to one YouTube video title), but it's an unusual return for Ubuntu to the world of "Big Bang."

What does it mean that the show's most loserly character is a Ubuntu fan?

Tue, 21 Feb 2017

Tim Buchwaldt: Rails is f*cking boring! I love it

Tim Buchwaldt: Rails is f*cking boring! I love it. https://medium.com/@timbuchwaldt/rails-is-boring-thats-great-f896e9ab2cb#.djk89skub

Mon, 20 Feb 2017

Fixing Fedora 25 upgrade issue with iptables

Are you having the same problem I've been having with Fedora 25 updates and something having to do with iptables?

I found the answer in the Fedora Forums:

You need to get rid of this old package first, then do the software upgrade:

$ sudo dnf remove system-config-firewall-base

Then do your usual upgrade, either in your favorite GUI (Whatever GNOME is using or yumex-dnf) or dnf in the terminal:

$ sudo dnf upgrade

This is very likely only an issue if you've been upgrading the same system since Fedora 21 (and I have).

.@netlify positions itself as a beast on static-site delivery

.@netlify positions itself as a beast on static-site delivery https://www.netlify.com/features/

Choosing a Hugo theme, Part 1

Choosing a Hugo theme, Part 1 http://stevenrosenberg.net/hugo/post/2017_0219_choosing_a_hugo_theme_part_1/ @golang #Hugo @gohugoio http://gohugo.io

Hugo community: Alternatives to Disqus needed more than ever

Hugo community: Alternatives to Disqus needed more than ever https://discuss.gohugo.io/t/alternative-to-disqus-needed-more-than-ever/5516

Fri, 17 Feb 2017

Aaron Patterson: I am a 'puts' debugger

Aaron Patterson: I am a 'puts' debugger https://tenderlovemaking.com/2016/02/05/i-am-a-puts-debuggerer.html

The @washingtonpost is becoming my go-to. Packed with news and intrigue, costs less than @nytimes

The @washingtonpost is becoming my go-to. Packed with news and intrigue, costs less than @nytimes.

I got 7-Eleven coffee today, it wasn't bad

I got 7-Eleven coffee today, it wasn't bad

Sat, 11 Feb 2017

Is this guitar worth $131,000?

Is this guitar worth $131,000? https://reverb.com/item/4209723-gibson-goldtop-1957-100-original

Sun, 05 Feb 2017

Free Code Camp computer science and web development pathways

Free Code Camp computer science and web development pathways https://forum.freecodecamp.com/t/computer-guide-web-development-with-computer-science-foundations-comprehensive-path/64516 https://forum.freecodecamp.com/t/computer-guide-computer-science-and-web-development-comprehensive-path/64470

How focused do you have to be to become a software developer?

How focused do you have to be to become a software developer? https://firstdevjob.com/stories/taylor-milliman/

Fri, 03 Feb 2017

At jury duty, and boy are my arms tired

It's been years since my last call for jury duty, and I find myself once again in the Stanley Mosk Courthouse in downtown Los Angeles.

Except last time they sprung me by noon. And today I'm still here at 3:30 p.m. I didn't get called for any panels, and I suspect there won't be any more need for jurors today. Yet I am still here.

I took the Metro Orange Line to the Red Line to get here, and I was surprised (though I shouldn't have been) to see the refurbished Pacific Electric Train Depot at the end of the Orange Line open and serving Groundwork Coffee. Love that coffee. I smell a bike ride down the Orange Line in my future.

This was also my first time taking the fancy new underground pathway (you can call it a tunnel) on Lankershim Boulevard from the Orange Line terminus straight into the North Hollywood Red Line Station. That is slick, and I'll thank all the politicos who helped make it happen, including Rep. Brad Sherman, City Councilman Paul Krekorian and anybody else I missed. This is the kind of thing the San Fernando Valley needs, and I'm glad it now has it.

During the long lunch break they give us chickens jurors, I walked around a bit. I haven't cracked the code for this part of downtown (Music Center and Civic Center). Grand Park is nice but smaller than you think it is. Other than all the Music Center and Civic Center buildings, there's nothing here. I passed by the Colburn School and saw a sole classical-music student making her way into the building.

If you're looking for something other than huge buildings, I guess you have to truck it to Little Tokyo in one direction or Chinatown in the other.

Gadget-wise, I didn't bring my laptop, just the tablet and wireless keyboard and mouse. I can't use all three at once because there are few table- or desk-like surfaces here. Just my actual lap and a book I brought that is serving as a small table for the keyboard while I balance the tablet with its built-in magnetic stand on my knees. Weak as shit. Whatever.

I got through a few hundred Disqus comments from my day job, deleted a couple of months' worth of personal e-mail clutter and checked in with the news via Google and Twitter (Trump, Trump travel ban, Uber guy says no to Trump, Snap as in Chat gets ready to IPO, Facebook's Zuck is either clueless or crafty, Trump, Trump), and then got the keyboard out to write a bit.

A few months ago, I did a whole setup on this tablet to use my day job's CMS -- the awful Saxo Mediaware Center via Citrix -- but I soured on it like I've rarely soured before when I realized that putting Citrix in the background, as one does with everything in Android all the time, results in my losing the connect to the app's Citrix-connected server. Call it a nonstarter. I'm slated to say goodbye to Saxo and Citrix in a few months, and it couldn't be too soon.

Meanwhile, Jury Duty Lady, let us go home!!!

Update: 3:40 p.m. It's over. I'm done with jury duty for 2017.

A couple of observations: All buses and trains I was on were crowded, so Metro seems to be doing more than fine ridership-wise. And I don't recall seeing any law enforcement presence at all on either line, whereas in the past the Metro system could be thick with deputies. Might be a byproduct of Metro's wish to either scale back or end its contract with the sheriff's department. Or not ...

Wed, 01 Feb 2017

After all these years and two companies, Java still pushing crapware on Windows users

Just did a Java update on my workplace Windows desktop. From Sun to Oracle and decades in, the Java updater is still pushing crapware, this time an Amazon app.

Fri, 27 Jan 2017

George Orwell's '1984' is the No. 1 seller on Amazon

George Orwell's '1984' is the No. 1 seller on Amazon https://www.amazon.com/1984-Signet-Classics-George-Orwell/dp/0451524934 It's also sold out.

Why you might not be getting 5G data service anytime soon

Why you might not be getting 5G data service anytime soon https://www.wirelessweek.com/article/2017/01/why-carriers-are-secretly-anxious-about-leap-5g

Thu, 26 Jan 2017

Free Meteor.js hosting is back with meteor-now

Free Meteor.js hosting is back with meteor-now https://forums.meteor.com/t/super-simple-and-free-meteor-deployments-using-zeit-now/33214

Photos: Cruising Van Nuys Boulevard in the '70s

Photos: Cruising Van Nuys Boulevard in the '70s http://www.cnn.com/2017/01/25/autos/gallery/tbt-cruising-van-nuys-los-angeles

PulseAudio 10.0 now in Fedora 25

PulseAudio 10.0 now available for Fedora 25 https://fedoramagazine.org/pulseaudio-10-0-fedora-25 (And I can report that it is working)

Mon, 16 Jan 2017

There is an rsync for Windows, and it works

I've been meaning to look into backup solutions for Windows, and while there should eventually be a full Ubuntu Linux shell coming to Windows 10, it's not there yet unless you tweak things that I can't ask other users to do.

So I figured that when the Linux shell comes to Windows, I'll use rsync, the Unix/Linux backup utility I've been using for years.

I just found out that there's already an rsync port to Windows called cwRsync that you can pay for, with a free command-line-only edition available for download.

Since I use rsync on the command line in Linux, why do I need the GUI in Windows? I don't.

So I downloaded it, unzipped it all, put my rsync command into the cwrsync Windows Command Script file, and it worked right out of the box.

So far my tests have been small ones that haven't involved ssh into remote servers (I do backups to USB hard drives anyway), but I am very confident that cwRsync will work well for full Windows user-file backups. Plus it's free and nobody's going to bug you about buying anything ever.

Sun, 15 Jan 2017

Check out the Categories feature in the right column

I originally coded the categories listing as part of the overall Counter addin to Ode early last year, and Ode project leader Rob Reed lent his expertise to the addin, optimizing the code and squashing a few bugs in the process.

I had the categories listing in my right-hand column for a while, but since this Ode site has a LOT of directories/folders in it, that display made the right side of the page super long.

So I wanted the ability for readers to show/hide that listing. I didn't want to use jQuery, but I was very open to using vanilla JavaScript to make it happen.

And so I did. I looked at a lot of tutorials on how to hide the content of HTML divs (i.e. the stuff between a <div> and a </div>), and this one struck me as both simple and effective (meaning it's short and it works).

So now you can click Show / hide categories on the right to see the entire structure of the documents directory and drill down into topics that may be of interest.

Rob did a lot of work on my code, and I looked back at our e-mail thread from March 2016 and realized that I'm not even running the most recent version of the Counter addin on this site. Once I get that up and running, I will work on expanding the documentation on how to use the addin and then make it available to all.

Thanks go to Will Master for the JavaScript and Rob Reed for the Perl.

Once I figured out the concept of an addin (or, at any rate, my addin), I was off to the races. It was basically, "figure out what you want to display, figure out how to pull the information using Perl and the Ode addin structure, then drop tags into my Ode template to display the information."

Of course you can also say, "Here are things I can do in Perl, maybe it will be cool to put that on the web site." I guess I did a little of that, too.

However you slice it up, writing code and seeing results on a live web site is fun. In the Ode world, you can do that with HTML and CSS just like with any web site, and you can also write Perl addins. With this most recent hack (the show/hide), it was a matter of "appropriating" some vanilla JavaScript to add a feature I've been wanting for some time.

Wed, 11 Jan 2017

Preloaded Linux laptops are probably not encrypted

Even though preloaded Linux laptops like Dell's new Precision 3520 are a great thing -- and can save you $100 in this case, I'd probably have to reinstall because a factory image of the operating system most likely doesn't take into account one thing I want in any desktop Linux system: full disk encryption.

From the days when I ran Debian, through today's Fedora 24, I opt for full disk encryption in the installer. It's the right thing to do. If your laptop falls into the "wrong" hands, your data is encrypted and away from the prying eyes of whoever gets your gear.

Windows users can take advantage of disk encryption ... in some cases. While the Home edition of Windows 10 doesn't offer it, the Pro/Enterprise edition does have an option to encrypt your data.

It's nice that the installers of many major Linux distributions, including Debian, Fedora, CentOS/RHEL and Ubuntu (and its many flavors) offer full disk encryption (not just user files, though Ubuntu does offer a user-files encryption option) -- and any user can take advantage of that protection for the low price of $0.

Dell’s new professional-grade laptop is $100 cheaper if you buy it with Ubuntu

Dell’s new professional-grade laptop is $100 cheaper if you buy it with Ubuntu http://www.omgubuntu.co.uk/2017/01/dell-precision-3520-ubuntu-laptop

Thu, 05 Jan 2017

Ross Mayfield: The coming tech backlash

Ross Mayfield: The coming tech backlash https://www.linkedin.com/pulse/coming-tech-backlash-ross-mayfield

Tue, 03 Jan 2017

Adding memory to a laptop when they don't want you to add memory

When we bought my daughter a cheap Asus laptop a couple of years ago, I knew it had only 2 GB of RAM. But I also knew, or thought anyway, that I would add memory at some point in the near future. After all, upgrading memory is easy, right?

The answer is yes, I suppose, if you have the kind of Windows laptop where you can get the battery out by switching a lever. The hard drive and memory are a plastic door and a couple of screws away.

That's how it is on my 2013-purchased HP Pavilion.

But on my daughter's 2014-made Asus Aspire E15 laptop? Nope (battery access), nope (hard drive access) and nope (memory access).

To do anything -- change the hard drive, memory or even the battery, you have to remove 18 screws from the bottom of the case, crack it open with a case-cracking tool (I use a little plastic spatula from a long-dead and -gone mini food processor), and then start taking off parts.

To get to the RAM module on this Acer, you have to remove the hard drive, pull about a dozen cables of various types and then remove the entire motherboard from the case BECAUSE THE RAM IS ON THE BOTTOM.

If I hadn't pretty much torn down and rebuilt more than a couple of laptops, I wouldn't have even attempted it.

It's frustrating. Laptops traditionally allow the user to swap in new RAM and hard drives. You might want to do an upgrade, or a drive can go bad. And batteries? Mine last about a year and a half, and then I need to replace them.

So now that tablets are ubiquitous and are basically glued together, laptops, especially cheap ones, are not serviceable or upgradable?

If the hard drive dies or I need more memory, it's just tough tacos?

No. I do not accept that.

Read the rest of this post

Sun, 01 Jan 2017

JavaScript books for 2017

"Eloquent JavaScript: A Modern Introduction to Programming" by Marijn Haverbeke

"Learning JavaScript: JavaScript Essentials for Modern Application Development" by Ethan Brown

"Speaking JavaScript: An In-Depth Guide for Programmers" by Dr. Axel Rauschmayer

"Learning JavaScript Data Structures and Algorithms" by Loiane Groner

"You Don't Know JS" (series) by Kyle Simpson

"Programming JavaScript Applications: Robust Web Architecure With Node, HTML5 and Modern JS Libraries" by Eric Elliott

Sat, 31 Dec 2016

The guitar is wood and strings and fingers

I found this picture of my 1976 Gibson ES-175 in my 2016 photo folder. I now remember taking it to show my new guitar-playing friend Dave Green what the guitar's pickguard looks like so he could compare it to his Japanese-made ES-175 copy.

Here you see much of the guitar's body. What pegs it as a 1970s Gibson archtop electric? It has chrome pickup covers and a chrome tailpiece (as opposed to nickel, which tends to age, albeit gracefully) and "witch hat" volume and tone knobs. The nickel covers -- made famous on the rare and pricey PAF (Patent Applied For) humbuckers -- tend to age, albeit gracefully. I believe Gibson introduced the "witch hat" knobs in the late 1960s. Earlier Gibson electrics came with "top hat" or speed knobs.

You can't see it here, but the neck is made of three pieces of maple (as opposed to a single piece of mahogany on earlier models) and includes the thickened "volute" near the nut, meant to strengthen the neck at the point where many Gibson's suffer from catastrophic breaks.

All three of those things contribute to neck strength: maple instead of mahogany, laminated instead of one piece, volute instead of no volute. The volute was unpopular and eventually discontinued. It doesn't bother me. I kind of like the "feel" of knowing I'm at the end of the neck.

The bridge on this guitar, for this year of production (1976) is a bit of an anomaly. It's a compensated rosewood bridge, the kind that Gibson had been using for decades on its archtop guitars, both acoustic and electric. I call it an anomaly because one of the changes Gibson made on the 1976 ES-175 is switching from the traditional wooden bridge to a metal Tune-O-Matic like you would find on a Les Paul or ES-335.

Read the rest of this post

Cut down a #4 coffee filter into a #2

So you have the bigger Melita-style No. 4 paper coffee filters for 8- to 12-cup coffee makers and you need a smaller No. 2 filter for your single-cup pour-over cone filter (or 2-cup coffee maker)?

It happens more often than you think. I'm always running out of No. 2's and always have plenty of No. 4's. Mostly because Costco sells a huge pack of the larger filters.

You can just stuff the bigger paper filter into the smaller pour-over cone filter (I have both plastic and ceramic versions).

Or you can trim about an inch off of the larger filter. Use a scissors and follow the curve. It'll save you a trip to wherever coffee filters are sold and help you plow through your endless supply of No. 4's.

Wed, 28 Dec 2016

Eric Elliott on JavaScript

I am linking to these Eric Elliott articles on JavaScript programming because I don't want to forget about them.

Eric Elliott: 12 Books Every JavaScript Developer Should Read

Eric Elliott: The Software Developer’s Library: A Treasure Trove of Books for People Who Love Code

Eric Elliott: Learn to Code: 13 Tips that Could Save You Years of Effort

Eric Elliott: Native Apps are Doomed

Eric Elliott: Why Native Apps Really are Doomed: Native Apps are Doomed pt 2

Mon, 26 Dec 2016

A Chicago song I actually like

I've never been a big fan of Chicago, the band. I've heard this song before and had no idea it was by them. But I really like "Does Anybody Really Know What Time It Is?"

Lithub.com: The last bookbinder on the Lower East Side

The last bookbinder on the Lower East Side http://lithub.com/the-last-bookbinder-on-the-lower-east-side

Sat, 17 Dec 2016

My holy grail on self-hosted blogs? Local comments

My holy grail on self-hosted blogs like this Ode system? Self-hosted comments. Disqus is far from ideal.

Fri, 16 Dec 2016

Ode is a strong performer

Ode runs Perl via CGI on the server. That doesn't mean it is slow.

Turns out it is very, very fast.

I can render an index page with previews of every post (all 900+) in about 20 seconds.

Wed, 07 Dec 2016

Text processing in node (i.e. in JavaScript)

My last text processing project started in Bash, which which I'm more familiar, and then took a turn toward Ruby before returning to Bash when deadlines got tight.

Now I'm thinking about the next election-results script, which won't be using XML from the state of California but instead the space-delimited ASCII from Los Angeles County. Another developer handled that task in November, but I want to take a crack at it for March 2017.

My goal is a "universal" script that can work on any results file that the county provides without requiring a lot of hacking for individual races in any given election.

In other words, I want to write once, run many times.

I could do it in Bash. Or Ruby. But I might want to try JavaScript and run it with Node on the server (or, if the election is "small" enough, client-side in the browser).

LA County data is not standard. It's not XML or JSON (though the county DOES use JSON in its own results, it does not share that data with the media).

Instead, the county uses what appears to be a home-grown data format that is arcane yet well-documented.

Each line begins with an alphanumeric code, and data fields are placed on those lines at predetermined character lengths and predetermined positions.

So a script would have to create substrings of the data from each line. I'm thinking that I'll use the script to either create XML that I would then convert, or to skip that step and create JSON directly from the county's data.

Doing it in JavaScript would be an opportunity to learn more about the language (just like it would be for Ruby if I used that language; and the jury is most definitely out).

What muddies the water considerably is the fact that my company is also following elections in San Bernardino, Riverside and Orange counties. I know that San Bernardino doesn't really provide data at all. I generally scrape their web page on Election Night. I don't know what Riverside and Orange do.

So I'm going to focus on LA County for now. Another developer wrote the front-end code for the election-results display, and all I have to do is provide the JSON. I wouldn't be opposed to writing the whole app, but for now a "smaller" bite is a more realistic one.

XML to JSON in Javascript with enkidootech's xml2json

I'm exploring my options for coverting XML to JSON, even though I don't have any new XML coming my way.

I previously used a Ruby library and considered a different JavaScript library to do the conversion.

I just tested a different JavaScript library, enkidootech's xml2json, and that worked very well right out of the box.

Well, almost.

I tried to install it globally via npm, but my resulting JavaScript file didn't seem to be able to find it.

Then I used npm to install the package locally, and that worked. I have a node_modules directory in the same directory as my script, and it outputs JSON as expected.

I just took what enidootech offers as an example and put that in my file (which I named xml_to_json.js). I ran it with node and it worked:

// From https://github.com/enkidootech/xml2json

var parser = require('xml2json-light');
var xml = '<person><name>John Doe</name></person>';
var json = parser.xml2json(xml); 

console.log(json);

You get this:

$ node xml_to_json.js 
{ person: { name: 'John Doe' } }

Nice!

If my next script won't involve XML, what will it do? That's a question for the next entry.

Tue, 06 Dec 2016

CodePen: JavaScript Basics 2: Arrays and Loops

CodePen: JavaScript Basics 2: Arrays and Loops http://codepen.io/jakealbaugh/post/js-basics-2-arrays-and-loops

CodePen: JavaScript Basics 1: Functions and Variables

CodePen: JavaScript Basics 1: Functions and Variables http://codepen.io/jakealbaugh/post/js-basics-1-functions-and-variables

Thu, 01 Dec 2016

I tried to tweak my Fedora settings in KDE Plasma, and it screwed up everything in GNOME and Xfce

The morale of this story is that the KDE Plasma settings can screw up your Xfce and GNOME settings. So if you're using multiple desktop environments on a single system -- like my Fedora 25 laptop, or any other Linux system -- you could be in for some pain.

What I was trying to do is configure a dark theme for KDE Plasma (easy) and also use dark themes when running GTK3 and GTK2 apps on the Plasma desktop.

It looked pretty good in KDE Plasma, but things went pear-shaped in GNOME 3 and Xfce. My fonts were screwed up, Menus were gray type on a gray background, and icons were messed up -- with KDE icons bleeding into Xfce.

And then I had trouble logging in with Plasma at all. Blame the Fedora 25 upgrade (and KDE Plasma in general) for that one.

I first tried using the many Xfce configuration utilities to make it right. That didn't do much. I finally was able to log into Plasma (only after a reboot) and attempt to undo the damage. I was partially successful.

In GNOME 3, I had a lot of success with the GNOME Tweak Tool (which should be preinstalled on every GNOME system). I was able to use the Xfce Adiwata Dark theme to make even my GTK2/GTK+ apps look better in GNOME. The whole dark-themed GNOME experience is pretty much better than ever. So that's a win.

And I finally got Xfce looking right. I'm still having display font issues, but everything is more than good enough, and figuring out how to make dark-themed GNOME look better than ever is a bonus.

Wed, 30 Nov 2016

My new favorite TV show is @BetterthingsFX

My new favorite TV show is @BetterthingsFX http://www.fxnetworks.com/shows/better-things/about

AdamW on Linux and more: I don’t like computers

AdamW on Linux and more: I don’t like computers https://www.happyassassin.net/2016/11/04/i-dont-like-computers

Hacker Noon: Why you shouldn’t use ‘var’ anymore in JavaScript

Hacker Noon: Why you shouldn’t use ‘var’ anymore in JavaScript https://hackernoon.com/why-you-shouldnt-use-var-anymore-f109a58b9b70

Use SmtpJS.com to send email with JavaScript

Use SmtpJS.com to send email with JavaScript http://www.smtpjs.com

Rubyland.news is a new Ruby aggregator

Rubyland.news is a new Ruby aggregator http://www.rubyland.news

Tech Beacon: Is object-oriented programming dead? Not by a long shot

Tech Beacon: Is object-oriented programming dead? Not by a long shot http://techbeacon.com/object-oriented-programming-dead-not-long-shot

Cybersecurity analyst fixes what's broken in NTP (and there was a LOT to fix)

Cybersecurity analyst fixes what's broken in NTP (and there was a LOT to fix) http://boingboing.net/2016/11/29/ntp-the-rebirth-of-ailing-fa.html

Basic operations for arrays in Ruby

From Solid Foundation Web Development: Basic operations for arrays in Ruby

Tue, 29 Nov 2016

The European Ruby Revolution

The European Ruby Revolution http://devonestes.herokuapp.com/the-european-ruby-revolution

Fri, 25 Nov 2016

Gizmodo: A Stupid Simple Router for Super Lazy People

Gizmodo: A Stupid Simple Router for Super Lazy People http://gizmodo.com/a-stupid-simple-router-for-super-lazy-people-1764670728

Thu, 24 Nov 2016

I did the Fedora 25 upgrade

I upgraded from Fedora 24 to 25 today. So far, so good.

Update: I've had periodic Google Chrome freezes. I've had to kill it and start again a few times. I just had one while writing this post with Ode's EditEdit plugin. Not sure if this is a Google Chrome thing or a Fedora thing. I do have Fedora's version of Chromium to test.

Another update, a day later: No Google Chrome freezes today. I just had my first Google Chrome freeze of the day. Before that I replaced RPM Fusion's Audacity 2.1.2 with Fedora's own Audacity 2.1.3, and my GTK3 rendering issues are now gone. And for some reason I can still output an MP3 even though this isn't the "freeworld" version.

Trying Chromium: I am trying the Fedora-packaged version of Chromium to see if I experience the same freezes that I have been getting in Google's version of the application.

Chromium update: You know what's not crashing? The Fedora-packaged Chromium browser.

So far today, I have replaced the Chrome browser hosted on Google's server and Audacity from RPM Fusion with versions of both from Fedora's own repository. I always like using as many packages as possible from a distribution's own repo (generally a point in Debian and Ubuntu's favor), and it's nice to get closer to that ideal in Fedora.

I have been meaning to write about the coming of Chromium to Fedora for a long time but never got around to it. It installed on my computer automatically as the dependency of another app, the name of which escapes me at the moment.

I also should write about MP3 support (decoding, not encoding) coming to native Fedora (i.e. without RPM Fusion). While I do have RPM Fusion repos active on my Fedora desktop installation (I'm sure there are people who don't ...), I'm not sure if that's the reason my now-Fedora-supplied (and non-"freeworld") Audacity is able to output an MP3 file. All I know is that I'm happy to have my Audacity rendering issues (which have been problematic for a couple of months) and Chrome freezing issues (only a problem since the Fedora 25 upgrade) both solved in very short order.

More info on Fedora's Chromium package: https://fedoraproject.org/wiki/Chromium

Possible clue on why Google Chrome is freezing in Fedora 25: From a Fedora mailing list exchange

GNOME 3.22: As dozens of entries on this site will tell you, I periodically try GNOME 3 and usually abandon it because I get more work done in Xfce. In Fedora 25 -- for the first time -- Wayland is the default display technology for GNOME. When I try to run that on this 3-year-old AMD-running laptop (HP Pavilion g6-2210us), it freezes. The Xorg version, still available in the GDM choices, does work.

Chrome in GNOME: It seemed to be working fine. Once again, time for a GNOME test.

A ton of updates means Wayland is now working: All the video drivers updated just now in Fedora 25, and I can now run GNOME in Wayland. That was a quick fix.

Mon, 21 Nov 2016

JavaScript for Cats recommends Underscore.js

The friendly Javascript for Cats tutorial recommends the Underscore.js library, which does look pretty useful.

Sun, 20 Nov 2016

freeCodeCamp: A Gentle Introduction to Data Structures - How Linked Lists Work

freeCodeCamp: A Gentle Introduction to Data Structures - How Linked Lists Work https://medium.freecodecamp.com/a-gentle-introduction-to-data-structures-how-linked-lists-work-5adc793897dd

Gizmodo: Deleting the Facebook App Could Save Up to 20 Percent of Your Android's Battery Life

Gizmodo: Deleting the Facebook App Could Save Up to 20 Percent of Your Android's Battery Life http://gizmodo.com/deleting-the-facebook-app-could-save-up-to-20-percent-o-1789189589

Honeybadger: A Rubyist's Guide to Big-O Notation

Honeybadger: A Rubyist's Guide to Big-O Notation http://blog.honeybadger.io/a-rubyist-s-guide-to-big-o-notation/

Thu, 17 Nov 2016

Disqus -- thanks for fixing your Admin interface

I use Disqus a lot. For work. I mod HUNDREDS of comments a day on a few dozen sites, and the Disqus Admin interface had been making that task very difficult in recent months.

But sometime during the past week, Disqus updated its Admin interface on the web, and it is much easier to moderate the comments.

Things were broken and now they are fixed. Thanks, Disqus.

Sun, 06 Nov 2016

Well-used laptops don't last forever

My experience, anyway, is that heavily used laptops like mine don't last anywhere forever.

My Lenovo G555 lasted a little more than two years before it died.

And now I've had this HP Pavilion G6 2210-us for three years and six months. I'm on my third battery (luckily they're cheap), and now I'm about to replace the entire keyboard (also cheap).

I bumped up the RAM to the maximum of 8 GB a while ago. No regrets there.

The HP has had one catastrophic drop onto concrete that didn't affect it at all -- except for some nasty abrasions on the plastic case.

The drive it came with was an ample 640 GB in size. I sort of want to rebuild it as a Linux-only computer with a 1 TB drive. I generally have 100 GB of free space, and I'd have even more if I could kill out the Windows 8 instllation that I could never successfully upgrade to 8.1 and hence never even try to get Windows 10. If I don't go SSD (and I can't see doing that on this old laptop), the 1 TB would give me a lot of breathing room.

So the batteries last about a year, and the keyboard lasts 3 years. I'll replace the keyboard and hope the rest of the thing doesn't go south.

Would a more expensive laptop -- this one sold for around -- last longer? I don't think so, but you never know.

No more replacement keys, I'm just going to replace the entire keyboard

While my last key replacement was rocky yet ultimately successful, the results aren't what I'd hoped. And now the space bar is going wonky.

My "new" N key works, but it doesn't have the clicky/bouncy feel of the other keys. I'm not sure if it's the rubber cup or the hingy mechanism, but it is what it is. And it's not great.

I tried new rubber cups that I got from ReplacementLaptopKeys.com, and that didn't help.

The space bar is just generally loose and mushy, and it doesn't work on the ends all that well.

This time I'm just buying a whole new keyboard. What I didn't know is that they're cheap. For this laptop anyway.

I'm not sure if this is the case for all laptop brands, or just HP, but the market is awash with OEM replacement keyboards, and I just bought one for on eBay. Sure I'll have to take the whole damn laptop apart, but it should really have a new lease on life.

Sat, 05 Nov 2016

Can you use JavaScript and Node instead of traditional shell scripts?

One of the things that would get me using (and learning) more JavaScript would be the ability to take care of all the administrative things I do in (mostly) Bash, (occasionally) Ruby and (very occasionally) Perl using JavaScript via Node on the command line.

I have played a bit with creating and writing files in that environment, and I found the following posts to help in that effort:

This Fedora install still kicking after SIX upgrades

I started this laptop on Fedora 18 before a fairly quick upgrade to F19. I've kept it going all the way through Fedora 24.

So far that's six "major" upgrades. And it still works fine. Not that it shouldn't, but I don't remember things ever going this smoothly for this long.

Fri, 04 Nov 2016

Sacha Greif: A study plan to cure JavaScript fatigue

Sacha Greif: A study plan to cure JavaScript fatigue https://medium.com/@sachagreif/a-study-plan-to-cure-javascript-fatigue-8ad3a54f2eb1

Sun, 30 Oct 2016

The Archtop.com "sold" list - a treasure trove of guitar history

You can learn a lot about archtop guitars by going through the "sold" archive at Archtop.com. You can see descriptions and photos of hundreds of actual instruments. It's a valuable historical and educational resource that is really helping me learn about Gibson archtop guitars. What's missing? The prices. For that you need to look at the current inventory list.

What makes these Archtop.com lists so valuable is that there are so many examples of real guitars that have sold. The measurements show how the various models changed from the 1920s and '30s to the present day. They could turn the archive into a book, and I'd buy it.

Sat, 22 Oct 2016

The squeak in the plumbing

There's been a squeak in the plumbing. For about a year. When you turn the water on, "squeak." When you turn it off, "squeak."

The picture gives it away. It was the Zurn pressure-reducing valve. We have super-high water pressure, and we probably need two pressure-reducing valves in series but make due with one.

Anyhow, the squeak has been a mystery. Ilene thought it was the pressure-reducing valve all along. I agreed that we probably needed either a new one, or a rebuild on the old one (there's a kit for that).

But I wasn't sure. The sound was super loud in the shower wall.

I ventured into the spider- (and web-) filled crawlspace under the house to check the pipes while the teenager turned the water on and off. I was looking for things that moved. Things that moved enough to squeak.

I found nothing.

Read the rest of this post

Fri, 21 Oct 2016

Can I Program Yet?

Can I Program Yet? Notes as I Learn Coding and Software Development by Darga http://blog.dargacode.com and http://dargacode.com/

Twitter is broken

Twitter is broken due to a DDoS attack. The AP story I pulled downplays it quite a bit -- it's not just the East Coast, and it is continuing into the afternoon. http://www.latimes.com/business/la-fi-tn-dyn-attack-20161021-snap-story.html

Tue, 18 Oct 2016

Back to Xfce after a week in GNOME 3 ... again

My latest GNOME 3 experiment lasted about a week.

And I fully recognize that I pretty much wrote this same post last month.

I'm back again. GNOME wasn't really offering me anything I don't get in Xfce, and when I had to dip into my Citrix apps yesterday, GNOME was giving me trouble.

Between Xfce's Whisker menu, Catfish file finder and the fact that I can run the Nautilus or Dolphin file managers whenever I feel the need (which won't be very often), the comfort, consistency, performance and usability of Xfce drew me back.

Just like the last time.

I didn't feel more productive in GNOME. At times I felt less productive. So why keep going with it?

The Ember Weekend podcast

I just discovered the Ember Weekend podcast https://emberweekend.com

Mon, 17 Oct 2016

Creating encrypted documents in Vim

Creating encrypted documents with Vim https://linux-audit.com/using-encrypted-documents-with-vim/

Jazz Advice indeed has a lot of good jazz advice

Jazz Advice indeed has a lot of good jazz advice http://www.jazzadvice.com

Sun, 16 Oct 2016

'I’m Considering a Coding Bootcamp: Should I learn JavaScript or Ruby?'

Bloc: I’m Considering a Coding Bootcamp: Should I learn JavaScript or Ruby? https://blog.bloc.io/im-considering-a-coding-bootcamp-should-i-learn-javascript-or-ruby/

Wed, 12 Oct 2016

Don't hate me because I'm back in GNOME 3

After saying in a recent post how GNOME 3 wasn't working for me, here I am. Back in GNOME 3.

My use cases are changing, and GNOME 3 has its charms.

Briefly (and not all particularly relevant):

  • I will no longer need Citrix in a few months (or so I'm told)
  • Nautilus is nice
  • I'm considering a "clean" installation of Fedora Workstation (still love Fedora)
  • Shutter has improved my screenshot situation
  • GNOME 3 looks so nice
  • GNOME 3 seems stable
  • I now watch video on my TV with a Roku (though GNOME 3 works fine when I have the laptop plugged in via HDMI), meaning my laptop "experience" is more production and development and less video entertainment

I have way too many desktop environments on this laptop. Recently I tried LXQT, which is a nightmare (on my Fedora 24 machine, anyway), LXDE (meh) and KDE/Plasma 5 (I liked it better than I thought I would, but not enough to move to it).

Might as well try GNOME 3 again.

As I say above, I'm contemplating a fresh Fedora installation, and that would be Fedora Workstation from the get-go. If i did that, maybe GNOME Screenshot would work as advertised ...

One guy's Google interview prep can be everybody else's computer-science tutorial

One guy's Google interview prep can be everybody else's computer-science tutorial https://github.com/jwasham/google-interview-university

I am trying Shutter as my GNOME screenshot program

Since the GNOME screenshot program is very broken, at least in my installation of GNOME, I decided to try Shutter, the Linux screenshot program written in Perl and seemingly aimed at GNOME users.

Shutter has a lot of options, and so far I can get it to work.

Going back to the beginning, why is the GNOME screenshot program broken in my GNOME installation? I have no idea.

When I hit the print-screen key, nothing at all happens. If I bind it to alt-p, I get the "shutter" sound, and a PNGJPG image appears in my Photos folder. Even if I go into gconf settings to modify just about everything, calling the screenshot program from the keyboard produces the same resultwon't allow me to change the target directory.

But if I hit the super key (or mouse into the hot corner), then search for Screenshot and run it, I get the full GNOME Screenshot window to open, and it has all of my configuration options (JPG instead of PNG, choose my own directory/folder). Why can't I make this work from the keyboard -- from print-screen or any other keyboard shortcut?

I've dwelled on GNOME Screenshot enough. Now I'm going to see if Shutter can do what I need. Or I can just use Xfce, where the screenshot program works like it's supposed to -- with the print-screen key. Why is this so hard, GNOME people?

Update: After using Shutter once (I have it bound to alt-P), the icon sits in my upper panel. I can then take a screenshot by clicking the icon. Easy.

Speaking of panels in the panel-less GNOME (where not having things appears to be a "feature"), I do have a panel in the form of the TopIcons, Places Status Indicator and Applications Menu extensions. And yes, it is not a good thing that what many consider core funtionality can only be implemented through Extensions that aren't part of the GNOME 3 core.

More GNOME Extensions: I just added Frippery Panel Favorites to make the upper panel on my GNOME 3 desktop even more GNOME 2-like.

Thu, 06 Oct 2016

Converting WordPress posts to files for a static site

I'm exploring ways to take WordPress blogs and semi-automatically covert them into heaps of individual static files for use in blogging systems like Ode that take text files and convert them to HTML either on the fly or via a static-site engine.

I think it's going to take a combination of at least two existing tools plus some scripting on my part to take what those tools create and further process the files for Ode.

I tried two WordPress plugins that didn't work at all: WP Static HTML Output and Static Snapshot.

A third WordPress plugin, Really Static, did not look promising, and I didn't try it.

I tested the HTTrack Website Copier -- there's even a Fedora package for it -- and that pretty much downloaded the entire WordPress blog as a fully baked static site. But it didn't produce files or a file structure that is in any way compatible with any other blogging software.

Still, I think HTTrack will be valuable in terms of extracting the images from WordPress sites for use in other blogging systems.

I tried another method using wget (which HTTrack also uses) with a ton of command-line switches in a post titled Creating a static copy of a dynamic website.

In case the above site disappears, here is what you do:

The command line, in short…

wget -k -K -E -r -l 10 -p -N -F --restrict-file-names=windows -nH http://website.com/

…and the options explained

-k : convert links to relative
-K : keep an original versions of files without the conversions made by wget
-E : rename html files to .html (if they don’t already have an htm(l) extension)
-r : recursive… of course we want to make a recursive copy
-l 10 : the maximum level of recursion. if you have a really big website you may need to put a higher number, but 10 levels should be enough.
-p : download all necessary files for each page (css, js, images)
-N : Turn on time-stamping.
-F : When input is read from a file, force it to be treated as an HTML file.
-nH : By default, wget put files in a directory named after the site’s hostname. This will disabled creating of those hostname directories and put everything in the current directory.
–restrict-file-names=windows : may be useful if you want to copy the files to a Windows PC.

This is a cool exercise, and it pretty much produces what you get with HTTrack. Cool but not useful.

Along these lines but aiming for something that's actually useful, I could use wget and just target the images.

Here's where the good stuff stars

It's not all bad. I just tried a Ruby Gem called wp2middleman, which takes a copy of the XML that you export out of WordPress and turns it into individual static files (either HTML- or Markdown-formatted) with YAML-style title, date and tags.

You get the XML from the WordPress Dashboard (under Tools -- Export). Then you process that XML file with wp2middleman.

If you already have Ruby and Ruby Gems set up, getting the gem is as easy as:

gem install wp2middleman

Then you can produce a full filesystem with individually named files with:

wp2mm your_wordpress.xml

That gets you the files. Not the images. I'd use HTTrack or some similar tool to get those.

That I can work with. "All" I'd have to do is convert the YAML to Ode's title and Indexette date format, rewrite the image links to conform to whatever I have going on my Ode site and then convert the file suffixes from .html or .markdown to .txt.

I think I can do that.

Update: Getting the images from a WordPress blog with wget is easy. Stack Overflow has it: How do I use Wget to download all Images into a single Folder

There is enough info there to get them into a single folder, or into a directory/folder structure that could make it easier to call the images into your non-WP blog. I did both as a test:

wget -nd -r 2 -A jpg,jpeg,png,gif -e robots=off http://your-blog-here.com

wget -r -l 2 -A jpg,jpeg,png,gif -e robots=off http://your-blog-here.com

Wed, 05 Oct 2016

I bring the Blogger version of The CTRL Freak to Ode, plus a tally of what's left to move

It's low-hanging-fruit day. In my quest to archive all of my old blogs here in Ode, where I have everything on my server and in filesystem-level backups, I'm aiming to bring all of my "old" (and just plain old) blogs into this file-based Ode system that I host myself.

Today I did The CTRL Freak -- the Blogger version (there's also a WordPress version, the blog itself tells me).

It was only eight entries, I left at least one behind (because all it did was point to another blog entry), and there were no images. That made it a quick conversion, hence the low-hanging-fruit analogy.

I'm starting to get pre-2011 entries on this site. I'll expand the date links on the right when I get more vintage content on the site.

Here is what I have on Blogger:

2,000 Days in the Valley
142 posts to do

This Old Mac
61 posts to do

This Old PC
40 posts to do

My jazz guitar journey
48 posts to do

The CTRL freak
9 posts done

The status of my WordPress.com blogs is more complicated because there are backups in there from my company-owned WordPress.org sites as well as the Blogger sites mentioned above.

The WordPress.com sites are:

Steven Rosenberg
378 posts

Takectrl's Weblog (I think this is an old Click backup)
1,149 posts

The CTRL freak (WordPress version with maybe a few more entries)
27 posts

I also have:

Master and Server, which is a WordPress.org site on the devio.us OpenBSD server. It only has a few entries.
20 posts

And then there are my two big Daily News blogs that started their lives on Movable Type and which were converted to WordPress.org:

Click
1,950 posts

Come on Feel the Nuys
367 posts

Clearly these last two are going to either take a Herculean effort or some kind of scripting magic from me. I used to have access to the server and could grab the images in bulk, but I don't think I can do that any more. The hard parts of these kinds of "automatic" conversions are the internal links (WordPress uses absolute links, which are good for SEO but bad for portability) and images (and their URLs, also absolute links).

Today's mood (or mode): I could be programming, but I'm moving blog entries around instead ...

Tue, 04 Oct 2016

Blogging over the years: bringing it all together

After I started using self-hosted blogging software that wasn't WordPress in February 2011, I began with FlatPress and continued using it through October until I discovered and settled on Ode as the blogging software that best fit how I wanted to run my personal site.

As I write this post, it occurs to me that I've been running Ode just about five years.

It was always my intention to bring all of my past blog posts from Flatpress, WordPress and even Blogger to a single platform. I moved most of my Flatpress posts over some time ago but there were about a dozen or so entries from the early Flatpress months that never made it over. Over the past day and a half, I moved those entries into this Ode site.

I guess that means I can shut down the Flatpress site.

Migrating blog posts is hard. There's the formatting, the file naming (and organizing) and the images. There are ways of doing it automatically, and I might explore scripting the rest of it. But I'll probably just chip away at it manually, starting with my Blogger sites.

That's if I do it at all. The idea of having all of my blog entries in this Ode site, which means I'll have them in a local filesystem, too, is something I would like to do, but it is a lot of work.

Tue, 27 Sep 2016

Back to Xfce after screwing around with KDE/Plasma and GNOME 3

After a couple of weeks trying to make GNOME 3 and then KDE/Plasma 5 work for me, I'm back in Xfce 4.12 full time.

GNOME for sure doesn't work for me, and while I really liked KDE's Plasma desktop, it created more problems than it solved.

So I'm back to Xfce, which works like a champ and doesn't get in the way.

In terms of GNOME apps, I've been using Gedit less and less since Geany is so good and allows me to compile code that needs it and run all code without leaving the editor (and without jumping through any hoops at all to make it happen).

One thing I picked up from KDE was that I can still tap the Dolphin file manager when I need it (which won't be very often, but the split-screen mode is something that every file manager should have).

I also revisited digiKam, the photo organizing/editing software from KDE. It is much better than the last time I used it, and I am thinking about continuing to use the app even though I'm not in KDE.

Otherwise GNOME is still a problem for me. I am required to jump through a lot of configuration hoops just to get the desktop I want.

KDE is better. I like the animations (which are minimal). I like the "KDE menu." But it's just not all that stable. And KDE Wallet was continually screwing with my Google Chrome cookies and saved passwords. I didn't need that headache to continue. I mostly used Firefox just to keep from wrecking my Chrome setup more.

One problem I had with KDE: It wasn't all that stable. I killed it more than a few times. However, I love the attention to detail when it comes to configuration.

I had problems with screen-grabbing in both GNOME and KDE. It was worse in GNOME. I couldn't get the print-screen key to actually do the screen-grab. I had to settle for mapping alt-P. And then I couldn't get the format I wanted (JPG, not PNG) or the proper location. If I called the screen-capture utility from a terminal, it would work like it was supposed to. But with alt-P, it didn't.

In KDE, kscreenshot was pretty good, though it also didn't work with the print-screen. I had to call it from the menu and leave it running.

The fact that the Xfce screen-shot utility just works -- and well -- is huge for me.

And as I say above, Xfce stays out of the way and runs like a champ.

So I'm back.

Mon, 26 Sep 2016

Video: Swing expert Jonathan Stout plays 'It's Only a Paper Moon' on a 1929 Gibson L-5 at Norman's Rare Guitars, and then I keep on writing ...

Swing guitarist Jonathan Stout lays out his philosophy on swing music, the guitar, Charlie Christian, Allan Reuss, REALLY old Gibsons and Epiphones, X-bracing vs. parallel bracing and more on his Swing Guitar Blog and Campus Five YouTube channel.

His latest video was recorded on another YouTube channel because he made it at Norman's Rare Guitars in Tarzana. where Jonathan plays Harold Arlen's "It's Only a Paper Moon" on a 1929 Gibson L-5 acoustic.

Jonathan is a wonderful guitarist who explores three distinct "directions" on the guitar: swing rhythm on the acoustic archtop, swing-style chord-melody on the same instrument and Charlie Christian-style swing-to-bop soloing on the archtop electric.

They really are three different kinds of playing -- watch Jonathan's videos and see what I mean.

Read the rest of this post

Fri, 23 Sep 2016

Ford to city: drop dead

Headless body in topless bar

Sticks nix hick pix

Thu, 15 Sep 2016

I'm using the KDE Plasma desktop - and liking it

Though I'm a longtime Xfce user on the Linux desktop (and a longtime user of Fedora as my distribution), I'm open to other things.

As I've written many times, I want to like GNOME 3. Fedora Workstation is based on it. But it just doesn't work for me. I don't want to say GNOME 3 is unpolished, but it's just too stripped down until you start shoving GNOME Shell Extensions onto your system.

Plus, GNOME 3 doesn't play well at all with the Citrix applications that I've been using for the past couple of years and will continue using for maybe the next six months.

And GNOME 3 just doesn't "feel right." And "feel" is something I don't want to ignore.

On what I suppose is a bit of a whim (or maybe I did it by accident, I can't remember), I logged in to the Plasma desktop. I don't know if calling their desktop "Plasma" short-changes the KDE brand, or if that matters at all, but I had a poor grasp of what Plasma is in relation to KDE.

It turns out I like Plasma (or KDE, or whatever it's called).

The desktop works well, is faster than you'd think and has quite a bit of polish. There are lots of configuration options, and they are all built in. It's not like the comparative tragedy of the GNOME Tweak Tool and gconf.

And I am growing very dependent on the Dolphin file manager.

Things I like about Dolphin:

  • Split mode. Nautilus used to have it. Thunar never did. It's like having windows in a car that actually open. That's a bad analogy, but the ability to easily transfer files from one directory to another without opening two file manager windows is so fundamental that I wonder why every file manager doesn't have it.

  • Faster transfer to USB flash drives. Is it my imagination, or is Dolphin configured to speed up the copying of files to USB flash drives. Those operations are notoriously slow when done on my Fedora system in other file managers. I know there are ways to speed up those transfers, but I'm too lazy to figure them out. I'm happy to have Dolphin do that for me. I'm pretty sure I got this wrong. The file transfers go at the same speed in pretty much all the file managers.

  • Configuration, configuration, configuration. KDE has always been about configuration of all the things. And GNOME has been not-so-slowly offering a stripped-down, hard-to-configure experience that is low on included tools. Xfce is very configurable, KDE/Plasma even more so. The file manager is such an important part of any system, it's vital that you are able to do what you want with it.

From the "feel" perspective, as I say above, KDE's Plasma desktop is much faster than billed. The animations don't distract. It seems relatively easy on the CPU. I installed the overly complicated digiKam, which I have used in the past because it's one of a very few Linux applications that allows editing of the IPTC metadata in JPG images that the media industry uses pretty much universally. While still complicated as hell, digiKam passes the IPTC test.

I have had problems with the KDE Wallet system "eating" my Google Chrome browser cookies, and that's something I'm not terribly happy with. I lost all of my stored passwords at one point. Firefox definitely "plays" better with KDE/Plasma.

And right now I'm having issues configuring the touchpad with the KDE-supplied utility, though that's today. It worked a few days ago. GNOME is really bad at this -- as is LXDE, one of the many DEs I've sampled in the past couple of weeks.

I can't say that I will move from Xfce to KDE/Plasma because I probably won't. But I can certainly see using the Plasma Desktop as my part-time environment, with Xfce still doing the heavy lifting for my media production and software development needs.

But you never know.

Mon, 12 Sep 2016

Using Dir.glob to delete files with a pattern in Ruby

I have a bunch of files in a directory, and I want to delete all that begin their filename with the letters X16 (e.g. X16data.xml)

I used Dir.glob to select the files and iterated over what comes up in the pattern, using File.delete to get rid of what I don't want (Thanks, Stack Overflow):

Dir.glob("X16*") do |file|
 File.delete(file)
end

You can put any kind of regex in here, and it'll probably work. That's the theory anyway.

Sat, 10 Sep 2016

The rubyzip gem for creating and opening archives

On my current project, I am trying to use using rubyzip to unzip an archive.

So far it's not working, and I'll probably shell out to Bash and Linux/Unix's unzip to get it done.

I figured it out. Now I have to manage the unzipped files (deleting the unused, renaming the good, then deleting the good at the beginning of the run) and account for NOT running the program if there is no file on the other end.

Mon, 05 Sep 2016

I could almost run OpenBSD 6.0

I could almost run OpenBSD 6.0. http://www.openbsd.org/60.html. When I'm allowed to abandon Citrix on an ice floe, that is.

More on TrueOS

More on what TrueOS (ex-PC-BSD) is all about https://www.trueos.org/more-on-trueos/

PC-BSD is now TrueOS

PC-BSD has rebranded as TrueOS. Doesn't run on AMD/ATI, so I can't try it https://www.trueos.org/2016/09/01/pc-bsd-evolves-into-trueos/

Fri, 02 Sep 2016

Blogging with Markdown, Dropbox and Rails

Blogging with Markdown, Dropbox and Rails by Piotr Chmolowski http://pchm.co/posts/blogging-with-markdown-dropbox-and-rails

Thu, 01 Sep 2016

I love Sam Koblenski's tech blog

The Ruby Weekly newsletter led me to Sam Koblenski's excellent tech-heavy blog http://sam-koblenski.blogspot.com. I especially like the Tech Book Face Offs http://sam-koblenski.blogspot.com/search/label/Tech%20Book%20Face%20Off

Mon, 29 Aug 2016

Oleego is my new favorite place to eat at Westfield Fashion Square

We ate at @oleegousa twice this weekend -- it's that good. My new No. 1 at @WestfieldFS #ShermanOaks