Pages

Friday, February 17, 2017

"Javascript: An Honest Preview" is out!

Are You Ready?

I'm really excited to announce that my video, "Javascript: An Honest Preview" is out! You can watch it here:


It's the preview you never knew you wanted for the programming language you can't avoid!

This video has been a pet project of mine for some time. It may seem a bit odd for an Android developer such as myself to make such a video, but I've worked on my fair share Javascript projects over the years. I feel like any amount of time spent working on Javascript projects would make anyone want to make such a video :).

For the record, I don't actually hate Javascript! This website, is in fact a Node.js/Express/Typescript app. It's all in good humor. I'm considering making this a video series. Next up would be...C# - no programming language is safe!

I hope you enjoyed it!


Thursday, February 12, 2015

WeaRSS Internet Coverage

WeaRSS has been getting some coverage on the internet; both on the web and in the land of Android apps. I thought I would share the love.

First - and I'm most excited about this - WeaRSS is currently a featured app in the Android Wear section of the Google Play Store! I shared the photo on my Instagram profile:

I never thought this would happen!
To see it for yourself open up the Play Store on your Android device (and you do have an Android device, right?) and head to the Android Wear page; these are "Hand-Picked for Wear" apps. Swipe down the page and you'll see it listed right there! It's definitely an honor to get recognition from Google in this fashion.

WeaRSS has also been getting some video recognition on YouTube. Here is a great video review:

 

And YouTube channel HonestTech includes it as one of their "5 Must Have Android Wear Apps:"


A big thanks to the creators of those videos for the coverage. And while you're watching the videos, why don't you give those channels a like or subscribe?

The app has been picked up by a couple of websites too:

On a final note, I realize it's not entirely clear how to actually pronounce 'WeaRSS' when you say it out loud. I'll try to lay the confusion to rest: the way I say it is "wear-R-ess-ess;" kind of in a flowing manner. I do pronounce both 'Wear' and 'RSS' but I mash them together a little bit with an extra "R" sound to bridge the two parts together.

Naturally, this should help you as you discuss this app with your friends and/or make a positive video review. Right? Right.

Sunday, December 28, 2014

Adding a feed to WeaRSS

In this post I'll go over the process of adding a feed to WeaRSS. I promised this in an earlier post, but I wanted to wait until I was able to push the latest app update that is available now. Adding a feed is easier than ever!

For a quick overview of the process, I've created an animation that shows you what to do:


Read on for a detailed description of the process.

Your Source


First, you'll need an online source that you want to follow. This will likely be any website that has somewhat regularly updated content. For the purposes of this overview, we'll be using The Verge.

Find Your Feed


Next you'll need to find your site's RSS feed or feeds. Unfortunately there is no one way that sites make their RSS feeds available. A very common way to let users know about feeds is to have a "RSS" or "Subscribe" link somewhere on the periphery of the page - perhaps in a sidebar or in the footer of the page. Another indication is to look for the universal RSS icon:

The Universal RSS Icon
On The Verge's site, I found a "Subscribe" link down in the footer of their home page. However, as is common with many sites, The Verge actually has another set of feeds availablex. I found this post going over a way to "roll your own" RSS feed based on a variety of criteria. I'm going to use the "Android" feed.

Copy & Add - That's It!


Once you've found the feed link you want to follow, all you need to do is long-press on the link to bring up the Android context menu. Select the "Copy link address" option to copy the link to the device clipboard.

Finally, open WeaRSS and tap the "+" icon to open the Add Feed screen. The screen will open and the link you copied will already be in the the URL field. All you have to do is tap the save icon and your feed will be added.

Happy Reading!


Sunday, November 9, 2014

Introducing WeaRSS!

I'm excited to announce my latest Android app called WeaRSS - it's an Android Wear app that allows you to keep up with the latest news headlines right on your Android Wear device!
I wish this was the news every day.
I made the app because I thought it would be convenient to quickly glance through news headlines on a Wear device; there are times when it might not be convenient or possible to pull out your phone but you still want to stay in the loop. Also, you don't always need access to the full story; getting a glanceable version of the story is just right.

Getting Going


With WeaRSS you get news updates by following RSS feeds. In case you're not fully up on the nerd lingo, RSS feeds are a standardized to share up-to-date web content. You can find a pretty good explanation here. Most websites with regular updates have one or more RSS feed - just poke around on the home page and you'll likely find an "RSS" link.

To get things going you just type or paste in RSS urls from your favorite websites to build a list of feeds to follow. In a future blog post I'll go over the process for getting RSS feeds into the app. Add as many feeds as you want! Once you have your feeds, WeaRSS will start pushing news headlines to you at regular intervals.
Following some feeds - add your own!
For this first release there are a couple of customization options:
  • Setup how frequently the headlines are fetched and synced to your wearable.
  • Set how many headlines from each feed will be sent with each update.

