Categories
Development Fresno

Bitwise Workforce Training

A wonderful bouquet of flowers.By now I’ve been a Professional Software Developer for well over 30 years. But like everyone in this industry I always have something new to learn. Things change rapidly.

I recently took a Beginning HTML class through Bitwise Workforce Training. Yes, I took a beginning HTML class. I could poke around HTML and CSS enough to make a mess but I never really understood how to properly build a page. I don’t plan on becoming a full time web developer but having the ability to create a great page for one of my iOS Apps is really important. How else will folks learn about my work?

Our class was a wonderful mix of folks from all walks of life and I absolutely loved it for that. There were things I knew about computers I could pass on to others and others already knew a bit about CSS and HTML so they passed on tips to me. Everyone was smart and ready to learn.

That’s important. Come ready to learn. The class is structured to be a practical guide to building a website with a few pages and our instructors made it clear we were only scratching the surface of HTML and CSS and the real learning would come when we were out on our own. Practical. Like the real world you learn the basics and figure out the rest through exploration. This is perfectly suited for me. I learn best by doing.

The class paid off for me after the first two sessions. I am the developer of an iOS feed reader called Stream. I was in the middle of an update to replace my Article viewing code with 100% HTML. The HTML I needed to create was quite simple but to someone without proper grounding in HTML and CSS I was struggling. After my first two classes I had enough knowledge, after asking a few follow-up questions, to build the HTML I needed to ship the update to my app.

If you’re interested in learning in a structured – yet practical – way consider taking a Workforce Training class.

I’d also like to give a shout-out to a couple folks. Gabby Moreno, our intrepid instructor, and Jen Lewis, her assistant. Between the two of them they managed to help everyone. They’re very kind, smart, and most off all, patient.

Categories
Development Life

Software Craftsman

Better Programming (Nick Hodges): There’s no shame in being a craftsman — quite the opposite. We all admire the capabilities of, say, a carpenter that uses their practiced skills to build beautiful furniture or cabinets. I certainly admired my friend who hung that church door with such mastery, creating great beauty with amazing expertise.

I love the idea of being a craftsman. When I was a young lad I was into woodworking. At one point I wanted to make it my career until some adult talked me out of it.

I wish I hadn’t listened. I was never a good student. I didn’t finish college. I got into computering instead. I shall adopt a new title.

Rob Fahrni – Software Craftsman

Categories
Development Stream

How I use Stream

I created Stream because I wanted a simple reverse chronological timeline of feeds. Dave Winer calls it a River of News. That’s also how Stream got its name. A stream is just a small version of a river – yes, that’s an oversimplification, but you get the idea.

Anywho, I just wanted to share how I use Stream. There is, of course, no wrong way to use it. Just use it your way.

When I announced Stream 1.0 was shipping I mentioned it was a complement to your existing feed reader. That’s why I want to talk about how I use it.

I use Stream for feeds that only update a few times a day. I don’t use it for feeds, like say, the New York Times. It’s just too much to consume without the folder organization system of other feed readers.

When I decided I should trim out feeds that published many, many, articles a day I exported my feeds list as OPML, removed the busy feeds from Stream, manually removed the lightweight feeds from the OPML I’d exported, imported the trimmed OPML into Feedbin, connected Unread to my Feedbin account on iOS and connected it to NetNewsWire on the Mac.

Wow. That sounds like a lot of work, but it wasn’t. Now I have my very casual list of bloggers I love to read. It’s still 162 feeds, but most of those feeds post rarely and the ones that post most often, like Kottke and Daring Fireball, only post a few times a day. It makes using Stream a real joy.

If you’re curious about my feeds feel free to checkout my OPML file.

Categories
Development

Irrational Rob

I love writing software. I especially love writing my own software. When I’m doing my own thing the day zooms by. I’m energized afterward. Ready to get back to work on it.AHHHHHH!

I’ve been doing iOS work for quite a while now and have always wanted to do a native Mac app. Of course SwiftUI will allow me to do that fairly easily.

Here’s the thing. There is this super irrational me that wants to put apps on iOS, macOS, Windows, and possibly Linux. Maybe even Android, who knows. The first three targets for sure; iOS, macOS, and Windows. To that end I keep plugging away on my own C++ class libraries. Recently I started refactoring them. I love the way UIKit/AppKit are built, so I’ve modeled what I’ve done thus far after those Frameworks. It’s still very early days but I’m enjoying the process.

There is the irrational Rob. The one that wants to build his own class libraries so he can write one hunk of code in C++ that works on different platforms.

Recently I asked a friend for advice about how he’d implement a dictionary class. His answer was simple, and the proper one: “I wouldn’t. I’d use std::map because it’s a dictionary and I’d use std::vector because it’s an array.” Of course he’s correct! It’s completely irrational for me to do this stuff, yet, I’m still going to do it.

Why? Because I can and I want to.

Categories
Development Indie iOS Life Mac Weblogging Windows

Focus, Rob

It’s Christmas morning, early. The house is quiet but my brain is going crazy with thoughts of projects I should work on. The thing is, I don’t need any additional projects to work on.

