Translate

Tuesday, December 04, 2012

A GUI appeal?

As the years have gone by I've looked at my open source Java project Class Viewer as something of a puzzle to be figured out, as to how I should handle it. And with downloads growing on a year-over-year basis, in over 100 countries, I have decided at least I should give more information for people who are using the application.

So I have been doing posts meant to give more information, like my view that the application is in essence a GUI on Java Reflections API, with quick access to Javadocs. And those were the key features I wanted, and with them I have a tiny application in terms of lines of code, which doesn't in my opinion need many updates. And in eight years I haven't done many.

Since I was a professional software developer at one time, and even was a team lead on a multi-million dollar project, where I was the person who wrote the document for the project for unit testing, I think I should explain even more. For instance I didn't put a unit test framework into the project.

The reality is, I didn't design the project much at all, as it started as test programs for the Java Certification exams.

So refactoring has been on the to-do list for years now, if I ever figured everything out.

And I had already left working as a coder by the time I put it up on SourceForge and had vague ideas of how things might go, like maybe I'd end up with a bunch of other people interested who could polish out the product, but that didn't happen. And it has stayed a single developer project.

Weirdly enough, I've been looking at downloads for years with very little information except a number, like 10 downloads in a particular day, which isn't exactly inspiring. But SourceForge began giving more information like countries, and then it was cool!

Suddenly I found out I had an application with downloads from over 100 countries.

And, um, my attitude began to change.

And I guess it's remarkable that the project has done ok for years with me puzzling about how to proceed with it, and limited development but my theory is that I have a very focused problem space, and most importantly did ok with the graphical user interface aka GUI.

It is built to be as easy as possible with big screens that I want to be intuitive, where you don't need much instruction on how to use it. (I think.)

Rather than focus on a lot of features I was deliberately minimalist, wanting to have only just as many as I thought were necessary, and I just rewrote the top left command bar completely as I just so thoroughly disliked the File, Edit, View format. So I just threw it away. THAT was a lot of fun.

How well did it all work? I don't know. Sure I have growing downloads but not a ton of them, but it's a Java developer tool, so a smaller possible base, but also presumably a very picky one. Still being around after eight years with steadily increasing downloads I think is definitely a plus.

Who knows where things will go from here, but hey, if you want to give me feedback, feel free! It would be helpful. Commenting tools are much better today as the web continues to evolve, and I'm in an assessment phase as I try to figure out where things are with the project.

But in the meantime least I can do is give more information to people who could have been using Class Viewer for years wondering what was going on.


James Harris

Saturday, November 17, 2012

Cream colored San Francisco sky

Here's another older photo I found again recently. Taken with my Canon Powershot, December 2008.


Thursday, November 15, 2012

North Beach neighborhood

Here's a recent photo taken March 10, 2012. I was intrigued by the sign, but also like the neighborhood which is called North Beach. I was using a smartphone for this picture, a Motorola Droid 2.


Wednesday, November 14, 2012

Defining the Class Viewer project

Back in 2004 I decided to put up on SourceForge an application I called Class Viewer, which is meant to be a tool for Java developers. And I had a very simple set of problems in mind to solve with the application itself.

And it occurs to me that it's a good idea to say what I think the Class Viewer application solves and while I'm sure I've written about it before, I think now is a good time to update a bit, which can include information about updates themselves and how they happen.

To me, Class Viewer is a graphics user interface on top of the Java Reflections API which allows you to easily go to Javadocs as well.

And that's about it.

So it pulls information about a class, and gives you a basic overview including pertinent information like superclass, if there is one, interfaces, and constructors. And even more importantly, it pulls out all public methods and fields, and tries to show them to you nicely, in a way that helps you scan through them easily.

And you can go to Javadocs directly to a method, or just to the class, without much work. For instance, double-clicking on a searched for method in a results window, takes you right to it in Javadocs.

THAT was a big deal to me as while developing I quickly got tired of going out to find Javadocs, figuring out where a class was, getting to that class, and then scrolling down until I found the method I wanted.

And Class Viewer solves those problems for me and did so, yup, back in 2004.

I put it up as I figured it might solve those problems nicely for others.

So in ways, if I had polished out a product back then, there would be little reason for development from then forward! It's a rather closed problem space, with a product that I think handles that problem space.

So why do any further development at all?

The answer has been: I didn't have a completely polished product, I have had a few more ideas around that core problem space, and there have been some shifts within the Java language itself that require updates.

ONE of the remarkable things about Class Viewer is that you could run the very first version I put up, back in 2004, I'm fairly certain and be ok, as you could have downloaded it back then and not had much of a reason to update it since then.