Voice Control


You don't have to wait for the sync operation to read through the headlines on your wear device. You can open the app using voice control - just say "OK google, start app my headlines." The app will open showing you the headlines that were most recently synced. You can also hit the refresh button on the companion mobile app to get the latest and greatest.

I've got a lot of ideas about where to take the app in future releases, but I want to find out what other people want. Leave a comment or send me an email and let me know what you'd like to see in the app.

I hope you find the app useful and it makes your Android Wear device just a little bit better!

Get it on Google Play

Wednesday, September 25, 2013

Maven Central's 'artifactid' is build.gradle's 'name' property

Recently I wanted to utilize a third party library in one of my Android applications. The library is available via Maven Central, and since I'm now using Android Studio for development I thought I'd use gradle to auto-import the library. I knew this was possible and relatively straightforward, but I ran into something that threw me for a loop and that I couldn't find documented officially anywhere. I figured I'd share what I found to hopefully save someone else the potential hassle.

At the bottom of each Android app's build.gradle file is the section where you reference third party libraries that will automatically come from Maven Central. For most Android apps the support library is included:
dependencies {
    compile 'com.android.support:support-v4:18.0.0'
    //This is where references to the third party libs go
}
To get a library to work in gradle from Maven, it needs 3 pieces of information. For every library, Maven central provides 3 primary pieces of information. Respectively, the fields for each are:
//Gradle Info:
group: 'com.example.library'  //The package name for the library
name: 'someuniquename'        //An identifier for the lib
version: 'X.Y.Z'              //lib version number

//Maven Info:
groupId: 'com.example.library'  //The package name for the library
artifactId: 'someuniquename'    //An identifier for the lib
version: 'X.Y.Z'
It seemed pretty obvious that "group" and "groupId" would line up in both places. But here was my gotcha point: when referencing the maven library, the "artifactId" value from Maven is what you use for gradle's "name" property.

Like I said, I couldn't find this documented anywhere. On a different project previously I attempted to bring in a Maven library and it didn't go so well. It could have been due to a buggier, earlier version of Android Studio, but not knowing this bit of info certainly didn't help.

When you bring it all together, this is what the build.gradle file will look like:
dependencies {
    compile 'com.android.support:support-v4:18.0.0'
    compile group: 'com.example.library', name: 'someuniquename', version: 'X.Y.Z'
}

Saturday, May 18, 2013

Quick Tip: Set socket.io log level in zappajs

I've been working on a zappajs based website that has a socket.io connection to the browser. By default socket.io likes to output a lot of debug text. I got tired of seeing it all and wanted to turn it off. Thankfully, it's easy.

At the top level of your zappajs instance definition, right alongside where you define your @use statements, define routes/templates, and so on, you can call into the @io object, which is a reference into the socket.io server-side instance. You just put:

@io.set 'log level', 1

-- or if you like closer to "regular" javascript syntax you can do: --

@io.set('log level', 1)

Log level 1 is the least chatty of them all. You can see the different levels to choose the one you want here.

Friday, March 8, 2013

"do" stuff in Coffeescript

I can't deny that I have an attraction to coffeescript. I can't even fully explain it. I think it might be the super-tight syntax, ability to not have to depend on parenthesis or curly brackets, and zippy server-side templating engines like CoffeeKup or Eco. Of course there are pros and cons to coffeescript (I'll abbreviate to CS), and I definitely don't use it in all cases. The point of this post isn't to love or hate on CS; I'll leave that to others more qualified than myself.

As I've been learning CS there are a couple of things I normally do in javascript that I couldn't quite figure out how to do:
  • The right way to call a function with no arguments
  • Immediately execute anonymous functionality, like in a switch statement
It turns out that they both hinge on using the same keyword: "do."

No-Argument Functions
CS is very sparse in its use of parenthesis; calling functions with arguments makes clear sense, but it's not immediately clear how functions without arguments get called. Check out the two lines of code:

The second line of code seems logical, but we can't forget this is still javascript. The processData function is an object after all, so that line of code merely assigns processData to returnData. Adding parenthesis works - that is, processData() - but I figured there was a more "coffeescript-y" way to do it. Enter "do:"

There is the CS way to do things! Calls the function perfectly. "do" Helps us elsewhere too:

Immediately Call Anonymous Functionality:
In a similar fashion, there are times when an anonymous function is immediately called, as opposed to in a callback fashion. I'll just show the code:

Again, "do" is the secret weapon here. When supplying callback function to CS, you can just specify inline without "do." But in the case of the switch statement it needs to called immediately, hence the keyword.

Those are the two cases that I was able to find, but perhaps there are more ways "do" is used in CS. Did I miss anything?