AHHHHHH! When I decided to build Stream it was because I wanted to do something small. I had originally started building a blog editor that would post to WordPress and Tumblr. The core of the app was being written in C++ so I could share that core between iOS, macOS, and Windows apps. It was going to be a lot of work. More work than I had the time to invest.

So, I did my little app: Stream. That took over two years to complete. I spent a lot of time on the guts of the app. Mainly around discovery of feeds and parsing those feeds. As a result I have a decent set of code for dealing with RSS, Atom, JSON Feed, OPML, and HTML. It was a real joy to finally ship.

The bottom line is this, I’m slow. Couple that with limited time to work on stuff and it takes forever to complete a project.

This morning my brain is spinning on the idea of that blogging app. As much as I’d like to do it, I really do love blogging, it’s not the project I really need to pour my efforts into.

The project I need to work on is going to be a many year effort. It’s something I’ve wanted to do for at least 15-years. The target OS has changed and morphed over those years but the app idea hasn’t, and I’m getting help from a longtime friend who just happens to be a really great developer.

Focus, Rob. Focus.

Categories
Development Life

This is me

A wonderful boquet of flowers. No Jedi: “ I’ve noticed many times that a developer as senior as I am — now with 40 years writing code on Apple computers — is assumed by newer developers to be a kind of Jedi. As if I’m on intimate terms with every API in every framework; as if I’m deeply learned in every single tool, from Git to Jenkins to AppFigures; as if I know how to make App Store Connect sit up straight and mind its manners”

This is me. Every single day.

Categories
Development Indie iOS RSS Stream

Stream 1.0

Hayseed: “Stream is a different take on feed readers. It displays your feeds in a timeline, similar to Twitter.”

Yes, I finally shipped Stream 1.0!

The response has been so overwhelming, not in a OMG 100,000 people downloaded it, more of OMG the Mac and iOS community are so supportive. When I started on Stream I was really excited to share it with everyone. Over time that enthusiasm waned because it was taking so long to finish. I worked on it an hour here an hour there over the course of two years. Yes, two years.

I’ve received some really excellent feedback via Twitter and email. I hope that continues and I hope to incorporate some, if not all, of that feedback into Stream, but it could take quite a long time before I’m able to do it. I just want to get that out there. Stream is a labor of love. If I could make a living from it I would definitely pump out features at a much quicker pace. Please bear with me.

Thanks again for your support and encouragement. It means loads to me.

Categories
Development Indie iOS RSS Stream

Stream Update

I feel like I’ve been working on this app forever. 😀

But, I haven’t. It’s been a couple years of fits-and-starts. The last TestFlight build I sent out was, I believe, back in late February.

I only have a few new items to add then it’s all about bug fixes.

## What’s left?

### Import and Export OPML

I have the core of importing and exporting working fine. It’s what I worked on today.

The one stumbling block I have is where it fits in the UI, like it’s a little thing. I have some ideas, of course, but I’m not thrilled about any of them. I’ll probably pick the least icky idea and do that.

Once that’s done I’d imagine the Export feature will live next to it.

### Sharing

This goes two ways. I’d like to add an extension that will allow someone to _Add to Stream_ from a web browser and I’d like to allow folks to share out of the article view. This should allow folks to start a blog post of their own or post to their favorite social media site.

## Nice to haves

### Extra Icons

I have some beautiful icons to share with everyone and I really hope you all enjoy them as much as I do.

### Tip Jar

I’ve struggled with this one a bit. Stream is going to be free. It’s not going to be something folks just gotta have. I did this for me. I wanted an app that was simple and felt more like a Twitter feed. I think it hits both marks.

The reason I’ve struggled with the idea of having a tip jar is I don’t want folks to feel like they have to pay anything for it. I would appreciate it but it’s not necessary.

### Wrapping up

I have a few bugs I’m aware of, mostly around stripping of HTML tags.

Thanks for following along.

Categories
Development iOS

From my Notes

This set of questions is from November 13, 2015 regarding Xcode for iPad. They still hold true today.

  • Who is it for?
  • What would the experience be like?
  • How would debugging work?
  • Would you have a mouse?
  • How would you debug for other OS versions?
  • Would it be iOS only?
  • What about Mac?
  • Would it be Swift only?
  • Would it introduce a new framework?
  • Split screen debugging?
  • What about iPhone?
  • iPad Pro only?
Categories
Development

Evergreen ODB

Brent Simmons: “And: different syncing systems might need different properties, and I don’t really want to create an uber-schema which is the union of all of these. (And I don’t want to create a Feed protocol, because Set is then impossible.)”

I too am working on an RSS reader for Mac and iOS but I’ve chosen to make what Brent refers to as an uber-schema. We’ll see how it works. I think it’s going to be fine but I’m really curious to watch what Brent’s ODB turns into.

His idea of a more document centric storage mechanism is probably going to be really nice for an RSS reader. It doesn’t need to keep data around forever and requires a very small amount of data to work well.

There are, of course, document — NoSQL — databases readily available. The first one that comes to mind is CouchBase Lite.