The other reason for development is musing about expanding that problem space so that more than just being a GUI on the Java Reflections API that lets you go to Javadocs easily, it could also turn into a lightweight IDE. And I've done some development that opens that door slightly as I consider that possibility.

But the weird thing is: nearly at the start the project was mostly done.

There is rarely reason for any serious update. And mostly I check to see if any recent changes to the Java language have broken anything.

Some recent updates were more about polishing a few things in my mind, and toying with the idea of moving towards a lightweight IDE. But I can easily go years without any development at all without it being a big deal, which feels a bit odd. I was over a decade ago a lead Java developer at a major software division, and we had lots of iterations. It's kind of odd to control a product that I feel doesn't need them.


James Harris

Some Bay Bridge

Here's another picture from a while back. Early afternoon view of much of the western span of the Bay Bridge in San Francisco.

Taken December 4, 2008 from the Embarcadero. I was using my Canon PowerShot A590 IS.


Wednesday, October 31, 2012

Street sign

Another old photo of mine. Street Sign. San Francisco. Taken December 4, 2008.
Canon PowerShot A590 IS


This photo and others can also be found on my 500px account.

___JSH 3/10/16

Update July 15, 2019: Do things shared necessarily lose value though? Ponder using the Mona Lisa as a guide in this post, which figured should link to here.

Thursday, October 25, 2012

Seagull in flight

Here's a favorite photo of mine. Recently started digging around looking for pictures now that they're so easy to post. This one is from January 11, 2009, looking out over the San Franciso Bay. I was using a Canon PowerShot A590.


Update August 25, 2018: Now on Getty Images here.

Wednesday, June 20, 2012

Some Class Viewer download stats

I thought it'd be interesting to put up the download stats for my Class Viewer project so far this year. Using screenshots. Results are typical and I like to take a look near mid-points.

You can click on each to get a bigger, more readable view.






Friday, May 25, 2012

Along the Embarcadero March 12

So here's a photo from March 12, 2012 along the Embarcadero in San Francisco. And I think the picture may look more planned than it was, as I was walking along and noticed the SFPD officers on horseback further down and wanted a photo of them. Those horses are so giant, which I think is really cool.

Well my smartphone is kind of slow when it comes to opening up to the camera, as it's a bit old, a Droid 2, and I rushed to get it out, wanting it to be ready by the time they got to me. And wouldn't you know it opened up fast enough so I took what I thought of as a test shot. And then lost the mood to take any more photos!

Why? I don't know. It's just like some feeling or something. Later I decided it was decent enough regardless to put it up publicly.


Saturday, May 12, 2012

Calling other programs

One of the things that motivated me to write the Class Viewer program in the first place was the ability to call other programs in Java, so calling a browser came in at the start, eight years ago. Oh, and it's amazing to me that it has been eight years, but I put the project up on SourceForge February 2004, so yeah, eight years.

The story is I'd been studying for my Java Certification exam--yeah I did pass--and writing test programs over the Java Reflections API to learn it. I wrote a text class viewer which is the ClassInfo.java which is still part of the project. And then I realized I could have a graphical piece and wrote ClassViewer.java itself. And eventually decided to share it, so put it up on SourceForge.

The ability of a program to call another program is in my opinion, so cool, and my recent update adding calling a text editor where I ran into some walls. Seems not all text editors take a line-number when you call them, but luckily gedit did when I checked, so I default to it.

And that makes things so modular.

For a while I had thought about throwing together some kind of text editor myself, which is such a waste of time with so many out there and Class Viewer can just call one! And then I almost thought I'd need to take an open source text editor and modify it to accept data from Class Viewer. Way too much effort.

So eight years ago I had my program calling a browser which works great and it allows you to go directly into javadocs without doing a lot of the searching which really had annoyed me for years as a software developer as it was SO tedious. Why do something though that a computer program can do for you?

Class Viewer does it for you.

Going forward, if I can justify the expense, I'd like Class Viewer able to call more things, and even came up with the idea of just having a command window where you can ask Class Viewer to call something for you, like a debugger.

Limits may be from what other programs accept as command-line input, and grace in handling the process, where I don't even worry with a browser. Class Viewer just calls the thing and forgets about it.

But for other things, the program would have to handle if the freaking thing crashed something or did something weird, so might have to manage it, but that's vaporware at this point.

But can you imagine? If you could modularly build a very functional app that called other apps as needed where all these programs are talking to each other and doing things for you?

Here's a simple example from this fantasy, as imagine asking your computer to open up your latest code and to please highlight all methods that ask for a String.

I can see Class Viewer able to do that with just a few things--if other programs can accept the instructions like a text editor which can obey a range of commands sent to it from another program.

It still might be necessary to modify an open source text editor out there but it could be done.

And consider how much easier on the coder, and how much more you could get done when your computer is your coding assistant.


James Harris

Wednesday, March 07, 2012

A photo, two buildings in SF

Here's a photo showing two buildings here in San Francisco:


I took it the day of the Chinese New Year Parade, as I was walking up the street and looked back and just thought to myself, wow.

Sunday, February 26, 2012

Sun-drenched photo

Decided to share another photo. And what happened was a couple of days ago I saw what just looked like such a cool shot, where a lot of it is a clear sky. One of the most clear days I've seen in San Francisco:




James

Thursday, February 23, 2012

Trying a video

So figured I may as well also try posting a video to see how it all works. And story behind this one is I took it deliberately for test video, where the vague idea I had in mind was to just film some running water so I had sound, for about 30 seconds.

So I start filming, and then amazingly enough, there was this pigeon who decided to be a part of the show:


So what's so funny to me is that I'm filming and I noticed there was the pigeon and thought quickly, ok, add the pigeon, now back to test footage of running water. And the pigeon decides to walk through!

Totally random. But if you look at it without knowing the story, it almost looks scripted. And so now I have some test footage, for this post, as I see what some video looks like here.


James Harris

Sunday, February 19, 2012

Trying a photo


Recently I've found myself taking photos and putting them up on my Google+ account and kind of curious about what it'd look like to post one here. So putting in a photo from here in San Francisco:


Seems easy enough to add an image. This photo was just after a bit of rain.


James Harris

Wednesday, February 15, 2012

Limited endorser idea

So I have thought about what it'd be like to be an actual celebrity, and maybe even do endorsement deals, but from what I've heard of those things, they mostly suck in my opinion, so getting ahead of the game--thinking positive--and putting up some ideas for what I might try when I become a celebrity.

And I call it being a limited endorser, and I'll use an actual company with which I have NO affiliation, as I'm just using them now, and think it's cool and that company is airbnb.com and I won't make that a link to their site, so as not to give the wrong idea. And I repeat I have NO affiliation with the company, so no way there is actually any kind of a deal in place, and besides, I'm not yet a celebrity.

So let's say the limited endorser deal allows a celebrity to tell good things they like about a company, without necessarily receiving compensation, but also allows them to say they are a limited endorser, so there is full disclosure.

Which means you can tell nice stories in public, like if some reporter is asking you a question, and you can say you use some particular company.

So like I might say, used this company a couple of times and they're cool.

The limited endorser contract can be terminated by either party at any time and for any reason and is legitimized at the start by a nominal consideration amount. (I'm tossing around nice sounding words to me but I'm not a lawyer, and do not mean to imply I am one. Nothing in this post should be construed as legal advice. And if despite all those warnings you find someone to try and come after me, you're an idiot.)

So how does money move?

Well, here's what I like and what I'm guessing others will hate, as the company being endorsed decides on a designated basis, say quarterly, if they are gaining a "material benefit" from the limited endorsement, and they decide how much that benefit is. If it is beyond a set minimum amount--like who cares about, say, $10--then they notify the limited endorser, as they are to pay a contractual amount, say, 10% of the benefit amount.

But here's where I add another twist, as the limited endorser submits a bid for what they believe the 10% amount is, and then payment is made for the lesser value, unless the bids differ by more than 10%, then the bids are to be justified by both parties and the proper amount is to be chosen by an independent arbitrator.

Notice I'm giving most of the power to the company and trusting them to give a fair value, while keeping the limited endorser responsible for keeping up with their own value to the company, with a dispute resolution vehicle in place, even though the entire point is to limit disputes!

IF the company says, no benefit over the designated amount and period then they pay NOTHING to the limited endorser.

And I love this idea. Why? Well I like lots of products and could maybe see myself wanting to admit it, without feeling like I need to sell my soul to some company which can tell me what to wear, where to go, what to drive, what to say, and all kinds of nasty things which ruin the fun, but they may feel protects them, especially if they spend a BOATLOAD of money upfront.

And that's enough so that I have the idea in place for something that may never happen. For instance, I need to be a celebrity. Then I'd need a horde of lawyers to try and type something up. And then I'd have to find a company that would want me as an endorser, who would accept such a contract!

(Notice that lawyers are the ones who really always win.)

But it doesn't hurt (I think) to put up some ideas on one of my personal blogs, which I can take down later if necessary and that's it.

Ideas are open source, so if others wish to try them, then feel free. I won't come after you.


James Harris